diff -Nrcpad gcc-17-20260524/ChangeLog gcc-17-20260531/ChangeLog
*** gcc-17-20260524/ChangeLog	Sun May 24 22:32:04 2026
--- gcc-17-20260531/ChangeLog	Sun May 31 22:32:04 2026
***************
*** 1,3 ****
--- 1,42 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* Makefile.def: Fix typos.
+ 	* Makefile.in: Likewise.
+ 	* Makefile.tpl: Likewise.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (Contributing under the DCO): Secondary sort
+ 	by email address.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (Write After Approval): Secondary sort by email.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (Reviewers): Sort entries.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (Various Maintainers): Sort entries.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (Language Front Ends Maintainers): Sort entries.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (OS Port Maintainers): Sort entries.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS (CPU Maintainers): Sort by CPU and then user.
+ 
+ 2026-05-27  Evgeny Karpov  <evgeny.karpov@arm.com>
+ 
+ 	* MAINTAINERS: Update my email address.
+ 
  2026-05-15  Karl Meakin  <karl.meakin@arm.com>
  
  	* .editorconfig (COMMIT_EDITMSG): New section.
diff -Nrcpad gcc-17-20260524/LAST_UPDATED gcc-17-20260531/LAST_UPDATED
*** gcc-17-20260524/LAST_UPDATED	Sun May 24 22:32:19 2026
--- gcc-17-20260531/LAST_UPDATED	Sun May 31 22:32:19 2026
***************
*** 1 ****
! Obtained from git: master revision 9742769e0d72a98988bf151d6674ab597be43493
--- 1 ----
! Obtained from git: master revision f20bc4c2fe00928013c533e241b89ae3a6724ca1
diff -Nrcpad gcc-17-20260524/MAINTAINERS gcc-17-20260531/MAINTAINERS
*** gcc-17-20260524/MAINTAINERS	Sun May 24 22:32:04 2026
--- gcc-17-20260531/MAINTAINERS	Sun May 31 22:32:04 2026
*************** docs, and the testsuite related to that.
*** 56,63 ****
                          CPU Port Maintainers    (CPU alphabetical order)
  
  aarch64 ldp/stp         Alex Coplan             <alex.coplan@arm.com>
- aarch64 port            Richard Earnshaw        <richard.earnshaw@arm.com>
  aarch64 port            Tamar Christina         <tamar.christina@arm.com>
  aarch64 port            Kyrylo Tkachov          <ktkachov@nvidia.com>
  alpha port              Richard Henderson       <rth@gcc.gnu.org>
  amdgcn port             Julian Brown            <julian@codesourcery.com>
--- 56,63 ----
                          CPU Port Maintainers    (CPU alphabetical order)
  
  aarch64 ldp/stp         Alex Coplan             <alex.coplan@arm.com>
  aarch64 port            Tamar Christina         <tamar.christina@arm.com>
+ aarch64 port            Richard Earnshaw        <richard.earnshaw@arm.com>
  aarch64 port            Kyrylo Tkachov          <ktkachov@nvidia.com>
  alpha port              Richard Henderson       <rth@gcc.gnu.org>
  amdgcn port             Julian Brown            <julian@codesourcery.com>
*************** arm port                Ramana Radhakris
*** 69,96 ****
  avr port                Denis Chertykov         <chertykov@gmail.com>
  bfin port               Jie Zhang               <jzhang918@gmail.com>
  bpf port                Jose E. Marchesi        <jose.marchesi@oracle.com>
- c6x port                Bernd Schmidt           <bernds_cb1@t-online.de>
- cris port               Hans-Peter Nilsson      <hp@axis.com>
  c-sky port              Xianmiao Qu             <cooper.qu@linux.alibaba.com>
  c-sky port              Yunhai Shang            <yunhai@linux.alibaba.com>
  fr30 port               Nick Clifton            <nickc@redhat.com>
  frv port                Nick Clifton            <nickc@redhat.com>
  frv port                Alexandre Oliva         <aoliva@gcc.gnu.org>
  ft32 port               James Bowman            <james.bowman@ftdichip.com>
  h8 port                 Jeff Law                <jeffreyalaw@gmail.com>
- hppa port               Jeff Law                <jeffreyalaw@gmail.com>
  hppa port               John David Anglin       <dave.anglin@bell.net>
! i386 port               Jan Hubicka             <hubicka@ucw.cz>
  i386 port               Uros Bizjak             <ubizjak@gmail.com>
! i386 vector ISA extns   Kirill Yukhin           <kirill.yukhin@gmail.com>
  i386 vector ISA extns   Hongtao Liu             <hongtao.liu@intel.com>
  iq2000 port             Nick Clifton            <nickc@redhat.com>
  lm32 port               Sebastien Bourdeauducq  <sebastien@milkymist.org>
- LoongArch port          Chenghua Xu             <xuchenghua@loongson.cn>
  LoongArch port          Lulu Cheng              <chenglulu@loongson.cn>
  m32r port               Nick Clifton            <nickc@redhat.com>
- m68k port (?)           Jeff Law                <jeffreyalaw@gmail.com>
  m68k port               Andreas Schwab          <schwab@linux-m68k.org>
  m68k-motorola-sysv port Philippe De Muyter      <phdm@macqel.be>
  mcore port              Nick Clifton            <nickc@redhat.com>
  microblaze              Michael Eager           <eager@eagercon.com>
--- 69,96 ----
  avr port                Denis Chertykov         <chertykov@gmail.com>
  bfin port               Jie Zhang               <jzhang918@gmail.com>
  bpf port                Jose E. Marchesi        <jose.marchesi@oracle.com>
  c-sky port              Xianmiao Qu             <cooper.qu@linux.alibaba.com>
  c-sky port              Yunhai Shang            <yunhai@linux.alibaba.com>
+ c6x port                Bernd Schmidt           <bernds_cb1@t-online.de>
+ cris port               Hans-Peter Nilsson      <hp@axis.com>
  fr30 port               Nick Clifton            <nickc@redhat.com>
  frv port                Nick Clifton            <nickc@redhat.com>
  frv port                Alexandre Oliva         <aoliva@gcc.gnu.org>
  ft32 port               James Bowman            <james.bowman@ftdichip.com>
  h8 port                 Jeff Law                <jeffreyalaw@gmail.com>
  hppa port               John David Anglin       <dave.anglin@bell.net>
! hppa port               Jeff Law                <jeffreyalaw@gmail.com>
  i386 port               Uros Bizjak             <ubizjak@gmail.com>
! i386 port               Jan Hubicka             <hubicka@ucw.cz>
  i386 vector ISA extns   Hongtao Liu             <hongtao.liu@intel.com>
+ i386 vector ISA extns   Kirill Yukhin           <kirill.yukhin@gmail.com>
  iq2000 port             Nick Clifton            <nickc@redhat.com>
  lm32 port               Sebastien Bourdeauducq  <sebastien@milkymist.org>
  LoongArch port          Lulu Cheng              <chenglulu@loongson.cn>
+ LoongArch port          Chenghua Xu             <xuchenghua@loongson.cn>
  m32r port               Nick Clifton            <nickc@redhat.com>
  m68k port               Andreas Schwab          <schwab@linux-m68k.org>
+ m68k port (?)           Jeff Law                <jeffreyalaw@gmail.com>
  m68k-motorola-sysv port Philippe De Muyter      <phdm@macqel.be>
  mcore port              Nick Clifton            <nickc@redhat.com>
  microblaze              Michael Eager           <eager@eagercon.com>
*************** mn10300 port            Jeff Law
*** 100,109 ****
  mn10300 port            Alexandre Oliva         <aoliva@gcc.gnu.org>
  moxie port              Anthony Green           <green@moxielogic.com>
  msp430 port             Nick Clifton            <nickc@redhat.com>
- nds32 port              Chung-Ju Wu             <jasonwucj@gmail.com>
  nds32 port              Shiva Chen              <shiva0217@gmail.com>
! nvptx port              Tom de Vries            <tdevries@suse.de>
  nvptx port              Thomas Schwinge         <tschwinge@baylibre.com>
  or1k port               Stafford Horne          <shorne@gmail.com>
  pdp11 port              Paul Koning             <ni1d@arrl.net>
  powerpcspe port         Andrew Jenner           <andrew@codesourcery.com>
--- 100,109 ----
  mn10300 port            Alexandre Oliva         <aoliva@gcc.gnu.org>
  moxie port              Anthony Green           <green@moxielogic.com>
  msp430 port             Nick Clifton            <nickc@redhat.com>
  nds32 port              Shiva Chen              <shiva0217@gmail.com>
! nds32 port              Chung-Ju Wu             <jasonwucj@gmail.com>
  nvptx port              Thomas Schwinge         <tschwinge@baylibre.com>
+ nvptx port              Tom de Vries            <tdevries@suse.de>
  or1k port               Stafford Horne          <shorne@gmail.com>
  pdp11 port              Paul Koning             <ni1d@arrl.net>
  powerpcspe port         Andrew Jenner           <andrew@codesourcery.com>
*************** riscv port              Palmer Dabbelt
*** 113,133 ****
  riscv port              Robin Dapp              <rdapp.gcc@gmail.com>
  riscv port              Andrew Waterman         <andrew@sifive.com>
  riscv port              Jim Wilson              <jim.wilson.gcc@gmail.com>
! rs6000/powerpc port     David Edelsohn          <dje.gcc@gmail.com>
  rs6000/powerpc port     Segher Boessenkool      <segher@kernel.crashing.org>
  rs6000/powerpc port     Kewen Lin               <linkw@gcc.gnu.org>
- rs6000 vector extns     Aldy Hernandez          <aldy@quesejoda.com>
  rx port                 Nick Clifton            <nickc@redhat.com>
- s390 port               Ulrich Weigand          <uweigand@de.ibm.com>
  s390 port               Andreas Krebbel         <krebbel@linux.ibm.com>
  s390 port               Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
! sh port                 Alexandre Oliva         <aoliva@gcc.gnu.org>
  sh port                 Oleg Endo               <olegendo@gcc.gnu.org>
! sparc port              David S. Miller         <davem@redhat.com>
  sparc port              Eric Botcazou           <ebotcazou@libertysurf.fr>
  v850 port               Nick Clifton            <nickc@redhat.com>
- vax port                Matt Thomas             <matt@3am-software.com>
  vax port                Maciej W. Rozycki       <macro@orcam.me.uk>
  visium port             Eric Botcazou           <ebotcazou@libertysurf.fr>
  x86-64 port             Jan Hubicka             <hubicka@ucw.cz>
  xstormy16 port          Nick Clifton            <nickc@redhat.com>
--- 113,133 ----
  riscv port              Robin Dapp              <rdapp.gcc@gmail.com>
  riscv port              Andrew Waterman         <andrew@sifive.com>
  riscv port              Jim Wilson              <jim.wilson.gcc@gmail.com>
! rs6000 vector extns     Aldy Hernandez          <aldy@quesejoda.com>
  rs6000/powerpc port     Segher Boessenkool      <segher@kernel.crashing.org>
+ rs6000/powerpc port     David Edelsohn          <dje.gcc@gmail.com>
  rs6000/powerpc port     Kewen Lin               <linkw@gcc.gnu.org>
  rx port                 Nick Clifton            <nickc@redhat.com>
  s390 port               Andreas Krebbel         <krebbel@linux.ibm.com>
  s390 port               Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
! s390 port               Ulrich Weigand          <uweigand@de.ibm.com>
  sh port                 Oleg Endo               <olegendo@gcc.gnu.org>
! sh port                 Alexandre Oliva         <aoliva@gcc.gnu.org>
  sparc port              Eric Botcazou           <ebotcazou@libertysurf.fr>
+ sparc port              David S. Miller         <davem@redhat.com>
  v850 port               Nick Clifton            <nickc@redhat.com>
  vax port                Maciej W. Rozycki       <macro@orcam.me.uk>
+ vax port                Matt Thomas             <matt@3am-software.com>
  visium port             Eric Botcazou           <ebotcazou@libertysurf.fr>
  x86-64 port             Jan Hubicka             <hubicka@ucw.cz>
  xstormy16 port          Nick Clifton            <nickc@redhat.com>
*************** xtensa port             Max Filippov
*** 138,279 ****
  
  aix                     David Edelsohn          <dje.gcc@gmail.com>
  Android sub-port        Maxim Kuvyrkov          <maxim.kuvyrkov@linaro.org>
  darwin port             Iain Sandoe             <iain@sandoe.co.uk>
  darwin port             Mike Stump              <mikestump@comcast.net>
  DJGPP                   DJ Delorie              <dj@delorie.com>
  freebsd                 Andreas Tobler          <andreast@gcc.gnu.org>
  GNU/Hurd                Thomas Schwinge         <thomas@schwinge.name>
  hpux                    John David Anglin       <dave.anglin@bell.net>
- solaris                 Rainer Orth             <ro@CeBiTec.Uni-Bielefeld.DE>
  netbsd                  Jason Thorpe            <thorpej@netbsd.org>
  netbsd                  Krister Walfridsson     <krister.walfridsson@gmail.com>
- sh-linux-gnu            Kaz Kojima              <kkojima@gcc.gnu.org>
- RTEMS Ports             Joel Sherrill           <joel@oarcorp.com>
  RTEMS Ports             Ralf Corsepius          <ralf.corsepius@rtems.org>
  RTEMS Ports             Sebastian Huber         <sebastian.huber@embedded-brains.de>
! VMS                     Douglas Rupp            <douglas.b.rupp@gmail.com>
  VMS                     Tristan Gingold         <tgingold@free.fr>
  VxWorks ports           Olivier Hainque         <hainque@adacore.com>
- cygwin, mingw-w64       Jonathan Yong           <10walls@gmail.com>
  
                          Language Front Ends Maintainers
  
- C front end/ISO C99     Joseph Myers            <josmyers@redhat.com>
- Ada front end           Arnaud Charlet          <charlet@adacore.com>
  Ada front end           Eric Botcazou           <ebotcazou@libertysurf.fr>
  Ada front end           Marc Poulhiès           <poulhies@adacore.com>
  Ada front end           Pierre-Marie de Rodat   <derodat@adacore.com>
! COBOL front end         Robert Dubner           <rdubner@symas.com>
! COBOL front end         James K. Lowden         <jklowden@cobolworx.com>
  c++                     Jason Merrill           <jason@redhat.com>
  c++                     Nathan Sidwell          <nathan@acm.org>
  D front end             Iain Buclaw             <ibuclaw@gdcproject.org>
  go                      Ian Lance Taylor        <ian@airs.com>
  Modula-2 front end      Gaius Mulley            <gaiusmod2@gmail.com>
- objective-c/c++         Mike Stump              <mikestump@comcast.net>
  objective-c/c++         Iain Sandoe             <iain@sandoe.co.uk>
  Rust                    Arthur Cohen            <arthur.cohen@embecosm.com>
  Rust                    Philip Herron           <herron.philip@googlemail.com>
- Algol 68                Jose E. Marchesi        <jemarch@gnu.org>
  
!                         Various Maintainers
  
  libbacktrace            Ian Lance Taylor        <ian@airs.com>
  libcpp                  Per Bothner             <per@bothner.com>
- libcpp                  All C and C++ front end maintainers
  libcpp                  David Malcolm           <dmalcolm@redhat.com>
! fp-bit                  Ian Lance Taylor        <ian@airs.com>
  libga68                 Jose E. Marchesi        <jemarch@gnu.org>
  libgcc                  Ian Lance Taylor        <ian@airs.com>
  libgo                   Ian Lance Taylor        <ian@airs.com>
- libgomp                 Jakub Jelinek           <jakub@redhat.com>
  libgomp                 Tobias Burnus           <tburnus@baylibre.com>
  libgomp (OpenACC)       Thomas Schwinge         <tschwinge@baylibre.com>
  libgrust                All Rust front end maintainers
  libiberty               Ian Lance Taylor        <ian@airs.com>
  libitm                  Torvald Riegel          <triegel@redhat.com>
  libobjc                 Nicola Pero             <nicola.pero@meta-innovation.com>
  libobjc                 Andrew Pinski           <pinskia@gmail.com>
  libquadmath             Tobias Burnus           <tburnus@baylibre.com>
  libquadmath             Jakub Jelinek           <jakub@redhat.com>
  libvtv                  Caroline Tice           <cmtice@google.com>
- libphobos               Iain Buclaw             <ibuclaw@gdcproject.org>
  line map                Dodji Seketeli          <dodji@redhat.com>
- soft-fp                 Joseph Myers            <josmyers@redhat.com>
- scheduler (+ haifa)     Jim Wilson              <wilson@tuliptree.org>
- scheduler (+ haifa)     Michael Meissner        <gnu@the-meissners.org>
- scheduler (+ haifa)     Jeff Law                <jeffreyalaw@gmail.com>
- scheduler (+ haifa)     Vladimir Makarov        <vmakarov@redhat.com>
- modulo-scheduler        Roman Zhuykov           <zhroma@ispras.ru>
- reorg                   Jeff Law                <jeffreyalaw@gmail.com>
- caller-save.cc          Jeff Law                <jeffreyalaw@gmail.com>
- callgraph               Jan Hubicka             <hubicka@ucw.cz>
- debugging code          Jim Wilson              <wilson@tuliptree.org>
- dwarf debugging code    Jason Merrill           <jason@redhat.com>
- dwarf debugging code    Cary Coutant            <ccoutant@gmail.com>
- c++ runtime libs        Paolo Carlini           <pcarlini@gmail.com>
- c++ runtime libs        Ulrich Drepper          <drepper@gmail.com>
- c++ runtime libs        Benjamin De Kosnik      <bkoz@gnu.org>
- c++ runtime libs        Jonathan Wakely         <jwakely@redhat.com>
- c++ runtime libs special modes  François Dumont <fdumont@gcc.gnu.org>
- fixincludes             Bruce Korb              <bkorb@gnu.org>
- *gimpl*                 Jakub Jelinek           <jakub@redhat.com>
- *gimpl*                 Aldy Hernandez          <aldy@quesejoda.com>
- *gimpl*                 Jason Merrill           <jason@redhat.com>
- gcse.cc                 Jeff Law                <jeffreyalaw@gmail.com>
- global opt framework    Jeff Law                <jeffreyalaw@gmail.com>
- jump.cc                 David S. Miller         <davem@redhat.com>
- web pages               Gerald Pfeifer          <gerald@pfeifer.com>
- config.sub/config.guess Ben Elliston            <config-patches@gnu.org>
- i18n                    Philipp Thomas          <pth@suse.de>
- i18n                    Joseph Myers            <josmyers@redhat.com>
- diagnostic messages     Dodji Seketeli          <dodji@redhat.com>
- diagnostic messages     David Malcolm           <dmalcolm@redhat.com>
- build machinery (*.in)  Paolo Bonzini           <bonzini@gnu.org>
- build machinery (*.in)  Nathanael Nerode        <neroden@gcc.gnu.org>
- build machinery (*.in)  Alexandre Oliva         <aoliva@gcc.gnu.org>
- build machinery (*.in)  Ralf Wildenhues         <Ralf.Wildenhues@gmx.de>
- docs co-maintainer      Gerald Pfeifer          <gerald@pfeifer.com>
- docs co-maintainer      Joseph Myers            <josmyers@redhat.com>
- docs co-maintainer      Sandra Loosemore        <sloosemore@baylibre.com>
- docstring relicensing   Gerald Pfeifer          <gerald@pfeifer.com>
- docstring relicensing   Joseph Myers            <josmyers@redhat.com>
- predict.def             Jan Hubicka             <hubicka@ucw.cz>
- gcov                    Jan Hubicka             <hubicka@ucw.cz>
- gcov                    Nathan Sidwell          <nathan@acm.org>
- option handling         Joseph Myers            <josmyers@redhat.com>
- middle-end              Jeff Law                <jeffreyalaw@gmail.com>
- middle-end              Ian Lance Taylor        <ian@airs.com>
- middle-end              Richard Biener          <rguenther@suse.de>
- *vrp, ranger            Aldy Hernandez          <aldy@quesejoda.com>
- *vrp, ranger            Andrew MacLeod          <amacleod@redhat.com>
- tree-ssa                Andrew MacLeod          <amacleod@redhat.com>
- tree browser/unparser   Sebastian Pop           <sebpop@gmail.com>
- scev, data dependence   Sebastian Pop           <sebpop@gmail.com>
- profile feedback        Jan Hubicka             <hubicka@ucw.cz>
- AutoFDO                 Eugene Rozenfeld        <erozen@microsoft.com>
- reload                  Ulrich Weigand          <uweigand@de.ibm.com>
- RTL optimizers          Eric Botcazou           <ebotcazou@libertysurf.fr>
- instruction combiner    Segher Boessenkool      <segher@kernel.crashing.org>
- pair fusion             Alex Coplan             <alex.coplan@arm.com>
- vectorizer (+ tree-if-conv) Richard Biener      <rguenther@suse.de>
- vectorizer (+ tree-if-conv) Tamar Christina     <tamar.christina@arm.com>
- vectorizer (+ tree-if-conv) Zdenek Dvorak       <ook@ucw.cz>
  loop infrastructure     Zdenek Dvorak           <ook@ucw.cz>
  loop ivopts             Bin Cheng               <bin.cheng@linux.alibaba.com>
  loop optimizer          Bin Cheng               <bin.cheng@linux.alibaba.com>
! OpenACC                 Thomas Schwinge         <tschwinge@baylibre.com>
  OpenACC                 Tobias Burnus           <tburnus@baylibre.com>
! OpenMP                  Jakub Jelinek           <jakub@redhat.com>
  OpenMP                  Tobias Burnus           <tburnus@baylibre.com>
! testsuite               Rainer Orth             <ro@CeBiTec.Uni-Bielefeld.DE>
! testsuite               Mike Stump              <mikestump@comcast.net>
  register allocation     Vladimir Makarov        <vmakarov@redhat.com>
! gdbhooks.py             David Malcolm           <dmalcolm@redhat.com>
! jit                     David Malcolm           <dmalcolm@redhat.com>
! gen* on machine desc    Richard Sandiford       <rdsandiford@googlemail.com>
  static analyzer         David Malcolm           <dmalcolm@redhat.com>
! forge integration       Claudio Bantaloukas     <claudio.bantaloukas@arm.com>
  
  Note that individuals who maintain parts of the compiler need approval to
  check in changes outside of the parts of the compiler they maintain.
--- 138,279 ----
  
  aix                     David Edelsohn          <dje.gcc@gmail.com>
  Android sub-port        Maxim Kuvyrkov          <maxim.kuvyrkov@linaro.org>
+ cygwin, mingw-w64       Jonathan Yong           <10walls@gmail.com>
  darwin port             Iain Sandoe             <iain@sandoe.co.uk>
  darwin port             Mike Stump              <mikestump@comcast.net>
  DJGPP                   DJ Delorie              <dj@delorie.com>
  freebsd                 Andreas Tobler          <andreast@gcc.gnu.org>
  GNU/Hurd                Thomas Schwinge         <thomas@schwinge.name>
  hpux                    John David Anglin       <dave.anglin@bell.net>
  netbsd                  Jason Thorpe            <thorpej@netbsd.org>
  netbsd                  Krister Walfridsson     <krister.walfridsson@gmail.com>
  RTEMS Ports             Ralf Corsepius          <ralf.corsepius@rtems.org>
  RTEMS Ports             Sebastian Huber         <sebastian.huber@embedded-brains.de>
! RTEMS Ports             Joel Sherrill           <joel@oarcorp.com>
! sh-linux-gnu            Kaz Kojima              <kkojima@gcc.gnu.org>
! solaris                 Rainer Orth             <ro@CeBiTec.Uni-Bielefeld.DE>
  VMS                     Tristan Gingold         <tgingold@free.fr>
+ VMS                     Douglas Rupp            <douglas.b.rupp@gmail.com>
  VxWorks ports           Olivier Hainque         <hainque@adacore.com>
  
                          Language Front Ends Maintainers
  
  Ada front end           Eric Botcazou           <ebotcazou@libertysurf.fr>
+ Ada front end           Arnaud Charlet          <charlet@adacore.com>
  Ada front end           Marc Poulhiès           <poulhies@adacore.com>
  Ada front end           Pierre-Marie de Rodat   <derodat@adacore.com>
! Algol 68                Jose E. Marchesi        <jemarch@gnu.org>
! C front end/ISO C99     Joseph Myers            <josmyers@redhat.com>
  c++                     Jason Merrill           <jason@redhat.com>
  c++                     Nathan Sidwell          <nathan@acm.org>
+ COBOL front end         Robert Dubner           <rdubner@symas.com>
+ COBOL front end         James K. Lowden         <jklowden@cobolworx.com>
  D front end             Iain Buclaw             <ibuclaw@gdcproject.org>
  go                      Ian Lance Taylor        <ian@airs.com>
  Modula-2 front end      Gaius Mulley            <gaiusmod2@gmail.com>
  objective-c/c++         Iain Sandoe             <iain@sandoe.co.uk>
+ objective-c/c++         Mike Stump              <mikestump@comcast.net>
  Rust                    Arthur Cohen            <arthur.cohen@embecosm.com>
  Rust                    Philip Herron           <herron.philip@googlemail.com>
  
!                         Various Maintainers   (Area alphabetical order)
  
+ *gimpl*                 Aldy Hernandez          <aldy@quesejoda.com>
+ *gimpl*                 Jakub Jelinek           <jakub@redhat.com>
+ *gimpl*                 Jason Merrill           <jason@redhat.com>
+ *vrp, ranger            Aldy Hernandez          <aldy@quesejoda.com>
+ *vrp, ranger            Andrew MacLeod          <amacleod@redhat.com>
+ AutoFDO                 Eugene Rozenfeld        <erozen@microsoft.com>
+ build machinery (*.in)  Paolo Bonzini           <bonzini@gnu.org>
+ build machinery (*.in)  Nathanael Nerode        <neroden@gcc.gnu.org>
+ build machinery (*.in)  Alexandre Oliva         <aoliva@gcc.gnu.org>
+ build machinery (*.in)  Ralf Wildenhues         <Ralf.Wildenhues@gmx.de>
+ c++ runtime libs        Paolo Carlini           <pcarlini@gmail.com>
+ c++ runtime libs        Ulrich Drepper          <drepper@gmail.com>
+ c++ runtime libs        Benjamin De Kosnik      <bkoz@gnu.org>
+ c++ runtime libs        Jonathan Wakely         <jwakely@redhat.com>
+ c++ runtime libs special modes  François Dumont <fdumont@gcc.gnu.org>
+ caller-save.cc          Jeff Law                <jeffreyalaw@gmail.com>
+ callgraph               Jan Hubicka             <hubicka@ucw.cz>
+ config.sub/config.guess  Ben Elliston           <config-patches@gnu.org>
+ debugging code          Jim Wilson              <wilson@tuliptree.org>
+ diagnostic messages     David Malcolm           <dmalcolm@redhat.com>
+ diagnostic messages     Dodji Seketeli          <dodji@redhat.com>
+ docs co-maintainer      Sandra Loosemore        <sloosemore@baylibre.com>
+ docs co-maintainer      Joseph Myers            <josmyers@redhat.com>
+ docs co-maintainer      Gerald Pfeifer          <gerald@pfeifer.com>
+ docstring relicensing   Joseph Myers            <josmyers@redhat.com>
+ docstring relicensing   Gerald Pfeifer          <gerald@pfeifer.com>
+ dwarf debugging code    Cary Coutant            <ccoutant@gmail.com>
+ dwarf debugging code    Jason Merrill           <jason@redhat.com>
+ fixincludes             Bruce Korb              <bkorb@gnu.org>
+ forge integration       Claudio Bantaloukas     <claudio.bantaloukas@arm.com>
+ fp-bit                  Ian Lance Taylor        <ian@airs.com>
+ gcov                    Jan Hubicka             <hubicka@ucw.cz>
+ gcov                    Nathan Sidwell          <nathan@acm.org>
+ gcse.cc                 Jeff Law                <jeffreyalaw@gmail.com>
+ gdbhooks.py             David Malcolm           <dmalcolm@redhat.com>
+ gen* on machine desc    Richard Sandiford       <rdsandiford@googlemail.com>
+ global opt framework    Jeff Law                <jeffreyalaw@gmail.com>
+ i18n                    Joseph Myers            <josmyers@redhat.com>
+ i18n                    Philipp Thomas          <pth@suse.de>
+ instruction combiner    Segher Boessenkool      <segher@kernel.crashing.org>
+ jit                     David Malcolm           <dmalcolm@redhat.com>
+ jump.cc                 David S. Miller         <davem@redhat.com>
  libbacktrace            Ian Lance Taylor        <ian@airs.com>
  libcpp                  Per Bothner             <per@bothner.com>
  libcpp                  David Malcolm           <dmalcolm@redhat.com>
! libcpp                  All C and C++ front end maintainers
  libga68                 Jose E. Marchesi        <jemarch@gnu.org>
  libgcc                  Ian Lance Taylor        <ian@airs.com>
  libgo                   Ian Lance Taylor        <ian@airs.com>
  libgomp                 Tobias Burnus           <tburnus@baylibre.com>
+ libgomp                 Jakub Jelinek           <jakub@redhat.com>
  libgomp (OpenACC)       Thomas Schwinge         <tschwinge@baylibre.com>
  libgrust                All Rust front end maintainers
  libiberty               Ian Lance Taylor        <ian@airs.com>
  libitm                  Torvald Riegel          <triegel@redhat.com>
  libobjc                 Nicola Pero             <nicola.pero@meta-innovation.com>
  libobjc                 Andrew Pinski           <pinskia@gmail.com>
+ libphobos               Iain Buclaw             <ibuclaw@gdcproject.org>
  libquadmath             Tobias Burnus           <tburnus@baylibre.com>
  libquadmath             Jakub Jelinek           <jakub@redhat.com>
  libvtv                  Caroline Tice           <cmtice@google.com>
  line map                Dodji Seketeli          <dodji@redhat.com>
  loop infrastructure     Zdenek Dvorak           <ook@ucw.cz>
  loop ivopts             Bin Cheng               <bin.cheng@linux.alibaba.com>
  loop optimizer          Bin Cheng               <bin.cheng@linux.alibaba.com>
! middle-end              Richard Biener          <rguenther@suse.de>
! middle-end              Jeff Law                <jeffreyalaw@gmail.com>
! middle-end              Ian Lance Taylor        <ian@airs.com>
! modulo-scheduler        Roman Zhuykov           <zhroma@ispras.ru>
  OpenACC                 Tobias Burnus           <tburnus@baylibre.com>
! OpenACC                 Thomas Schwinge         <tschwinge@baylibre.com>
  OpenMP                  Tobias Burnus           <tburnus@baylibre.com>
! OpenMP                  Jakub Jelinek           <jakub@redhat.com>
! option handling         Joseph Myers            <josmyers@redhat.com>
! pair fusion             Alex Coplan             <alex.coplan@arm.com>
! predict.def             Jan Hubicka             <hubicka@ucw.cz>
! profile feedback        Jan Hubicka             <hubicka@ucw.cz>
  register allocation     Vladimir Makarov        <vmakarov@redhat.com>
! reload                  Ulrich Weigand          <uweigand@de.ibm.com>
! reorg                   Jeff Law                <jeffreyalaw@gmail.com>
! RTL optimizers          Eric Botcazou           <ebotcazou@libertysurf.fr>
! scev, data dependence   Sebastian Pop           <sebpop@gmail.com>
! scheduler (+ haifa)     Jeff Law                <jeffreyalaw@gmail.com>
! scheduler (+ haifa)     Vladimir Makarov        <vmakarov@redhat.com>
! scheduler (+ haifa)     Michael Meissner        <gnu@the-meissners.org>
! scheduler (+ haifa)     Jim Wilson              <wilson@tuliptree.org>
! soft-fp                 Joseph Myers            <josmyers@redhat.com>
  static analyzer         David Malcolm           <dmalcolm@redhat.com>
! testsuite               Rainer Orth             <ro@CeBiTec.Uni-Bielefeld.DE>
! testsuite               Mike Stump              <mikestump@comcast.net>
! tree browser/unparser   Sebastian Pop           <sebpop@gmail.com>
! tree-ssa                Andrew MacLeod          <amacleod@redhat.com>
! vectorizer (+ tree-if-conv)  Richard Biener     <rguenther@suse.de>
! vectorizer (+ tree-if-conv)  Tamar Christina    <tamar.christina@arm.com>
! vectorizer (+ tree-if-conv)  Zdenek Dvorak      <ook@ucw.cz>
! web pages               Gerald Pfeifer          <gerald@pfeifer.com>
  
  Note that individuals who maintain parts of the compiler need approval to
  check in changes outside of the parts of the compiler they maintain.
*************** check in changes outside of the parts of
*** 282,295 ****
  
  aarch64 port            Alice Carlotti          <alice.carlotti@arm.com>
  aarch64 port            Alex Coplan             <alex.coplan@arm.com>
- aarch64 port            Andrew Pinski           <andrew.pinski@oss.qualcomm.com>
  aarch64 port            Wilco Dijkstra          <wilco.dijkstra@arm.com>
  arm port (MVE)          Christophe Lyon         <christophe.lyon@arm.com>
- callgraph               Martin Jambor           <mjambor@suse.cz>
  C front end             Marek Polacek           <polacek@redhat.com>
  CTF, BTF                Indu Bhagat             <indu.bhagat@oracle.com>
  CTF, BTF, bpf port      David Faust             <david.faust@oracle.com>
- c++                     Patrick Palka           <ppalka@gcc.gnu.org>
  dataflow                Paolo Bonzini           <bonzini@gnu.org>
  dataflow                Seongbae Park           <seongbae.park@gmail.com>
  dataflow                Kenneth Zadeck          <zadeck@naturalbridge.com>
--- 282,295 ----
  
  aarch64 port            Alice Carlotti          <alice.carlotti@arm.com>
  aarch64 port            Alex Coplan             <alex.coplan@arm.com>
  aarch64 port            Wilco Dijkstra          <wilco.dijkstra@arm.com>
+ aarch64 port            Andrew Pinski           <andrew.pinski@oss.qualcomm.com>
  arm port (MVE)          Christophe Lyon         <christophe.lyon@arm.com>
  C front end             Marek Polacek           <polacek@redhat.com>
+ 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>
*************** LTO                     Richard Biener
*** 320,335 ****
  LTO plugin              Cary Coutant            <ccoutant@gmail.com>
  Plugin                  Le-Chun Wu              <lcwu@google.com>
  register allocation     Peter Bergner           <bergner@tenstorrent.com>
- register allocation     Kenneth Zadeck          <zadeck@naturalbridge.com>
  register allocation     Seongbae Park           <seongbae.park@gmail.com>
  riscv port              Juzhe Zhong             <juzhe.zhong@rivai.ai>
  RTL optimizers          Steven Bosscher         <steven@gcc.gnu.org>
  selective scheduling    Andrey Belevantsev      <abel@ispras.ru>
  selective scheduling    Alexander Monakov       <amonakov@ispras.ru>
! vectorizer (+ tree-if-conv) Robin Dapp          <rdapp.gcc@gmail.com>
! wide-int                Kenneth Zadeck          <zadeck@naturalbridge.com>
! wide-int                Mike Stump              <mikestump@comcast.net>
  wide-int                Richard Sandiford       <rdsandiford@googlemail.com>
  
  Note that while reviewers can approve changes to parts of the compiler
  that they maintain, they still need approval for their own patches
--- 320,335 ----
  LTO plugin              Cary Coutant            <ccoutant@gmail.com>
  Plugin                  Le-Chun Wu              <lcwu@google.com>
  register allocation     Peter Bergner           <bergner@tenstorrent.com>
  register allocation     Seongbae Park           <seongbae.park@gmail.com>
+ register allocation     Kenneth Zadeck          <zadeck@naturalbridge.com>
  riscv port              Juzhe Zhong             <juzhe.zhong@rivai.ai>
  RTL optimizers          Steven Bosscher         <steven@gcc.gnu.org>
  selective scheduling    Andrey Belevantsev      <abel@ispras.ru>
  selective scheduling    Alexander Monakov       <amonakov@ispras.ru>
! vectorizer (+ tree-if-conv)  Robin Dapp         <rdapp.gcc@gmail.com>
  wide-int                Richard Sandiford       <rdsandiford@googlemail.com>
+ wide-int                Mike Stump              <mikestump@comcast.net>
+ wide-int                Kenneth Zadeck          <zadeck@naturalbridge.com>
  
  Note that while reviewers can approve changes to parts of the compiler
  that they maintain, they still need approval for their own patches
*************** Arnaud Charlet                  charlet
*** 417,423 ****
  Chandra Chavva                  -               <cchavva@redhat.com>
  Dhruv Chawla                    dhruvc          <dhruvc@nvidia.com>
  Dehao Chen                      dehao           <dehao@google.com>
! Zhongyao Chen			-		<chenzhongyao.hit@gmail.com>
  Fabien Chêne                    fabien          <fabien@gcc.gnu.org>
  Bin Cheng                       amker           <bin.cheng@linux.alibaba.com>
  Kito Cheng                      kito            <kito.cheng@gmail.com>
--- 417,423 ----
  Chandra Chavva                  -               <cchavva@redhat.com>
  Dhruv Chawla                    dhruvc          <dhruvc@nvidia.com>
  Dehao Chen                      dehao           <dehao@google.com>
! Zhongyao Chen                   -               <chenzhongyao.hit@gmail.com>
  Fabien Chêne                    fabien          <fabien@gcc.gnu.org>
  Bin Cheng                       amker           <bin.cheng@linux.alibaba.com>
  Kito Cheng                      kito            <kito.cheng@gmail.com>
*************** Phillip Jordan                  pmj
*** 591,597 ****
  Tim Josling                     timjosling      <tej@melbpc.org.au>
  Tomasz Kamiński                 tkaminsk        <tkaminsk@redhat.com>
  Victor Kaplansky                victork         <victork@il.ibm.com>
! Evgeny Karpov                   -               <evgeny.karpov@microsoft.com>
  Filip Kastl                     pheeck          <fkastl@suse.cz>
  Geoffrey Keating                geoffk          <geoffk@geoffk.org>
  Brendan Kehoe                   -               <brendan@zen.org>
--- 591,597 ----
  Tim Josling                     timjosling      <tej@melbpc.org.au>
  Tomasz Kamiński                 tkaminsk        <tkaminsk@redhat.com>
  Victor Kaplansky                victork         <victork@il.ibm.com>
! Evgeny Karpov                   -               <evgeny.karpov@arm.com>
  Filip Kastl                     pheeck          <fkastl@suse.cz>
  Geoffrey Keating                geoffk          <geoffk@geoffk.org>
  Brendan Kehoe                   -               <brendan@zen.org>
*************** Dmitry Vyukov                   dvyukov
*** 892,899 ****
  Waffl3x                         waffl3x         <waffl3x@baylibre.com>
  Jonathan Wakely                 redi            <jwakely@redhat.com>
  Krister Walfridsson             kristerw        <krister.walfridsson@gmail.com>
- Feng Wang                       -               <wangfeng@eswincomputing.com>
  Feng Wang                       fengwang        <fengwang@nudt.edu.cn>
  Hongyu Wang                     hongyuw         <hongyu.wang@intel.com>
  Jiong Wang                      jiwang          <jiong.wang@arm.com>
  Stephen M. Webb                 smw             <stephen.webb@bregmasoft.com>
--- 892,899 ----
  Waffl3x                         waffl3x         <waffl3x@baylibre.com>
  Jonathan Wakely                 redi            <jwakely@redhat.com>
  Krister Walfridsson             kristerw        <krister.walfridsson@gmail.com>
  Feng Wang                       fengwang        <fengwang@nudt.edu.cn>
+ Feng Wang                       -               <wangfeng@eswincomputing.com>
  Hongyu Wang                     hongyuw         <hongyu.wang@intel.com>
  Jiong Wang                      jiwang          <jiong.wang@arm.com>
  Stephen M. Webb                 smw             <stephen.webb@bregmasoft.com>
*************** Daniel Barboza
*** 965,972 ****
  Daniel Barboza                                  <dbarboza@ventanamicro.com>
  Peter Bergner                                   <bergner@tenstorrent.com>
  Dhruv Chawla                                    <dhruvc@nvidia.com>
! Zhongyao Chen					<chenzhongyao.hit@gmail.com>
! Zhongyao Chen					<chen.zhongyao@zte.com.cn>
  Juergen Christ                                  <jchrist@linux.ibm.com>
  Alejandro Colomar                               <alx@kernel.org>
  Giuseppe D'Angelo                               <giuseppe.dangelo@kdab.com>
--- 965,972 ----
  Daniel Barboza                                  <dbarboza@ventanamicro.com>
  Peter Bergner                                   <bergner@tenstorrent.com>
  Dhruv Chawla                                    <dhruvc@nvidia.com>
! Zhongyao Chen                                   <chen.zhongyao@zte.com.cn>
! Zhongyao Chen                                   <chenzhongyao.hit@gmail.com>
  Juergen Christ                                  <jchrist@linux.ibm.com>
  Alejandro Colomar                               <alx@kernel.org>
  Giuseppe D'Angelo                               <giuseppe.dangelo@kdab.com>
diff -Nrcpad gcc-17-20260524/MD5SUMS gcc-17-20260531/MD5SUMS
*** gcc-17-20260524/MD5SUMS	Sun May 24 22:32:23 2026
--- gcc-17-20260531/MD5SUMS	Sun May 31 22:32:24 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260524.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-20260531.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
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 24,38 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 5627cdfe28ae661eeeb2d737db3d35e4  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 73cbce57c94d55906281d398fe1314d1  LAST_UPDATED
! 61bf72bff3874773b972d926e1ba2360  MAINTAINERS
! af43617880b3cd9c10627c97e639d29e  Makefile.def
! 734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
! bd7a6cf48b6a530442ffaee7ea118c2d  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  7be8773244474bc82211a4726f43c3c8  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
--- 24,38 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! af335550273444c4b919e1f5bd69cb9d  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 47b6a41d45c987bc4fc38ce040099b68  LAST_UPDATED
! cbd27524f66ade6880a014b7e3200397  MAINTAINERS
! f1b0fe5b41f7272f173407bd21947846  Makefile.def
! fbda720c413d124746752b72dbcfff21  Makefile.in
! 1c50f15d0e3e9ca32ee2b28db19f45bd  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  7be8773244474bc82211a4726f43c3c8  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
*************** dd20b4aa952e750070486e3525cba7bd  config
*** 160,166 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  07f145e2ab73fc50d9557c0c0e8db303  configure
  2950c8550289b6a39cf4fd0697c88aae  configure.ac
! dbe84e88e1242eb2f653b37d906d0361  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
--- 160,166 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  07f145e2ab73fc50d9557c0c0e8db303  configure
  2950c8550289b6a39cf4fd0697c88aae  configure.ac
! 755c0bbca6c59628cf93a66a9be41f28  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
*************** e476ff9755e2b2f65ff63d32fc2b15e4  contri
*** 175,181 ****
  a58c6d563061b437bb37db944059c591  contrib/bpf-vmtest-tool/tests/test_cli.py
  94c929abb32ebb06e2ada64408955a17  contrib/bpf-vmtest-tool/utils.py
  ee0ae327aa0f1870f7f3769378ffe5f3  contrib/bpf-vmtest-tool/vm.py
! 0fbcabcb8183944b68d52dd4683c73f8  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
  71d1b41247c5c74fb047e13edec7e323  contrib/check-params-in-docs.py
  7718189f09f512492ac48fac60f8ce42  contrib/check_GNU_style.py
--- 175,181 ----
  a58c6d563061b437bb37db944059c591  contrib/bpf-vmtest-tool/tests/test_cli.py
  94c929abb32ebb06e2ada64408955a17  contrib/bpf-vmtest-tool/utils.py
  ee0ae327aa0f1870f7f3769378ffe5f3  contrib/bpf-vmtest-tool/vm.py
! 823971beee3a02aa2cb477ce439fc727  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
  71d1b41247c5c74fb047e13edec7e323  contrib/check-params-in-docs.py
  7718189f09f512492ac48fac60f8ce42  contrib/check_GNU_style.py
*************** c0b13a476b5e57b6d55b304f67f69581  contri
*** 196,202 ****
  652ed31d99697495ddefe9885ce403da  contrib/compare_two_ftime_report_sets
  c4da2ac548c906e5fd9f8d7649a5769a  contrib/config-list.mk
  50d60ebb1e537550506cd7352443d454  contrib/dg-cmp-results.sh
! 0a46ba94ff235e5ef32b1c7f200f820b  contrib/dg-extract-results.py
  a72cf7608237ddae6dd5fe9bfb266f84  contrib/dg-extract-results.sh
  f376ef2547f0e97ab848a41024e827d8  contrib/dg-lint/dg-lint
  38b785f7f170133d3d9f543068c34a0d  contrib/dg-lint/libgdiagnostics.py
--- 196,202 ----
  652ed31d99697495ddefe9885ce403da  contrib/compare_two_ftime_report_sets
  c4da2ac548c906e5fd9f8d7649a5769a  contrib/config-list.mk
  50d60ebb1e537550506cd7352443d454  contrib/dg-cmp-results.sh
! 979a288476a0d77345492450f86966e3  contrib/dg-extract-results.py
  a72cf7608237ddae6dd5fe9bfb266f84  contrib/dg-extract-results.sh
  f376ef2547f0e97ab848a41024e827d8  contrib/dg-lint/dg-lint
  38b785f7f170133d3d9f543068c34a0d  contrib/dg-lint/libgdiagnostics.py
*************** e8b207b9c7a9bb52bc0c9235781da723  contri
*** 388,396 ****
  b524c6a57df4d9803b79df5ecd4f368f  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 0df06800bd7d1cff124e36c40950d9c9  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
! d366af9d8a7e0a6922b809e8bdd27ae8  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  1f4e46c32c0fe1905e25e75d991c931a  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
--- 388,396 ----
  b524c6a57df4d9803b79df5ecd4f368f  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! e2bd0c22276e811e96aaefb2d9cfa9f8  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
! faccd3495bc1e8ec7f076d7dd5935b91  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  1f4e46c32c0fe1905e25e75d991c931a  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
*************** baef7ba9b787bf0e8083a807ade166c2  fixinc
*** 398,413 ****
  7c2caef8893c82b0279f7c5d67bdc48a  fixincludes/configure
  b6ffc204128adbd2c41ac0cb4ce98dc7  fixincludes/configure.ac
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
! 77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
! 8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
  7f0fed08dfa61ea12896569a2a5375d1  fixincludes/fixincl.tpl
  29056a389be8fc8500fbef580f62b505  fixincludes/fixincl.x
! 545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! d0f85be43d3d248a368dd59492f134ea  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 398,413 ----
  7c2caef8893c82b0279f7c5d67bdc48a  fixincludes/configure
  b6ffc204128adbd2c41ac0cb4ce98dc7  fixincludes/configure.ac
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
! e5c012264bf10be63e36230140635373  fixincludes/fixinc.in
! f56137a09319b94742c51929a5922d0f  fixincludes/fixincl.c
  7f0fed08dfa61ea12896569a2a5375d1  fixincludes/fixincl.tpl
  29056a389be8fc8500fbef580f62b505  fixincludes/fixincl.x
! 2dae6ba43a509ff4b52ddaa7a634ba87  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 45f0bafe01845a58895f81cd586ce856  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 531,537 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! be5fc70911bd8aa2aef774a64f7be4fd  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 531,537 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! cf6617fd4d19f37c7f0ed3b71eceb692  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 569,587 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 3e51d2121d14076411403b058bff585c  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! c9814361c0fa3f33e539c3c2b77e3c6c  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  cbbaecdd6decdf00007bbdb344d2b282  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! b5fd1b030d59a0189a05f8574737a291  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 569,587 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 0aabef522921c41eea2e0e8c7d9d7b88  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! caa6019a7bb42bef2376b6b7fd2bae69  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  cbbaecdd6decdf00007bbdb344d2b282  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 6ddadbe84a05c87e19681dc2b1ee9596  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eea9961506181531b5f7f1a7f62fe428  gcc/ad
*** 611,625 ****
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 55fa6611dd185a2ad1958853c6177e8d  gcc/ada/Makefile.rtl
! 286d2ead847e0c4ebeaba165f98ee998  gcc/ada/accessibility.adb
! e1ac9cc081416270a911135ba79261ee  gcc/ada/accessibility.ads
  ae606358a99a7aabe5c0eb16329624b3  gcc/ada/ada_get_targ.adb
  c40d997c0c713985ad13faa6d354b016  gcc/ada/adabkend.adb
  8a0369e13d0752dfaddb77dfd08c3d14  gcc/ada/adabkend.ads
  ee04249eeb43a0e8f19490fbaccd6169  gcc/ada/adadecode.c
  35aad1fa6496345e7a7a1a7c43ac1145  gcc/ada/adadecode.h
! 1b8348740464d6f94417f6c8bc3aedd1  gcc/ada/adaint.c
  8606a990b2e1a636a5ae50f019b17b10  gcc/ada/adaint.h
  a82184f30accc8ed33746fffe377a4ed  gcc/ada/affinity.c
  0ed459e0096285586fcd5221bb4cfb52  gcc/ada/ali-util.adb
--- 611,625 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! e3036b8607f7eefdbf796a5849c8bcd1  gcc/ada/Makefile.rtl
! 20b1a872e1eabf3e42b5eab100ae63e9  gcc/ada/accessibility.adb
! b4ab3af59ef03dcbeeb6327a2a4c4472  gcc/ada/accessibility.ads
  ae606358a99a7aabe5c0eb16329624b3  gcc/ada/ada_get_targ.adb
  c40d997c0c713985ad13faa6d354b016  gcc/ada/adabkend.adb
  8a0369e13d0752dfaddb77dfd08c3d14  gcc/ada/adabkend.ads
  ee04249eeb43a0e8f19490fbaccd6169  gcc/ada/adadecode.c
  35aad1fa6496345e7a7a1a7c43ac1145  gcc/ada/adadecode.h
! 2b9fe3fc6a4785e2e8df6d8be74e581b  gcc/ada/adaint.c
  8606a990b2e1a636a5ae50f019b17b10  gcc/ada/adaint.h
  a82184f30accc8ed33746fffe377a4ed  gcc/ada/affinity.c
  0ed459e0096285586fcd5221bb4cfb52  gcc/ada/ali-util.adb
*************** a82184f30accc8ed33746fffe377a4ed  gcc/ad
*** 627,640 ****
  942542a18a49b332c233b9effce22ac1  gcc/ada/ali.adb
  88c405590154f9db500832e038780e2d  gcc/ada/ali.ads
  a5f9ea1ee979426b1e19ed469160cf3e  gcc/ada/alloc.ads
! 2ed8264ae6d3e6183c070864af1debcc  gcc/ada/argv-lynxos178-raven-cert.c
! 16e8e9e10379bd7278f9d06791ed6efb  gcc/ada/argv.c
! b493ca76414651276373327aca25f7c4  gcc/ada/aspects.adb
! eeb798e81047bb42f573a704eb1077de  gcc/ada/aspects.ads
  6e1b6f3ca6da5c24f2b9c3e6637a1dbb  gcc/ada/atree.adb
  fd46d0d4940b9fd7cf5c96d9a66ed70a  gcc/ada/atree.ads
  6e0304e672e621021491b2c184e23f17  gcc/ada/atree.h
! fd7d351169dfec7fb0174f0348fb8266  gcc/ada/aux-io.c
  38000e4d3ef388955ef56b6d9a5e49e8  gcc/ada/back_end.adb
  693adfee4358f7cd8a0cda8bf892672f  gcc/ada/back_end.ads
  79c42fa7163094a2d83614adce557fa9  gcc/ada/backend_utils.adb
--- 627,640 ----
  942542a18a49b332c233b9effce22ac1  gcc/ada/ali.adb
  88c405590154f9db500832e038780e2d  gcc/ada/ali.ads
  a5f9ea1ee979426b1e19ed469160cf3e  gcc/ada/alloc.ads
! 5d8946c9a46c56a9c326d0e9d9d3d4d9  gcc/ada/argv-lynxos178-raven-cert.c
! c601b751c9d562150f8e9defec4660ce  gcc/ada/argv.c
! 242f0f8e8fab3b3e0a9709998f39d504  gcc/ada/aspects.adb
! 7cc405de934fbfa09eba956e1fe10b5e  gcc/ada/aspects.ads
  6e1b6f3ca6da5c24f2b9c3e6637a1dbb  gcc/ada/atree.adb
  fd46d0d4940b9fd7cf5c96d9a66ed70a  gcc/ada/atree.ads
  6e0304e672e621021491b2c184e23f17  gcc/ada/atree.h
! e7c8de7478b236d5bfcd7fe95cb362e1  gcc/ada/aux-io.c
  38000e4d3ef388955ef56b6d9a5e49e8  gcc/ada/back_end.adb
  693adfee4358f7cd8a0cda8bf892672f  gcc/ada/back_end.ads
  79c42fa7163094a2d83614adce557fa9  gcc/ada/backend_utils.adb
*************** fd7d351169dfec7fb0174f0348fb8266  gcc/ad
*** 645,651 ****
  3f0746360527dbf9d17af0643019d63c  gcc/ada/binde.ads
  69103c6cb0752a888630b07d41c8efba  gcc/ada/binderr.adb
  132494feb431a9163fdc8aab6a4cf481  gcc/ada/binderr.ads
! 861403534efacec52140f8dbf80910f7  gcc/ada/bindgen.adb
  162e062dfc96ea6eb453d1247a06129c  gcc/ada/bindgen.ads
  285614d90c16ed23ee03946f7aa545e3  gcc/ada/bindo-augmentors.adb
  7fc3f65a2f6a47ef465311efcdb4e97c  gcc/ada/bindo-augmentors.ads
--- 645,651 ----
  3f0746360527dbf9d17af0643019d63c  gcc/ada/binde.ads
  69103c6cb0752a888630b07d41c8efba  gcc/ada/binderr.adb
  132494feb431a9163fdc8aab6a4cf481  gcc/ada/binderr.ads
! 3829f0e35e5f0975e40f3d076a46fb8f  gcc/ada/bindgen.adb
  162e062dfc96ea6eb453d1247a06129c  gcc/ada/bindgen.ads
  285614d90c16ed23ee03946f7aa545e3  gcc/ada/bindo-augmentors.adb
  7fc3f65a2f6a47ef465311efcdb4e97c  gcc/ada/bindo-augmentors.ads
*************** c2c2ce0ac85db6276eb58438ed0655a7  gcc/ad
*** 671,733 ****
  4f4e391248e66a4b9cc396f9765ce4f2  gcc/ada/butil.ads
  29d9f902f66fe8415f5b9f300ca23b66  gcc/ada/casing.adb
  25bd0c7e9883d8c218b0ab36b2859de6  gcc/ada/casing.ads
! 08ad91a7d93ff92355dab382fa7ffc78  gcc/ada/checks.adb
  718318d8ff137c5dfb3728ef75ba7f59  gcc/ada/checks.ads
! 403bc6a6d72b88976a0ccc8ff9459d77  gcc/ada/cio.c
  87a1a7be553e1cbb5ccf25ba67166d4c  gcc/ada/clean.adb
  b7678d8e7ea8aa0a70e24b3fb885db3c  gcc/ada/clean.ads
  6aaf6ce8bf8560231a3bb0ca1b12272c  gcc/ada/comperr.adb
  8b48cff165002adce60df535498f6650  gcc/ada/comperr.ads
  f21d3b1fb30a592ea0d55cc24e7ed262  gcc/ada/config-lang.in
! cf01a5a581a349b07cba932a6b4d27ec  gcc/ada/contracts.adb
  74dca16001c24970dda556d1d088d05d  gcc/ada/contracts.ads
  a29b9edba17a642e68340d8d5b20dd6c  gcc/ada/csets.adb
  b3a5bb5354c2c4c1961b72fcee81f353  gcc/ada/csets.ads
  9b507518d5208bad11fd267d87dfa39a  gcc/ada/cstand.adb
  944994f4a64b41fee9f6c266a4bfcadf  gcc/ada/cstand.ads
! d5f5c3f440277272f5cc21f968a43588  gcc/ada/cstreams.c
  1b1d07fd9c1cbe3c9065636585ec2034  gcc/ada/ctrl_c.c
! f6b1d0a04a54bfc7c0d6b1a7001bc763  gcc/ada/debug.adb
  bc28c5c733c954c4dadb6e046d5d77cf  gcc/ada/debug.ads
  91acc2d4bbb0a9ded0450945658cfcc8  gcc/ada/debug_a.adb
  8b28af55ba26dac0275b8a7fc8e0389b  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
! 7559c05099cde820bf8bebbceabccc04  gcc/ada/doc/gnat_rm.rst
! 5bf95a83da0a709f6bdf91751e65e01f  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! e7ba72bcb5b6e279eac294bfd2d9c998  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 6a1c79967060865c8310697a857de11b  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 841d2d7d08c02898708fc688f180e10f  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 7521a9c7898f9cdc3b74c7df8d21d2c2  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! 9358d124a08bdf6e1b8f83a0b72d062f  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
! 454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  589bf80a1722468834f1e02674ad1e27  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 72aca4143b04d0cd9a9d207bd7ebbbcd  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! eb3bc27dcbfec397dea4c2660fce484d  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
  a8608ebf71444d2564728c8a41283e03  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! de678cadfde8bce5aa2e2f73f408ad76  gcc/ada/doc/gnat_rm/the_gnat_library.rst
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 447681f4a0cab6704e2bee5681bd8b39  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! eacaa696fafef4f9aba5958051b20a6a  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! d05e426d95c24c54af666c18b1fb547c  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! fb97e551cf32ed76280cd4f8cd40825c  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! 2beabef2edddb52bfa57ca9360bed6fb  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
! 32b64eb2bfda56adcea7d1f563bee6bb  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  1b7b0904041eb97a9ac023e776774561  gcc/ada/doc/share/gnat.sty
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
--- 671,734 ----
  4f4e391248e66a4b9cc396f9765ce4f2  gcc/ada/butil.ads
  29d9f902f66fe8415f5b9f300ca23b66  gcc/ada/casing.adb
  25bd0c7e9883d8c218b0ab36b2859de6  gcc/ada/casing.ads
! 922140b7777944ea6786e57c7cf204e0  gcc/ada/checks.adb
  718318d8ff137c5dfb3728ef75ba7f59  gcc/ada/checks.ads
! d2a12f8da1ccd5803e4480a5584ec4be  gcc/ada/cio.c
  87a1a7be553e1cbb5ccf25ba67166d4c  gcc/ada/clean.adb
  b7678d8e7ea8aa0a70e24b3fb885db3c  gcc/ada/clean.ads
  6aaf6ce8bf8560231a3bb0ca1b12272c  gcc/ada/comperr.adb
  8b48cff165002adce60df535498f6650  gcc/ada/comperr.ads
  f21d3b1fb30a592ea0d55cc24e7ed262  gcc/ada/config-lang.in
! e2b0ca96d6c2bec9e3dc953201e6048e  gcc/ada/contracts.adb
  74dca16001c24970dda556d1d088d05d  gcc/ada/contracts.ads
  a29b9edba17a642e68340d8d5b20dd6c  gcc/ada/csets.adb
  b3a5bb5354c2c4c1961b72fcee81f353  gcc/ada/csets.ads
  9b507518d5208bad11fd267d87dfa39a  gcc/ada/cstand.adb
  944994f4a64b41fee9f6c266a4bfcadf  gcc/ada/cstand.ads
! 82336562eabb075acd39ff529ea2ba64  gcc/ada/cstreams.c
  1b1d07fd9c1cbe3c9065636585ec2034  gcc/ada/ctrl_c.c
! f8d42e9d4dd662634359f8dab475b93a  gcc/ada/debug.adb
  bc28c5c733c954c4dadb6e046d5d77cf  gcc/ada/debug.ads
  91acc2d4bbb0a9ded0450945658cfcc8  gcc/ada/debug_a.adb
  8b28af55ba26dac0275b8a7fc8e0389b  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
! 1fad5e7cc6dac527a8d453b60b6de4be  gcc/ada/doc/gnat_rm.rst
! b2e701a565d6f7f9874142228be0e4dc  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 126af46980c709bfad54ec8cf873b1e0  gcc/ada/doc/gnat_rm/gnat_implementation_mode.rst
! e30abec9fafa50d63e5674b13debcfa9  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 2b7706be16142e547f8e8254511b3387  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 239f1949e372a0d551e3056f536f2d12  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! a384d500018143b8311c1d638a364a86  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
! f325ea14b0aae274cec66926227a9f24  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
! b41ba2a36a4a1dc15e51faa9e84f9058  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  589bf80a1722468834f1e02674ad1e27  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 430ea8bd7a97f0c631de158c010a33ae  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 2b24a1e0ed3e38d49401536d416a1153  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
  a8608ebf71444d2564728c8a41283e03  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 55382f631f8bd6de0367f09124868b20  gcc/ada/doc/gnat_rm/the_gnat_library.rst
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 7e44c48d8246f414a503ac214f361019  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! f75c22efca3769a5c2ab6a827fb806a1  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! c24a0922f53a0bf90be1ac2ee52bd53f  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! 78b0d189f8138d64413802719d24882f  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! a756f94f0d4eb078025f866208f43152  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
! 02d9c6e9996c22765a2f43f83f2604d3  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  1b7b0904041eb97a9ac023e776774561  gcc/ada/doc/share/gnat.sty
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 736,772 ****
  53ad5bbe1307592cb0b72abbd090be7c  gcc/ada/einfo-utils.adb
  7d8424f0fa1f5c55e62289d1bb109135  gcc/ada/einfo-utils.ads
  97ce2e179e42e649dfe8affca8e3c302  gcc/ada/einfo.adb
! 6fa3197b4db9381c4477c02c703ccf76  gcc/ada/einfo.ads
  fef3bb4012357f98b9b104dfa3daee51  gcc/ada/elists.adb
  52dc293e77a753c73be5d02f2661369f  gcc/ada/elists.ads
  30a82f1a7c5bfcc4e8be8d79dc60e23e  gcc/ada/elists.h
! 9ec804ce6ec509c97a3d1ee61e647882  gcc/ada/env.c
! c91dca185d552d7b836c9c09850734c1  gcc/ada/env.h
  98aa80934e74727f397972f3d475c339  gcc/ada/err_vars.ads
! 1c3ef430f796238906ebb2bc044e949f  gcc/ada/errid-diagnostic_repository.ads
  cca5ee0694320e014df12c82cb9f56f0  gcc/ada/errid-switch_repository.adb
  5402cf7f235641982366ac9d28fb1bc6  gcc/ada/errid-switch_repository.ads
! 823d2e8864c2f932d921025f8333e691  gcc/ada/errid.adb
! 06416e6001bd21ae589d473e07b013d9  gcc/ada/errid.ads
  84f28219501ec3f2ace259cad6375b8a  gcc/ada/errno.c
! 56f9874492806d0ed2da254e28d4676d  gcc/ada/errout.adb
! d11d09f4d9f7f5a1c7c53b22a8519987  gcc/ada/errout.ads
! fabb943ae5026300821049a63f358453  gcc/ada/erroutc-pretty_emitter.adb
  039052e81d94cd57e6732e2741d45971  gcc/ada/erroutc-pretty_emitter.ads
! 9fd0d8047c76bf50119ebdd339c8dbab  gcc/ada/erroutc-sarif_emitter.adb
! 091c5b426ca1d4da33b22d1cab7808e4  gcc/ada/erroutc-sarif_emitter.ads
! 6f423a4bf872fa80afcb7679b31df763  gcc/ada/erroutc.adb
! 92c5bfffa4dd3b144432c2ca10950577  gcc/ada/erroutc.ads
! 375d77a59fe99a106b2f48426c3e760e  gcc/ada/errutil.adb
  6f419277ada6ce8a81349d41a22b2869  gcc/ada/errutil.ads
  3dc31e56d392ba3da0e312527adcd953  gcc/ada/eval_fat.adb
  3a42a1f58a3aff7741ec916dfc1d9882  gcc/ada/eval_fat.ads
  adb49f37416fce62d5759f9b4c733fe6  gcc/ada/exit.c
! 06d488853d68e0f0a67a4bd755cdb6e4  gcc/ada/exp_aggr.adb
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! 5d68882641f26f3c6c75a393e2cc283f  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
--- 737,774 ----
  53ad5bbe1307592cb0b72abbd090be7c  gcc/ada/einfo-utils.adb
  7d8424f0fa1f5c55e62289d1bb109135  gcc/ada/einfo-utils.ads
  97ce2e179e42e649dfe8affca8e3c302  gcc/ada/einfo.adb
! c9d51964f2482879a6b612f2593b78eb  gcc/ada/einfo.ads
  fef3bb4012357f98b9b104dfa3daee51  gcc/ada/elists.adb
  52dc293e77a753c73be5d02f2661369f  gcc/ada/elists.ads
  30a82f1a7c5bfcc4e8be8d79dc60e23e  gcc/ada/elists.h
! ada769df160688148476daa6276e1e8e  gcc/ada/env.c
! c12fb1605300d1f30fd6df091378f210  gcc/ada/env.h
  98aa80934e74727f397972f3d475c339  gcc/ada/err_vars.ads
! 026a8f983d7006f8963926313a9f9b94  gcc/ada/errid-diagnostic_repository.ads
! a23a49a188651dffab085071fbb4fe41  gcc/ada/errid-restriction_repository.ads
  cca5ee0694320e014df12c82cb9f56f0  gcc/ada/errid-switch_repository.adb
  5402cf7f235641982366ac9d28fb1bc6  gcc/ada/errid-switch_repository.ads
! 33f47902242afa2110a6def083b718fd  gcc/ada/errid.adb
! 1af164987170f38613191d2dbe084d15  gcc/ada/errid.ads
  84f28219501ec3f2ace259cad6375b8a  gcc/ada/errno.c
! 489a35fc85e975f8b333aad60ddc6c75  gcc/ada/errout.adb
! 8a82869ffbf333c6798bcb8f13d36e7b  gcc/ada/errout.ads
! 8e13c8dff0b7b25b0b2034b8ec88934d  gcc/ada/erroutc-pretty_emitter.adb
  039052e81d94cd57e6732e2741d45971  gcc/ada/erroutc-pretty_emitter.ads
! fbb53860c83f330e1a5ca618e8aa95c8  gcc/ada/erroutc-sarif_emitter.adb
! 891df43fdb6b576116301b6438c24ed9  gcc/ada/erroutc-sarif_emitter.ads
! 6cd94bf9c220038cbb14bb1e92a5a64c  gcc/ada/erroutc.adb
! e21df15bc81f432d4de85b5af4ecc699  gcc/ada/erroutc.ads
! 9b6a6301822ff4e7a2961393ca29db8d  gcc/ada/errutil.adb
  6f419277ada6ce8a81349d41a22b2869  gcc/ada/errutil.ads
  3dc31e56d392ba3da0e312527adcd953  gcc/ada/eval_fat.adb
  3a42a1f58a3aff7741ec916dfc1d9882  gcc/ada/eval_fat.ads
  adb49f37416fce62d5759f9b4c733fe6  gcc/ada/exit.c
! 3dfa27fbeea249124e1bd384e1ec62af  gcc/ada/exp_aggr.adb
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! aaaf4d78392ca1ac0a3068fa366f20d1  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
*************** a84d191dad3158db125ec48c285b9667  gcc/ad
*** 779,832 ****
  371cc0c543b5d2502352758eb7b73e8f  gcc/ada/exp_ch13.ads
  ace7dfdd53834601d964efef9557e0f4  gcc/ada/exp_ch2.adb
  aec86f795b370fca1379a25f37651fdf  gcc/ada/exp_ch2.ads
! bfede432412bc3d7ee70e14cbda137e3  gcc/ada/exp_ch3.adb
  52ca7939bd6b0e1da9e20d902813d109  gcc/ada/exp_ch3.ads
! 33412d9e019d4b8a749c92c7da8ddb5a  gcc/ada/exp_ch4.adb
  2d9cf8b148fdc7a07edde2cf9fbb59f8  gcc/ada/exp_ch4.ads
! 14be4614e917c455830a799b3e214921  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! 4cabe50d62190b625d0ed8d83c7d428d  gcc/ada/exp_ch6.adb
! 757670a84e9c01219a219c4bc68ea62b  gcc/ada/exp_ch6.ads
  b8cb3b82f2a68b211875181376e0de4b  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
! 122a5cde9816de02c7f37bcdf2de229f  gcc/ada/exp_ch8.adb
  9955bf7551ef5f537f9031c59fb73db8  gcc/ada/exp_ch8.ads
! f084400d4a12cabf8267bc395b762fa2  gcc/ada/exp_ch9.adb
! d5bed31d915c80f427741d1175ba335a  gcc/ada/exp_ch9.ads
  914abafc66aba1c22bfd983c48ee2d6a  gcc/ada/exp_code.adb
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 53b442df6e416c67f7f0dfa7a033850e  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
  23f9e2de53a292fd54bac01c5bf3a794  gcc/ada/exp_fixd.adb
  a68a87f80c2a7f799dba65186bf644df  gcc/ada/exp_fixd.ads
! 69449d2ad4a142d9ecb0cfa80cd80ce1  gcc/ada/exp_imgv.adb
  34fc29154c68ffe19f5d9e5cb9f5be59  gcc/ada/exp_imgv.ads
  ee534f378918dac3d346695bf4bcf9a2  gcc/ada/exp_intr.adb
  98fffa8af9ba75158eeab9097a7838a3  gcc/ada/exp_intr.ads
  76948a2e60e8a51d14c21ac627fe5375  gcc/ada/exp_pakd.adb
  4a687a32bfa3449e71b6e5eb050497b1  gcc/ada/exp_pakd.ads
! 67c749c20d685df7377ae13924346b73  gcc/ada/exp_prag.adb
  72a4e0a905bb5ed9604683cb4aa8f9dc  gcc/ada/exp_prag.ads
! 3c4cc16c00054e6b71e1305c3a35b2a6  gcc/ada/exp_put_image.adb
! 809ac6dc6426a2989a6eafd2dc0dc837  gcc/ada/exp_put_image.ads
  113ca62ed0736ce6088da621227c3d67  gcc/ada/exp_sel.adb
  8573714354a5f8299d234cb15aec7bee  gcc/ada/exp_sel.ads
  98efb9e91a5f81d72a65db5d6bdd4abf  gcc/ada/exp_smem.adb
  aada5a2a6d65a0eaf198aaf386ece7ab  gcc/ada/exp_smem.ads
! 3b6a5ec1c9fa7a6f4fdc9e39c4ea2d98  gcc/ada/exp_spark.adb
  047bff31c2d6f19c6cac822e25fd7305  gcc/ada/exp_spark.ads
  abc4adbcfcc5aec49e61dfe787dc8274  gcc/ada/exp_strm.adb
  3a2ca8073ab459c3de33ef8f943dcde8  gcc/ada/exp_strm.ads
  4b1d1fb96b1da183c0331dac2bcda76c  gcc/ada/exp_tss.adb
  3372f4711ba5978adb3c0b71a6836ba0  gcc/ada/exp_tss.ads
! ef2035bfbeb4e058c824980c2f6d7214  gcc/ada/exp_unst.adb
! a787a30ba8699ad9caabf0ddeb2bd425  gcc/ada/exp_unst.ads
! b40cc3f4d2fdc98f9425cd424f7d890c  gcc/ada/exp_util.adb
! fb64e3eab9418e4f42c1e395d64be8ca  gcc/ada/exp_util.ads
  da86db6b7d964bec3beb0995f66c2c49  gcc/ada/expander.adb
  ca321269d17552e01fce3be99a0a3452  gcc/ada/expander.ads
  da666491b0d26eef3aa08ba31f054d9b  gcc/ada/expect.c
--- 781,834 ----
  371cc0c543b5d2502352758eb7b73e8f  gcc/ada/exp_ch13.ads
  ace7dfdd53834601d964efef9557e0f4  gcc/ada/exp_ch2.adb
  aec86f795b370fca1379a25f37651fdf  gcc/ada/exp_ch2.ads
! f1e8250e55f2381e81e4fcb0c5e8f4e8  gcc/ada/exp_ch3.adb
  52ca7939bd6b0e1da9e20d902813d109  gcc/ada/exp_ch3.ads
! 925978dfe74c4002c4b4174b0479362d  gcc/ada/exp_ch4.adb
  2d9cf8b148fdc7a07edde2cf9fbb59f8  gcc/ada/exp_ch4.ads
! d581ce062c9cecbaa3f56a950f8620a3  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! 110a6ea9445995330ba5fa1433a49a11  gcc/ada/exp_ch6.adb
! 06c642df831eac4b8b06e06e0cc2672b  gcc/ada/exp_ch6.ads
  b8cb3b82f2a68b211875181376e0de4b  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
! 8801787aa12c6cff916c7659aa60ec45  gcc/ada/exp_ch8.adb
  9955bf7551ef5f537f9031c59fb73db8  gcc/ada/exp_ch8.ads
! b428be27614050a1466b1f6edd544f78  gcc/ada/exp_ch9.adb
! 1178d33ee0ddc60f2a18e73a13f56b4a  gcc/ada/exp_ch9.ads
  914abafc66aba1c22bfd983c48ee2d6a  gcc/ada/exp_code.adb
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 08060d82895d9c888322c2927d8008ca  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
  23f9e2de53a292fd54bac01c5bf3a794  gcc/ada/exp_fixd.adb
  a68a87f80c2a7f799dba65186bf644df  gcc/ada/exp_fixd.ads
! 32bbb097d76f08c3ed350190e00dd089  gcc/ada/exp_imgv.adb
  34fc29154c68ffe19f5d9e5cb9f5be59  gcc/ada/exp_imgv.ads
  ee534f378918dac3d346695bf4bcf9a2  gcc/ada/exp_intr.adb
  98fffa8af9ba75158eeab9097a7838a3  gcc/ada/exp_intr.ads
  76948a2e60e8a51d14c21ac627fe5375  gcc/ada/exp_pakd.adb
  4a687a32bfa3449e71b6e5eb050497b1  gcc/ada/exp_pakd.ads
! d009e31576e0d5fbfdfc613b9252e0af  gcc/ada/exp_prag.adb
  72a4e0a905bb5ed9604683cb4aa8f9dc  gcc/ada/exp_prag.ads
! 3f65e52e596c1692509696f8ef338356  gcc/ada/exp_put_image.adb
! 028bfd0d0d27a819302654aaa7ed8786  gcc/ada/exp_put_image.ads
  113ca62ed0736ce6088da621227c3d67  gcc/ada/exp_sel.adb
  8573714354a5f8299d234cb15aec7bee  gcc/ada/exp_sel.ads
  98efb9e91a5f81d72a65db5d6bdd4abf  gcc/ada/exp_smem.adb
  aada5a2a6d65a0eaf198aaf386ece7ab  gcc/ada/exp_smem.ads
! 0fe3f313ca8130cb9dd6e7ff180479c9  gcc/ada/exp_spark.adb
  047bff31c2d6f19c6cac822e25fd7305  gcc/ada/exp_spark.ads
  abc4adbcfcc5aec49e61dfe787dc8274  gcc/ada/exp_strm.adb
  3a2ca8073ab459c3de33ef8f943dcde8  gcc/ada/exp_strm.ads
  4b1d1fb96b1da183c0331dac2bcda76c  gcc/ada/exp_tss.adb
  3372f4711ba5978adb3c0b71a6836ba0  gcc/ada/exp_tss.ads
! 615035164b85c41e0511b0964debffb3  gcc/ada/exp_unst.adb
! 36837947cf32d9b44ffd59a3faf56050  gcc/ada/exp_unst.ads
! 43dc623053ae60fdf80eb63b9891c2be  gcc/ada/exp_util.adb
! 43d879ef4447d808c855fab353d66eb3  gcc/ada/exp_util.ads
  da86db6b7d964bec3beb0995f66c2c49  gcc/ada/expander.adb
  ca321269d17552e01fce3be99a0a3452  gcc/ada/expander.ads
  da666491b0d26eef3aa08ba31f054d9b  gcc/ada/expect.c
*************** a33f6ce50ea5f6239bb943392e892d17  gcc/ad
*** 840,851 ****
  69ddf39d57c6fcb7c5a317cae7c09f58  gcc/ada/fname-uf.ads
  aafcb91317d2b95ebf55c3e8bbc030e0  gcc/ada/fname.adb
  8a4878ab4881e98ec589708dfeabb6da  gcc/ada/fname.ads
! 1cfcf302b4d5276f1a66d2492c99d550  gcc/ada/freeze.adb
! c2b6f0e40ada726a36b2cba815c79591  gcc/ada/freeze.ads
  c8c5844ba2c26bdc1b7c004e5b806668  gcc/ada/frontend.adb
  03bc5c5bdf3e467c3fa035201ba507d2  gcc/ada/frontend.ads
! ebc793bc845743c8d1abae02a7f2d8a3  gcc/ada/gcc-interface/Make-lang.in
! f2129a1ac6027679f0759dd5664fe22f  gcc/ada/gcc-interface/Makefile.in
  4a3368e207a707c3b5a9ffd105f8eec0  gcc/ada/gcc-interface/ada-builtin-types.def
  543f471801cbaf1a34c4f0289b0b17ec  gcc/ada/gcc-interface/ada-builtins.def
  c7fe6d4e6ada24fd6764ce68ba3f91b2  gcc/ada/gcc-interface/ada-tree.def
--- 842,853 ----
  69ddf39d57c6fcb7c5a317cae7c09f58  gcc/ada/fname-uf.ads
  aafcb91317d2b95ebf55c3e8bbc030e0  gcc/ada/fname.adb
  8a4878ab4881e98ec589708dfeabb6da  gcc/ada/fname.ads
! ee2b29e677fb91405c34072f9653cd00  gcc/ada/freeze.adb
! 466eafe8c23a8bae84609ef5079ce927  gcc/ada/freeze.ads
  c8c5844ba2c26bdc1b7c004e5b806668  gcc/ada/frontend.adb
  03bc5c5bdf3e467c3fa035201ba507d2  gcc/ada/frontend.ads
! 824ef47cefd79cf278ddd5d3571070d1  gcc/ada/gcc-interface/Make-lang.in
! 3f59f3868f6c5ecd85d998234810fc5c  gcc/ada/gcc-interface/Makefile.in
  4a3368e207a707c3b5a9ffd105f8eec0  gcc/ada/gcc-interface/ada-builtin-types.def
  543f471801cbaf1a34c4f0289b0b17ec  gcc/ada/gcc-interface/ada-builtins.def
  c7fe6d4e6ada24fd6764ce68ba3f91b2  gcc/ada/gcc-interface/ada-tree.def
*************** e4204795e682e9a19f2c26c4b2410fc3  gcc/ad
*** 853,873 ****
  8d951ad5f91f626d3cc7ba6585129d29  gcc/ada/gcc-interface/ada.h
  f3edeff30f2d71e01f705dbeeea40b77  gcc/ada/gcc-interface/config-lang.in
  61292b93aaa82b358b5b4e2310c77d5b  gcc/ada/gcc-interface/cuintp.cc
! 111b3cb638cd46517ca334f96f5e83c9  gcc/ada/gcc-interface/decl.cc
  07d1f164dc85932ebe1eab7ad2117218  gcc/ada/gcc-interface/gadaint.h
  1e2940d1ddb2a1e198a7dcd59b66ebfc  gcc/ada/gcc-interface/gigi.h
  89108e218f6b9e9f07550c3675c059a7  gcc/ada/gcc-interface/lang-specs.h
  43e609e56eeb0ff4e57be465cd17ddbc  gcc/ada/gcc-interface/lang.opt
  5fa7cac776a0baee0d89a8f1d532117f  gcc/ada/gcc-interface/lang.opt.urls
! 8ef0bb2ae7258a2fb47816777dbbc079  gcc/ada/gcc-interface/misc.cc
  ec10f477ad1d3dba6056061ede6ff919  gcc/ada/gcc-interface/system.ads
  90cfb783f79abe4897a54ecd4d34f0a5  gcc/ada/gcc-interface/targtyps.cc
! c10afb784d01db96d3e446e834044dec  gcc/ada/gcc-interface/trans.cc
! a42ca7a70ecb27ca641d7e22801cdc56  gcc/ada/gcc-interface/utils.cc
  5aa7aec67976f00fbfd0e838865ac865  gcc/ada/gcc-interface/utils2.cc
! d5e790917c3bb105f9c562fc40e9bdce  gcc/ada/gen_il-fields.ads
! 5555ee464387437fa4bdf68050ab6962  gcc/ada/gen_il-gen-gen_entities.adb
! 3f142f6080a505c4b3aa2889c4d68af4  gcc/ada/gen_il-gen-gen_nodes.adb
  7091bf4b26ab64fe3d88bd3feb79b94f  gcc/ada/gen_il-gen.adb
  ce980375550bc71a64634141fbbcf330  gcc/ada/gen_il-gen.ads
  69c0994bcc9dc3ff0eb519a710c796f4  gcc/ada/gen_il-internals.adb
--- 855,875 ----
  8d951ad5f91f626d3cc7ba6585129d29  gcc/ada/gcc-interface/ada.h
  f3edeff30f2d71e01f705dbeeea40b77  gcc/ada/gcc-interface/config-lang.in
  61292b93aaa82b358b5b4e2310c77d5b  gcc/ada/gcc-interface/cuintp.cc
! 2a7d74c5708b0048d7e4fd78eadff442  gcc/ada/gcc-interface/decl.cc
  07d1f164dc85932ebe1eab7ad2117218  gcc/ada/gcc-interface/gadaint.h
  1e2940d1ddb2a1e198a7dcd59b66ebfc  gcc/ada/gcc-interface/gigi.h
  89108e218f6b9e9f07550c3675c059a7  gcc/ada/gcc-interface/lang-specs.h
  43e609e56eeb0ff4e57be465cd17ddbc  gcc/ada/gcc-interface/lang.opt
  5fa7cac776a0baee0d89a8f1d532117f  gcc/ada/gcc-interface/lang.opt.urls
! f34e54f7542f28025658b9fd6f01d110  gcc/ada/gcc-interface/misc.cc
  ec10f477ad1d3dba6056061ede6ff919  gcc/ada/gcc-interface/system.ads
  90cfb783f79abe4897a54ecd4d34f0a5  gcc/ada/gcc-interface/targtyps.cc
! f43316bdd52e0808507ffa57c01d4612  gcc/ada/gcc-interface/trans.cc
! f033f45a6cdfe34910ddc4ff506e35f5  gcc/ada/gcc-interface/utils.cc
  5aa7aec67976f00fbfd0e838865ac865  gcc/ada/gcc-interface/utils2.cc
! dd6e90bea138f046791266a322b797c6  gcc/ada/gen_il-fields.ads
! 52478a5d862abbf16fda5d88b4959880  gcc/ada/gen_il-gen-gen_entities.adb
! 71b7abc1ff24b63b80f922f5fec30725  gcc/ada/gen_il-gen-gen_nodes.adb
  7091bf4b26ab64fe3d88bd3feb79b94f  gcc/ada/gen_il-gen.adb
  ce980375550bc71a64634141fbbcf330  gcc/ada/gen_il-gen.ads
  69c0994bcc9dc3ff0eb519a710c796f4  gcc/ada/gen_il-internals.adb
*************** b849854dad319fbe3b731250ec8bd396  gcc/ad
*** 881,896 ****
  087bcf710ff99554041ac9b656b7498d  gcc/ada/get_scos.ads
  c9a79d9a9ae90f3aa712a05fac2a292d  gcc/ada/get_targ.adb
  d6c10405a90333a12764946307dc0f65  gcc/ada/get_targ.ads
! ad85f63240402108dad631ff5461b181  gcc/ada/ghost.adb
! 2a820cae5fe61a664d612d6a932b8392  gcc/ada/ghost.ads
  3e6d37543e1d3935a9987bbe1c5e7bf1  gcc/ada/gnat-style.texi
! 34377b9f07af9797c2619ffca3e5de59  gcc/ada/gnat1drv.adb
  670af6d018b90a411149613f83ae9377  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  635312af629edb6333cf662c55ae7a0b  gcc/ada/gnat_cuda.adb
  a930631c7c5fdabf12e2010079214e38  gcc/ada/gnat_cuda.ads
! cac3c1f4e7aea07828ef9ab3b693e73d  gcc/ada/gnat_rm.texi
! a671ca633499ae987f1b1ed9d1c3e93b  gcc/ada/gnat_ugn.texi
  97a151562fa533cd370413751bd18564  gcc/ada/gnatbind.adb
  cf407dc104ddb2d242f8c79a9b8166ec  gcc/ada/gnatbind.ads
  8a451200e3c6277c33c04b60c1c63fff  gcc/ada/gnatchop.adb
--- 883,898 ----
  087bcf710ff99554041ac9b656b7498d  gcc/ada/get_scos.ads
  c9a79d9a9ae90f3aa712a05fac2a292d  gcc/ada/get_targ.adb
  d6c10405a90333a12764946307dc0f65  gcc/ada/get_targ.ads
! d55971c074d65488c6f0e2ad49390210  gcc/ada/ghost.adb
! 65a717e72149b03fce989eae4a597a62  gcc/ada/ghost.ads
  3e6d37543e1d3935a9987bbe1c5e7bf1  gcc/ada/gnat-style.texi
! 1285695d1edbc4113939b460ba116e4d  gcc/ada/gnat1drv.adb
  670af6d018b90a411149613f83ae9377  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  635312af629edb6333cf662c55ae7a0b  gcc/ada/gnat_cuda.adb
  a930631c7c5fdabf12e2010079214e38  gcc/ada/gnat_cuda.ads
! 56d3374ca3bb270dccd640700103710d  gcc/ada/gnat_rm.texi
! 012d0c3a18ef248372848e46bbe98757  gcc/ada/gnat_ugn.texi
  97a151562fa533cd370413751bd18564  gcc/ada/gnatbind.adb
  cf407dc104ddb2d242f8c79a9b8166ec  gcc/ada/gnatbind.ads
  8a451200e3c6277c33c04b60c1c63fff  gcc/ada/gnatchop.adb
*************** cf407dc104ddb2d242f8c79a9b8166ec  gcc/ad
*** 898,904 ****
  33e90c5aff7098a92c6e549197733ea5  gcc/ada/gnatcmd.adb
  4266831e023535a7bebe4f45a13e3aa2  gcc/ada/gnatcmd.ads
  be1bc4b28f76f8d13e979b2ffc3493c1  gcc/ada/gnatdll.adb
! 670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
  aab44e4245fc6e446589b950e0de7ca3  gcc/ada/gnatkr.adb
  a89660ee7a9424f52d3d7f2d8c11b7eb  gcc/ada/gnatkr.ads
  d97501798bdbed0da82ee2fa716fcdd3  gcc/ada/gnatlink.adb
--- 900,906 ----
  33e90c5aff7098a92c6e549197733ea5  gcc/ada/gnatcmd.adb
  4266831e023535a7bebe4f45a13e3aa2  gcc/ada/gnatcmd.ads
  be1bc4b28f76f8d13e979b2ffc3493c1  gcc/ada/gnatdll.adb
! 8642872d20147f700d78ebf52da2a862  gcc/ada/gnathtml.pl
  aab44e4245fc6e446589b950e0de7ca3  gcc/ada/gnatkr.adb
  a89660ee7a9424f52d3d7f2d8c11b7eb  gcc/ada/gnatkr.ads
  d97501798bdbed0da82ee2fa716fcdd3  gcc/ada/gnatlink.adb
*************** d97501798bdbed0da82ee2fa716fcdd3  gcc/ad
*** 907,913 ****
  6917057b9212fe217ea3aa113154730c  gcc/ada/gnatls.ads
  a55aa119a5c077ebfae2b67fe2765109  gcc/ada/gnatmake.adb
  93f65bbf8560c833330600ecbdcd259a  gcc/ada/gnatmake.ads
! 92c6cd4ecb3f5c505296498719e2ac32  gcc/ada/gnatname.adb
  595444f27f85e25166d8b9206618e3eb  gcc/ada/gnatname.ads
  55e3a6ca74c1db21e581030aae412920  gcc/ada/gnatprep.adb
  d2eff1ec33d74fb0175f666c473d0277  gcc/ada/gnatprep.ads
--- 909,915 ----
  6917057b9212fe217ea3aa113154730c  gcc/ada/gnatls.ads
  a55aa119a5c077ebfae2b67fe2765109  gcc/ada/gnatmake.adb
  93f65bbf8560c833330600ecbdcd259a  gcc/ada/gnatmake.ads
! e9e2a3689b897bf188a517877764edc7  gcc/ada/gnatname.adb
  595444f27f85e25166d8b9206618e3eb  gcc/ada/gnatname.ads
  55e3a6ca74c1db21e581030aae412920  gcc/ada/gnatprep.adb
  d2eff1ec33d74fb0175f666c473d0277  gcc/ada/gnatprep.ads
*************** d2eff1ec33d74fb0175f666c473d0277  gcc/ad
*** 915,921 ****
  69e74c2a972c1d810db6c35fced63a2a  gcc/ada/gnatvsn.ads
  62ecb9c1cf4adaf52e243b6b2af014cb  gcc/ada/gprep.adb
  6cd615820206d692fc2fffa0b6fa14a9  gcc/ada/gprep.ads
! 8051320154ef3aa81f2771424cf2b2ca  gcc/ada/gsocket.h
  650db654ed0baf0930657bb158b26b9f  gcc/ada/hostparm.ads
  4a04bf4fe8008fcf0087aadb1e70423e  gcc/ada/impunit.adb
  c97cd2be242ad531d5eb4e97b73f61e6  gcc/ada/impunit.ads
--- 917,923 ----
  69e74c2a972c1d810db6c35fced63a2a  gcc/ada/gnatvsn.ads
  62ecb9c1cf4adaf52e243b6b2af014cb  gcc/ada/gprep.adb
  6cd615820206d692fc2fffa0b6fa14a9  gcc/ada/gprep.ads
! 0b9b1b554467978b2b1c1d7e82e2fedd  gcc/ada/gsocket.h
  650db654ed0baf0930657bb158b26b9f  gcc/ada/hostparm.ads
  4a04bf4fe8008fcf0087aadb1e70423e  gcc/ada/impunit.adb
  c97cd2be242ad531d5eb4e97b73f61e6  gcc/ada/impunit.ads
*************** e990b94c2deda2688532716fbe75bb0e  gcc/ad
*** 924,933 ****
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! 57cdf164c35e90e76488988290c08dd4  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
! 049ac897ccad3e1d7f7b2e41108ceef2  gcc/ada/inline.adb
! 09c0c05a4b1ccd65d2cb5612e8b023b1  gcc/ada/inline.ads
  e9cdc0c5c27e9fc2f7c18857dde261a7  gcc/ada/itypes.adb
  f907b184de1987a24c20c953fa9d64ef  gcc/ada/itypes.ads
  e6d42cc6f1315f1a219a6c2b64c0b3a6  gcc/ada/json_utils.adb
--- 926,935 ----
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! e90d589fb32fbd65ef6727e79d8ca1a8  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
! 0c79b2de16fdf888888d1bcc47cc4bba  gcc/ada/inline.adb
! c1e475c3e6ddd6f64b3d4151017b5cae  gcc/ada/inline.ads
  e9cdc0c5c27e9fc2f7c18857dde261a7  gcc/ada/itypes.adb
  f907b184de1987a24c20c953fa9d64ef  gcc/ada/itypes.ads
  e6d42cc6f1315f1a219a6c2b64c0b3a6  gcc/ada/json_utils.adb
*************** c2e9aa3e71bd52848b720c6eabf12dda  gcc/ad
*** 967,974 ****
  dc9ec449ca0cbe9ce18e6643e3b00877  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! 0c6303e18d30108d5893212d433dfe45  gcc/ada/libgnarl/a-interr.adb
! 7746f4353903b13d49200e88328b134f  gcc/ada/libgnarl/a-interr.ads
  4c3ae5267052974f6dde73370f615917  gcc/ada/libgnarl/a-intnam.ads
  fdd5640c7981939ce73920864a5e7e4b  gcc/ada/libgnarl/a-intnam__aix.ads
  b5dcdcf7d241633d6939c111e305d785  gcc/ada/libgnarl/a-intnam__bsd.ads
--- 969,976 ----
  dc9ec449ca0cbe9ce18e6643e3b00877  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! ee5486ebd71e2d54659d4c1d422cd60f  gcc/ada/libgnarl/a-interr.adb
! f9b4dae0cb7acc49eb534da89acf76af  gcc/ada/libgnarl/a-interr.ads
  4c3ae5267052974f6dde73370f615917  gcc/ada/libgnarl/a-intnam.ads
  fdd5640c7981939ce73920864a5e7e4b  gcc/ada/libgnarl/a-intnam__aix.ads
  b5dcdcf7d241633d6939c111e305d785  gcc/ada/libgnarl/a-intnam__bsd.ads
*************** a43b5e59b7f2578cfad9e53b316da308  gcc/ad
*** 1013,1030 ****
  7869ac3db5c59c449a64d8f33063d881  gcc/ada/libgnarl/g-tastus.ads
  4e0e4b82397a2d93fce46b4de6c7f232  gcc/ada/libgnarl/g-thread.adb
  077fe00f4bd1ba587879da95e2bc2f7a  gcc/ada/libgnarl/g-thread.ads
! 5cfb9f62dd9599caab03143b5745a967  gcc/ada/libgnarl/libgnarl.gpr
  6f08b0fedbd0999dbeb411e1af2bacb5  gcc/ada/libgnarl/s-inmaop.ads
  1293cb60db6508120e58d8d808fc1d39  gcc/ada/libgnarl/s-inmaop__dummy.adb
  ef07cef96a47e675b6dd5d87b0d5d30f  gcc/ada/libgnarl/s-inmaop__hwint.adb
  16742e83e1952925d19b625c0e9b8423  gcc/ada/libgnarl/s-inmaop__posix.adb
! 74d42bad42a9d25f93cff765f42862fc  gcc/ada/libgnarl/s-interr.adb
! 7c224202424b916e0ee3f211e7e87be5  gcc/ada/libgnarl/s-interr.ads
  44b3e58bc48f8c624ddb7da9140a2225  gcc/ada/libgnarl/s-interr__dummy.adb
  424b0ef46d0d8b7cc90bd59bbdb4dd45  gcc/ada/libgnarl/s-interr__hwint.adb
! 4c67137e1df7d6430a9cb9af8610cd18  gcc/ada/libgnarl/s-interr__sigaction.adb
! 2ec2a2666f00ed09d67c294957a2fdb1  gcc/ada/libgnarl/s-interr__vxworks.adb
! 73611963744f5a78642317f1bb6d712f  gcc/ada/libgnarl/s-interr__vxworks.ads
  f76aee35d1eda9f7df9d001cc88b359e  gcc/ada/libgnarl/s-intman.ads
  a3c0b418087792cab0b2d56121e2937d  gcc/ada/libgnarl/s-intman__android.adb
  4a0944913f78264a0f9e5a60037562ca  gcc/ada/libgnarl/s-intman__cheribsd.adb
--- 1015,1032 ----
  7869ac3db5c59c449a64d8f33063d881  gcc/ada/libgnarl/g-tastus.ads
  4e0e4b82397a2d93fce46b4de6c7f232  gcc/ada/libgnarl/g-thread.adb
  077fe00f4bd1ba587879da95e2bc2f7a  gcc/ada/libgnarl/g-thread.ads
! 57977a32e7a5ce6036ad62429705ad9e  gcc/ada/libgnarl/libgnarl.gpr
  6f08b0fedbd0999dbeb411e1af2bacb5  gcc/ada/libgnarl/s-inmaop.ads
  1293cb60db6508120e58d8d808fc1d39  gcc/ada/libgnarl/s-inmaop__dummy.adb
  ef07cef96a47e675b6dd5d87b0d5d30f  gcc/ada/libgnarl/s-inmaop__hwint.adb
  16742e83e1952925d19b625c0e9b8423  gcc/ada/libgnarl/s-inmaop__posix.adb
! b4a96963ba14d6a6ec62b1152f48ad09  gcc/ada/libgnarl/s-interr.adb
! 8b746360889fc00ca1e4c9b3d27497e2  gcc/ada/libgnarl/s-interr.ads
  44b3e58bc48f8c624ddb7da9140a2225  gcc/ada/libgnarl/s-interr__dummy.adb
  424b0ef46d0d8b7cc90bd59bbdb4dd45  gcc/ada/libgnarl/s-interr__hwint.adb
! 1fce871e8e8f0db87f2f97a9217d1d97  gcc/ada/libgnarl/s-interr__sigaction.adb
! ab2ae1b04dabcd29b7ca28241b22f13b  gcc/ada/libgnarl/s-interr__vxworks.adb
! 689fdfe692db12785b630ef5c245c5b9  gcc/ada/libgnarl/s-interr__vxworks.ads
  f76aee35d1eda9f7df9d001cc88b359e  gcc/ada/libgnarl/s-intman.ads
  a3c0b418087792cab0b2d56121e2937d  gcc/ada/libgnarl/s-intman__android.adb
  4a0944913f78264a0f9e5a60037562ca  gcc/ada/libgnarl/s-intman__cheribsd.adb
*************** ade324265e8e73d345e4fda1c4c4b9f2  gcc/ad
*** 1039,1044 ****
--- 1041,1047 ----
  d0b8f1caa964aa6548ef9be8454b0d6f  gcc/ada/libgnarl/s-intman__susv3.adb
  af8737d1966e66aa567e73a24b38dd0a  gcc/ada/libgnarl/s-intman__vxworks.adb
  90532d65563e231337c907fb0908d546  gcc/ada/libgnarl/s-intman__vxworks.ads
+ 6ebece7023790085c69c32c0ed0703bf  gcc/ada/libgnarl/s-inttyp.ads
  d65f97b5f21f2d7ff76685b1625db1c7  gcc/ada/libgnarl/s-linux.ads
  a05d92626482a4866cd7b50f56bc73bc  gcc/ada/libgnarl/s-linux__alpha.ads
  c31b44ff8966a67477a6140b6c236fe4  gcc/ada/libgnarl/s-linux__android-aarch64.ads
*************** f38e3e6229c64cc0b6684ffce45636d4  gcc/ad
*** 1282,1292 ****
  d8d1eb29fb20543458da1c7ee1404d1c  gcc/ada/libgnat/a-coinve.adb
  824238fb798fb719c2e5fee69fc43b07  gcc/ada/libgnat/a-coinve.ads
  41d2589be19d9355551d979c5acb59fd  gcc/ada/libgnat/a-colien.adb
! 33834b505128cdb7c1d44c9a6ab5f80c  gcc/ada/libgnat/a-colien.ads
  9fc2c79be4ec491cde7fadd6659ae71c  gcc/ada/libgnat/a-colire.adb
  2bec65439f4190fb470c89cc5f4a1960  gcc/ada/libgnat/a-colire.ads
  3397d98808ff592a84c2aac1dd608949  gcc/ada/libgnat/a-comlin.adb
! 5f9fc68e175bdf87ea9568c4562de91b  gcc/ada/libgnat/a-comlin.ads
  f308f877760b1681e67e12d77a110d67  gcc/ada/libgnat/a-comutr.adb
  5d7f34cf163aa299b23e231faf74749c  gcc/ada/libgnat/a-comutr.ads
  3f5f8173bfd4efdf08dc056eb39c565e  gcc/ada/libgnat/a-conhel.adb
--- 1285,1295 ----
  d8d1eb29fb20543458da1c7ee1404d1c  gcc/ada/libgnat/a-coinve.adb
  824238fb798fb719c2e5fee69fc43b07  gcc/ada/libgnat/a-coinve.ads
  41d2589be19d9355551d979c5acb59fd  gcc/ada/libgnat/a-colien.adb
! 9f315b9db7cf8e22bfa842c893268987  gcc/ada/libgnat/a-colien.ads
  9fc2c79be4ec491cde7fadd6659ae71c  gcc/ada/libgnat/a-colire.adb
  2bec65439f4190fb470c89cc5f4a1960  gcc/ada/libgnat/a-colire.ads
  3397d98808ff592a84c2aac1dd608949  gcc/ada/libgnat/a-comlin.adb
! 6bb1990f2f5f2cb0cdc45014cab6e530  gcc/ada/libgnat/a-comlin.ads
  f308f877760b1681e67e12d77a110d67  gcc/ada/libgnat/a-comutr.adb
  5d7f34cf163aa299b23e231faf74749c  gcc/ada/libgnat/a-comutr.ads
  3f5f8173bfd4efdf08dc056eb39c565e  gcc/ada/libgnat/a-conhel.adb
*************** fb55cf15e668159b5c1114772700ff4e  gcc/ad
*** 1792,1798 ****
  0bd476d839404ac275c3be7276d394e9  gcc/ada/libgnat/g-cgicoo.ads
  241af677b9822d2934b11fc4eb0e9a7c  gcc/ada/libgnat/g-cgideb.adb
  da0bfa4251b3510b51674069bf69f2a3  gcc/ada/libgnat/g-cgideb.ads
! 340eb217b85846b1254ef607ffdd5b65  gcc/ada/libgnat/g-comlin.adb
  c4303ad26ae483037467f113772ae6d5  gcc/ada/libgnat/g-comlin.ads
  fbe2b984b80748645f1720481505cffe  gcc/ada/libgnat/g-comver.adb
  6adca3d60996d54b65c95495da47e9d9  gcc/ada/libgnat/g-comver.ads
--- 1795,1801 ----
  0bd476d839404ac275c3be7276d394e9  gcc/ada/libgnat/g-cgicoo.ads
  241af677b9822d2934b11fc4eb0e9a7c  gcc/ada/libgnat/g-cgideb.adb
  da0bfa4251b3510b51674069bf69f2a3  gcc/ada/libgnat/g-cgideb.ads
! 3e2d479aab065ef5f4cbb478d456f28d  gcc/ada/libgnat/g-comlin.adb
  c4303ad26ae483037467f113772ae6d5  gcc/ada/libgnat/g-comlin.ads
  fbe2b984b80748645f1720481505cffe  gcc/ada/libgnat/g-comver.adb
  6adca3d60996d54b65c95495da47e9d9  gcc/ada/libgnat/g-comver.ads
*************** c7559cd071a167fe296b51c7c9322727  gcc/ad
*** 1998,2004 ****
  622be760aaf70ea510afd064e7cbedbe  gcc/ada/libgnat/i-cstrea.adb
  e2c5debe859801377bb23186f860fbeb  gcc/ada/libgnat/i-cstrea.ads
  5e870ff704b2b2e52624f3392134f692  gcc/ada/libgnat/i-cstrin.adb
! cddf9ee51d64518556bca298939fc050  gcc/ada/libgnat/i-cstrin.ads
  e46418cadf9be0c1b609c9c5b237f81b  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
  67efcdb22a5fa2959df9a76a10f0d58b  gcc/ada/libgnat/i-pacdec.adb
--- 2001,2007 ----
  622be760aaf70ea510afd064e7cbedbe  gcc/ada/libgnat/i-cstrea.adb
  e2c5debe859801377bb23186f860fbeb  gcc/ada/libgnat/i-cstrea.ads
  5e870ff704b2b2e52624f3392134f692  gcc/ada/libgnat/i-cstrin.adb
! 0b59cd5c6c7e5253154077ce6b850b53  gcc/ada/libgnat/i-cstrin.ads
  e46418cadf9be0c1b609c9c5b237f81b  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
  67efcdb22a5fa2959df9a76a10f0d58b  gcc/ada/libgnat/i-pacdec.adb
*************** af9c8aea45dc595a84d279be37a6e65e  gcc/ad
*** 2011,2017 ****
  07ad4351f58361d1e8c9b345ba3966ae  gcc/ada/libgnat/interfac__2020.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  e793c8df6f0ffab52eef39bb5d82d97f  gcc/ada/libgnat/libada.gpr
! 9b37ec6e60899a7dadce7f301acc9eee  gcc/ada/libgnat/libgnat.gpr
  cf5fbbe7ae49ee16e33e55135bc15876  gcc/ada/libgnat/libgnat_common.gpr
  ed1b5d3179de47e97e497b15a5367eb3  gcc/ada/libgnat/machcode.ads
  9fd8db83a4a10b1f8eb2e5e5c726bcf8  gcc/ada/libgnat/memtrack.adb
--- 2014,2020 ----
  07ad4351f58361d1e8c9b345ba3966ae  gcc/ada/libgnat/interfac__2020.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  e793c8df6f0ffab52eef39bb5d82d97f  gcc/ada/libgnat/libada.gpr
! 3f06db23d4408a23b5b8739851a3847a  gcc/ada/libgnat/libgnat.gpr
  cf5fbbe7ae49ee16e33e55135bc15876  gcc/ada/libgnat/libgnat_common.gpr
  ed1b5d3179de47e97e497b15a5367eb3  gcc/ada/libgnat/machcode.ads
  9fd8db83a4a10b1f8eb2e5e5c726bcf8  gcc/ada/libgnat/memtrack.adb
*************** b153e7d2cc4a598977832c17cafb7c4f  gcc/ad
*** 2804,2810 ****
  cf7b146f9fc62f24c3787351e5ba9e68  gcc/ada/local_restrict.adb
  891f22987471ea4759185d4c5a9ee069  gcc/ada/local_restrict.ads
  465547ff3f8704052438d58126dabdc0  gcc/ada/locales.c
! 8f9d9631a19b100dda5188d189966039  gcc/ada/make.adb
  3f70017061d6107352a4f0851268c926  gcc/ada/make.ads
  b37df6cded8b76d59493983c393af07b  gcc/ada/make_util.adb
  1254c81cb1c93f3097720a97f51da0d7  gcc/ada/make_util.ads
--- 2807,2813 ----
  cf7b146f9fc62f24c3787351e5ba9e68  gcc/ada/local_restrict.adb
  891f22987471ea4759185d4c5a9ee069  gcc/ada/local_restrict.ads
  465547ff3f8704052438d58126dabdc0  gcc/ada/locales.c
! 1898983efcbf22a00dee46d94d2fde0d  gcc/ada/make.adb
  3f70017061d6107352a4f0851268c926  gcc/ada/make.ads
  b37df6cded8b76d59493983c393af07b  gcc/ada/make_util.adb
  1254c81cb1c93f3097720a97f51da0d7  gcc/ada/make_util.ads
*************** e6e20209cad9c43a0c9e098f3429fdb6  gcc/ad
*** 2829,2835 ****
  4fcbbba0f9690723f59ad615e6a0a017  gcc/ada/nlists.ads
  ede196142f051ce40a763d452c74c998  gcc/ada/nlists.h
  b7a4ce5c6e4753fcc4e09f7c8ef90b12  gcc/ada/opt.adb
! 4fa672e0021c300dc75252f597834da9  gcc/ada/opt.ads
  9df196852e294224ecf27a573848f3be  gcc/ada/osint-b.adb
  45a0f826bc919f6c3d5283a3970115d4  gcc/ada/osint-b.ads
  0c60ea9217bc90dfe2d9b4649b2f3915  gcc/ada/osint-c.adb
--- 2832,2838 ----
  4fcbbba0f9690723f59ad615e6a0a017  gcc/ada/nlists.ads
  ede196142f051ce40a763d452c74c998  gcc/ada/nlists.h
  b7a4ce5c6e4753fcc4e09f7c8ef90b12  gcc/ada/opt.adb
! f6651b407d8cdf1cc077cbec40c6baec  gcc/ada/opt.ads
  9df196852e294224ecf27a573848f3be  gcc/ada/osint-b.adb
  45a0f826bc919f6c3d5283a3970115d4  gcc/ada/osint-b.ads
  0c60ea9217bc90dfe2d9b4649b2f3915  gcc/ada/osint-c.adb
*************** ad4a974ade0d5465e896edd1395e5677  gcc/ad
*** 2838,2855 ****
  69dfdcda04f3992bfc059e74c9c533d2  gcc/ada/osint-l.ads
  226cbb04940ea6debada17386d789049  gcc/ada/osint-m.adb
  2ee49d28df9047670b5fefad12db720a  gcc/ada/osint-m.ads
! 9928efab9c46713faa44281c9bacc154  gcc/ada/osint.adb
! a5cfae1886dcbdd942ae5aa10b8914ff  gcc/ada/osint.ads
  6026a4ededfbea65e3264219c2df9584  gcc/ada/output.adb
  bf52dfdb3b0ad7b46acd6b6ec476611c  gcc/ada/output.ads
! 82337cdc30606c45b018aa10b40c4e2b  gcc/ada/par-ch10.adb
  69a2e7867057d08861c69638310a6144  gcc/ada/par-ch11.adb
! eb0cb04a54c4829789b4a54cd6449eca  gcc/ada/par-ch12.adb
  9f715bca934e45ee4db7bbd2858d54e1  gcc/ada/par-ch13.adb
  fc57966056b0077a0fadd4887212d6bd  gcc/ada/par-ch2.adb
  da1dbb86ed500fa6e4badb241ef8a926  gcc/ada/par-ch3.adb
! 3d7a9541cc9e49bc7e5aad21b231884e  gcc/ada/par-ch4.adb
! b9ba09d47d66ea5e62e54b25d2fa55c0  gcc/ada/par-ch5.adb
  b7e65797088047c28c917ce1878a68ba  gcc/ada/par-ch6.adb
  7487b885c869951f3e91c38a96428135  gcc/ada/par-ch7.adb
  8088c92c25aa6f8d485fa42b1326be8d  gcc/ada/par-ch8.adb
--- 2841,2858 ----
  69dfdcda04f3992bfc059e74c9c533d2  gcc/ada/osint-l.ads
  226cbb04940ea6debada17386d789049  gcc/ada/osint-m.adb
  2ee49d28df9047670b5fefad12db720a  gcc/ada/osint-m.ads
! c96543587e52ea7ab356a9719db298f9  gcc/ada/osint.adb
! 85465cfceede147e236c7aa52a4ef6f6  gcc/ada/osint.ads
  6026a4ededfbea65e3264219c2df9584  gcc/ada/output.adb
  bf52dfdb3b0ad7b46acd6b6ec476611c  gcc/ada/output.ads
! 2dbb9d9240dc06e70a2f34a597a815c6  gcc/ada/par-ch10.adb
  69a2e7867057d08861c69638310a6144  gcc/ada/par-ch11.adb
! ba0e112ae1cbefadd145a4e7c06f1642  gcc/ada/par-ch12.adb
  9f715bca934e45ee4db7bbd2858d54e1  gcc/ada/par-ch13.adb
  fc57966056b0077a0fadd4887212d6bd  gcc/ada/par-ch2.adb
  da1dbb86ed500fa6e4badb241ef8a926  gcc/ada/par-ch3.adb
! 823a139fbf38c88a1f78f400fd49ca0d  gcc/ada/par-ch4.adb
! 9d7c86d09b6f0173aea8957ff7017a95  gcc/ada/par-ch5.adb
  b7e65797088047c28c917ce1878a68ba  gcc/ada/par-ch6.adb
  7487b885c869951f3e91c38a96428135  gcc/ada/par-ch7.adb
  8088c92c25aa6f8d485fa42b1326be8d  gcc/ada/par-ch8.adb
*************** b7e65797088047c28c917ce1878a68ba  gcc/ad
*** 2860,2867 ****
  4abaf19deae7557fed7e768a03ef332a  gcc/ada/par-prag.adb
  4f0a80ae4dcac15e0ae11b61ce2a351a  gcc/ada/par-sync.adb
  fd52cb07f6816c9f989d767432353844  gcc/ada/par-tchk.adb
! e73cb687a825aa262ff287fa10d63c6c  gcc/ada/par-util.adb
! 612e12877944fb92fce18a6179c0cb61  gcc/ada/par.adb
  dec03d93846b2cf0f195f599e6ebe085  gcc/ada/par.ads
  397a8c4eaae8d55eb7e4accd4d09745f  gcc/ada/par_sco.adb
  a2fb0d304cec6a62b7a0096915bbacc4  gcc/ada/par_sco.ads
--- 2863,2870 ----
  4abaf19deae7557fed7e768a03ef332a  gcc/ada/par-prag.adb
  4f0a80ae4dcac15e0ae11b61ce2a351a  gcc/ada/par-sync.adb
  fd52cb07f6816c9f989d767432353844  gcc/ada/par-tchk.adb
! 5e69c1f7ea9b79f9aee0eabafc5df492  gcc/ada/par-util.adb
! dd47008af47510af2c70609954d01947  gcc/ada/par.adb
  dec03d93846b2cf0f195f599e6ebe085  gcc/ada/par.ads
  397a8c4eaae8d55eb7e4accd4d09745f  gcc/ada/par_sco.adb
  a2fb0d304cec6a62b7a0096915bbacc4  gcc/ada/par_sco.ads
*************** a7d5b93678ae985a8b8e5fad99239a2e  gcc/ad
*** 2873,2879 ****
  4c499e95df5367c3548d61fa917ca024  gcc/ada/prepcomp.ads
  95e773002079dd373f13f3dc9f919963  gcc/ada/put_scos.adb
  8b900ca2e38affe9bed78cc4601d68f9  gcc/ada/put_scos.ads
! dda45886ae4fb253d743b7addcb04572  gcc/ada/raise-gcc.c
  aa1f862a7c4c214d577596fb157bd0f8  gcc/ada/raise.c
  46cd09528b6f99061409002fda736a59  gcc/ada/raise.h
  8afe6ac34ce061a669c4e31257ede16a  gcc/ada/repinfo-input.adb
--- 2876,2882 ----
  4c499e95df5367c3548d61fa917ca024  gcc/ada/prepcomp.ads
  95e773002079dd373f13f3dc9f919963  gcc/ada/put_scos.adb
  8b900ca2e38affe9bed78cc4601d68f9  gcc/ada/put_scos.ads
! 8a3faa6cccd9ec22df43e947d0750de6  gcc/ada/raise-gcc.c
  aa1f862a7c4c214d577596fb157bd0f8  gcc/ada/raise.c
  46cd09528b6f99061409002fda736a59  gcc/ada/raise.h
  8afe6ac34ce061a669c4e31257ede16a  gcc/ada/repinfo-input.adb
*************** aa1f862a7c4c214d577596fb157bd0f8  gcc/ad
*** 2881,2898 ****
  0bed3d3b816f589a4981a9623caea4b0  gcc/ada/repinfo.adb
  676810aa2170cb10ee36c56b2998eb84  gcc/ada/repinfo.ads
  589cb3f605f73641be06f0f0cc16d631  gcc/ada/repinfo.h
! deb5dad2371a09c99da898cece8822c0  gcc/ada/restrict.adb
  3132f3889ff35b3b58965cf652b9f3d5  gcc/ada/restrict.ads
  6b9811e6ddf7d989b3ad01ebf5430e99  gcc/ada/rident.ads
  6741c00af04e8dce4efb35a65a842fe6  gcc/ada/rtfinal.c
! fd7b42b23f06032f7f191cd6b0e6973d  gcc/ada/rtinit.c
! 52066a1b8e7335d4a2831aadeadb05eb  gcc/ada/rtsfind.adb
! 7dc53d72142097c13b53b881b9dd8765  gcc/ada/rtsfind.ads
  f2d824e32fdafcf6970c1e1e66ea59f8  gcc/ada/runtime.h
! 8ce11053ebe1171460f848ee6f75ea0c  gcc/ada/s-oscons-tmplt.c
  406f1efe8850ae590a95138ba96f5a4b  gcc/ada/s-pack.adb.tmpl
  9ff36d27b4298968fe26c8a47cea6af9  gcc/ada/s-pack.ads.tmpl
! a63ed6cfe4621cd6e6f6b9d24b131b14  gcc/ada/scans.adb
  284d0d60b7f2cbb0b1be4474dedc4e77  gcc/ada/scans.ads
  43ac9be952de8b94c98155863ae2ff32  gcc/ada/scil_ll.adb
  d56309c9945ec31c9444dce0bcfa5831  gcc/ada/scil_ll.ads
--- 2884,2901 ----
  0bed3d3b816f589a4981a9623caea4b0  gcc/ada/repinfo.adb
  676810aa2170cb10ee36c56b2998eb84  gcc/ada/repinfo.ads
  589cb3f605f73641be06f0f0cc16d631  gcc/ada/repinfo.h
! e5010ee8b4286a5e99d1258267b68113  gcc/ada/restrict.adb
  3132f3889ff35b3b58965cf652b9f3d5  gcc/ada/restrict.ads
  6b9811e6ddf7d989b3ad01ebf5430e99  gcc/ada/rident.ads
  6741c00af04e8dce4efb35a65a842fe6  gcc/ada/rtfinal.c
! 5934ee793c29da1585df983ea9f993e1  gcc/ada/rtinit.c
! df23dfcb9c5d2c6ab43142f5b7c560fe  gcc/ada/rtsfind.adb
! 607bb6d037f3ec4452ddf3801e54be81  gcc/ada/rtsfind.ads
  f2d824e32fdafcf6970c1e1e66ea59f8  gcc/ada/runtime.h
! 5c68caea711566c64edb3308f5a70992  gcc/ada/s-oscons-tmplt.c
  406f1efe8850ae590a95138ba96f5a4b  gcc/ada/s-pack.adb.tmpl
  9ff36d27b4298968fe26c8a47cea6af9  gcc/ada/s-pack.ads.tmpl
! 8e0bd14203305297e41e9aba097c4dcb  gcc/ada/scans.adb
  284d0d60b7f2cbb0b1be4474dedc4e77  gcc/ada/scans.ads
  43ac9be952de8b94c98155863ae2ff32  gcc/ada/scil_ll.adb
  d56309c9945ec31c9444dce0bcfa5831  gcc/ada/scil_ll.ads
*************** bd193aac5b192b282064535f6fe3b29b  gcc/ad
*** 2904,2917 ****
  fdcaec81316658a2b692951117ab8bd6  gcc/ada/scos.ads
  44ec5e7f902de4eac2d430f6088fd579  gcc/ada/sdefault.ads
  5ee6198a5e5ee0a555cdbe65fd9ea6f4  gcc/ada/seh_init.c
! b97a33153fe52398767059622469c244  gcc/ada/sem.adb
  89b33a894fb8d623c05d39f93b53e357  gcc/ada/sem.ads
! d2b7c923d6a9fd2c767ef33609c17c61  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! f35af60fafb60665171b35d5f6381fcb  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
! 5a8f21b4d2e896659887ea4fb7fce369  gcc/ada/sem_aux.adb
! 416380c1ed0ef199b48f1e73080b5db3  gcc/ada/sem_aux.ads
  8d81d143610083b5cf22db98e4eb9ff7  gcc/ada/sem_case.adb
  f682892145d1a369cdc5b3f73935f8d9  gcc/ada/sem_case.ads
  40833d5de1791e4a88cb023d6bd0ddb5  gcc/ada/sem_cat.adb
--- 2907,2920 ----
  fdcaec81316658a2b692951117ab8bd6  gcc/ada/scos.ads
  44ec5e7f902de4eac2d430f6088fd579  gcc/ada/sdefault.ads
  5ee6198a5e5ee0a555cdbe65fd9ea6f4  gcc/ada/seh_init.c
! acf67cc2ad3c40fe466a03f76c6450e1  gcc/ada/sem.adb
  89b33a894fb8d623c05d39f93b53e357  gcc/ada/sem.ads
! 4829571ce4047ba742e576ced875e69e  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! 2615c0fd80ff07077f2d55fdda833aba  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
! 944f96059d9b116fc3e325dfc8d8daa4  gcc/ada/sem_aux.adb
! f5640ba95132a831cdd3ba64e5be7428  gcc/ada/sem_aux.ads
  8d81d143610083b5cf22db98e4eb9ff7  gcc/ada/sem_case.adb
  f682892145d1a369cdc5b3f73935f8d9  gcc/ada/sem_case.ads
  40833d5de1791e4a88cb023d6bd0ddb5  gcc/ada/sem_cat.adb
*************** bd02733d13b54612fc6d4cd0e340b3ea  gcc/ad
*** 2920,2964 ****
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! fa75822e620d43991064e909af7fde66  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
! d77ca7623d00d99f722ffa0a2c4f1308  gcc/ada/sem_ch13.adb
! 2da037307178ba05a1a24b52d1b3115e  gcc/ada/sem_ch13.ads
  260948dd8c7af25b5acaa288032c9327  gcc/ada/sem_ch2.adb
  ea86a0345845800d7aaf07f22bb4bf6c  gcc/ada/sem_ch2.ads
! 2581e282d3a002fe974f151f2bdb68e9  gcc/ada/sem_ch3.adb
  2d8f83bc46638356bc311ccd50015b1f  gcc/ada/sem_ch3.ads
! 672b3db8fa759ee2be5ded5752f2a743  gcc/ada/sem_ch4.adb
  fdd750bd30c3186d912dfed4717a2c0c  gcc/ada/sem_ch4.ads
! 53bfaf0bb212d68185c312cb45d910d3  gcc/ada/sem_ch5.adb
! d3937c73217b5f3ef2540a47e52cbf4a  gcc/ada/sem_ch5.ads
! 5bbd8a73962dff2109bc375d2e1999c0  gcc/ada/sem_ch6.adb
  9ac8c4c57213097618cdb7c0b7b4f47b  gcc/ada/sem_ch6.ads
! 6c05670fbd82229849d311d294644670  gcc/ada/sem_ch7.adb
! fb1c349ef07024975dc745e7e7908a34  gcc/ada/sem_ch7.ads
! 381e134a3e123f88cef08be7a83e237e  gcc/ada/sem_ch8.adb
  5bcf24e9f3725dd07ba44097469a5101  gcc/ada/sem_ch8.ads
  0659b247bb1cacdb068574b879a6fd15  gcc/ada/sem_ch9.adb
  11764389473d404a17921f767d1eadd4  gcc/ada/sem_ch9.ads
  f3bd7a2465fe64a8cce43f75b64830f2  gcc/ada/sem_dim.adb
  620c52688fb31336b46194dd14b591c5  gcc/ada/sem_dim.ads
! 71dcf3e0d603cd4b3c4905d1b10e9273  gcc/ada/sem_disp.adb
! c31ecf34a3e44a39023ff6f3ba409e8d  gcc/ada/sem_disp.ads
  339c1ae3fe9b3e447dd4867c7eb2cc64  gcc/ada/sem_dist.adb
  59a3d1317e6d4dd1fdf74f377c86bb9a  gcc/ada/sem_dist.ads
  4cf55d9cc3b53082a92304a590c17c21  gcc/ada/sem_elab.adb
  f4f58bc7c6b586440e37173fcc83a145  gcc/ada/sem_elab.ads
  7bd797b14c1442e801878ac792984728  gcc/ada/sem_elim.adb
  be5bd8727bcc81e7515f2a0386cf8af3  gcc/ada/sem_elim.ads
! 90a4e44b7ce47963c3938d3e1a27485d  gcc/ada/sem_eval.adb
! 0aa561464776f24024d7efe39d4ffcae  gcc/ada/sem_eval.ads
  eb23a07f1fb62ed39d1053619d51487b  gcc/ada/sem_intr.adb
  01d971c16ae04f83f122ff2b4854e30d  gcc/ada/sem_intr.ads
  60c61925626b00c286ee1c92562b17ef  gcc/ada/sem_mech.adb
  39b96f04803db97ae1f7376d30a0cfec  gcc/ada/sem_mech.ads
! 764f62b9f61374685638654b0eed967b  gcc/ada/sem_prag.adb
  61f67b82bf0abfa83eb7e4927498285c  gcc/ada/sem_prag.ads
! 4b68df0d35e789d1c04da20af1daba86  gcc/ada/sem_res.adb
  e3b9f77c37497d7f7824085d3df8fde8  gcc/ada/sem_res.ads
  4e8a9bc2b398560942d0c08f4017fabb  gcc/ada/sem_scil.adb
  64ae38c93be63a67f143484eba77604b  gcc/ada/sem_scil.ads
--- 2923,2967 ----
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! 20400c5ad64fb1641cd2da387849bad4  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
! 9b14a82b367ec83e7173932d9afa8fcd  gcc/ada/sem_ch13.adb
! aa10b58274e1688adac8f09ca19e6225  gcc/ada/sem_ch13.ads
  260948dd8c7af25b5acaa288032c9327  gcc/ada/sem_ch2.adb
  ea86a0345845800d7aaf07f22bb4bf6c  gcc/ada/sem_ch2.ads
! ae54543c2e73c41ace005463f74181ae  gcc/ada/sem_ch3.adb
  2d8f83bc46638356bc311ccd50015b1f  gcc/ada/sem_ch3.ads
! b2b8e2d3311573066a5f15846761e8e8  gcc/ada/sem_ch4.adb
  fdd750bd30c3186d912dfed4717a2c0c  gcc/ada/sem_ch4.ads
! 6463a6967e844d99ab50d3b6df481779  gcc/ada/sem_ch5.adb
! 0851668baacc82a6125a6cdd3254a804  gcc/ada/sem_ch5.ads
! b175536730ff65ce8e22d163aa9dd438  gcc/ada/sem_ch6.adb
  9ac8c4c57213097618cdb7c0b7b4f47b  gcc/ada/sem_ch6.ads
! 666120c403396f147828163f19a58eef  gcc/ada/sem_ch7.adb
! b15ba6dec89e775b188e9d07764efc63  gcc/ada/sem_ch7.ads
! 50f3d574967de682b7cf73fc690bf063  gcc/ada/sem_ch8.adb
  5bcf24e9f3725dd07ba44097469a5101  gcc/ada/sem_ch8.ads
  0659b247bb1cacdb068574b879a6fd15  gcc/ada/sem_ch9.adb
  11764389473d404a17921f767d1eadd4  gcc/ada/sem_ch9.ads
  f3bd7a2465fe64a8cce43f75b64830f2  gcc/ada/sem_dim.adb
  620c52688fb31336b46194dd14b591c5  gcc/ada/sem_dim.ads
! 8fc1f44cc94b142ab7fffd9442b7dd77  gcc/ada/sem_disp.adb
! c561e91cdb7fccdd5ca5feb341e3b60e  gcc/ada/sem_disp.ads
  339c1ae3fe9b3e447dd4867c7eb2cc64  gcc/ada/sem_dist.adb
  59a3d1317e6d4dd1fdf74f377c86bb9a  gcc/ada/sem_dist.ads
  4cf55d9cc3b53082a92304a590c17c21  gcc/ada/sem_elab.adb
  f4f58bc7c6b586440e37173fcc83a145  gcc/ada/sem_elab.ads
  7bd797b14c1442e801878ac792984728  gcc/ada/sem_elim.adb
  be5bd8727bcc81e7515f2a0386cf8af3  gcc/ada/sem_elim.ads
! 93bf6ebeeb2a4562f00deeaf5c2242ae  gcc/ada/sem_eval.adb
! 63f4fac71ba6bcec6602213a4c9bddba  gcc/ada/sem_eval.ads
  eb23a07f1fb62ed39d1053619d51487b  gcc/ada/sem_intr.adb
  01d971c16ae04f83f122ff2b4854e30d  gcc/ada/sem_intr.ads
  60c61925626b00c286ee1c92562b17ef  gcc/ada/sem_mech.adb
  39b96f04803db97ae1f7376d30a0cfec  gcc/ada/sem_mech.ads
! 346f99b4b5207a285502adc1cbb47d06  gcc/ada/sem_prag.adb
  61f67b82bf0abfa83eb7e4927498285c  gcc/ada/sem_prag.ads
! dac93cd694af37740579abd830755507  gcc/ada/sem_res.adb
  e3b9f77c37497d7f7824085d3df8fde8  gcc/ada/sem_res.ads
  4e8a9bc2b398560942d0c08f4017fabb  gcc/ada/sem_scil.adb
  64ae38c93be63a67f143484eba77604b  gcc/ada/sem_scil.ads
*************** e3b9f77c37497d7f7824085d3df8fde8  gcc/ad
*** 2966,2974 ****
  21afb93e10bb9446fcbf7577bbf39c7f  gcc/ada/sem_smem.ads
  1de99683c6514c34448d2bbc7ddb8856  gcc/ada/sem_type.adb
  65653b347d1d3f800e49cd916a551d1c  gcc/ada/sem_type.ads
! 1a9e149f530a431be68085c531487687  gcc/ada/sem_util.adb
! 736dcd26180244a8e8adc2d6c66249a7  gcc/ada/sem_util.ads
! b16d94872ec070685f3ac84b8967f7fe  gcc/ada/sem_warn.adb
  1952fbda97ea4c6506f452eac9934bb4  gcc/ada/sem_warn.ads
  75ee1e8bae201fd70d666856c4dbb8e5  gcc/ada/set_targ.adb
  9be350008098fd37edd51e4c3977c64d  gcc/ada/set_targ.ads
--- 2969,2977 ----
  21afb93e10bb9446fcbf7577bbf39c7f  gcc/ada/sem_smem.ads
  1de99683c6514c34448d2bbc7ddb8856  gcc/ada/sem_type.adb
  65653b347d1d3f800e49cd916a551d1c  gcc/ada/sem_type.ads
! 3e31852b4ea0972c5cd1204c73884ef3  gcc/ada/sem_util.adb
! b296a7a5e357d7b4c7aafd39408827b0  gcc/ada/sem_util.ads
! c12dbc5f0642cb4a8ee9b7ef83a569d2  gcc/ada/sem_warn.adb
  1952fbda97ea4c6506f452eac9934bb4  gcc/ada/sem_warn.ads
  75ee1e8bae201fd70d666856c4dbb8e5  gcc/ada/set_targ.adb
  9be350008098fd37edd51e4c3977c64d  gcc/ada/set_targ.ads
*************** ef20860eedc61bbc8c01982ac5436087  gcc/ad
*** 2976,2993 ****
  000b9cec485c369e87106b6ef3ede5c0  gcc/ada/sfn_scan.ads
  dbf58a7fd08863c0ca2f9337aba5b2ea  gcc/ada/sigtramp-android-asm.h
  ca935dca4062a013d4d6b1e584032254  gcc/ada/sigtramp-android.c
! d4eb0a89fdd3b76d9770fd60a54985d0  gcc/ada/sigtramp-arm-qnx.c
  15b88a2d97fa8631d34b73e43bd2c8f7  gcc/ada/sigtramp-ios.c
  4ca764672b9696f6a18d8e33361dc8c8  gcc/ada/sigtramp-qnx.c
! 294c6e24ae6277dbc8b03ecdbb1f0691  gcc/ada/sigtramp-vxworks-target.h
! 040dc3b21174117efae94e9f6e346bf7  gcc/ada/sigtramp-vxworks.c
  33b20dbe690a4017979c15e797781831  gcc/ada/sigtramp.h
  85bab02e7455fc715c5bf7110168a178  gcc/ada/sinfo-cn.adb
  c354c16b3d545f16b99be6618073100e  gcc/ada/sinfo-cn.ads
  080aea4da0993c49dfd80c8789fed307  gcc/ada/sinfo-utils.adb
  34ff18d034a08b0c9d5d6d61fc92d189  gcc/ada/sinfo-utils.ads
  1cfe9bd70a04767965df45d859d8e7c1  gcc/ada/sinfo.adb
! 5bbe80071574112f982dc347a600ebf1  gcc/ada/sinfo.ads
  52e8a9630e4050f9cba2ab037d7a2019  gcc/ada/sinput-c.adb
  5f19ebc3c423ec457c4a3c90b841f631  gcc/ada/sinput-c.ads
  0faf319433a1ed69b9efdbcbdb4eac2c  gcc/ada/sinput-d.adb
--- 2979,2996 ----
  000b9cec485c369e87106b6ef3ede5c0  gcc/ada/sfn_scan.ads
  dbf58a7fd08863c0ca2f9337aba5b2ea  gcc/ada/sigtramp-android-asm.h
  ca935dca4062a013d4d6b1e584032254  gcc/ada/sigtramp-android.c
! 520b6f21673a5d4c5852ed1befeb8d17  gcc/ada/sigtramp-arm-qnx.c
  15b88a2d97fa8631d34b73e43bd2c8f7  gcc/ada/sigtramp-ios.c
  4ca764672b9696f6a18d8e33361dc8c8  gcc/ada/sigtramp-qnx.c
! d28bcaf5bdfb027da61e4b8b29e56e03  gcc/ada/sigtramp-vxworks-target.h
! 20dc1ca0e874079273a43b629caf345f  gcc/ada/sigtramp-vxworks.c
  33b20dbe690a4017979c15e797781831  gcc/ada/sigtramp.h
  85bab02e7455fc715c5bf7110168a178  gcc/ada/sinfo-cn.adb
  c354c16b3d545f16b99be6618073100e  gcc/ada/sinfo-cn.ads
  080aea4da0993c49dfd80c8789fed307  gcc/ada/sinfo-utils.adb
  34ff18d034a08b0c9d5d6d61fc92d189  gcc/ada/sinfo-utils.ads
  1cfe9bd70a04767965df45d859d8e7c1  gcc/ada/sinfo.adb
! 25aa33dd0279c755a24c5ad191b19586  gcc/ada/sinfo.ads
  52e8a9630e4050f9cba2ab037d7a2019  gcc/ada/sinput-c.adb
  5f19ebc3c423ec457c4a3c90b841f631  gcc/ada/sinput-c.ads
  0faf319433a1ed69b9efdbcbdb4eac2c  gcc/ada/sinput-d.adb
*************** af6b93fe92dc2703693dbc958472e99d  gcc/ad
*** 2995,3008 ****
  8e23df7d0b4776ce8943cbe29ad3629e  gcc/ada/sinput-l.adb
  1f835777da26c9f79fbc56b671e06655  gcc/ada/sinput-l.ads
  4c47a09e0165de090d03fa2396d99a7a  gcc/ada/sinput.adb
! 292ddf1cbc2a6ac391dd238019ba4c3a  gcc/ada/sinput.ads
! caeb82ff1021b90e96fabb959a2c0e53  gcc/ada/snames.adb-tmpl
! 7b511a60ffefbd3bca5585ebfd06c4b8  gcc/ada/snames.ads-tmpl
  0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  96b1e5efcfe4df7fd150f5a977046c58  gcc/ada/socket.c
  2b5db13cfe242efb9e224cb722660071  gcc/ada/spark_xrefs.adb
  59aee5038afe3acdfc11257232c8fd9b  gcc/ada/spark_xrefs.ads
! 280d15d02305e79cd89b264d059f79bb  gcc/ada/sprint.adb
  b2471956e093001afd1b073590729f89  gcc/ada/sprint.ads
  2ce08b4ac1b7d7331da8a29d6e581d60  gcc/ada/stand.ads
  92b212203b4f1d5f4e7ff59f594e55e4  gcc/ada/standard.ads.h
--- 2998,3011 ----
  8e23df7d0b4776ce8943cbe29ad3629e  gcc/ada/sinput-l.adb
  1f835777da26c9f79fbc56b671e06655  gcc/ada/sinput-l.ads
  4c47a09e0165de090d03fa2396d99a7a  gcc/ada/sinput.adb
! 29e03402590e97abf9061944873aaacf  gcc/ada/sinput.ads
! 83660dce94bca57b58843b48abc86554  gcc/ada/snames.adb-tmpl
! 7b9bf71e002158adac428e1ac7a1092d  gcc/ada/snames.ads-tmpl
  0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  96b1e5efcfe4df7fd150f5a977046c58  gcc/ada/socket.c
  2b5db13cfe242efb9e224cb722660071  gcc/ada/spark_xrefs.adb
  59aee5038afe3acdfc11257232c8fd9b  gcc/ada/spark_xrefs.ads
! b5b62770606ca8dc474f59070cd4a35f  gcc/ada/sprint.adb
  b2471956e093001afd1b073590729f89  gcc/ada/sprint.ads
  2ce08b4ac1b7d7331da8a29d6e581d60  gcc/ada/stand.ads
  92b212203b4f1d5f4e7ff59f594e55e4  gcc/ada/standard.ads.h
*************** ebcfe6e250e511cc835acc1a5b9d9acc  gcc/ad
*** 3025,3044 ****
  604f9cd7c5002a973423169c487b7672  gcc/ada/switch-m.ads
  4c8a0d7e461a01701b735523abd65cca  gcc/ada/switch.adb
  e8253b4b684c1281f31c431c59801850  gcc/ada/switch.ads
! bb58296bf2013bec7983796244353b38  gcc/ada/sysdep.c
  e661511abb592f89242772c88e81c985  gcc/ada/table.adb
  9980f2609e274e492a4fc7bc7e625779  gcc/ada/table.ads
  f01b6d7a338cac8484ebe76a4d10a29a  gcc/ada/targext.c
  5ef3e383be54848c563cf6e54357fa00  gcc/ada/targparm.adb
! 2b5f7f1b51204c63a604a549922e4c64  gcc/ada/targparm.ads
  7bf7ca357153ccf17a29a702760480cc  gcc/ada/tbuild.adb
! 01e09df1bb81d935248cc35d52bbe8e1  gcc/ada/tbuild.ads
! 74648ca99d899e5ce95df7aaadc6f7a6  gcc/ada/tempdir.adb
! f9fabb8213cd8b64bbd0393fe9239dc0  gcc/ada/tempdir.ads
! 05ed9e51fba799aa8a3d15bddd961180  gcc/ada/terminals.c
! 0304fa8c8efa338dc6d83f49115c6408  gcc/ada/tracebak.c
! fa6bd362d0c86ab46ed0b9ee9cc67eda  gcc/ada/treepr.adb
! cf7a40cb2bce88219a37e2e39c179812  gcc/ada/treepr.ads
  98ac01399ba1a6f424fafb018f08a955  gcc/ada/ttypes.ads
  582d8467c1e9305aa54d36635379dff5  gcc/ada/types.adb
  2f15b9a53a8bf4d14399539f002c1c3f  gcc/ada/types.ads
--- 3028,3045 ----
  604f9cd7c5002a973423169c487b7672  gcc/ada/switch-m.ads
  4c8a0d7e461a01701b735523abd65cca  gcc/ada/switch.adb
  e8253b4b684c1281f31c431c59801850  gcc/ada/switch.ads
! 52e3c8e65440ee29ca2869d9f277dca1  gcc/ada/sysdep.c
  e661511abb592f89242772c88e81c985  gcc/ada/table.adb
  9980f2609e274e492a4fc7bc7e625779  gcc/ada/table.ads
  f01b6d7a338cac8484ebe76a4d10a29a  gcc/ada/targext.c
  5ef3e383be54848c563cf6e54357fa00  gcc/ada/targparm.adb
! d39a228bc00567be8fb055d12f52ca9e  gcc/ada/targparm.ads
  7bf7ca357153ccf17a29a702760480cc  gcc/ada/tbuild.adb
! d9026bdc2cb7c2a1fdb52eefe1467c6c  gcc/ada/tbuild.ads
! a8c81c0efe5427a150cfb60b39a14bb0  gcc/ada/terminals.c
! 81c60cbc8e67f80af6f53afb5ca5e8e7  gcc/ada/tracebak.c
! 26a61859a2fbfb0cfeddfb6ec995fa4c  gcc/ada/treepr.adb
! b3bbe99b27a0b92b6a959b36cbc316ee  gcc/ada/treepr.ads
  98ac01399ba1a6f424fafb018f08a955  gcc/ada/ttypes.ads
  582d8467c1e9305aa54d36635379dff5  gcc/ada/types.adb
  2f15b9a53a8bf4d14399539f002c1c3f  gcc/ada/types.ads
*************** b17f72ec54df78b4b67b979813d3f97f  gcc/ad
*** 3055,3061 ****
  c578b41f0c8f6c40b46c78a81e87209b  gcc/ada/usage.ads
  1c7d75f8eb8caeca71fd9920c9467dd2  gcc/ada/validsw.adb
  77865d92c04269dc2ac7fed0e437db40  gcc/ada/validsw.ads
! 63f1f44c17efcc0ac826e828da2e4ce1  gcc/ada/vast.adb
  ef3827a7b812579b6746708abb07f0a3  gcc/ada/vast.ads
  80a9d1726e421d58c661b761812b04b6  gcc/ada/version.c
  6c78cddfd887df97c9b3a4688e4e4fa2  gcc/ada/vx_stack_info.c
--- 3056,3062 ----
  c578b41f0c8f6c40b46c78a81e87209b  gcc/ada/usage.ads
  1c7d75f8eb8caeca71fd9920c9467dd2  gcc/ada/validsw.adb
  77865d92c04269dc2ac7fed0e437db40  gcc/ada/validsw.ads
! 4ba17aaf5cbcfdbdf146522e58976ba0  gcc/ada/vast.adb
  ef3827a7b812579b6746708abb07f0a3  gcc/ada/vast.ads
  80a9d1726e421d58c661b761812b04b6  gcc/ada/version.c
  6c78cddfd887df97c9b3a4688e4e4fa2  gcc/ada/vx_stack_info.c
*************** dfae7743b3426edeccc9d6fe92fa6409  gcc/ad
*** 3066,3117 ****
  d22c314f3748309f812d78f5217dda61  gcc/ada/widechar.adb
  8ba18762baadb754aa34e6849ff8b7ea  gcc/ada/widechar.ads
  86a168469a3500183cfb7412744e70b5  gcc/ada/xoscons.adb
  8563f416db67cb58d00d4bdc46ac522f  gcc/ada/xsnamest.adb
  4c96f820426ef6d6a588bdcdccb59bee  gcc/ada/xspack.py
  59ad1ee753d42235ea036a57aad85045  gcc/ada/xutil.adb
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
! ebe64421041bf4ef9153e26a6dc60532  gcc/adjust-alignment.cc
! e7b2f0201a5e24cbfe4c87cb55287ec3  gcc/algol68/ChangeLog
  66ab60a51bd61854d9b2898856651b15  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
  27119d3e1e8fce1677a27ca87cc9de1e  gcc/algol68/a68-exports.cc
! 1728385ce5089a9ad9f2eed20fd65927  gcc/algol68/a68-imports-archive.cc
! 561de2b43ba921e2b9573777fade7021  gcc/algol68/a68-imports.cc
  1dac1ca86874d9b7205cbcd76a3a083b  gcc/algol68/a68-lang.cc
  6430e67f3d47b364ff04181a73b26fea  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
! ade291f272227055db98bddb78ff715f  gcc/algol68/a68-low-chars.cc
! 4a9e0cb255d3e694fb0c5209d63ed476  gcc/algol68/a68-low-clauses.cc
  b8582dd8bfb1b150fad9cafd7bbaa3c6  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
! fb2d06e1ab97449a52e96618e292e987  gcc/algol68/a68-low-decls.cc
  c57bfad420a3fc9e3f36e22e0b61c523  gcc/algol68/a68-low-generator.cc
  060012b299f601a60e72193962d6699f  gcc/algol68/a68-low-holes.cc
! d609e1b57e69ce1d260c21cc2fad12d4  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
! 8e958b50675b076eba75cf460e2332bb  gcc/algol68/a68-low-moids.cc
! 1234b64ced731d809a0b56edb4104ead  gcc/algol68/a68-low-multiples.cc
! bce790fa747246ac4038817eca912174  gcc/algol68/a68-low-prelude.cc
! b761d3ea5bc6d29640619297fd8a70b6  gcc/algol68/a68-low-procs.cc
  335ffa6c3b75121835fb8d3c30f87b67  gcc/algol68/a68-low-ranges.cc
! 6ff05854504f1f8e5073710e95f0b273  gcc/algol68/a68-low-reals.cc
  aebb4c3b9e607164c25541593333b832  gcc/algol68/a68-low-refs.cc
  5fae0e595c8ad0b7c7ecc0fb87c3b2dc  gcc/algol68/a68-low-runtime.cc
  839b3f59cd7d59666563e3a3d4c14b62  gcc/algol68/a68-low-runtime.def
  778d47cffcd16d50f7105f7a8bd35d32  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! 8869ad21fefe0ecdbd9cb6edfdf404f3  gcc/algol68/a68-low-units.cc
! 54f1fa37c18841cdd2ba1534e4f56878  gcc/algol68/a68-low.cc
  cc144936af15a60bf305436168b9c147  gcc/algol68/a68-moids-diagnostics.cc
! d81998d1a6b085f7b7f0fa13a8a9d297  gcc/algol68/a68-moids-misc.cc
  943207507077d65185cd6d089f1249da  gcc/algol68/a68-moids-sorting.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
  5cba262e501051ca9bc9e3c0cec33e74  gcc/algol68/a68-parser-attrs.def
! 739645b4e266cb231133a89e26a87751  gcc/algol68/a68-parser-bottom-up.cc
  1bb7066c454105adf2abc3c5f3b91c57  gcc/algol68/a68-parser-brackets.cc
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  f9cdfe842db71e53d1378e8dae40d607  gcc/algol68/a68-parser-extract.cc
--- 3067,3119 ----
  d22c314f3748309f812d78f5217dda61  gcc/ada/widechar.adb
  8ba18762baadb754aa34e6849ff8b7ea  gcc/ada/widechar.ads
  86a168469a3500183cfb7412744e70b5  gcc/ada/xoscons.adb
+ 0d197980f73a76a00b4c10e6e9b2fcac  gcc/ada/xsintnam.sed
  8563f416db67cb58d00d4bdc46ac522f  gcc/ada/xsnamest.adb
  4c96f820426ef6d6a588bdcdccb59bee  gcc/ada/xspack.py
  59ad1ee753d42235ea036a57aad85045  gcc/ada/xutil.adb
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
! ebd823843d8793364a7f82ee9f833c88  gcc/adjust-alignment.cc
! 99282d7ce864b3bff2ce210a72da3142  gcc/algol68/ChangeLog
  66ab60a51bd61854d9b2898856651b15  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
  27119d3e1e8fce1677a27ca87cc9de1e  gcc/algol68/a68-exports.cc
! 9d1dee057d405f889f50a8d5603bcd67  gcc/algol68/a68-imports-archive.cc
! 3f56b9d1ccae52a2033efe07b94bdf13  gcc/algol68/a68-imports.cc
  1dac1ca86874d9b7205cbcd76a3a083b  gcc/algol68/a68-lang.cc
  6430e67f3d47b364ff04181a73b26fea  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
! 5d44e822782a85c6eb61eabc1a1b7105  gcc/algol68/a68-low-chars.cc
! 17314ba2695ce99574ae8cc642565603  gcc/algol68/a68-low-clauses.cc
  b8582dd8bfb1b150fad9cafd7bbaa3c6  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
! 983308d754783adbc5c6514c63152bc9  gcc/algol68/a68-low-decls.cc
  c57bfad420a3fc9e3f36e22e0b61c523  gcc/algol68/a68-low-generator.cc
  060012b299f601a60e72193962d6699f  gcc/algol68/a68-low-holes.cc
! da7ad17dfeafca7ca00cffe0379b15a6  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
! fb6d7ed8c342783f10da433ad4885f73  gcc/algol68/a68-low-moids.cc
! 0b01a20ebf77b30b3726bc5df80d7944  gcc/algol68/a68-low-multiples.cc
! b57dea99a91f1c94bd6841eea163e827  gcc/algol68/a68-low-prelude.cc
! 25a2f0c29aa7f6f9363cc0bd5c36719e  gcc/algol68/a68-low-procs.cc
  335ffa6c3b75121835fb8d3c30f87b67  gcc/algol68/a68-low-ranges.cc
! ac1e6888688f3c4c3f0e0087193c83f4  gcc/algol68/a68-low-reals.cc
  aebb4c3b9e607164c25541593333b832  gcc/algol68/a68-low-refs.cc
  5fae0e595c8ad0b7c7ecc0fb87c3b2dc  gcc/algol68/a68-low-runtime.cc
  839b3f59cd7d59666563e3a3d4c14b62  gcc/algol68/a68-low-runtime.def
  778d47cffcd16d50f7105f7a8bd35d32  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! a6e5ecaef1ed6511228f0a723dff1320  gcc/algol68/a68-low-units.cc
! d4b4e4692e520c502b349b682fba05fd  gcc/algol68/a68-low.cc
  cc144936af15a60bf305436168b9c147  gcc/algol68/a68-moids-diagnostics.cc
! c8f59e26255a9bc185068084b4135289  gcc/algol68/a68-moids-misc.cc
  943207507077d65185cd6d089f1249da  gcc/algol68/a68-moids-sorting.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
  5cba262e501051ca9bc9e3c0cec33e74  gcc/algol68/a68-parser-attrs.def
! bcf514914dab3248c63f6e7ec5021df2  gcc/algol68/a68-parser-bottom-up.cc
  1bb7066c454105adf2abc3c5f3b91c57  gcc/algol68/a68-parser-brackets.cc
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  f9cdfe842db71e53d1378e8dae40d607  gcc/algol68/a68-parser-extract.cc
*************** a4c0eb1b198b6316de80141fb16e341f  gcc/al
*** 3121,3157 ****
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
  7264507a5832537766582e01e375c299  gcc/algol68/a68-parser-pragmat.cc
! 3f96a1ffb5f93148ca11e03db6df3d68  gcc/algol68/a68-parser-prelude.cc
! 36817c236130df9135e9652e8a7a9856  gcc/algol68/a68-parser-scanner.cc
! 3e6a35051de9ec13b96de4c1070096c5  gcc/algol68/a68-parser-scope.cc
! d259fcdbab02c9c536b330f7111ae7cf  gcc/algol68/a68-parser-serial-dsa.cc
! f80e8322004d204fb7ac80c0957025f2  gcc/algol68/a68-parser-taxes.cc
  e122741b2dfd6676fd42da92582f9088  gcc/algol68/a68-parser-top-down.cc
  595c3ac77d0431f5a193397bb1229b3e  gcc/algol68/a68-parser-victal.cc
! efa893956e66113bef9513e9b717520f  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
  5c64966b8d066f661eca85bf4451277e  gcc/algol68/a68-pretty-print.h
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
! 51765fe072aca0b33be841ecff043d07  gcc/algol68/a68-types.h
  384e3fcca47f6f61b529f8d95656824a  gcc/algol68/a68-unistr.c
  004c8ed84a6d3665dbac0ef8fa5351c6  gcc/algol68/a68.h
  cbc2ddca0589edc81c7df109b1a1927b  gcc/algol68/a68spec.cc
  ca4abac71b91773df74abdea22798551  gcc/algol68/config-lang.in
! b4939444e954db57c114bb14d3b5f57e  gcc/algol68/ga68-coding-guidelines.texi
  9c3d535a7da271c49e76b9709e556383  gcc/algol68/ga68-exports.pk
  f150e2c760036b980e94ec7bb14e1172  gcc/algol68/ga68-internals.texi
! 7de567d9eea7475e738a22ed796cef95  gcc/algol68/ga68.texi
  6e162644e83dbcfbcfbacd36f1e64f3c  gcc/algol68/ga68.vw
  0a91d85c360d5ee3eb6258aecdab4636  gcc/algol68/lang-specs.h
  55e32b4ac4d7a159a683785bd5ee4c7a  gcc/algol68/lang.opt
  411f26970a0d93b07c697a1bcfeda50c  gcc/algol68/lang.opt.urls
! 0dc8a618ee2d3f1aeea3ff47c36d8d83  gcc/alias.cc
  b7dd8bd2dd68f81643704bf0b73553a1  gcc/alias.h
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
! cf0ba254039ee9f743497f42fc9f8630  gcc/alloc-pool.h
! 9aeb8b0de12aa0895d573f84d3ba84a6  gcc/analyzer/ChangeLog
! b683bd21b51974e986d25ee5f8e77fd5  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
  0d28086cb5be7b47c94b8fdb8329b115  gcc/analyzer/ana-state-to-diagnostic-state.h
--- 3123,3159 ----
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
  7264507a5832537766582e01e375c299  gcc/algol68/a68-parser-pragmat.cc
! 511e8c8cf5328832a3056cf53496ef3f  gcc/algol68/a68-parser-prelude.cc
! 7579b4ff69d8b1e981c1f7981f089889  gcc/algol68/a68-parser-scanner.cc
! 31c1ad0a156b1f8ddff8568add436c78  gcc/algol68/a68-parser-scope.cc
! 58e5a6738eeaab552950df71cf50d196  gcc/algol68/a68-parser-serial-dsa.cc
! effc2cf77a8c81af89b0ea44cc5bc160  gcc/algol68/a68-parser-taxes.cc
  e122741b2dfd6676fd42da92582f9088  gcc/algol68/a68-parser-top-down.cc
  595c3ac77d0431f5a193397bb1229b3e  gcc/algol68/a68-parser-victal.cc
! abb624eb426dd2c8e9a1de68c7d4ecca  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
  5c64966b8d066f661eca85bf4451277e  gcc/algol68/a68-pretty-print.h
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
! d70ae5781a204788596d281c20f889ac  gcc/algol68/a68-types.h
  384e3fcca47f6f61b529f8d95656824a  gcc/algol68/a68-unistr.c
  004c8ed84a6d3665dbac0ef8fa5351c6  gcc/algol68/a68.h
  cbc2ddca0589edc81c7df109b1a1927b  gcc/algol68/a68spec.cc
  ca4abac71b91773df74abdea22798551  gcc/algol68/config-lang.in
! de57cb0c251c683118113d7512fb484c  gcc/algol68/ga68-coding-guidelines.texi
  9c3d535a7da271c49e76b9709e556383  gcc/algol68/ga68-exports.pk
  f150e2c760036b980e94ec7bb14e1172  gcc/algol68/ga68-internals.texi
! 6b1503b0b7cd6ea57ed6f56548a01497  gcc/algol68/ga68.texi
  6e162644e83dbcfbcfbacd36f1e64f3c  gcc/algol68/ga68.vw
  0a91d85c360d5ee3eb6258aecdab4636  gcc/algol68/lang-specs.h
  55e32b4ac4d7a159a683785bd5ee4c7a  gcc/algol68/lang.opt
  411f26970a0d93b07c697a1bcfeda50c  gcc/algol68/lang.opt.urls
! 3b5e368fd2fda9509e35b29b5077a00c  gcc/alias.cc
  b7dd8bd2dd68f81643704bf0b73553a1  gcc/alias.h
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
! 853103d2bbe4a7888b35cf87d2bbe436  gcc/alloc-pool.h
! 896b0d4f12fcabe998be4823c5e260c8  gcc/analyzer/ChangeLog
! 2efbdc8b8a68e1025a7219e0b1f99360  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
  0d28086cb5be7b47c94b8fdb8329b115  gcc/analyzer/ana-state-to-diagnostic-state.h
*************** c10c515fd18d92850db760e5c083c1c2  gcc/an
*** 3164,3175 ****
  bedbea78751b139538f4c906011432fe  gcc/analyzer/analyzer-pass.cc
  380f2a7c04a014441f78569ef397a8a4  gcc/analyzer/analyzer-selftests.cc
  e87a9090a957efa1653cc5a6e36ec346  gcc/analyzer/analyzer-selftests.h
! 2239335aee0be8f30a46cf37217cd3d6  gcc/analyzer/analyzer.cc
  1708e1bf7b93e19f073cc11833cd2725  gcc/analyzer/analyzer.opt
  5847f7da212ee502959192dec8edf0e2  gcc/analyzer/analyzer.opt.urls
  4a17f3766ca5b4ec528ac459c519fc61  gcc/analyzer/bar-chart.cc
  745aa2e3472448c5c97fb4908c8d4397  gcc/analyzer/bar-chart.h
! ac058cee84f262ecfd4f34ba1b389703  gcc/analyzer/bounds-checking.cc
  347fd1e5d2dc257a6f98ade59f7515bf  gcc/analyzer/call-details.cc
  3accfae2c88025c6a053a6536125bdc5  gcc/analyzer/call-details.h
  1f8e9ed6036ee45a77b78b11eef0837d  gcc/analyzer/call-info.cc
--- 3166,3177 ----
  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
  745aa2e3472448c5c97fb4908c8d4397  gcc/analyzer/bar-chart.h
! cfc9230ed10cb6469865eda9e7e9bae3  gcc/analyzer/bounds-checking.cc
  347fd1e5d2dc257a6f98ade59f7515bf  gcc/analyzer/call-details.cc
  3accfae2c88025c6a053a6536125bdc5  gcc/analyzer/call-details.h
  1f8e9ed6036ee45a77b78b11eef0837d  gcc/analyzer/call-info.cc
*************** ba0e3f8ef30941728a1363efc633fa00  gcc/an
*** 3186,3196 ****
  b80a4cbfffb740548c8d1606ca22aba9  gcc/analyzer/common.h
  5ff0274ed0a527fd34bb3ec30c36543f  gcc/analyzer/complexity.cc
  f945a407a1ad45be621e572190f6e11f  gcc/analyzer/complexity.h
! 49f1f27a8c444849f43eeb17ebbd14a4  gcc/analyzer/constraint-manager.cc
  7d0cf2441abcd960f97e29dd071829e5  gcc/analyzer/constraint-manager.h
! bda4c50e98e4d1baea149a392d2c0bad  gcc/analyzer/diagnostic-manager.cc
  aea57c4b6c3a068535cb535affc9baca  gcc/analyzer/diagnostic-manager.h
! 52acee5279af8c440ec483d1469e26c0  gcc/analyzer/engine.cc
  42e3e00aa33d20f2e141615939577290  gcc/analyzer/engine.h
  f92fa0decedca974c9333bb42a774446  gcc/analyzer/event-loc-info.h
  3325e5ad81c0f036bfc22a430d9509e9  gcc/analyzer/exploded-graph.h
--- 3188,3198 ----
  b80a4cbfffb740548c8d1606ca22aba9  gcc/analyzer/common.h
  5ff0274ed0a527fd34bb3ec30c36543f  gcc/analyzer/complexity.cc
  f945a407a1ad45be621e572190f6e11f  gcc/analyzer/complexity.h
! f8b499c8f963748c73700db85edd79fe  gcc/analyzer/constraint-manager.cc
  7d0cf2441abcd960f97e29dd071829e5  gcc/analyzer/constraint-manager.h
! 7f60fa4673a549b730ea3c45d1c525d5  gcc/analyzer/diagnostic-manager.cc
  aea57c4b6c3a068535cb535affc9baca  gcc/analyzer/diagnostic-manager.h
! 40230a43bb43fdcffb5c729af3658a3e  gcc/analyzer/engine.cc
  42e3e00aa33d20f2e141615939577290  gcc/analyzer/engine.h
  f92fa0decedca974c9333bb42a774446  gcc/analyzer/event-loc-info.h
  3325e5ad81c0f036bfc22a430d9509e9  gcc/analyzer/exploded-graph.h
*************** e04aa3aca2a9f4b67a39c9f1f608296b  gcc/an
*** 3203,3218 ****
  cebc0fb2ff69dfedb12e4fab2824c4fd  gcc/analyzer/impl-sm-context.h
  f0d253f05a474982aa1e1e4c99a0ff98  gcc/analyzer/infinite-loop.cc
  4a24b9bb8673fa192a1f8c010bad8a98  gcc/analyzer/infinite-recursion.cc
! 0a7e1ce7bcc02f6aa0f1660029895b13  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
! ec8e58367f783edb8f792dbf3f957cc4  gcc/analyzer/ops.cc
  2e431f5c97833b392b28d0b7c15ab28a  gcc/analyzer/ops.h
  9eb8c09557be08bb2df2414fdfa09fb8  gcc/analyzer/pending-diagnostic.cc
! d1e593b09bbcdb6bd5edc17c5f0b7c0d  gcc/analyzer/pending-diagnostic.h
  5cb5e66a39ff9fe7ad6e790167ce5acb  gcc/analyzer/poisoned-value-diagnostic.cc
  77b023b2349d390847d2dd7baa9d75db  gcc/analyzer/program-point.cc
  83761973cc08ccbe996d4f80b0224df3  gcc/analyzer/program-point.h
--- 3205,3220 ----
  cebc0fb2ff69dfedb12e4fab2824c4fd  gcc/analyzer/impl-sm-context.h
  f0d253f05a474982aa1e1e4c99a0ff98  gcc/analyzer/infinite-loop.cc
  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
! f5af0b46f515d3ddf7466fc356ba2a58  gcc/analyzer/ops.cc
  2e431f5c97833b392b28d0b7c15ab28a  gcc/analyzer/ops.h
  9eb8c09557be08bb2df2414fdfa09fb8  gcc/analyzer/pending-diagnostic.cc
! 48dea1ef9c26f77ab49b58495ea7536e  gcc/analyzer/pending-diagnostic.h
  5cb5e66a39ff9fe7ad6e790167ce5acb  gcc/analyzer/poisoned-value-diagnostic.cc
  77b023b2349d390847d2dd7baa9d75db  gcc/analyzer/program-point.cc
  83761973cc08ccbe996d4f80b0224df3  gcc/analyzer/program-point.h
*************** a23706e970c248ed5f79513768075f32  gcc/an
*** 3223,3256 ****
  a8c275843686611dd10e89cc7569f89d  gcc/analyzer/reachability.h
  4df6e8532c302bc59b4e417ab38a741a  gcc/analyzer/record-layout.cc
  f93ef89d263e02c779ec129aeead8a28  gcc/analyzer/record-layout.h
! 8998fc6abdaaf4914e8f43f86a20d895  gcc/analyzer/region-model-asm.cc
  fa5a2dbbece7e674ee0ba490d0777420  gcc/analyzer/region-model-manager.cc
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! b7f4277b764c93010586ba3073b695f4  gcc/analyzer/region-model.cc
  b800670e2c207717abac4f5c5e48e330  gcc/analyzer/region-model.h
! 172ce849c7a1bc9435fa24c365b784a3  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
! 869bedacb3fc18e51d302e89fdc9ba7f  gcc/analyzer/setjmp-longjmp.cc
  988372b793dca064b45719144289a046  gcc/analyzer/shift-diagnostics.cc
! de1b4d168343a9bc6547fc563f836658  gcc/analyzer/sm-fd.cc
  dbe5f340be1000aa32173ff729fedbab  gcc/analyzer/sm-fd.dot
  b10f0d6e0fcb38bf1735eefe471d028d  gcc/analyzer/sm-file.cc
  401eb7722d517df6787e7bec7bdf9199  gcc/analyzer/sm-file.dot
! f858a1884be0ba0c234f7c737c48821f  gcc/analyzer/sm-malloc.cc
  1b93a336848d1863eba773990024bfad  gcc/analyzer/sm-malloc.dot
  0af99b045ce70bf1ecd2d979df5a544b  gcc/analyzer/sm-pattern-test.cc
  c1459aac86f73bc045b48366cc2494b7  gcc/analyzer/sm-sensitive.cc
  5c03c692432e429bcb2f4b5a97a00ab6  gcc/analyzer/sm-signal.cc
! 3f61ef37f37c2c95af8e480f157ed916  gcc/analyzer/sm-taint.cc
  f0dcebb9979e1da7d7bd6fb4ad06a54e  gcc/analyzer/sm.cc
  b667de4f07c660c4cd4e91834ea39073  gcc/analyzer/sm.h
  3624f55d83e9b0bc535b28c37079b437  gcc/analyzer/state-purge.cc
  8a3af8bab2c3a2bb873540dfd49ae5c5  gcc/analyzer/state-purge.h
  342070c44286a1b8585700c8e7c11036  gcc/analyzer/state-transition.cc
  761c24e1a703c19fd79fca90ffbae541  gcc/analyzer/state-transition.h
! 89c286acd93f6718b8b24cb6a8c54084  gcc/analyzer/store.cc
  39be33b082de86673a3f56032b2b74a6  gcc/analyzer/store.h
  33d9be73a4d262226af82d56d077167b  gcc/analyzer/supergraph-fixup-locations.cc
  2b1f8d482dc79d6594c1772d53f983a3  gcc/analyzer/supergraph-manipulation.h
--- 3225,3258 ----
  a8c275843686611dd10e89cc7569f89d  gcc/analyzer/reachability.h
  4df6e8532c302bc59b4e417ab38a741a  gcc/analyzer/record-layout.cc
  f93ef89d263e02c779ec129aeead8a28  gcc/analyzer/record-layout.h
! a193aacf9dc09a32d5dfb29d6832c5be  gcc/analyzer/region-model-asm.cc
  fa5a2dbbece7e674ee0ba490d0777420  gcc/analyzer/region-model-manager.cc
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! ffcb122054c741c248e093f886082a94  gcc/analyzer/region-model.cc
  b800670e2c207717abac4f5c5e48e330  gcc/analyzer/region-model.h
! f8d7bd1e0de4ee53bff75c10df2ce248  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
! dc13af22c8f08d0e5313c40e412517df  gcc/analyzer/setjmp-longjmp.cc
  988372b793dca064b45719144289a046  gcc/analyzer/shift-diagnostics.cc
! 6698b118af16b473f21daf3adc0999d8  gcc/analyzer/sm-fd.cc
  dbe5f340be1000aa32173ff729fedbab  gcc/analyzer/sm-fd.dot
  b10f0d6e0fcb38bf1735eefe471d028d  gcc/analyzer/sm-file.cc
  401eb7722d517df6787e7bec7bdf9199  gcc/analyzer/sm-file.dot
! 974f50c7ba0a18c94b70792368a630e4  gcc/analyzer/sm-malloc.cc
  1b93a336848d1863eba773990024bfad  gcc/analyzer/sm-malloc.dot
  0af99b045ce70bf1ecd2d979df5a544b  gcc/analyzer/sm-pattern-test.cc
  c1459aac86f73bc045b48366cc2494b7  gcc/analyzer/sm-sensitive.cc
  5c03c692432e429bcb2f4b5a97a00ab6  gcc/analyzer/sm-signal.cc
! 2d1959ae51533d7d2153e8a9458faba1  gcc/analyzer/sm-taint.cc
  f0dcebb9979e1da7d7bd6fb4ad06a54e  gcc/analyzer/sm.cc
  b667de4f07c660c4cd4e91834ea39073  gcc/analyzer/sm.h
  3624f55d83e9b0bc535b28c37079b437  gcc/analyzer/state-purge.cc
  8a3af8bab2c3a2bb873540dfd49ae5c5  gcc/analyzer/state-purge.h
  342070c44286a1b8585700c8e7c11036  gcc/analyzer/state-transition.cc
  761c24e1a703c19fd79fca90ffbae541  gcc/analyzer/state-transition.h
! f7c31598567f1ef110d2432e5fc60da6  gcc/analyzer/store.cc
  39be33b082de86673a3f56032b2b74a6  gcc/analyzer/store.h
  33d9be73a4d262226af82d56d077167b  gcc/analyzer/supergraph-fixup-locations.cc
  2b1f8d482dc79d6594c1772d53f983a3  gcc/analyzer/supergraph-manipulation.h
*************** b667de4f07c660c4cd4e91834ea39073  gcc/an
*** 3258,3264 ****
  fa9e08e646a34adeb4f02012756b3d74  gcc/analyzer/supergraph-sorting.cc
  a016ed244edf8129b300a1ef13e7f736  gcc/analyzer/supergraph.cc
  f293986107b306a212dc86f6411f2241  gcc/analyzer/supergraph.h
! 8c04d96f82b5879ee50cb15ea7675353  gcc/analyzer/svalue.cc
  fbf8b9a9f90917b87f80e4d67aa69bcb  gcc/analyzer/svalue.h
  643152b22a5c7ffccb9633bf2c517f1b  gcc/analyzer/symbol.cc
  bb281e65b69be53cd8eab73e448bb9c1  gcc/analyzer/symbol.h
--- 3260,3266 ----
  fa9e08e646a34adeb4f02012756b3d74  gcc/analyzer/supergraph-sorting.cc
  a016ed244edf8129b300a1ef13e7f736  gcc/analyzer/supergraph.cc
  f293986107b306a212dc86f6411f2241  gcc/analyzer/supergraph.h
! 1198e6d08263a9fb406aadc0b98162d1  gcc/analyzer/svalue.cc
  fbf8b9a9f90917b87f80e4d67aa69bcb  gcc/analyzer/svalue.h
  643152b22a5c7ffccb9633bf2c517f1b  gcc/analyzer/symbol.cc
  bb281e65b69be53cd8eab73e448bb9c1  gcc/analyzer/symbol.h
*************** e78837c5a60b542b208371ea1e312af9  gcc/an
*** 3268,3320 ****
  3c33a162314863866dc49ceb3d8abd11  gcc/analyzer/varargs.dot
  ce213b79c4b2b50ceddefe2bbf41039e  gcc/analyzer/write-to-const-diagnostics.cc
  5af94414f167d3b307a0e33995e4a7fb  gcc/array-traits.h
! 4dc843bbb8bbadc9097e85ccdc9ad468  gcc/asan.cc
! 756461437b2a9b9c23a4dd8bbb792b16  gcc/asan.h
! e003b9fc1b8aa5b9b0eef314c0c4f56a  gcc/asm-toplevel.cc
  ea987115b0f67bce5cc4745e6d5bc4d1  gcc/attr-callback.cc
  2d462a57a0a7bbe8bcb22db63f9377ef  gcc/attr-callback.h
! cbe63f3e975481a17ed49898fbbb9d2a  gcc/attr-fnspec.h
  5e34f8c7aedb20a16dd1c546a30d2b13  gcc/attr-urls.def
! 41ebf84dcf3c0a1da25d48a3c9fa72d4  gcc/attribs.cc
  feed071e9f711f8ebbc91f8636422f93  gcc/attribs.h
  bd317e24faffad6f2106396f1c3401b1  gcc/auto-inc-dec.cc
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
! a4c64459b3b4fb8ef116716a051874f1  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
  2ceed9a94ac67d13f1ed146a4fb07b7f  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
! 836731448e64bbca8b5b1aa56ca90cdd  gcc/basic-block.h
  c277cfbf6dc22b5e43687f22a6ef9adb  gcc/bb-reorder.cc
  20c432f7895f0ceadeae7cb99fd92b35  gcc/bb-reorder.h
! 47f6edeed43ea42786e067c0a899e909  gcc/bbitmap.h
! ebb1ceb69d6cf8ac2cdc227ae45f0eca  gcc/bitmap.cc
! 02723eaf6b51bef2f5c86af989a3a07a  gcc/bitmap.h
! 392eecf8142b4edd3c482f461232166f  gcc/btfout.cc
  6da486aac72d8ac53fc6618dea4dcf2e  gcc/builtin-attrs.def
  199995f5aa749f6b6a1170f2307d8e3b  gcc/builtin-types.def
! 20cee46127d343d580bbd5d19e691e9f  gcc/builtins.cc
! eca54bea4455692736159661d9bb9ea9  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! 7be183e6c42408b298b10e4fe902db9f  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
! 070946aa1b55a55d613bad8af07ad174  gcc/c-family/c-attribs.cc
! 42561a3faabfdfd137738b2311baf58c  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
! faa816260bd768905e411e926657028e  gcc/c-family/c-common.h
! 5121366799fa054c10e3cedd4409d4fb  gcc/c-family/c-cppbuiltin.cc
  0b9194e38297d00cf3fac80365cc07af  gcc/c-family/c-dump.cc
! 6ae3bdb693669aee234a91cd79302dcf  gcc/c-family/c-format.cc
  1adde7951b864b565a2b79c5461d43fa  gcc/c-family/c-format.h
  4179a97862f28535be92ef4cab16246e  gcc/c-family/c-gimplify.cc
  50e638257386d3df7bdf25108fdeb5d1  gcc/c-family/c-indentation.cc
  382fde18b48d137c66c91e21de978037  gcc/c-family/c-indentation.h
  4893d50b962d5e680a44bb72d2097469  gcc/c-family/c-lex.cc
  eb6a10cfada98679dc204a82e929e9e3  gcc/c-family/c-objc.h
! 02afe8f06e7808a1ae9ca6cc87714d14  gcc/c-family/c-omp.cc
! a93a54bd451fefbd21f9b288d5530d33  gcc/c-family/c-opts.cc
  a7304c009aa63ce6c8e80612b426724a  gcc/c-family/c-pch.cc
  cb9706138b571f810527200a1e24035c  gcc/c-family/c-ppoutput.cc
  1c45b9d8f8a674aa74dc09d32ee9a453  gcc/c-family/c-pragma.cc
--- 3270,3322 ----
  3c33a162314863866dc49ceb3d8abd11  gcc/analyzer/varargs.dot
  ce213b79c4b2b50ceddefe2bbf41039e  gcc/analyzer/write-to-const-diagnostics.cc
  5af94414f167d3b307a0e33995e4a7fb  gcc/array-traits.h
! 9f1d3f3e05dc8abd46fe40ede920d4fb  gcc/asan.cc
! 248dd3f60d67d7404635a43ac1ee5b95  gcc/asan.h
! c21be8736ac701b9ddae4e83d6522cd4  gcc/asm-toplevel.cc
  ea987115b0f67bce5cc4745e6d5bc4d1  gcc/attr-callback.cc
  2d462a57a0a7bbe8bcb22db63f9377ef  gcc/attr-callback.h
! 01393580ee21b0c1bd7189c69016bf47  gcc/attr-fnspec.h
  5e34f8c7aedb20a16dd1c546a30d2b13  gcc/attr-urls.def
! 79db6e393f8da8b41d3a48e7909d30ec  gcc/attribs.cc
  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
  2ceed9a94ac67d13f1ed146a4fb07b7f  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
! 6770584a7ddc4817aef150c43e430367  gcc/basic-block.h
  c277cfbf6dc22b5e43687f22a6ef9adb  gcc/bb-reorder.cc
  20c432f7895f0ceadeae7cb99fd92b35  gcc/bb-reorder.h
! 82d5ae44d2148a11f1d8dd207970ce4e  gcc/bbitmap.h
! d03365bf2ad317d8ba6dd32f93566113  gcc/bitmap.cc
! 491ead950b7ae0e5ddd09d781982edb2  gcc/bitmap.h
! 8ba8cc55d4c38f126d32b3291cec4312  gcc/btfout.cc
  6da486aac72d8ac53fc6618dea4dcf2e  gcc/builtin-attrs.def
  199995f5aa749f6b6a1170f2307d8e3b  gcc/builtin-types.def
! 034927d7bd1141cb9a106370d173003e  gcc/builtins.cc
! d5db4c3fd8f2f6328a72905271146ce0  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! cd8e618db4532dfebcca144fadbaa293  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
! 8c0f275ff519f9646c95c198891aaef4  gcc/c-family/c-attribs.cc
! 0118a7d8e62091ea07fe68ccca117f6b  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
! 112809e98301e399189c0c9ae93573ca  gcc/c-family/c-common.h
! b74981700895b064aebe6de493055000  gcc/c-family/c-cppbuiltin.cc
  0b9194e38297d00cf3fac80365cc07af  gcc/c-family/c-dump.cc
! 785b5f9c39e1d26ec0e4f70880e6202a  gcc/c-family/c-format.cc
  1adde7951b864b565a2b79c5461d43fa  gcc/c-family/c-format.h
  4179a97862f28535be92ef4cab16246e  gcc/c-family/c-gimplify.cc
  50e638257386d3df7bdf25108fdeb5d1  gcc/c-family/c-indentation.cc
  382fde18b48d137c66c91e21de978037  gcc/c-family/c-indentation.h
  4893d50b962d5e680a44bb72d2097469  gcc/c-family/c-lex.cc
  eb6a10cfada98679dc204a82e929e9e3  gcc/c-family/c-objc.h
! 189b2e72aaba00910cfae87a0c0a8ee3  gcc/c-family/c-omp.cc
! 3c2598804be4bc165476dff153dde8bb  gcc/c-family/c-opts.cc
  a7304c009aa63ce6c8e80612b426724a  gcc/c-family/c-pch.cc
  cb9706138b571f810527200a1e24035c  gcc/c-family/c-ppoutput.cc
  1c45b9d8f8a674aa74dc09d32ee9a453  gcc/c-family/c-pragma.cc
*************** f7be2688a5d3b3987de70c31a6a5e374  gcc/c-
*** 3329,3460 ****
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! d65f75ab58c67521c48b77deb73f5ad7  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  b04c53afbd10f0830045ea40d0c5c194  gcc/c-family/c-warn.cc
! 33cadbf9fb4856643a6a29b3332ca38d  gcc/c-family/c.opt
  e0eb5a70f81cc829fe7d9d9164d0b11f  gcc/c-family/c.opt.urls
  6453e733397a8ab931434f4f73ee7d7b  gcc/c-family/cppspec.cc
  58ecef7621a9577e43ac42cfceae8864  gcc/c-family/known-headers.cc
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! 7f2e677d11064fc357b774c2a54d0d8a  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
! 7505941f90a964d2b4750a95fcc3ee2d  gcc/c/c-decl.cc
  92707173973fa48fbb8dda88f5af625a  gcc/c/c-errors.cc
! a59a5f126151616976b68fde0c703dd4  gcc/c/c-fold.cc
! 817e08cf2d2f4169cb1e5cc26bad1174  gcc/c/c-lang.cc
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
! 1c2de79d0807af2a767aa7abefb07c3a  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 64d04ef394101a55c05ad12b051302cd  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
! 0e7daedf1e35ced06dd99e10dcc9a68e  gcc/c/c-tree.h
! fb10560f4c46d3de4f8d2ad4bb2041c3  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
! 3ae90e1d8085765b7e7488ac9673a927  gcc/c/gimple-parser.cc
  d5c1cad6808353782d75116a4939d551  gcc/c/gimple-parser.h
  8b7ae733f9c7c1e52dc5db93bec9cc45  gcc/caller-save.cc
! 056cd50fff877798a6aba03adec3545f  gcc/calls.cc
  ff5a0cd0f881aae35e405e715150405b  gcc/calls.h
! 3a4ad3325026c8bc065648c9af3f67fb  gcc/ccmp.cc
! bdba39e87a75c76bfc3ab3bfd08e7f02  gcc/ccmp.h
  b10a97632296895b0c731a2bec8db001  gcc/cfg-flags.def
! b5032914357d504b699d52f930f6998b  gcc/cfg.cc
  d765375085ae6a7be91925c440afd3a9  gcc/cfg.h
! a720508ff7cb46f4e08fb74d46e39b6d  gcc/cfganal.cc
  0d787a64241d6b4077f0204523b9ae83  gcc/cfganal.h
! efcac12e876ea7fc2018badafb6fddb5  gcc/cfgbuild.cc
  1759b500ef3ebaa71f165d1004be0c28  gcc/cfgbuild.h
  7204450de7c4cc506ca7b77a17060d34  gcc/cfgcleanup.cc
  19b842f671a6c6284b654d712d52e513  gcc/cfgcleanup.h
! cc705d06a0d769debf1c9afca112eff6  gcc/cfgexpand.cc
  7bcce78536f3bff0e046d9a3ece5ea9a  gcc/cfgexpand.h
  9009ba1d3f596dbdd73e13ac8c13aa03  gcc/cfghooks.cc
  168a35792653beee5d2b951ef1708665  gcc/cfghooks.h
! e632414796a71844915c5d95d521ea0c  gcc/cfgloop.cc
  e401a5a5a7e802aea0c860de79cf4639  gcc/cfgloop.h
! f18b9392122c866e0f6862690656ebd5  gcc/cfgloopanal.cc
! c3fd49f98e00cb189ccabdf43ad76909  gcc/cfgloopmanip.cc
  f06c849f4ab033a8269f676731b08388  gcc/cfgloopmanip.h
  bf51c09e81eb3433da948582cff58444  gcc/cfgrtl.cc
  c41525a1de6e78cabd4414d6a8c3dac9  gcc/cfgrtl.h
! 23b9aa75531c001cb377f7909d709c80  gcc/cgraph.cc
! d61fe81ae621d346985061a794ecfd03  gcc/cgraph.h
  b50dcacbe77c96809023aa599a556717  gcc/cgraphbuild.cc
  1a06be3556807c21f91d629f5878d022  gcc/cgraphclones.cc
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
! 931fe41c17df7e7a6074418f8e41f010  gcc/cif-code.def
! 115a279f2c37e324f8b2996ed7743f66  gcc/cobol/ChangeLog
! 5ba0d0569b8eaeb40ae03caba819f9f7  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
  5fdc70643a73d31fa87ca25eb9bca477  gcc/cobol/cdf-copy.cc
! 298773ed22793f7c278724d2c7828041  gcc/cobol/cdf.y
  9e2d50bdc3077d698d2cd5c27a02cf08  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! 51d1dc13bf0ad345f8ba650f9c99b0fc  gcc/cobol/cobol1.cc
! 1f238db4a80750c0d05f315f230e33e3  gcc/cobol/compare.cc
  939e7b432922c564a7dd0333e2fa3532  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
  7e43ef597462b3ceabf3c197b4017e7c  gcc/cobol/convert.cc
! ba30f28abeaa4beeafc56b80054aad73  gcc/cobol/copybook.h
! 3f5a0424b32cd09b107e8858af9cf15f  gcc/cobol/dts.h
! d3e145b932227aa8e5b26dec41c06d6a  gcc/cobol/except.cc
  41ddde89db7edc684fadb0cba4d0e67f  gcc/cobol/exceptg.h
! 513ba4e9571cd85565465785f2a6286a  gcc/cobol/gcobc
! d576006e43938e834a3c93d92bddcc98  gcc/cobol/gcobol.1
! 527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
! a0a0120d2e52dd9bbe26a6d64ba9dc64  gcc/cobol/gcobolspec.cc
! 691c66bf7f9a69773541beaf2187c821  gcc/cobol/genapi.cc
  33ad1f5d36b0ebf1ffe306350c8d60cc  gcc/cobol/genapi.h
! dfe5d4aa2bbb52c8c78ec370cd1edd11  gcc/cobol/gengen.cc
! 710a70dbaf68006a5e87b42b04de9977  gcc/cobol/gengen.h
! 02ef7b164bb03cd6f9416a7ce973abcd  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 2721cc61ac2a3b66066ee43d09ec1384  gcc/cobol/genutil.cc
  a74337a9bb65a83b27be68a2f06e4986  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 1d25e20d4c6772646a35ca3fa9e1ed49  gcc/cobol/lang-specs.h
! 78d52a99c23b816808264665df785271  gcc/cobol/lang.opt
  2924af2e9df185e08e5e225631897dc5  gcc/cobol/lang.opt.urls
! 75383d93bce64f91473c54d1c6a52f98  gcc/cobol/lexio.cc
  c691e8bb52e1a438ce2f510250bbf4d9  gcc/cobol/lexio.h
! 64538945adf32d271171e0bda2850338  gcc/cobol/messages.cc
! 1e6e9792bc5a269d29d66c7c7bde8f8f  gcc/cobol/parse.y
! e4c4f8104abe6aaf78d9130fd228a68b  gcc/cobol/parse_ante.h
  658e59750efa818db284c44387330580  gcc/cobol/parse_util.h
  52c1a2af86ace48e713840e3d7efa796  gcc/cobol/scan.l
! b0dbe25131552ea89e3c4b817cb51a13  gcc/cobol/scan_ante.h
  77407320fb4e055c83519f2849472460  gcc/cobol/scan_post.h
  74a3f55d7d2740db3d3e1945335d4faa  gcc/cobol/show_parse.h
! 593c47b2e477e389977161c311aee82c  gcc/cobol/structs.cc
  e82b261f1753be53d32fb056a39f498b  gcc/cobol/structs.h
! 5e76f69d26ce71a91aca077da34c0645  gcc/cobol/symbols.cc
! c7f7481ea1935c9022d43a43860a4bf5  gcc/cobol/symbols.h
! 1da102076dc68b2edac18947cbd1c104  gcc/cobol/symfind.cc
! 0b45e8af0c2c2f064b378c02368657f3  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 06752152103acaeb29c557eea11a7afd  gcc/cobol/util.cc
! 71a80320dc4c1e02c0aafd48bea98ea4  gcc/cobol/util.h
  c1bcbb8330a34acab1f51487c3d5b89f  gcc/collect-utils.cc
  70025ae15b4018e75f6bfcbaa4db4fca  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
  a56f67bf9504f1f91df64d23b9ce6f3b  gcc/collect2-aix.h
! 705abc3f0adc6b53db161a82f7553855  gcc/collect2.cc
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
! f8ed62b3d696b90f169cf8a9868f8aad  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
! 3daf39a0da614c7aa3e2007da82b37a4  gcc/common.opt
  0b6694826773455ec174f3dc52a1a3a1  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
--- 3331,3462 ----
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! e3d7f0b915ffaffb3c5a64a23d862c11  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  b04c53afbd10f0830045ea40d0c5c194  gcc/c-family/c-warn.cc
! 300e42a44dddd72ac08a890e4cbf3649  gcc/c-family/c.opt
  e0eb5a70f81cc829fe7d9d9164d0b11f  gcc/c-family/c.opt.urls
  6453e733397a8ab931434f4f73ee7d7b  gcc/c-family/cppspec.cc
  58ecef7621a9577e43ac42cfceae8864  gcc/c-family/known-headers.cc
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! b49d383977dd671190fecc483e22930c  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
! 40b97b53eee71d68675a5b4b678ab3a0  gcc/c/c-decl.cc
  92707173973fa48fbb8dda88f5af625a  gcc/c/c-errors.cc
! fb28bfedbe8c8f41f339af7936b3b22f  gcc/c/c-fold.cc
! 9087221c62ac81d002665b0e3ae2c55f  gcc/c/c-lang.cc
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
! 0faaa7bc26e8df40db69dd9caad8ced6  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! c8f37b974af16f7f9bb6ede9f4d21c39  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
! 3ee5aefcb5c9ebc5fed7991af22b0426  gcc/c/c-tree.h
! ab73800151c926aa250c19d12ad73bb2  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
! 3006cd4ab743e1a8087fc267168774ce  gcc/c/gimple-parser.cc
  d5c1cad6808353782d75116a4939d551  gcc/c/gimple-parser.h
  8b7ae733f9c7c1e52dc5db93bec9cc45  gcc/caller-save.cc
! 6a366b46ea83847a1db9ecb1ca5464e0  gcc/calls.cc
  ff5a0cd0f881aae35e405e715150405b  gcc/calls.h
! 2bf0bdaa177d2092acb7fd3d479879ab  gcc/ccmp.cc
! 85bc42a6e56aadf2cf248e0090f7726d  gcc/ccmp.h
  b10a97632296895b0c731a2bec8db001  gcc/cfg-flags.def
! e503d24c866ff5876a13dfa177e3cac9  gcc/cfg.cc
  d765375085ae6a7be91925c440afd3a9  gcc/cfg.h
! 7c51e63f6078a2068dead79ea6206a2f  gcc/cfganal.cc
  0d787a64241d6b4077f0204523b9ae83  gcc/cfganal.h
! c620b176c09eda90b566ae49703a8346  gcc/cfgbuild.cc
  1759b500ef3ebaa71f165d1004be0c28  gcc/cfgbuild.h
  7204450de7c4cc506ca7b77a17060d34  gcc/cfgcleanup.cc
  19b842f671a6c6284b654d712d52e513  gcc/cfgcleanup.h
! 35c86c649a626306de23fc6c5342c55a  gcc/cfgexpand.cc
  7bcce78536f3bff0e046d9a3ece5ea9a  gcc/cfgexpand.h
  9009ba1d3f596dbdd73e13ac8c13aa03  gcc/cfghooks.cc
  168a35792653beee5d2b951ef1708665  gcc/cfghooks.h
! 8c572e1dbe8ec2f3eb6a83b9125087ab  gcc/cfgloop.cc
  e401a5a5a7e802aea0c860de79cf4639  gcc/cfgloop.h
! 689848baf4480a109da126f0865b5be6  gcc/cfgloopanal.cc
! e5a012c1da31f9a8d61212cd17d2761a  gcc/cfgloopmanip.cc
  f06c849f4ab033a8269f676731b08388  gcc/cfgloopmanip.h
  bf51c09e81eb3433da948582cff58444  gcc/cfgrtl.cc
  c41525a1de6e78cabd4414d6a8c3dac9  gcc/cfgrtl.h
! f34ff59499fcd37d77a2a3571973ec7e  gcc/cgraph.cc
! d01f5aa66318fa0724dd739a1b80d004  gcc/cgraph.h
  b50dcacbe77c96809023aa599a556717  gcc/cgraphbuild.cc
  1a06be3556807c21f91d629f5878d022  gcc/cgraphclones.cc
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
! f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! 217b4b4ecc207ca96472fb706ffa7a2b  gcc/cobol/ChangeLog
! c48700fe95b364935dc5cc65c355c1c8  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
  5fdc70643a73d31fa87ca25eb9bca477  gcc/cobol/cdf-copy.cc
! 65529d9fed05c2a9ccd7a0714b3b65ac  gcc/cobol/cdf.y
  9e2d50bdc3077d698d2cd5c27a02cf08  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! 4ca503744e504b9082780a6bcb26f3e0  gcc/cobol/cobol1.cc
! 5e15bb27a72062e52254d2a053e26744  gcc/cobol/compare.cc
  939e7b432922c564a7dd0333e2fa3532  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
  7e43ef597462b3ceabf3c197b4017e7c  gcc/cobol/convert.cc
! 73aabe0b0206b600444dad3b27e417d7  gcc/cobol/copybook.h
! d5c6387d56f84eecf1320e4209ae02fe  gcc/cobol/dts.h
! 79fd5c6d108a5a1af2ebda2296d91440  gcc/cobol/except.cc
  41ddde89db7edc684fadb0cba4d0e67f  gcc/cobol/exceptg.h
! 946ac0c941d437c329116221cf313838  gcc/cobol/gcobc
! 823e15969bf48eb2465696dd3b2fc1c3  gcc/cobol/gcobol.1
! 7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
! 94cfbb054e88b866de272d02ea283a15  gcc/cobol/gcobolspec.cc
! d685822c2ce987e517a48f209e6a48b7  gcc/cobol/genapi.cc
  33ad1f5d36b0ebf1ffe306350c8d60cc  gcc/cobol/genapi.h
! c87389cfc6fe8c9243821fc14007eb15  gcc/cobol/gengen.cc
! 49309164cfe6837cc514856eb3f7dbc9  gcc/cobol/gengen.h
! df7a30acd01b4385a0a156b968940c44  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! e4edbb29ca0f04bc3cca1d331f17b922  gcc/cobol/genutil.cc
  a74337a9bb65a83b27be68a2f06e4986  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 3d64bb4b438e9ebe62fb7cf92eacaf0a  gcc/cobol/lang-specs.h
! c1d66b5f1f76509f9d357fd5f0d70c76  gcc/cobol/lang.opt
  2924af2e9df185e08e5e225631897dc5  gcc/cobol/lang.opt.urls
! 0a7ca538b7588a3c6ae13c38480fe3c9  gcc/cobol/lexio.cc
  c691e8bb52e1a438ce2f510250bbf4d9  gcc/cobol/lexio.h
! 3a7636dc3c5f3bdc376ccf55cf668b11  gcc/cobol/messages.cc
! 1c43fa71813d46e06cec19c0b949e0f1  gcc/cobol/parse.y
! c41675cbbb5dbab3510fa2bfee9118cc  gcc/cobol/parse_ante.h
  658e59750efa818db284c44387330580  gcc/cobol/parse_util.h
  52c1a2af86ace48e713840e3d7efa796  gcc/cobol/scan.l
! 790783bd96f52af3cede5d35fe031afe  gcc/cobol/scan_ante.h
  77407320fb4e055c83519f2849472460  gcc/cobol/scan_post.h
  74a3f55d7d2740db3d3e1945335d4faa  gcc/cobol/show_parse.h
! 75161ca42023dad15cbea413b6d34380  gcc/cobol/structs.cc
  e82b261f1753be53d32fb056a39f498b  gcc/cobol/structs.h
! 841253c34eb5a5b0983f87031b5dea49  gcc/cobol/symbols.cc
! 102cfaa3f0fc2d86c642fa9013ddb416  gcc/cobol/symbols.h
! 2052d3215a215928b26c5296b9e2eea1  gcc/cobol/symfind.cc
! 2f32d8b900fd38fa259875ca2ca5c9a1  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! abb8d16a0003a257bec284675b52ca1f  gcc/cobol/util.cc
! fc1955f9aef8a51d52c932f6331d93a9  gcc/cobol/util.h
  c1bcbb8330a34acab1f51487c3d5b89f  gcc/collect-utils.cc
  70025ae15b4018e75f6bfcbaa4db4fca  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
  a56f67bf9504f1f91df64d23b9ce6f3b  gcc/collect2-aix.h
! 73c94b051abb120188085034a60659eb  gcc/collect2.cc
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
! 8b3e9ec255e00dd68f29f98fc66e092b  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
! b74396d684edfcfbd18666820e96e868  gcc/common.opt
  0b6694826773455ec174f3dc52a1a3a1  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
*************** c47b4191f7bac0196ab63ca2c66bfa98  gcc/co
*** 3527,3534 ****
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  3b4b552144d47e66a0b131b2e5aa5df9  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
! 43e4b68d5498109fb28651f2fc161582  gcc/config/aarch64/aarch64-c.cc
! 3effce0415a0994753b7865834e56638  gcc/config/aarch64/aarch64-coff.h
  1e3f3e85ee00a43b3932b2c53c40df08  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
--- 3529,3536 ----
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  3b4b552144d47e66a0b131b2e5aa5df9  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
! 131d666f3c21b4fd290d08f351a3cc95  gcc/config/aarch64/aarch64-c.cc
! 5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
  1e3f3e85ee00a43b3932b2c53c40df08  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
*************** ad46aa5e72a5c2c30247bb3cf2ed9f20  gcc/co
*** 3555,3601 ****
  b5673de84eb78885b56917c7b8b92e97  gcc/config/aarch64/aarch64-ldp-fusion.cc
  66724803f21104e637c395aa5cad8a59  gcc/config/aarch64/aarch64-ldpstp.md
  bfa2432e1ec80f8de2e43f3f3ba8da0e  gcc/config/aarch64/aarch64-linux.h
! ef1ce762dfa6300b426ed1df70cd6069  gcc/config/aarch64/aarch64-modes.def
  ed695db844c2f7ccc7b0b2a95b037a7c  gcc/config/aarch64/aarch64-narrow-gp-writes.cc
  c058178535c874c3d9f517b5db804691  gcc/config/aarch64/aarch64-neon-sve-bridge-builtins.def
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
  4ac96a19bb5198741503893e13567775  gcc/config/aarch64/aarch64-option-extensions.def
  1fcf15030f24490613d6a45d6b439e61  gcc/config/aarch64/aarch64-opts.h
  c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/config/aarch64/aarch64-passes.def
! 3670977dd8ad3a909c28b9bb1e064af4  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  da15606bcbef7961db958c042bf81c05  gcc/config/aarch64/aarch64-simd-builtin-types.def
  9a92557ac11986ea17d11d6ca82c01e6  gcc/config/aarch64/aarch64-simd-builtins.def
  8f0acfd5455d9572e381b98441bf47a5  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 5af2e02c1bdc4b8473552574ebbaa6b2  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  680d9861c361f5e0db24978600b2a134  gcc/config/aarch64/aarch64-speculation.cc
! b7abc20f0caf90f086591527696134c1  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! cc3e36cd6335911c4199669958386c9e  gcc/config/aarch64/aarch64-sve-builtins-base.def
! 296e628c73cdebb4c5a0c2335cae4084  gcc/config/aarch64/aarch64-sve-builtins-base.h
! df14a744242cdd5396d7f9e578f7838e  gcc/config/aarch64/aarch64-sve-builtins-functions.h
  ca5f6a89d79c08d79fe5ff052e836a69  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  97c5fdc23b65bcb2ba85ccd1ce66af2e  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  37015c038f8cceef0df52b2e378636d3  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  85e1ee139787d52dcd3b9e3d8240453e  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! e3b84b8c70b76f20a6d8123da2876317  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 7742fc1106ddcf7261e10d6eeac7d1e9  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 2cdc75f9c6df91167d77d8f46b2b4c5a  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 49330d59221903e05f3ad03c9f6a6a7b  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! f254f4eb5433b6e41d08c6dd0805b7c0  gcc/config/aarch64/aarch64-sve.md
! 78d4791112b168ff5157e8e4c95a40a5  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  95775c91d04e9c5cacdd63e6802ca879  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! 4bd73afaa26bd27cbca408f435ea4e36  gcc/config/aarch64/aarch64.cc
! 1e57040281ba3f62b216c58733a820f5  gcc/config/aarch64/aarch64.h
! 5235dbc81e1259b72a76cae493eb917d  gcc/config/aarch64/aarch64.md
  ebc45c78d8d52bdcabec46514f44ad2d  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
  854a2fd8965d477c5b064388ed354bf1  gcc/config/aarch64/arm_acle.h
--- 3557,3603 ----
  b5673de84eb78885b56917c7b8b92e97  gcc/config/aarch64/aarch64-ldp-fusion.cc
  66724803f21104e637c395aa5cad8a59  gcc/config/aarch64/aarch64-ldpstp.md
  bfa2432e1ec80f8de2e43f3f3ba8da0e  gcc/config/aarch64/aarch64-linux.h
! cd1314414bc9a7568e68563e462823dd  gcc/config/aarch64/aarch64-modes.def
  ed695db844c2f7ccc7b0b2a95b037a7c  gcc/config/aarch64/aarch64-narrow-gp-writes.cc
  c058178535c874c3d9f517b5db804691  gcc/config/aarch64/aarch64-neon-sve-bridge-builtins.def
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
  4ac96a19bb5198741503893e13567775  gcc/config/aarch64/aarch64-option-extensions.def
  1fcf15030f24490613d6a45d6b439e61  gcc/config/aarch64/aarch64-opts.h
  c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/config/aarch64/aarch64-passes.def
! dbefcd853f59ffe7dcb5a7031363ef91  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  da15606bcbef7961db958c042bf81c05  gcc/config/aarch64/aarch64-simd-builtin-types.def
  9a92557ac11986ea17d11d6ca82c01e6  gcc/config/aarch64/aarch64-simd-builtins.def
  8f0acfd5455d9572e381b98441bf47a5  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! b2f8946e11e66b5d95fbef9990afe1cc  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  680d9861c361f5e0db24978600b2a134  gcc/config/aarch64/aarch64-speculation.cc
! ccd6947cd840e66d1fd0939f222554b6  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 4bffc3d08855be1cb241231f9009d2ea  gcc/config/aarch64/aarch64-sve-builtins-base.def
! a3c2d7ae7f5a958e8d85a84f0153cbc3  gcc/config/aarch64/aarch64-sve-builtins-base.h
! 63abfe83957e9ebaf33083e5091043bd  gcc/config/aarch64/aarch64-sve-builtins-functions.h
  ca5f6a89d79c08d79fe5ff052e836a69  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  97c5fdc23b65bcb2ba85ccd1ce66af2e  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  37015c038f8cceef0df52b2e378636d3  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  85e1ee139787d52dcd3b9e3d8240453e  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! 72d9017965624c13dca47365eeec3166  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! cb23144c5423a679d3134b1d188c0337  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! dee6542d81ff6dc82b52eb6d296ca061  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 70a4cacab19b7931b03ed373b4adec6d  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! fd1397ba9c117fb400f5fd7a07288cc4  gcc/config/aarch64/aarch64-sve.md
! 37dcd1912cbc0f8b2d8ce5b9806a9abc  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  95775c91d04e9c5cacdd63e6802ca879  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! 95813db09be6130b44e0a4a03d20a6aa  gcc/config/aarch64/aarch64.cc
! 67c8237f5bdd9e90979cdd919e2f8709  gcc/config/aarch64/aarch64.h
! 68d8c6d1e8486758f6d50d56b2893d2e  gcc/config/aarch64/aarch64.md
  ebc45c78d8d52bdcabec46514f44ad2d  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
  854a2fd8965d477c5b064388ed354bf1  gcc/config/aarch64/arm_acle.h
*************** cf1987e5ab132733d06bfee8c03fcb96  gcc/co
*** 3611,3617 ****
  b80cf07c2c72294b3852130ec8c93494  gcc/config/aarch64/biarchilp32.h
  532332ff4f3d492231a7c392cda8d879  gcc/config/aarch64/biarchlp64.h
  eb03dfcd266d8fc8f127a62e436447db  gcc/config/aarch64/check-sve-md.awk
! 6efe5d18705fa658ddb85f16b87d134d  gcc/config/aarch64/constraints.md
  3c41ca007a195244b101219701a3bcb0  gcc/config/aarch64/cortex-a57-fma-steering.cc
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  b6d18d11750027a9e7159f7100cbc2df  gcc/config/aarch64/driver-aarch64.cc
--- 3613,3619 ----
  b80cf07c2c72294b3852130ec8c93494  gcc/config/aarch64/biarchilp32.h
  532332ff4f3d492231a7c392cda8d879  gcc/config/aarch64/biarchlp64.h
  eb03dfcd266d8fc8f127a62e436447db  gcc/config/aarch64/check-sve-md.awk
! feddfae429637541a37679787093f6cc  gcc/config/aarch64/constraints.md
  3c41ca007a195244b101219701a3bcb0  gcc/config/aarch64/cortex-a57-fma-steering.cc
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  b6d18d11750027a9e7159f7100cbc2df  gcc/config/aarch64/driver-aarch64.cc
*************** f16190eb3167c87740aaff80ebc646b5  gcc/co
*** 3620,3629 ****
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 84a2bd11e63defac1cddbb6aa47cfff8  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
! 38f51f94de89d54e9076031bb9368473  gcc/config/aarch64/predicates.md
  d28594900d3dd9c03845b0a6c7b79bb2  gcc/config/aarch64/rtems.h
  995e17141128acc7d41cdf9081d39e84  gcc/config/aarch64/t-aarch64
  7e5e5f86679b2cd3564d95ac33603bc1  gcc/config/aarch64/t-aarch64-freebsd
--- 3622,3631 ----
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 738ad400441335eed10ba4d8312f635e  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
! 56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
  d28594900d3dd9c03845b0a6c7b79bb2  gcc/config/aarch64/rtems.h
  995e17141128acc7d41cdf9081d39e84  gcc/config/aarch64/t-aarch64
  7e5e5f86679b2cd3564d95ac33603bc1  gcc/config/aarch64/t-aarch64-freebsd
*************** b8dda5ab1f67b388debff95f4a66c82c  gcc/co
*** 3773,3779 ****
  555504756e42d516b613cd492f56e83e  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  b5f7e0b5b33aa917de47ab3bf691f123  gcc/config/arm/arm-tune.md
! cb58c0dd7b0de0f08685beb13a3bf2f0  gcc/config/arm/arm.cc
  fcb5b2782878cf25e12f0da91cb0075b  gcc/config/arm/arm.h
  718358831a77990f5ecbcd9bdbcee0f4  gcc/config/arm/arm.md
  68b71bf902cc6c9290e847ce76a9fdea  gcc/config/arm/arm.opt
--- 3775,3781 ----
  555504756e42d516b613cd492f56e83e  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  b5f7e0b5b33aa917de47ab3bf691f123  gcc/config/arm/arm-tune.md
! fb51b1568ace2d62cb468215ac8f67ef  gcc/config/arm/arm.cc
  fcb5b2782878cf25e12f0da91cb0075b  gcc/config/arm/arm.h
  718358831a77990f5ecbcd9bdbcee0f4  gcc/config/arm/arm.md
  68b71bf902cc6c9290e847ce76a9fdea  gcc/config/arm/arm.opt
*************** e219596493ffcd798a48b24b22b5e077  gcc/co
*** 3878,3884 ****
  067e03ec8336d08f1291586eb7825adb  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! 7b45e2b91b2febab53b9715951211985  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
--- 3880,3886 ----
  067e03ec8336d08f1291586eb7825adb  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! 309d15c699646343debdbf3a50a93a80  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
*************** b05978bd2969a943265d3549c23b8b59  gcc/co
*** 3887,3897 ****
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! a9586cfcef72e5e02e3b584251e6542d  gcc/config/avr/avr.cc
  a4c128a5989d02ad75000ddce5204e45  gcc/config/avr/avr.h
! 0d578fc0108ded3430e2bcfabad80de3  gcc/config/avr/avr.md
! 952a12d62229d3077f49f68614cf8be4  gcc/config/avr/avr.opt
! f10f1d2141cba9ac792b02771cf4e3ae  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
  d9c8993192f71fd754cf947dfccacee6  gcc/config/avr/builtins.def
  dcd40301975d7f922b3fc51ba7ab1096  gcc/config/avr/constraints.md
--- 3889,3899 ----
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! 62604d4e5d3c34d1ae02449614fb4d5b  gcc/config/avr/avr.cc
  a4c128a5989d02ad75000ddce5204e45  gcc/config/avr/avr.h
! 11df76f7a4e94c22111b2d3b2dad0c8d  gcc/config/avr/avr.md
! 2c8e496ccc33a4c3b5ea998449a69941  gcc/config/avr/avr.opt
! f6cef551d36f0002a5f31e6f394d87af  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
  d9c8993192f71fd754cf947dfccacee6  gcc/config/avr/builtins.def
  dcd40301975d7f922b3fc51ba7ab1096  gcc/config/avr/constraints.md
*************** c40c01da4802f0f9431628ebe3d73752  gcc/co
*** 4238,4245 ****
  5d36c928833df6662f7ca00cd7ce93ff  gcc/config/i386/bmmintrin.h
  26cd4d7bf7e6af86bf03c11fa4c6d439  gcc/config/i386/bsd.h
  ef2cea596cd06eef79d38421d62a9927  gcc/config/i386/btver2.md
! 8b8d99103aa86782f14724f156a9c5ac  gcc/config/i386/c86-4g-m7.md
! 2c0b5bb1f48bda46831abf3b40b230d2  gcc/config/i386/c86-4g.md
  910cac3feca708c7269e72c17735ac87  gcc/config/i386/cet.h
  3af5d025bacebb10ac3eecc45363f3f5  gcc/config/i386/cetintrin.h
  a3f24c3ce9741743a87eb285dbaae138  gcc/config/i386/cldemoteintrin.h
--- 4240,4247 ----
  5d36c928833df6662f7ca00cd7ce93ff  gcc/config/i386/bmmintrin.h
  26cd4d7bf7e6af86bf03c11fa4c6d439  gcc/config/i386/bsd.h
  ef2cea596cd06eef79d38421d62a9927  gcc/config/i386/btver2.md
! 117dc6bff88f6f5dc1ced4feaad9d388  gcc/config/i386/c86-4g-m7.md
! 6457f10932148e0811fcdea37a08360b  gcc/config/i386/c86-4g.md
  910cac3feca708c7269e72c17735ac87  gcc/config/i386/cet.h
  3af5d025bacebb10ac3eecc45363f3f5  gcc/config/i386/cetintrin.h
  a3f24c3ce9741743a87eb285dbaae138  gcc/config/i386/cldemoteintrin.h
*************** a0261d6cc006fb86b99f338bdc94ae04  gcc/co
*** 4304,4310 ****
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
  670d7afe378831e21f8838293a467d26  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
! 8ffc8b40d0d0ec3efbfafc3b6e069bab  gcc/config/i386/i386-features.cc
  473c35b162be3bcf222c90a16f72b948  gcc/config/i386/i386-features.h
  dca59d9c03f5b12366f9a926169f396d  gcc/config/i386/i386-isa.def
  848d1b1aa8faaad07d31b78764004e7f  gcc/config/i386/i386-jit.cc
--- 4306,4312 ----
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
  670d7afe378831e21f8838293a467d26  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
! 9f0259e871e024fa6f875aea084dc376  gcc/config/i386/i386-features.cc
  473c35b162be3bcf222c90a16f72b948  gcc/config/i386/i386-features.h
  dca59d9c03f5b12366f9a926169f396d  gcc/config/i386/i386-isa.def
  848d1b1aa8faaad07d31b78764004e7f  gcc/config/i386/i386-jit.cc
*************** c20b5abeadf9bf0c148bd3cee43dabbf  gcc/co
*** 4318,4326 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! accb7c9ce90c2c96438bce0121b855b8  gcc/config/i386/i386.cc
  d3b1172e95acad712d89f06edafac116  gcc/config/i386/i386.h
! 2f0adf41e512f9eb3dd2243ae28dca76  gcc/config/i386/i386.md
  7f5e2eb20e3b7ca8af1b3ee7416e8eaf  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  7570cb8763bf53e7144db7d6cd97f846  gcc/config/i386/i386elf.h
--- 4320,4328 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! d7c173d0bd4682249c94a51e43c627a5  gcc/config/i386/i386.cc
  d3b1172e95acad712d89f06edafac116  gcc/config/i386/i386.h
! ad6ac7a0c64e80c13c1c142d475c426a  gcc/config/i386/i386.md
  7f5e2eb20e3b7ca8af1b3ee7416e8eaf  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  7570cb8763bf53e7144db7d6cd97f846  gcc/config/i386/i386elf.h
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 4382,4388 ****
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  5b7a5d6bd6f2cbb1ca44a113b598ee56  gcc/config/i386/sol2.h
! bdfd9308cc8d3a24325e9ce1d9671cb7  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
--- 4384,4390 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  5b7a5d6bd6f2cbb1ca44a113b598ee56  gcc/config/i386/sol2.h
! 23287d0f6ecf99daf1da5a76d88c2373  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
*************** c22e895e5b7e6b98c7223b26982a5d20  gcc/co
*** 4435,4441 ****
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  4fddfbe9b1f3fe846e29534aa8c76823  gcc/config/i386/x86-tune-sched.cc
! 21ab93c7756c5a3673e40bead3646f1c  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
--- 4437,4443 ----
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  4fddfbe9b1f3fe846e29534aa8c76823  gcc/config/i386/x86-tune-sched.cc
! e2ea62d50d08417978960d3bb19f9b4e  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
*************** dadec2097ca9c4947a49a5766ac8ee89  gcc/co
*** 4555,4561 ****
  fc623524d75c7561f85f81615ecad0ac  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
  f4bb410c49842101038ee7fdf2cba0c8  gcc/config/loongarch/loongarch.cc
! 44710020cadd48029a693da29d33aaf0  gcc/config/loongarch/loongarch.h
  1dc53acac3e8175c35aefd3e06c58b8b  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
  387011bb9dde5e25493f3602b2fd17bb  gcc/config/loongarch/loongarch.opt.urls
--- 4557,4563 ----
  fc623524d75c7561f85f81615ecad0ac  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
  f4bb410c49842101038ee7fdf2cba0c8  gcc/config/loongarch/loongarch.cc
! cc15a2931d4a536112afb1887c977076  gcc/config/loongarch/loongarch.h
  1dc53acac3e8175c35aefd3e06c58b8b  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
  387011bb9dde5e25493f3602b2fd17bb  gcc/config/loongarch/loongarch.opt.urls
*************** ab248989539b9f02a45e3469f383916f  gcc/co
*** 4599,4605 ****
  9972407ba6ffc9db617e82974a48919a  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
  f0f3ecbe72c6d785bc099c6259ed9a18  gcc/config/m68k/m68k.cc
! c9e0ec9611ab8ade71ef477fbcecfd71  gcc/config/m68k/m68k.h
  edc70cbcb720ae52dc5bccfc9d859e6a  gcc/config/m68k/m68k.md
  adf00f43fe711efc8a91288493587387  gcc/config/m68k/m68k.opt
  4ac9d1a63efa1a545d2c87edae0b90cc  gcc/config/m68k/m68k.opt.urls
--- 4601,4607 ----
  9972407ba6ffc9db617e82974a48919a  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
  f0f3ecbe72c6d785bc099c6259ed9a18  gcc/config/m68k/m68k.cc
! 95d044e825b6ba7ecb45780c16f3b95e  gcc/config/m68k/m68k.h
  edc70cbcb720ae52dc5bccfc9d859e6a  gcc/config/m68k/m68k.md
  adf00f43fe711efc8a91288493587387  gcc/config/m68k/m68k.opt
  4ac9d1a63efa1a545d2c87edae0b90cc  gcc/config/m68k/m68k.opt.urls
*************** ed3f5ce2f7305137cb7981e5492f421d  gcc/co
*** 4949,4957 ****
  6b3e75529fdba1a40cb9febc136adf85  gcc/config/pa/pa-openbsd.h
  799a8f38f756018d977260ec4dd15af3  gcc/config/pa/pa-opts.h
  8476a9a8e5e9e1c37d95d447ec828c0d  gcc/config/pa/pa-protos.h
! d25f80bbb8de64bd134dc7f65040f919  gcc/config/pa/pa.cc
  48ed3369bdda761db5670fecc39f87bc  gcc/config/pa/pa.h
! 0280715850409a16b7fe3f8fc9b3bef2  gcc/config/pa/pa.md
  cb75df3acdd704487025273adaa58c9f  gcc/config/pa/pa.opt
  051ba40c6ad77aa43300a9282939c6ae  gcc/config/pa/pa.opt.urls
  4b94b51cd90f0fc78da329518825b169  gcc/config/pa/pa32-linux.h
--- 4951,4959 ----
  6b3e75529fdba1a40cb9febc136adf85  gcc/config/pa/pa-openbsd.h
  799a8f38f756018d977260ec4dd15af3  gcc/config/pa/pa-opts.h
  8476a9a8e5e9e1c37d95d447ec828c0d  gcc/config/pa/pa-protos.h
! f46d5bf296314c383b5c65e70f9377c7  gcc/config/pa/pa.cc
  48ed3369bdda761db5670fecc39f87bc  gcc/config/pa/pa.h
! 8e56a443cd5f22e6953f138a5f200b2c  gcc/config/pa/pa.md
  cb75df3acdd704487025273adaa58c9f  gcc/config/pa/pa.opt
  051ba40c6ad77aa43300a9282939c6ae  gcc/config/pa/pa.opt.urls
  4b94b51cd90f0fc78da329518825b169  gcc/config/pa/pa32-linux.h
*************** ca88603cd61372d621963af0d282a93b  gcc/co
*** 5058,5064 ****
  8463b74f5d66e1a7f0d58a7ae087d8ad  gcc/config/riscv/riscv-ext.opt.urls
  055aff307d7b174891aad40963ef1a9f  gcc/config/riscv/riscv-feature-bits.h
  70f0932c77decbbcedce26f2f38b3a3e  gcc/config/riscv/riscv-ftypes.def
! d0bbeee24eccae51546e551a0235140a  gcc/config/riscv/riscv-fusion.cc
  6fdf4beed9fb8574216b376cd1779eba  gcc/config/riscv/riscv-modes.def
  846d400b827fb358869c936715c16c82  gcc/config/riscv/riscv-opt-popretz.cc
  3afafb1ad4ed41430d9cfb9d276058b0  gcc/config/riscv/riscv-opts.h
--- 5060,5066 ----
  8463b74f5d66e1a7f0d58a7ae087d8ad  gcc/config/riscv/riscv-ext.opt.urls
  055aff307d7b174891aad40963ef1a9f  gcc/config/riscv/riscv-feature-bits.h
  70f0932c77decbbcedce26f2f38b3a3e  gcc/config/riscv/riscv-ftypes.def
! acf626d146abfc49d37ffae00bef7f86  gcc/config/riscv/riscv-fusion.cc
  6fdf4beed9fb8574216b376cd1779eba  gcc/config/riscv/riscv-modes.def
  846d400b827fb358869c936715c16c82  gcc/config/riscv/riscv-opt-popretz.cc
  3afafb1ad4ed41430d9cfb9d276058b0  gcc/config/riscv/riscv-opts.h
*************** a6642c27cbc8f18cf3cab4881911ed3f  gcc/co
*** 5084,5096 ****
  8fe75d6009ec6dac9babd319503bb3f6  gcc/config/riscv/riscv-vector-builtins.cc
  6f087b25674ebed60ebd0e55c4fe30e1  gcc/config/riscv/riscv-vector-builtins.def
  b65281b3d979c9c774d30d65281a07ab  gcc/config/riscv/riscv-vector-builtins.h
! 2bb470dc813885effb54174396002b2d  gcc/config/riscv/riscv-vector-costs.cc
  8c1680c1bc7e171e4992d3aa9ea64d18  gcc/config/riscv/riscv-vector-costs.h
  4dd506c7e0c9b67fb2b6c5acdf4f44b7  gcc/config/riscv/riscv-vector-switch.def
  75866c86ec05a7abe2fa3f55828938b0  gcc/config/riscv/riscv-vsetvl.cc
  10ae51c30c9b8e6dce66f20016fae344  gcc/config/riscv/riscv-vsetvl.def
  85dee253312a7f85a1d4f8554a601105  gcc/config/riscv/riscv-zicfilp.cc
! d2dfd8651a6f77a6eaa0a0e8696953c0  gcc/config/riscv/riscv.cc
  162190a7bb8bb544480bfc4ec576c934  gcc/config/riscv/riscv.h
  e20b61289502f7662456841b6929766b  gcc/config/riscv/riscv.md
  889bc6068f70f03b008968821d92ad40  gcc/config/riscv/riscv.opt
--- 5086,5098 ----
  8fe75d6009ec6dac9babd319503bb3f6  gcc/config/riscv/riscv-vector-builtins.cc
  6f087b25674ebed60ebd0e55c4fe30e1  gcc/config/riscv/riscv-vector-builtins.def
  b65281b3d979c9c774d30d65281a07ab  gcc/config/riscv/riscv-vector-builtins.h
! ed5bf89ef20c5bd47aa010274131f932  gcc/config/riscv/riscv-vector-costs.cc
  8c1680c1bc7e171e4992d3aa9ea64d18  gcc/config/riscv/riscv-vector-costs.h
  4dd506c7e0c9b67fb2b6c5acdf4f44b7  gcc/config/riscv/riscv-vector-switch.def
  75866c86ec05a7abe2fa3f55828938b0  gcc/config/riscv/riscv-vsetvl.cc
  10ae51c30c9b8e6dce66f20016fae344  gcc/config/riscv/riscv-vsetvl.def
  85dee253312a7f85a1d4f8554a601105  gcc/config/riscv/riscv-zicfilp.cc
! 7e427ec495bff8c673a1ea03397e9a61  gcc/config/riscv/riscv.cc
  162190a7bb8bb544480bfc4ec576c934  gcc/config/riscv/riscv.h
  e20b61289502f7662456841b6929766b  gcc/config/riscv/riscv.md
  889bc6068f70f03b008968821d92ad40  gcc/config/riscv/riscv.opt
*************** bc8a03f06cb925e5c1277e5ccd2f0314  gcc/co
*** 5110,5118 ****
  656879fa6da6ce5e2212ef2a731ee479  gcc/config/riscv/sifive-vector.md
  dbf013604da8f85f0c7c2d544750ef75  gcc/config/riscv/sifive_vector.h
  2e96ca539246ed14fc65d98d04f3765a  gcc/config/riscv/spacemit-x60.md
! 111ac91ac2c2470d509802a9db215a92  gcc/config/riscv/sync-rvwmo.md
! 72d32429c93bff2b2b8283cbca220b9a  gcc/config/riscv/sync-ztso.md
! a9148bc0751022fd1b34b55e04b8b47e  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
--- 5112,5120 ----
  656879fa6da6ce5e2212ef2a731ee479  gcc/config/riscv/sifive-vector.md
  dbf013604da8f85f0c7c2d544750ef75  gcc/config/riscv/sifive_vector.h
  2e96ca539246ed14fc65d98d04f3765a  gcc/config/riscv/spacemit-x60.md
! 04446d488a74103d7cec83deb91efa77  gcc/config/riscv/sync-rvwmo.md
! 07faacfd587344c258efbfaffd38f39d  gcc/config/riscv/sync-ztso.md
! 70f0d56dc35f6dd500d4da2b49c2e6ae  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
*************** f11b25bf61cd607f1829b2d5c5d306b9  gcc/co
*** 5624,5645 ****
  eabefa7848e30cb14ae3473ccb4f1c5e  gcc/config/xtensa/xtensa-protos.h
  ecf8e568f92a538f7bd4d2c46437186a  gcc/config/xtensa/xtensa.cc
  4e822e9f2db0883f124aaa488154ac01  gcc/config/xtensa/xtensa.h
! 52f26b165e1fe62791b88ba6e211d921  gcc/config/xtensa/xtensa.md
  411cab921f0a965cbb5411dc8b28fc82  gcc/config/xtensa/xtensa.opt
  107b37908c9eb8a26c5b7a6074ccb338  gcc/config/xtensa/xtensa.opt.urls
  612b6d4a423173c62f062b12e25e8d8d  gcc/configure
! c4eb64229a10814981976bab423552cf  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
! e015add06ba8159fde5c92647e6d9fb1  gcc/convert.cc
  4b687a22d792003ae6404ce923c8e376  gcc/convert.h
! 1610a30f4e4f6deb01cb08eadedb3005  gcc/coretypes.h
  c5ad0142a191862e3e81ecd3573754b3  gcc/coroutine-builtins.def
! 55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
! c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! a7d29c4e60d8c613a8a112cf23c71e85  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5626,5647 ----
  eabefa7848e30cb14ae3473ccb4f1c5e  gcc/config/xtensa/xtensa-protos.h
  ecf8e568f92a538f7bd4d2c46437186a  gcc/config/xtensa/xtensa.cc
  4e822e9f2db0883f124aaa488154ac01  gcc/config/xtensa/xtensa.h
! ab92d7ead48857ad8dfb2fbadb7845ab  gcc/config/xtensa/xtensa.md
  411cab921f0a965cbb5411dc8b28fc82  gcc/config/xtensa/xtensa.opt
  107b37908c9eb8a26c5b7a6074ccb338  gcc/config/xtensa/xtensa.opt.urls
  612b6d4a423173c62f062b12e25e8d8d  gcc/configure
! c4a98107fd333d675af1e53f7d3ca19f  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
! f10070ffed6ef90f3b58e4d55b58a6a8  gcc/convert.cc
  4b687a22d792003ae6404ce923c8e376  gcc/convert.h
! 98b529c2567eb4eccedda792ef33b9c0  gcc/coretypes.h
  c5ad0142a191862e3e81ecd3573754b3  gcc/coroutine-builtins.def
! a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
! 11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 3f04462c347a315254adfbb0e337b6f6  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f39635970f98bbc4591f6363fe70504b  gcc/cp
*** 5676,5691 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! b1ea0d0ed485b0b4279a7cacc155dd5e  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
! 0e4d1cefd3c955c0eb5653b4fd9d708e  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 653211caae6d6eadba46b3ed266e88e8  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
! ab81cc984e2b72c49098e64c4e798924  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
! 2c739bee3062dd41503bb96cf36f8028  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
  b272581f7dd151ffe535478341d8cd91  gcc/cp/cp-gimplify.cc
  5deb6a9935508ca534b8ee8e84b2a1cc  gcc/cp/cp-lang.cc
--- 5678,5693 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 43fb116b6976dba04df3110dbcdfeb4b  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
! f009d3e5d208da70d7da5a446d909053  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 935062a9a8a51aa7dc9bc88a77c10d04  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
! bb56c1a96926c611778b5a4e4b8f65a8  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
! c8e24ad8f1872233434c288fad5b696d  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
  b272581f7dd151ffe535478341d8cd91  gcc/cp/cp-gimplify.cc
  5deb6a9935508ca534b8ee8e84b2a1cc  gcc/cp/cp-lang.cc
*************** b272581f7dd151ffe535478341d8cd91  gcc/cp
*** 5693,5747 ****
  eba8d8a1725223519fba5d4d69afd5c9  gcc/cp/cp-objcp-common.cc
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
! bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
! fa2fb628e3a95909bd2ebcc177bd27f9  gcc/cp/cp-tree.h
  e2854dfa428fab45fc41bf58fef71e61  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 9d3aede451ced654aa6bf5edddd3a400  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! ba2d3d3cac80668633567991a4d6b77c  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  e5cd674ba89cede50da369b84db82527  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
  2e851309e83b69af8e26686d1973a6ac  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
! 014d3891b4172014c0ad5386223c4f4c  gcc/cp/g++spec.cc
  a29b3e9192657e81a1574fb99466348d  gcc/cp/gen-cxxapi-file.py
! b9032a113a137533247a90fda508e897  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
! 8fd86c1f4d4c6ad011c606d13b312656  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
! 825d20cde6e92a291621480c8008782d  gcc/cp/method.cc
! eb53b711377a0f71ba9361d9eda0ba85  gcc/cp/module.cc
! 494ca3762571a1d445b5a971b5030667  gcc/cp/name-lookup.cc
! b166c2ce3d5ccd4de4e0c5910947ae41  gcc/cp/name-lookup.h
! b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! e2aa80d45acfe84107bca9828fcf2ab6  gcc/cp/parser.cc
! 7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
! e235a1cb2a66154f12d34e02469056c7  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! 72fcee9ba0fb3b355f46ca101677c03f  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  0cfaf9712b89bed5d7abc7832ea0bf8b  gcc/cp/search.cc
! 145d5fe985d755faeb6dd39d4985b33f  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! ea0423d5516e1f1e195b6f19be779643  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 80d4fbc23f7220108e890ea919dc4ae6  gcc/cp/typeck.cc
  40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
! 12d19e5abc1e436004b8885cde4765f0  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
  6c95a245e50b5b6a4677eec6965b1a35  gcc/cppdefault.cc
--- 5695,5749 ----
  eba8d8a1725223519fba5d4d69afd5c9  gcc/cp/cp-objcp-common.cc
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
! 461c8f732438052ea1ab7eabb72f0604  gcc/cp/cp-tree.def
! 36ab6409abea8a4574b333f56c77a877  gcc/cp/cp-tree.h
  e2854dfa428fab45fc41bf58fef71e61  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 5bd42e8e621d8c39d5b34ddd7c0b2248  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! 42202b0b377b7e5c09546d00532d188a  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  e5cd674ba89cede50da369b84db82527  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
  2e851309e83b69af8e26686d1973a6ac  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
! 312df0090f34c36193263da66b5ecbd7  gcc/cp/g++spec.cc
  a29b3e9192657e81a1574fb99466348d  gcc/cp/gen-cxxapi-file.py
! adb9edb5901b62ca9e9a9aed985ec43b  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
! f8cbed1d91cd99c747c785a97fd9a6d0  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
! 3203a4766ff45d343ad6c570c6f85ddf  gcc/cp/method.cc
! 3a35ab76c27b21fdb85b992f7603957f  gcc/cp/module.cc
! 089ac53971ef590ff636a3351ed1b8dd  gcc/cp/name-lookup.cc
! 94a0863bb5120d567c717d513ff59a1d  gcc/cp/name-lookup.h
! 54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! 1f8f55dfced11fae19b5f71dff4144e1  gcc/cp/parser.cc
! fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 2536a47267320bb01fc4b0dae346eeba  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! 5548412e36fc6aee8c930d90138c486c  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  0cfaf9712b89bed5d7abc7832ea0bf8b  gcc/cp/search.cc
! 1f91957895f5b479d3efddaa0e62d00c  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! 5e020f7d249d2b20fafbb7169c4b304d  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 3cd8f7a5c0f8759cb4c3dfa710a1be22  gcc/cp/typeck.cc
  40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
! 5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
  6c95a245e50b5b6a4677eec6965b1a35  gcc/cppdefault.cc
*************** ea0423d5516e1f1e195b6f19be779643  gcc/cp
*** 5749,5768 ****
  39b4704938fb780fdd57ddb7cbb0fdba  gcc/cprop.cc
  bb146ea57855f57a97f23f7c748b05ed  gcc/crc-verification.cc
  b7bf54d1a28938f620902d5d360e7000  gcc/crc-verification.h
! 49974d59646cd203c929fb8809ee8812  gcc/cse.cc
! 0ff312105ad547eae1f9fee00b33c178  gcc/cselib.cc
  a992c36510202d05f89b17b2c68d4694  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 4d5ff4ad7f83cad2fff66caccde0780f  gcc/ctfc.cc
! 21aa4df3b0a04c61dfb56d24a5e49e90  gcc/ctfc.h
! 3b49d27a12c232bc7df2bf77e4eea817  gcc/ctfout.cc
  fe61b2918e14694ac3e0e909cacea80f  gcc/custom-sarif-properties/cfg.cc
  086d0fbe195bd56869d4968a6268a26a  gcc/custom-sarif-properties/cfg.h
  005e6ab6bce5f2334f5d518c53f8f56e  gcc/custom-sarif-properties/digraphs.cc
  86700ca4710faebe1a0dbd2da6bcc75d  gcc/custom-sarif-properties/digraphs.h
  cdc60d179f923c009f0432beb1054e5b  gcc/custom-sarif-properties/state-graphs.cc
  58306e5ac720b353f4c495abf155e8a1  gcc/custom-sarif-properties/state-graphs.h
! dc7957587cfd1b6c8539dfc9df1f9c67  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
--- 5751,5770 ----
  39b4704938fb780fdd57ddb7cbb0fdba  gcc/cprop.cc
  bb146ea57855f57a97f23f7c748b05ed  gcc/crc-verification.cc
  b7bf54d1a28938f620902d5d360e7000  gcc/crc-verification.h
! 103047164a990d0d268652883bb9732c  gcc/cse.cc
! e22531d9f1edf671feb39e14295a0074  gcc/cselib.cc
  a992c36510202d05f89b17b2c68d4694  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! 01d72dc5de712693e920328b1ea99442  gcc/ctfc.cc
! afe595c909beb3531580dbaf2e8de53b  gcc/ctfc.h
! 32454bb9d77cb9629122aa4869a08515  gcc/ctfout.cc
  fe61b2918e14694ac3e0e909cacea80f  gcc/custom-sarif-properties/cfg.cc
  086d0fbe195bd56869d4968a6268a26a  gcc/custom-sarif-properties/cfg.h
  005e6ab6bce5f2334f5d518c53f8f56e  gcc/custom-sarif-properties/digraphs.cc
  86700ca4710faebe1a0dbd2da6bcc75d  gcc/custom-sarif-properties/digraphs.h
  cdc60d179f923c009f0432beb1054e5b  gcc/custom-sarif-properties/state-graphs.cc
  58306e5ac720b353f4c495abf155e8a1  gcc/custom-sarif-properties/state-graphs.h
! cf9c356fc6ceac3a3485e91470223ab5  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
*************** e432bfc5c605ae0b1beedf0492ad40d1  gcc/d/
*** 5786,5814 ****
  d916ef405eeaa878b1c2ef9dcf535196  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
  5170dc7fc8ad21399dd35a73673a1b1b  gcc/d/config-lang.in
! ced9be7856f049f3b83bdbd9f6038f42  gcc/d/d-attribs.cc
  b28e281d951471e031670e95fba8014d  gcc/d/d-builtins.cc
! 4df48f1f7da1ca00a3d7d39846e90221  gcc/d/d-codegen.cc
  f0a6fa18f331a5771005c3b319e1d6d9  gcc/d/d-compiler.cc
  97457532f0c348f5b93add8aeb0134e1  gcc/d/d-convert.cc
  62c9322bb6952c891db5089737edce22  gcc/d/d-ctfloat.cc
  7ab9f4bf667a01373d226c80ec78d41e  gcc/d/d-diagnostic.cc
  c5ee2a286608e2d9385816b39f8ae5c5  gcc/d/d-frontend.cc
  bc2edbcb94ab8817426f7e3b458ba478  gcc/d/d-frontend.h
! 703fd954a886eae772ae6a46261eb6b5  gcc/d/d-gimplify.cc
  e57c763d71327c092796686484464f5f  gcc/d/d-incpath.cc
! 4ad8e9944001769ebe1cdfec7e8c0953  gcc/d/d-lang.cc
  d3387225b6b0b4988843166a343aed79  gcc/d/d-longdouble.cc
  1b4f279195786abd8aaf36b97cbe9b5c  gcc/d/d-port.cc
! 1752e16f6e30b87af0e3297a159bed15  gcc/d/d-spec.cc
  ff0e8b453455e8497536165eae7c1f31  gcc/d/d-system.h
  5e46b2a1e062794f11ffd6b0844c5883  gcc/d/d-target-def.h
! 89b65ac69d38cf23bea52ff97cfa31cf  gcc/d/d-target.cc
  1fa6cd16c5a2906d3f842bbcc5297074  gcc/d/d-target.def
  0cbefb1fe5798619dd31fbc791502b11  gcc/d/d-target.h
  96ebb03b303e0c71e962dea84e5154e5  gcc/d/d-tree.def
  cd9e6df3af560a6961ad808c97e5de7a  gcc/d/d-tree.h
! e15dc7e6bb692e768b46ebcc8ec185d4  gcc/d/decl.cc
  7bde9fcb9047a7c21d8e1aa73efae997  gcc/d/dmd/MERGE
  19fa8b50b219a53d3fa7d1c6680ed3e2  gcc/d/dmd/README.md
  d08a6d91478fcd3badef10158d94e3f0  gcc/d/dmd/VERSION
--- 5788,5816 ----
  d916ef405eeaa878b1c2ef9dcf535196  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
  5170dc7fc8ad21399dd35a73673a1b1b  gcc/d/config-lang.in
! dbe2168e5a290095d370c57e51795ac4  gcc/d/d-attribs.cc
  b28e281d951471e031670e95fba8014d  gcc/d/d-builtins.cc
! 20eaa65d0110fa83fb5e34d29f5eaf60  gcc/d/d-codegen.cc
  f0a6fa18f331a5771005c3b319e1d6d9  gcc/d/d-compiler.cc
  97457532f0c348f5b93add8aeb0134e1  gcc/d/d-convert.cc
  62c9322bb6952c891db5089737edce22  gcc/d/d-ctfloat.cc
  7ab9f4bf667a01373d226c80ec78d41e  gcc/d/d-diagnostic.cc
  c5ee2a286608e2d9385816b39f8ae5c5  gcc/d/d-frontend.cc
  bc2edbcb94ab8817426f7e3b458ba478  gcc/d/d-frontend.h
! e8982249dca2980dbbda1f83609ac5a4  gcc/d/d-gimplify.cc
  e57c763d71327c092796686484464f5f  gcc/d/d-incpath.cc
! 72d369f280b3543b872dbec5be9ba58d  gcc/d/d-lang.cc
  d3387225b6b0b4988843166a343aed79  gcc/d/d-longdouble.cc
  1b4f279195786abd8aaf36b97cbe9b5c  gcc/d/d-port.cc
! 704d281319b00a7339741ba8d027c873  gcc/d/d-spec.cc
  ff0e8b453455e8497536165eae7c1f31  gcc/d/d-system.h
  5e46b2a1e062794f11ffd6b0844c5883  gcc/d/d-target-def.h
! 3cc037891eb8ab057c5f3e531c4b2f00  gcc/d/d-target.cc
  1fa6cd16c5a2906d3f842bbcc5297074  gcc/d/d-target.def
  0cbefb1fe5798619dd31fbc791502b11  gcc/d/d-target.h
  96ebb03b303e0c71e962dea84e5154e5  gcc/d/d-tree.def
  cd9e6df3af560a6961ad808c97e5de7a  gcc/d/d-tree.h
! f73b8fb486e19da3b0e02345bb0455ad  gcc/d/decl.cc
  7bde9fcb9047a7c21d8e1aa73efae997  gcc/d/dmd/MERGE
  19fa8b50b219a53d3fa7d1c6680ed3e2  gcc/d/dmd/README.md
  d08a6d91478fcd3badef10158d94e3f0  gcc/d/dmd/VERSION
*************** ce69c50b449a66ecf52a9dc705333fa4  gcc/d/
*** 5995,6016 ****
  82f5db54c1a9b627caf93de77ba51950  gcc/d/dmd/visitor/postorder.d
  c5e5b33d24d8d54d0db24ec6d8808573  gcc/d/dmd/visitor/statement_rewrite_walker.d
  1cbd9c1c0ec261f10e9d9443fc16f987  gcc/d/dmd/visitor/transitive.d
! c8a7687c741688b819adc127ac3bab0d  gcc/d/expr.cc
  ae98ef7253f51b9c2283da08c3df60b1  gcc/d/gdc.texi
! fe75e0460d453b2242165e5b49a6f5dc  gcc/d/implement-d.texi
  a1264deb8aa43914b45e5a16767cc28b  gcc/d/imports.cc
! f3f7af7813097c4eb0e00abeaa1c93d9  gcc/d/intrinsics.cc
  ce172275028d88abdad7fb3302e7017f  gcc/d/intrinsics.def
  b57c47a44a7c09a7b62838a41eb3723f  gcc/d/lang-specs.h
  d926df42786a0b32bc4c04fab4d1cdff  gcc/d/lang.opt
  6113ac46c69393b82b5e7be0c040849e  gcc/d/lang.opt.urls
  a84c5c8dc5dd34c74b6c874a99718559  gcc/d/longdouble.h
! 315914960c100ee43441bdcb728d419c  gcc/d/modules.cc
  2fc8432bfa0576b0d005fd3d883ea861  gcc/d/runtime.cc
  c91433fbbe79c3e110e263ab981dea5e  gcc/d/runtime.def
! 8e6ac7d895e5279ce9a5b93f58cd56b7  gcc/d/toir.cc
! 3ae8a62d0c135b91cfa17f45a22ad721  gcc/d/typeinfo.cc
! a0901b0b96f3f275898ecc131f2585f5  gcc/d/types.cc
  8c9528155856e02ffa93e235b120691b  gcc/data-streamer-in.cc
  d1658e0b3a01487789371ee847def1b2  gcc/data-streamer-out.cc
  63245724941a35dfab045b09f88d3ab4  gcc/data-streamer.cc
--- 5997,6018 ----
  82f5db54c1a9b627caf93de77ba51950  gcc/d/dmd/visitor/postorder.d
  c5e5b33d24d8d54d0db24ec6d8808573  gcc/d/dmd/visitor/statement_rewrite_walker.d
  1cbd9c1c0ec261f10e9d9443fc16f987  gcc/d/dmd/visitor/transitive.d
! d7677a988a43f05ccb2e9f13c65c7eb3  gcc/d/expr.cc
  ae98ef7253f51b9c2283da08c3df60b1  gcc/d/gdc.texi
! 50d3658961f37b4088fd52dc9c48dd4e  gcc/d/implement-d.texi
  a1264deb8aa43914b45e5a16767cc28b  gcc/d/imports.cc
! 13f2f8062f92da05cc583ba4c866d77c  gcc/d/intrinsics.cc
  ce172275028d88abdad7fb3302e7017f  gcc/d/intrinsics.def
  b57c47a44a7c09a7b62838a41eb3723f  gcc/d/lang-specs.h
  d926df42786a0b32bc4c04fab4d1cdff  gcc/d/lang.opt
  6113ac46c69393b82b5e7be0c040849e  gcc/d/lang.opt.urls
  a84c5c8dc5dd34c74b6c874a99718559  gcc/d/longdouble.h
! 26ec69d0913c8f644c51d1b203069eb4  gcc/d/modules.cc
  2fc8432bfa0576b0d005fd3d883ea861  gcc/d/runtime.cc
  c91433fbbe79c3e110e263ab981dea5e  gcc/d/runtime.def
! 5c5ac7814bebdfb0f1affbcdeb6827cb  gcc/d/toir.cc
! 8922501437a5fd08b26d96500086554c  gcc/d/typeinfo.cc
! e2b0d0880ec4425ec36360188d4fde0d  gcc/d/types.cc
  8c9528155856e02ffa93e235b120691b  gcc/data-streamer-in.cc
  d1658e0b3a01487789371ee847def1b2  gcc/data-streamer-out.cc
  63245724941a35dfab045b09f88d3ab4  gcc/data-streamer.cc
*************** c7362bfcde6697a2d4479f37eb016010  gcc/db
*** 6023,6038 ****
  69f80a3dd4fda02b419159ce0fbac5ca  gcc/ddg.cc
  f03ba47b25bafaac3f55372667e49d7c  gcc/ddg.h
  fc9508a813d61f77432f8e52b0a237ee  gcc/debug.cc
! cd6813f98d48b81321bcd8927ab8331a  gcc/debug.h
! f2f75ccf17260675395d4d9f0e1dc7a4  gcc/defaults.h
  e9fa9536951db6e9abcb8db4a451ec79  gcc/dep-fusion.cc
  aa5b6daea5bb76571584ecd5c953cb2b  gcc/df-core.cc
! dc4e9b2936fd89e9bbb64758de3ebb16  gcc/df-problems.cc
  7fa2e07f16a62de7dfe2547901152c31  gcc/df-scan.cc
  d9510eb01114d0e5eaad750d0afcd809  gcc/df.h
  e6cb006d625b4b045f658e77c108b89c  gcc/dfp.cc
  789479181cd0e36738e9830326551864  gcc/dfp.h
! 6ca1f8e2815f9277f8bd85efa100f429  gcc/diagnostic-context-rich-location.cc
  8668dea68c9f152dcccbdce08b847ab3  gcc/diagnostic-context-rich-location.h
  e836f9039ac0ee97e44f1203d7143062  gcc/diagnostic-core.h
  f44c95c2d9127c41d15df4ad1a1a1333  gcc/diagnostic-global-context.cc
--- 6025,6040 ----
  69f80a3dd4fda02b419159ce0fbac5ca  gcc/ddg.cc
  f03ba47b25bafaac3f55372667e49d7c  gcc/ddg.h
  fc9508a813d61f77432f8e52b0a237ee  gcc/debug.cc
! 89780f934584ce7fe2539cb7ac5c8eb8  gcc/debug.h
! 4bf42ab11dcf4d91a4877c0518541a87  gcc/defaults.h
  e9fa9536951db6e9abcb8db4a451ec79  gcc/dep-fusion.cc
  aa5b6daea5bb76571584ecd5c953cb2b  gcc/df-core.cc
! deda7f03e66eeca915d92a67670adf3c  gcc/df-problems.cc
  7fa2e07f16a62de7dfe2547901152c31  gcc/df-scan.cc
  d9510eb01114d0e5eaad750d0afcd809  gcc/df.h
  e6cb006d625b4b045f658e77c108b89c  gcc/dfp.cc
  789479181cd0e36738e9830326551864  gcc/dfp.h
! 5e5a78a5f5718c4efcda136801059b7b  gcc/diagnostic-context-rich-location.cc
  8668dea68c9f152dcccbdce08b847ab3  gcc/diagnostic-context-rich-location.h
  e836f9039ac0ee97e44f1203d7143062  gcc/diagnostic-core.h
  f44c95c2d9127c41d15df4ad1a1a1333  gcc/diagnostic-global-context.cc
*************** f44c95c2d9127c41d15df4ad1a1a1333  gcc/di
*** 6043,6054 ****
  d8c122792f8326d493206a8e18634615  gcc/diagnostics/changes.cc
  d3c72f964ccf85ec14ad558d6df91301  gcc/diagnostics/changes.h
  cac0841df72c21240aedd7e03d231c8d  gcc/diagnostics/client-data-hooks.h
! 3e993ff6b378ac731ce2c45c43247565  gcc/diagnostics/color.cc
  8c7055aac1299f5f574425eee2db8b47  gcc/diagnostics/color.h
  5ac83d2dfc5d36068774e6b0db97fe99  gcc/diagnostics/column-options.h
  c24d31606e2ffad5682f296df5984f2e  gcc/diagnostics/context-options.h
  68b8c316b2fdab6de05ec0729a3bab90  gcc/diagnostics/context.cc
! 694e66b1cca5e53590ad4c9cdb25fcf1  gcc/diagnostics/context.h
  e1fa17399b3b1f7a6bc15780030e2511  gcc/diagnostics/counters.h
  376ff2cb14bc9c31771a3a37ddceb73f  gcc/diagnostics/diagnostic-info.h
  b524b3d170881dadbdce5566d74dedd9  gcc/diagnostics/diagnostics-selftests.cc
--- 6045,6056 ----
  d8c122792f8326d493206a8e18634615  gcc/diagnostics/changes.cc
  d3c72f964ccf85ec14ad558d6df91301  gcc/diagnostics/changes.h
  cac0841df72c21240aedd7e03d231c8d  gcc/diagnostics/client-data-hooks.h
! 85120fac53a24e4a40097f83a3372387  gcc/diagnostics/color.cc
  8c7055aac1299f5f574425eee2db8b47  gcc/diagnostics/color.h
  5ac83d2dfc5d36068774e6b0db97fe99  gcc/diagnostics/column-options.h
  c24d31606e2ffad5682f296df5984f2e  gcc/diagnostics/context-options.h
  68b8c316b2fdab6de05ec0729a3bab90  gcc/diagnostics/context.cc
! 704489d468b953092a4ca3357c9a8cb4  gcc/diagnostics/context.h
  e1fa17399b3b1f7a6bc15780030e2511  gcc/diagnostics/counters.h
  376ff2cb14bc9c31771a3a37ddceb73f  gcc/diagnostics/diagnostic-info.h
  b524b3d170881dadbdce5566d74dedd9  gcc/diagnostics/diagnostics-selftests.cc
*************** b8034736dae3f6d654eba555f64e1c26  gcc/di
*** 6088,6094 ****
  91f77747402437b068da1e7be934adec  gcc/diagnostics/paths.h
  500f7227a2ab82c4e3a69f6ef7247649  gcc/diagnostics/physical-location-maker.cc
  f2fb8f9bb1108dcb8ed2f14d21ea9baa  gcc/diagnostics/physical-location-maker.h
! 84c18b5584c3cd43a27ff4975930cec6  gcc/diagnostics/sarif-sink.cc
  2c419fdad8de985a25f5fe60bd707c38  gcc/diagnostics/sarif-sink.h
  04b71f2b22c1f09aaa33b8832fc5272a  gcc/diagnostics/selftest-context.cc
  3dca4c2a57fd5d49cbeeff9b7242c57a  gcc/diagnostics/selftest-context.h
--- 6090,6096 ----
  91f77747402437b068da1e7be934adec  gcc/diagnostics/paths.h
  500f7227a2ab82c4e3a69f6ef7247649  gcc/diagnostics/physical-location-maker.cc
  f2fb8f9bb1108dcb8ed2f14d21ea9baa  gcc/diagnostics/physical-location-maker.h
! a5d5fbd4a02dd569f13328316cc9af27  gcc/diagnostics/sarif-sink.cc
  2c419fdad8de985a25f5fe60bd707c38  gcc/diagnostics/sarif-sink.h
  04b71f2b22c1f09aaa33b8832fc5272a  gcc/diagnostics/selftest-context.cc
  3dca4c2a57fd5d49cbeeff9b7242c57a  gcc/diagnostics/selftest-context.h
*************** c1ba108db39c2659b939d1a8a6cba51d  gcc/di
*** 6108,6114 ****
  80cd25171e4056b26c59c89d93ca6249  gcc/diagnostics/url.h
  0956a36149562ea551a09ab40c4ebe4b  gcc/digraph.cc
  d6ecd8aebafe1dbfb0bbadb8dd0883f9  gcc/digraph.h
! dd4c6bc90aeb0a46549b30e86a6ce098  gcc/doc/analyzer.texi
  cc657ccd366b9f0e48a9558ccdd011f7  gcc/doc/avr-mmcu.texi
  2581a0356eecad7492c6033a42d08375  gcc/doc/bugreport.texi
  07178e2656fefca3307281845df4b4dd  gcc/doc/cfg.texi
--- 6110,6116 ----
  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
*************** c467778ac808c70043fed1b27803d72a  gcc/do
*** 6118,6142 ****
  fe1e57cdb00aa5c5d132ea01fc2e1440  gcc/doc/configterms.texi
  0e05717a84a4459f53d155243f6ca0b5  gcc/doc/contrib.texi
  43c75b80852d2080f354a4ea82a17119  gcc/doc/contribute.texi
! 68c69bad85c1838df5c6d83463b871a7  gcc/doc/cpp.texi
  a0c8079a0b836c78e78f046d38b8eeff  gcc/doc/cppdiropts.texi
  ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/doc/cppenv.texi
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! ac539ce01ddbd1c39073f4a43e42859c  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
  cf131214fef768edb46718198e8fb4fd  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
! 8910763f8e2d80436cd2a70891012ad7  gcc/doc/gcov.texi
  22b26b2a0bc6f245726f2ab4df48b680  gcc/doc/generic.texi
  607c918bec01f4cbb7e80544f24c8474  gcc/doc/gimple.texi
! b1bc25d6bc259671ab1344cfcf1d3e3f  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! 5f2ceccace2ed8e79100ae9c90d97753  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
  bde53a0a190c3a74b047eb2b53c080eb  gcc/doc/ifn.texi
--- 6120,6144 ----
  fe1e57cdb00aa5c5d132ea01fc2e1440  gcc/doc/configterms.texi
  0e05717a84a4459f53d155243f6ca0b5  gcc/doc/contrib.texi
  43c75b80852d2080f354a4ea82a17119  gcc/doc/contribute.texi
! fd48e55b6767d5b63d0f4ed3c04de3f6  gcc/doc/cpp.texi
  a0c8079a0b836c78e78f046d38b8eeff  gcc/doc/cppdiropts.texi
  ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/doc/cppenv.texi
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 4fcc67479da3585549374180eed14d04  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
  cf131214fef768edb46718198e8fb4fd  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
! d41902abb1ae8d7531adcbe5c5c94619  gcc/doc/gcov.texi
  22b26b2a0bc6f245726f2ab4df48b680  gcc/doc/generic.texi
  607c918bec01f4cbb7e80544f24c8474  gcc/doc/gimple.texi
! 9752be979a9c9338b6cc0255d25f2d7a  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! ae0bcb2e6be7ae6b715e2c00eaf668e0  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
  bde53a0a190c3a74b047eb2b53c080eb  gcc/doc/ifn.texi
*************** bde53a0a190c3a74b047eb2b53c080eb  gcc/do
*** 6147,6162 ****
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 270ba5ad2dc45adcd14baf5eee8e36e1  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! da8d322cc4d84b4c2d81e6364bd93604  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  c324f8a8dbaa7710d62a9abcda567b43  gcc/doc/libgdiagnostics/conf.py
  92a51ee603389de437fbe3cdf0d4a5c7  gcc/doc/libgdiagnostics/index.rst
  642a964912e66e816e321e71891b81ec  gcc/doc/libgdiagnostics/make.bat
! 556df928603cb772dc7a48485943f94f  gcc/doc/libgdiagnostics/topics/compatibility.rst
  010d0109304eff42e162eadbedbd7d49  gcc/doc/libgdiagnostics/topics/diagnostic-manager.rst
  42e30395a40053f893e42e4b941d966a  gcc/doc/libgdiagnostics/topics/diagnostics.rst
  e42221a4393bdc64b8533c6a9632b6d1  gcc/doc/libgdiagnostics/topics/execution-paths.rst
--- 6149,6164 ----
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 3cab42889ae55ad7de1b2e81085b3a02  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! eab10204e603da3b0039d10f844d1488  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  c324f8a8dbaa7710d62a9abcda567b43  gcc/doc/libgdiagnostics/conf.py
  92a51ee603389de437fbe3cdf0d4a5c7  gcc/doc/libgdiagnostics/index.rst
  642a964912e66e816e321e71891b81ec  gcc/doc/libgdiagnostics/make.bat
! 191f8739ae1b151b0beb4ee3b830d0d9  gcc/doc/libgdiagnostics/topics/compatibility.rst
  010d0109304eff42e162eadbedbd7d49  gcc/doc/libgdiagnostics/topics/diagnostic-manager.rst
  42e30395a40053f893e42e4b941d966a  gcc/doc/libgdiagnostics/topics/diagnostics.rst
  e42221a4393bdc64b8533c6a9632b6d1  gcc/doc/libgdiagnostics/topics/execution-paths.rst
*************** f326ba543910f70f1fd79b493116ca9b  gcc/do
*** 6167,6173 ****
  cdb922a737ae7635ff73dbad2df47ea2  gcc/doc/libgdiagnostics/topics/message-buffers.rst
  73559567963b4db8b8af63707401c518  gcc/doc/libgdiagnostics/topics/message-formatting.rst
  97de4c2853265975047b437086c37086  gcc/doc/libgdiagnostics/topics/metadata.rst
! d15fd2849f7ef92bcbd429aa5e96562d  gcc/doc/libgdiagnostics/topics/physical-locations.rst
  53fa515ded6fe7d706c7a2330e738b25  gcc/doc/libgdiagnostics/topics/retrofitting.rst
  2b8c85443993a4fcaa359b9baa7a44ea  gcc/doc/libgdiagnostics/topics/sarif.rst
  776f9de516b65ad90fee057f83177caf  gcc/doc/libgdiagnostics/topics/text-output.rst
--- 6169,6175 ----
  cdb922a737ae7635ff73dbad2df47ea2  gcc/doc/libgdiagnostics/topics/message-buffers.rst
  73559567963b4db8b8af63707401c518  gcc/doc/libgdiagnostics/topics/message-formatting.rst
  97de4c2853265975047b437086c37086  gcc/doc/libgdiagnostics/topics/metadata.rst
! 7e3d05b18a80cc7d0ba82b37831f08bb  gcc/doc/libgdiagnostics/topics/physical-locations.rst
  53fa515ded6fe7d706c7a2330e738b25  gcc/doc/libgdiagnostics/topics/retrofitting.rst
  2b8c85443993a4fcaa359b9baa7a44ea  gcc/doc/libgdiagnostics/topics/sarif.rst
  776f9de516b65ad90fee057f83177caf  gcc/doc/libgdiagnostics/topics/text-output.rst
*************** b2a74fae979c37e7f033218ff888800a  gcc/do
*** 6178,6212 ****
  1e438739b608513f87954d2ad24c8dc1  gcc/doc/libgdiagnostics/tutorial/04-notes.rst
  47de0e5ea5fbc804f1ea3ce18bc96843  gcc/doc/libgdiagnostics/tutorial/05-warnings.rst
  44456092892ae70d871ef74f11b607b9  gcc/doc/libgdiagnostics/tutorial/06-fix-it-hints.rst
! 13c314a46ab1ad91bea6da262d123d03  gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst
! f5fc59139e2515e4b963a38ad77e3b84  gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst
  e0cdf1b3b23ffeebe52940c4ad627db6  gcc/doc/libgdiagnostics/tutorial/example-1.png
  9ee967e13bc2bed3d3732b8ced2ce585  gcc/doc/libgdiagnostics/tutorial/index.rst
  f72fd7c6a31377f3060455a2da1a6506  gcc/doc/loop.texi
  c2fc9f8e6a1cb39a7237e4ac3d7fcd7f  gcc/doc/lto-dump.texi
  b1b6d8120056485e6de69be9493a2129  gcc/doc/lto.texi
  a0300f293e1294f68bbf43478b2f7e96  gcc/doc/makefile.texi
! f7e932ab983b28cd4bef523021fa9eb0  gcc/doc/match-and-simplify.texi
! 0bc5fef84d474ecc0069b5d2e841a1e1  gcc/doc/md.texi
  afaf0b9b413500a77920c3963dcd3978  gcc/doc/objc.texi
! 79e8babebb4a40553fc011874ac21cbb  gcc/doc/optinfo.texi
  3abb75ff788f5434702f351bf7a279c9  gcc/doc/options.texi
! 7d9ddf963eb00b03f21fb0ed3956dd00  gcc/doc/params.texi
  4f849b8e491aa0fa8b80c3cefe9dc5ec  gcc/doc/passes.texi
  e54937e427a2584ac4045286c725fab1  gcc/doc/plugins.texi
! 88abde052db83cafaf5aaa6be0471613  gcc/doc/poly-int.texi
  213ccf5a355e5d07fc0dcef29825d6dd  gcc/doc/portability.texi
! b309bd48592e052da0d197f2de333d20  gcc/doc/riscv-ext.texi
  b956a94b6aa45d1ba82e9e5e22386cc2  gcc/doc/riscv-mcpu.texi
  0a0e5a4479873eec073ad440f5a5ec5b  gcc/doc/riscv-mtune.texi
! 3057c119b16a51b960d234c71641cd8c  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! f7ed55f72c884c3d87eeef4192401eaf  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! df84a270262b90da99a37aaae35fa93c  gcc/doc/tm.texi
! 9256770f69b0875fed973b94ec0a8d53  gcc/doc/tm.texi.in
! 61e80fc645225b20d6a7d34c7e7a404b  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
  bb1210d252c998d89648c327c54d8c48  gcc/dojump.cc
--- 6180,6214 ----
  1e438739b608513f87954d2ad24c8dc1  gcc/doc/libgdiagnostics/tutorial/04-notes.rst
  47de0e5ea5fbc804f1ea3ce18bc96843  gcc/doc/libgdiagnostics/tutorial/05-warnings.rst
  44456092892ae70d871ef74f11b607b9  gcc/doc/libgdiagnostics/tutorial/06-fix-it-hints.rst
! 6c7ed5ee17aed0140450d281ec761983  gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst
! 7756f01e3cee79b7ad9d20af66eede1b  gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst
  e0cdf1b3b23ffeebe52940c4ad627db6  gcc/doc/libgdiagnostics/tutorial/example-1.png
  9ee967e13bc2bed3d3732b8ced2ce585  gcc/doc/libgdiagnostics/tutorial/index.rst
  f72fd7c6a31377f3060455a2da1a6506  gcc/doc/loop.texi
  c2fc9f8e6a1cb39a7237e4ac3d7fcd7f  gcc/doc/lto-dump.texi
  b1b6d8120056485e6de69be9493a2129  gcc/doc/lto.texi
  a0300f293e1294f68bbf43478b2f7e96  gcc/doc/makefile.texi
! 721e689329cd07ff27ba55b5c090eae1  gcc/doc/match-and-simplify.texi
! 24c9066dc06d91487b778ad52c7951e6  gcc/doc/md.texi
  afaf0b9b413500a77920c3963dcd3978  gcc/doc/objc.texi
! 8b826afc7f71e67445cf33bbcd457ab5  gcc/doc/optinfo.texi
  3abb75ff788f5434702f351bf7a279c9  gcc/doc/options.texi
! a7f516c3979d392e9372c2369c2b589a  gcc/doc/params.texi
  4f849b8e491aa0fa8b80c3cefe9dc5ec  gcc/doc/passes.texi
  e54937e427a2584ac4045286c725fab1  gcc/doc/plugins.texi
! 55ca097cff451ddbce4b20cdcbb9273e  gcc/doc/poly-int.texi
  213ccf5a355e5d07fc0dcef29825d6dd  gcc/doc/portability.texi
! d7fa46b74c0e4c3eba59c245992ed858  gcc/doc/riscv-ext.texi
  b956a94b6aa45d1ba82e9e5e22386cc2  gcc/doc/riscv-mcpu.texi
  0a0e5a4479873eec073ad440f5a5ec5b  gcc/doc/riscv-mtune.texi
! 6c21b78c24e4442c9a13e8a1dc78d009  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! 5b2d746d1fb48aeccbbc19beed288ceb  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! 3424e2735def03efb2939a1f5beabf2a  gcc/doc/tm.texi
! 9d22d04bc04f3597381d1e141fb1224f  gcc/doc/tm.texi.in
! 8c9d03a450c358d77823a84f9c62ba4d  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
  bb1210d252c998d89648c327c54d8c48  gcc/dojump.cc
*************** e8379699d9f307d3707c44dc4eb76468  gcc/do
*** 6215,6238 ****
  bc82783dec92d26fe9d9508b3129eda4  gcc/dominance.h
  c84360f0ac80eeea4d03d024a7641faf  gcc/domwalk.cc
  4e9a3ec0c984881f528142b8fc15c6f0  gcc/domwalk.h
! 50c271e098547a346cc0c60c44429606  gcc/double-int.cc
  f5408da3ae295306d302b711e20589dd  gcc/double-int.h
  3e504c158ca95274231f719168303b88  gcc/dse.cc
  2d5aa8f576bf21bd67a37a9ad393918e  gcc/dump-context.h
  5bd0366d25235123df3e7bf87b005dfc  gcc/dumpfile.cc
  92a769cfebe5826f371d353067aa45fa  gcc/dumpfile.h
! 47fa43c05c1d54137379611522cdaa28  gcc/dwarf2asm.cc
  3e33ddcae27cd933ce3db85c55b25274  gcc/dwarf2asm.h
! 3e8d5968bd4778af166d9bebc6947a2d  gcc/dwarf2cfi.cc
  df86d4116f050c5e09b21441b286f26c  gcc/dwarf2codeview.cc
  2d9cf6bbe6a4ec143049dcca966ba581  gcc/dwarf2codeview.h
! a6c484f3c915c3d2ca47c185e95fbba4  gcc/dwarf2ctf.cc
  6c4236fa6ead686398b8d5e7f89f8118  gcc/dwarf2ctf.h
! dff5b9260564a82b1706e5fb186081f2  gcc/dwarf2out.cc
! 5df3b4a58dc58c2bfafddd393d55496b  gcc/dwarf2out.h
  5f6d1c1c6b68b50c4051ffa41f4aed26  gcc/early-remat.cc
  7123ceef1a8541a7ed43b2846ee4b5ac  gcc/emit-rtl.cc
! 3a8bc8b3a566860136261e030d4ea6fa  gcc/emit-rtl.h
  ebdcfebb5ff512939950e137b9ec8877  gcc/errors.cc
  9b42baa30cba169cfdb199b0368ebbff  gcc/errors.h
  520c0d56642dda02ef4ccce4f74aee5e  gcc/escaped_string.h
--- 6217,6240 ----
  bc82783dec92d26fe9d9508b3129eda4  gcc/dominance.h
  c84360f0ac80eeea4d03d024a7641faf  gcc/domwalk.cc
  4e9a3ec0c984881f528142b8fc15c6f0  gcc/domwalk.h
! 9e99a04f5cafee5d7670e43868de46be  gcc/double-int.cc
  f5408da3ae295306d302b711e20589dd  gcc/double-int.h
  3e504c158ca95274231f719168303b88  gcc/dse.cc
  2d5aa8f576bf21bd67a37a9ad393918e  gcc/dump-context.h
  5bd0366d25235123df3e7bf87b005dfc  gcc/dumpfile.cc
  92a769cfebe5826f371d353067aa45fa  gcc/dumpfile.h
! 5b7fdbb7b7ab98454bd3fa1e7ce6985f  gcc/dwarf2asm.cc
  3e33ddcae27cd933ce3db85c55b25274  gcc/dwarf2asm.h
! 1c99fb972120b4005f706b924b811cda  gcc/dwarf2cfi.cc
  df86d4116f050c5e09b21441b286f26c  gcc/dwarf2codeview.cc
  2d9cf6bbe6a4ec143049dcca966ba581  gcc/dwarf2codeview.h
! 601de5b318a7738f96f4c04305c9e506  gcc/dwarf2ctf.cc
  6c4236fa6ead686398b8d5e7f89f8118  gcc/dwarf2ctf.h
! 16a220e980897414d87d5a6e30d772ed  gcc/dwarf2out.cc
! 419729c0a6128770292e664ef9b6aac7  gcc/dwarf2out.h
  5f6d1c1c6b68b50c4051ffa41f4aed26  gcc/early-remat.cc
  7123ceef1a8541a7ed43b2846ee4b5ac  gcc/emit-rtl.cc
! 0453d78326581fbe75df5e5ca8e152f5  gcc/emit-rtl.h
  ebdcfebb5ff512939950e137b9ec8877  gcc/errors.cc
  9b42baa30cba169cfdb199b0368ebbff  gcc/errors.h
  520c0d56642dda02ef4ccce4f74aee5e  gcc/escaped_string.h
*************** f27465a07748d0f8d8813d3107b5680c  gcc/et
*** 6241,6255 ****
  e927ed115966aaba96ebbcd19b6acefd  gcc/except.cc
  d61f76c4b55102abe0d6908ab60489e7  gcc/except.h
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
! 51d883e2e3efe392cb427420abbe95cc  gcc/explow.cc
! 9542db78094e70fd18442ce8a2b02264  gcc/explow.h
! a1086b579ca0cf41bca92db8032dd9b7  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
! afbd1e926b92074ac27962e47155fec8  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
! b5fd57ebab33a457723926798d94c49d  gcc/ext-dce.cc
  8ca3dbbcb4ffeb7bd2c8f46140869732  gcc/fibonacci_heap.cc
! 3c351443d52500c559f1f91eb65b96c2  gcc/fibonacci_heap.h
  e0210f6d49bd9ceab84ba5169fbcfc99  gcc/file-find.cc
  f80b38c70a85f9aeae9688b937b028ba  gcc/file-find.h
  9ca41121de6a799cd4d23363ea1c9b0c  gcc/file-prefix-map.cc
--- 6243,6257 ----
  e927ed115966aaba96ebbcd19b6acefd  gcc/except.cc
  d61f76c4b55102abe0d6908ab60489e7  gcc/except.h
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
! 218b6e1049518cb5651dfbf9f18e27a8  gcc/explow.cc
! e0ebf672695dc08e5686ca42b54e3a46  gcc/explow.h
! 7ce98c5db5b17ef5441773f75902ae18  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
! fb9d1e021a1661336badd57c751c239b  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
! 4b31ce401d814250b89eb315bb94bdd1  gcc/ext-dce.cc
  8ca3dbbcb4ffeb7bd2c8f46140869732  gcc/fibonacci_heap.cc
! be86829c2e4593bd2c0ffb839222e9d1  gcc/fibonacci_heap.h
  e0210f6d49bd9ceab84ba5169fbcfc99  gcc/file-find.cc
  f80b38c70a85f9aeae9688b937b028ba  gcc/file-find.h
  9ca41121de6a799cd4d23363ea1c9b0c  gcc/file-prefix-map.cc
*************** b4a18c8d0dacb99b95b772e94f976754  gcc/fi
*** 6258,6270 ****
  3f5e6ac132421f17c9c8232626731e46  gcc/fixed-value.cc
  1caa253d024b0e3dcf3e6ba5ca8eeab1  gcc/fixed-value.h
  843d7b61f7ebbdf9b9f6d9eeac9db399  gcc/flag-types.h
! 85741de0b8ea9e109ee1355d60bfd397  gcc/flags.h
! ba649054d339863338ad87cb27555a9e  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
! 3f13f0cb854ab1bf617663770dfcc452  gcc/fold-const.cc
! 6cfa2279468aef932ad5b38161676a4a  gcc/fold-const.h
  503251519661f1768b70d9b424bdc12b  gcc/fold-mem-offsets.cc
! c7ba3294c06b7c6319958a5829e67bb4  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6260,6272 ----
  3f5e6ac132421f17c9c8232626731e46  gcc/fixed-value.cc
  1caa253d024b0e3dcf3e6ba5ca8eeab1  gcc/fixed-value.h
  843d7b61f7ebbdf9b9f6d9eeac9db399  gcc/flag-types.h
! edda8d107262aa360baaeafc0bd0d4a1  gcc/flags.h
! 5299abc469358416d12b6f08800f74e7  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
! 9ef0791bbccc1be8311a0a9c9a2e30a4  gcc/fold-const.cc
! 52f12f5f49a400327788ee826a094b1e  gcc/fold-const.h
  503251519661f1768b70d9b424bdc12b  gcc/fold-mem-offsets.cc
! bb670f2ed562f08679509ddf7128b552  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** bcb129d4d143e6ec42b4ddec1fea30b8  gcc/fo
*** 6295,6302 ****
  1f3ee645ab25a3d858b555c00c0327ae  gcc/fortran/arith.h
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
! ffbcec5b8defe520ab727e0fe1875285  gcc/fortran/check.cc
! cb187afae869d66ea5e19e55fa945052  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
--- 6297,6304 ----
  1f3ee645ab25a3d858b555c00c0327ae  gcc/fortran/arith.h
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
! 71c62c6ee055ceb715a6a53b3b724e5a  gcc/fortran/check.cc
! c87f265d6610344a17f8e940e9a98828  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
*************** edad5176d72953374d67effefef0a605  gcc/fo
*** 6306,6336 ****
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! 5a7ed10c5ba4df056e9493db69e95e52  gcc/fortran/decl.cc
! 92ac8b7c0f5e7976d4cd1297e9eb18c1  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! 831f7a72321d9311f543bb976cc466b3  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! 8b02343f75ef7cf3f9a4b9e0599abadc  gcc/fortran/expr.cc
! 354927f6cb797cd538c0ab8ab0e552bb  gcc/fortran/f95-lang.cc
! 51a6693c56a7d604b57ea86b0365f060  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 59c416c3b53ff154370b8dfc307af1b5  gcc/fortran/gfortran.h
! 8fe0c8cc43e7ed982c602f58b4086351  gcc/fortran/gfortran.texi
  99d4834014e20be40fdfc7584b7256af  gcc/fortran/gfortranspec.cc
! 71e194a5a481bd98cbc9644668c8cebb  gcc/fortran/interface.cc
! 7e06cc5337aba27172fe64c673314c64  gcc/fortran/intrinsic.cc
! 285cce3e348dd08fbaf339358ac57d51  gcc/fortran/intrinsic.h
! 829931e933b68aff1a07db22d5069fce  gcc/fortran/intrinsic.texi
! 08173dc36d9f81571538f5851a28ce44  gcc/fortran/invoke.texi
  b08b0f68a74bf3f059116de701943352  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  1e9a62cdd76fcac49d91728090a8b2f6  gcc/fortran/iresolve.cc
! 943be43e521f4084734d183ff4a4fe5e  gcc/fortran/iso-c-binding.def
  e5c0565c05cf7375c9978273f2e553e7  gcc/fortran/iso-fortran-env.def
  20a111338bfdbe210a5826e590844f81  gcc/fortran/lang-specs.h
! 60c89ecec65ed7cb49e8feee80963cee  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
  2eb2009dd3b44153bd97a223b3facfa0  gcc/fortran/match.cc
--- 6308,6338 ----
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! c58711c2c5d84ff56967f9c5b0d49135  gcc/fortran/decl.cc
! 1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! c07ea63df410cfcd2b61edc08f65b7c8  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! 8210b5c7adb3952169cd600412bce4ba  gcc/fortran/expr.cc
! 3f069b03ce1f8f6cc015a36c646865ea  gcc/fortran/f95-lang.cc
! aabeb93bbe7fb46864a337bef3c2ade5  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 8752419034d3e42bfb3828af6d25953f  gcc/fortran/gfortran.h
! 493034098129328bc2dddc703502a8de  gcc/fortran/gfortran.texi
  99d4834014e20be40fdfc7584b7256af  gcc/fortran/gfortranspec.cc
! 7eb1d3b36709038908337f62ebf705c3  gcc/fortran/interface.cc
! c9c62e1550b9762c19830a6658502236  gcc/fortran/intrinsic.cc
! d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
! 5c41fec8827bcc0e1e524b99ce4bfd71  gcc/fortran/intrinsic.texi
! d86a58da6ddcb9265580035a46a846c7  gcc/fortran/invoke.texi
  b08b0f68a74bf3f059116de701943352  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  1e9a62cdd76fcac49d91728090a8b2f6  gcc/fortran/iresolve.cc
! 4983e51f5909bf7627062a5e3ace5455  gcc/fortran/iso-c-binding.def
  e5c0565c05cf7375c9978273f2e553e7  gcc/fortran/iso-fortran-env.def
  20a111338bfdbe210a5826e590844f81  gcc/fortran/lang-specs.h
! 641be6b7a38ff8d6e0719c634e53320c  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
  2eb2009dd3b44153bd97a223b3facfa0  gcc/fortran/match.cc
*************** c35102e7caaf40998fe2ead86d2716da  gcc/fo
*** 6338,6350 ****
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! a465af66dbc504ea8aab1ad5d516072d  gcc/fortran/module.cc
! 0d9c24e806a25e78eef88ad83978fd48  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
  b40c17cd1d9a12d2e21b95f8bf7415d5  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  f8f17e966c9b06f3143a910582383fb7  gcc/fortran/primary.cc
! ea3aa90b54f7eda5021a8465d75e012d  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
--- 6340,6352 ----
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! 0d4334799e0fa2a2b9b5d1d5e185e1eb  gcc/fortran/module.cc
! e0f7c35a9c9fd39dcf6e298b98e9bdeb  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
  b40c17cd1d9a12d2e21b95f8bf7415d5  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  f8f17e966c9b06f3143a910582383fb7  gcc/fortran/primary.cc
! 165fbd32b9b5d32f5b8d3a30ff99e62a  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
*************** e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fo
*** 6352,6372 ****
  dd23a8a9fb10b9d827d59834b76ab375  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 40cb236ccb42c8f778d277fc59baaae9  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 8122b7fcee76ae037d67925b0b8cd603  gcc/fortran/trans-decl.cc
! 9a100cde4a4242cae5a422461de8a1e4  gcc/fortran/trans-expr.cc
! cf1cd2d936d63b4a12209bc73b627e02  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
! 1904a94ad6abf7e05b8007368192d4d4  gcc/fortran/trans-openmp.cc
! 974f8aeec761eac4ee1be974addd51d5  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
! ecdc6bc7300ce96c67547c6f3af18597  gcc/fortran/trans.cc
  a5464198aa6b5015fdf27b2e0f276290  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
--- 6354,6374 ----
  dd23a8a9fb10b9d827d59834b76ab375  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 3b51574ebba23a2fe85218ab0c445aae  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! e573396da042ba493dcbde400c3cd78e  gcc/fortran/trans-decl.cc
! 318b4ec3b653787283e161586d3fad87  gcc/fortran/trans-expr.cc
! 486bdfce75f689b12de452a20e2ba080  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
! c9900ebe9c9cdcb681d42d055c2aeb09  gcc/fortran/trans-openmp.cc
! fce7d17804b3bec35009baf2c34567f8  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
! 501a82d1878805678d668a392dc0e48a  gcc/fortran/trans.cc
  a5464198aa6b5015fdf27b2e0f276290  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
*************** a5464198aa6b5015fdf27b2e0f276290  gcc/fo
*** 6374,6385 ****
  f0ee919c2691fdbcbb76cb8c13085a08  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
  45679bb0d98b3e87046958f7576b3770  gcc/function-tests.cc
! 3dabc996f369bcc83e5cbf5da580f241  gcc/function.cc
  797473d7b92327caaa0bc2b71c14bc0d  gcc/function.h
  96e0cc03035051e1904d130ab24fdfb4  gcc/fwprop.cc
  32954fca43f23e905ac77e9879653355  gcc/gcc-ar.cc
  485c27eb32ee3d08c3a797aa09f1e7c5  gcc/gcc-attribute-urlifier.cc
! dc24449cec927612e1de74dd4147bcbd  gcc/gcc-diagnostic-spec.cc
  b5d3e8bbbb8eaf9e3afad2074381d9b6  gcc/gcc-diagnostic-spec.h
  da0c39774e25ef2fb15801b85139c78e  gcc/gcc-main.cc
  cb61e8e62e8f8253c31da11a151fafb3  gcc/gcc-plugin.h
--- 6376,6387 ----
  f0ee919c2691fdbcbb76cb8c13085a08  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
  45679bb0d98b3e87046958f7576b3770  gcc/function-tests.cc
! c2f0dd4daad4bedc04cde7b401e0403a  gcc/function.cc
  797473d7b92327caaa0bc2b71c14bc0d  gcc/function.h
  96e0cc03035051e1904d130ab24fdfb4  gcc/fwprop.cc
  32954fca43f23e905ac77e9879653355  gcc/gcc-ar.cc
  485c27eb32ee3d08c3a797aa09f1e7c5  gcc/gcc-attribute-urlifier.cc
! 67fb148723cc4285682ba1ce064e2853  gcc/gcc-diagnostic-spec.cc
  b5d3e8bbbb8eaf9e3afad2074381d9b6  gcc/gcc-diagnostic-spec.h
  da0c39774e25ef2fb15801b85139c78e  gcc/gcc-main.cc
  cb61e8e62e8f8253c31da11a151fafb3  gcc/gcc-plugin.h
*************** e4981e3b10513f53ed20b58620dfc56f  gcc/gc
*** 6389,6414 ****
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! b05737bbc68b136b84a297541d337fb7  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
  b3c028c9d05ffaa2d3d12afa3b3d6061  gcc/gcov-io.cc
  15293b4de55e6ae02fef2f87d2745ed3  gcc/gcov-io.h
  59c446908bdce0e047d42a7886f3904a  gcc/gcov-tool.cc
! 6145ed803fd49507f71441a009b95b0f  gcc/gcov.cc
  a03969607849dc4defdd19f2bd8f098b  gcc/gcse-common.cc
  277a0876871bec996d99dc4d7e020460  gcc/gcse-common.h
  a6262b86b3027259364f310d5668e6a3  gcc/gcse.cc
  6c898f98c15777ac9d8bb4163c0a3e74  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! 428e170a25c648340a69d091bf530a40  gcc/gdbhooks.py
  57d4203a56ff6a24e7cb8e58c6ce481c  gcc/gdbinit.in
  ed5344143eadda13d94953c181df0123  gcc/gen-pass-instances.awk
  6f831e6ea1ea5c36525eaccefab39200  gcc/genattr-common.cc
  44f67f14c8ebc167c082311145707ddb  gcc/genattr.cc
! a43321b90eb625fe2d7e21dfd047aaa6  gcc/genattrtab.cc
! 889143a974fa13da1076c4677fd427b1  gcc/genautomata.cc
  ae5fcc067c2f2a47e265e69a6896632f  gcc/gencfn-macros.cc
  fd409219ef263a27cda92f9d1c4eb36b  gcc/gencheck.cc
  d7f4e4ad676aca80544724e0f51991da  gcc/genchecksum.cc
--- 6391,6416 ----
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! 51463e3dec9e62786fb16eee66875c04  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
  b3c028c9d05ffaa2d3d12afa3b3d6061  gcc/gcov-io.cc
  15293b4de55e6ae02fef2f87d2745ed3  gcc/gcov-io.h
  59c446908bdce0e047d42a7886f3904a  gcc/gcov-tool.cc
! a7d4d3f7af9ef06d01c75f41d7e7a27e  gcc/gcov.cc
  a03969607849dc4defdd19f2bd8f098b  gcc/gcse-common.cc
  277a0876871bec996d99dc4d7e020460  gcc/gcse-common.h
  a6262b86b3027259364f310d5668e6a3  gcc/gcse.cc
  6c898f98c15777ac9d8bb4163c0a3e74  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! 662a2a43c0734e027334473a1e3cc6e3  gcc/gdbhooks.py
  57d4203a56ff6a24e7cb8e58c6ce481c  gcc/gdbinit.in
  ed5344143eadda13d94953c181df0123  gcc/gen-pass-instances.awk
  6f831e6ea1ea5c36525eaccefab39200  gcc/genattr-common.cc
  44f67f14c8ebc167c082311145707ddb  gcc/genattr.cc
! 1045210e47259cc26a01dcc540c42fdf  gcc/genattrtab.cc
! 13ae9750297443610632ba0dc9274a02  gcc/genautomata.cc
  ae5fcc067c2f2a47e265e69a6896632f  gcc/gencfn-macros.cc
  fd409219ef263a27cda92f9d1c4eb36b  gcc/gencheck.cc
  d7f4e4ad676aca80544724e0f51991da  gcc/genchecksum.cc
*************** fb2d66e9d3218c23bfc681858eeb96d7  gcc/ge
*** 6425,6445 ****
  3dd21b6d301f9ab68a9ffcf2c9aaa9a7  gcc/gengenrtl.cc
  de4a5ffc62d7e4741e33ab2ab501e601  gcc/gengtype-lex.l
  c739e2bedd7d49bc7a7c4ae61fe92df6  gcc/gengtype-parse.cc
! 85a239708d2de94a4c3f6227811ce6b3  gcc/gengtype-state.cc
! 13834fadd1e66741d9f4cfa8ec740173  gcc/gengtype.cc
  337148b052ea38466fcac0655bce7ffa  gcc/gengtype.h
  7e9bc10948cd198b2cefa5f28d9dc7a9  gcc/genhooks.cc
! 7b0ac200b150b2f4d1458beb201dbfd8  gcc/genmatch.cc
  e4047cfabe80236af3ae74f11e2d60c6  gcc/genmddeps.cc
  07e47d3b20e79c811a134c66e6706df2  gcc/genmddump.cc
  f12cb23213547a0e97f979845e36473a  gcc/genmodes.cc
  1017a97e7d44748a0ead3f1fdf92d676  gcc/genmultilib
! e0e7e5a247e6e2df33948f498b83390f  gcc/genopinit.cc
! 4cfac6c868731075442235977814cbba  gcc/genoutput.cc
  db35b39aef87d882541f7f9672bfb034  gcc/genpeep.cc
! 5302e340f0da37321cf3308d93375099  gcc/genpreds.cc
! 089452660c052d5b4b4aaf5e4651335a  gcc/genrecog.cc
! a2074e1e7b293dfeab14c887696f2299  gcc/gensupport.cc
  4801a456f63c48a3c949feef327ab7d2  gcc/gensupport.h
  96b33171630af12a42352b099f496aa9  gcc/gentarget-def.cc
  8acc0caa2af3028b47651433e7186b9a  gcc/genversion.cc
--- 6427,6447 ----
  3dd21b6d301f9ab68a9ffcf2c9aaa9a7  gcc/gengenrtl.cc
  de4a5ffc62d7e4741e33ab2ab501e601  gcc/gengtype-lex.l
  c739e2bedd7d49bc7a7c4ae61fe92df6  gcc/gengtype-parse.cc
! 2d9104574899868a2bcd7c20d1ec2b48  gcc/gengtype-state.cc
! f27a66fc690f9a636e275b36fab9aa68  gcc/gengtype.cc
  337148b052ea38466fcac0655bce7ffa  gcc/gengtype.h
  7e9bc10948cd198b2cefa5f28d9dc7a9  gcc/genhooks.cc
! 9a8fe8112f937369edbb340fc48b75ac  gcc/genmatch.cc
  e4047cfabe80236af3ae74f11e2d60c6  gcc/genmddeps.cc
  07e47d3b20e79c811a134c66e6706df2  gcc/genmddump.cc
  f12cb23213547a0e97f979845e36473a  gcc/genmodes.cc
  1017a97e7d44748a0ead3f1fdf92d676  gcc/genmultilib
! d64ab00f9934abdaf7e4d31517166403  gcc/genopinit.cc
! db21139689f30c45e537cde8308c521f  gcc/genoutput.cc
  db35b39aef87d882541f7f9672bfb034  gcc/genpeep.cc
! 5b37e26a6d7729558e96c2a86ba995af  gcc/genpreds.cc
! 167a686249ff4822dedb95d94aa38a8d  gcc/genrecog.cc
! 0091feee6199ec97804b1784dd092993  gcc/gensupport.cc
  4801a456f63c48a3c949feef327ab7d2  gcc/gensupport.h
  96b33171630af12a42352b099f496aa9  gcc/gentarget-def.cc
  8acc0caa2af3028b47651433e7186b9a  gcc/genversion.cc
*************** fdac1fc999e94311e86377934b7524b3  gcc/gg
*** 6449,6520 ****
  23b5bd56200b80366927e7b2faf6b7f1  gcc/ggc-page.cc
  3926d902b4a543d3419ee67b34f21bc5  gcc/ggc-tests.cc
  af4a387aec960d3e8380f41c5d139097  gcc/ggc.h
! 225bd195e5c278c21dbae19043529ac5  gcc/gimple-array-bounds.cc
  0e83c85ff70314dbf36e2a5b6710eaaa  gcc/gimple-array-bounds.h
  17b0847ee6f3c161fae2a55c78f982ed  gcc/gimple-builder.cc
  e8ef831ecab58724c781ef6c239eb959  gcc/gimple-builder.h
! 98c92461c94c7a7e1f7c09e62e05167f  gcc/gimple-crc-optimization.cc
! e33888307c479ce11d601ebd8fc8f0af  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! e20e41ef01b376af7bd7320578cbf4b4  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
! ebf0fc6c9a10c730d10710fdec206805  gcc/gimple-harden-control-flow.cc
  d84e22c142fb0213a6e5c1fcee858bb7  gcc/gimple-if-to-switch.cc
  af51ef59a8083323edb4ffcf58bb96ed  gcc/gimple-isel.cc
  a46e0d38ab7dd494223ad8e5db7454da  gcc/gimple-iterator.cc
  f625775d4290d87f0c15fb36855776b1  gcc/gimple-iterator.h
  a7d47404d5fd61c66fd504e78960fac2  gcc/gimple-laddress.cc
! b8f35f8e0e2003ccbebac105a9aa5a81  gcc/gimple-loop-interchange.cc
! f1824ea9d0d35fb768daabd8649d44b3  gcc/gimple-loop-jam.cc
  b829ca99c85ee53d8741a9e6bd0842cc  gcc/gimple-loop-versioning.cc
! 3c3cd33fb8d571f0cf6646b95fd1a87d  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! 0b01f51ad0331d5a2dbc2e7b39d4fce5  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
! e34c444c462ee07d9e772cc076c6ad83  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
  fc046378b00fb047e166e06622975ba0  gcc/gimple-match.h
! cc3bc9f050d83e91dde135d1aaa4aa45  gcc/gimple-predicate-analysis.cc
! 2c11e59cf64a0fe28fb4b27481d61771  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
  507f851a06264c7415919c28e6afa3da  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
! 0411b54c8c250fa65360fdf77e1bcb64  gcc/gimple-range-cache.cc
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 6a5982046b25df0a70a983f9ea49a38e  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
! 314d9122c0deb103438e02976c279fff  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
  871f906e172004d8ff9ab02c90b303c7  gcc/gimple-range-infer.cc
! 7b22b6e89d46ee067b182629fcb97a4d  gcc/gimple-range-infer.h
  7a817f9363ddd6ca4c1690866d425d29  gcc/gimple-range-op.cc
  2b35447fc9805b1aa9b1c06450e44a9e  gcc/gimple-range-op.h
  ef9ab4f8d42dd43ff48744090edb54b3  gcc/gimple-range-path.cc
  fd93abee2584b401c93735ddd00e75d1  gcc/gimple-range-path.h
! cdb2ce2b488734517babc7160c5009ae  gcc/gimple-range-phi.cc
! 88db961c40e1363bfbf18f6230509369  gcc/gimple-range-phi.h
  a4932ff9aca9b1faf77d94e18d1a98dd  gcc/gimple-range-tests.cc
  6aea6dbdcfdbb9cc7eaba0885ef8339c  gcc/gimple-range-trace.cc
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
! 8b2bafc3fa66bdaabaa93d8af1c8762f  gcc/gimple-range.cc
  b284f979b1dc05312e57543e7aa4d6c4  gcc/gimple-range.h
  8a9bf24197a610cfba7953c1233dd5ef  gcc/gimple-ssa-backprop.cc
! e1a7065df5a3fda33b25bbeef59fcf3c  gcc/gimple-ssa-isolate-paths.cc
  841e25177d0ec3b994aade444aaf7d1f  gcc/gimple-ssa-nonnull-compare.cc
! a773a19ee9b5880dae21824c39a73876  gcc/gimple-ssa-pta-constraints.cc
  1a13540b90afbe02c088650d3cd0b617  gcc/gimple-ssa-pta-constraints.h
! d29ad5283ef50f50d10619397e423ecf  gcc/gimple-ssa-sccopy.cc
! 7be48fef79411a4592494e787939e0b4  gcc/gimple-ssa-split-paths.cc
! 07a1825b625d551acbb670a51ae45fb1  gcc/gimple-ssa-sprintf.cc
! e2212a4ac7cbb1b0af8c28c4030c2a05  gcc/gimple-ssa-store-merging.cc
! 53ca8b2ca1464910f634a11084178624  gcc/gimple-ssa-strength-reduction.cc
! 70cf17c67df9cf152514b46de7067d6e  gcc/gimple-ssa-warn-access.cc
  987d7fb5fd1bb73e756015bb5e1074bd  gcc/gimple-ssa-warn-access.h
  f7b0197d94bcfef5acc93f20515d5a8f  gcc/gimple-ssa-warn-alloca.cc
! 331fb5561e03bdd45decaf5d8b7ca0bb  gcc/gimple-ssa-warn-restrict.cc
  c7aaa3764ab30058c5d27da89f166ec2  gcc/gimple-ssa-warn-restrict.h
  79daaffce22932c0052d6f1d1d6465a2  gcc/gimple-ssa.h
  3e9d1470bb8be14b46583a41dbd2e164  gcc/gimple-streamer-in.cc
--- 6451,6522 ----
  23b5bd56200b80366927e7b2faf6b7f1  gcc/ggc-page.cc
  3926d902b4a543d3419ee67b34f21bc5  gcc/ggc-tests.cc
  af4a387aec960d3e8380f41c5d139097  gcc/ggc.h
! 47fd2ba1e512d5a609262c1aac8b310f  gcc/gimple-array-bounds.cc
  0e83c85ff70314dbf36e2a5b6710eaaa  gcc/gimple-array-bounds.h
  17b0847ee6f3c161fae2a55c78f982ed  gcc/gimple-builder.cc
  e8ef831ecab58724c781ef6c239eb959  gcc/gimple-builder.h
! 8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
! a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! a1ab3612cf28a4b133f14e69229c5cc6  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
! 77b7894bb225ebcb156bb0cf28b9325a  gcc/gimple-harden-control-flow.cc
  d84e22c142fb0213a6e5c1fcee858bb7  gcc/gimple-if-to-switch.cc
  af51ef59a8083323edb4ffcf58bb96ed  gcc/gimple-isel.cc
  a46e0d38ab7dd494223ad8e5db7454da  gcc/gimple-iterator.cc
  f625775d4290d87f0c15fb36855776b1  gcc/gimple-iterator.h
  a7d47404d5fd61c66fd504e78960fac2  gcc/gimple-laddress.cc
! 189fd651a07168119508569dc83d182d  gcc/gimple-loop-interchange.cc
! 09f155e5d0296ba93f88821453972587  gcc/gimple-loop-jam.cc
  b829ca99c85ee53d8741a9e6bd0842cc  gcc/gimple-loop-versioning.cc
! a3c0ce653bff24576326a2c5f8a39b01  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! f8941e29ad4b2e4ef9bb6160dcffef2d  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
! 6191374e33ca35fa70426fa15d3d510b  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
  fc046378b00fb047e166e06622975ba0  gcc/gimple-match.h
! de743ea00fd2b7de01d1041a83c3828c  gcc/gimple-predicate-analysis.cc
! bb051bbc22b445b14ef4c250038f1dbf  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
  507f851a06264c7415919c28e6afa3da  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
! e7c15ad64690b26467dbd5a00225426e  gcc/gimple-range-cache.cc
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 2806e73cd5e0290f87d56b812b4ff101  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
! 81b88dce3097e53655e2e56fcded19a4  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
  871f906e172004d8ff9ab02c90b303c7  gcc/gimple-range-infer.cc
! 9c447cd0910663103790881bc1ab0fc8  gcc/gimple-range-infer.h
  7a817f9363ddd6ca4c1690866d425d29  gcc/gimple-range-op.cc
  2b35447fc9805b1aa9b1c06450e44a9e  gcc/gimple-range-op.h
  ef9ab4f8d42dd43ff48744090edb54b3  gcc/gimple-range-path.cc
  fd93abee2584b401c93735ddd00e75d1  gcc/gimple-range-path.h
! 787b3096c9115c5e2427e7af56e81f2c  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
! a6fa6bdf95bbe8ce0cd55afe488296b9  gcc/gimple-range.cc
  b284f979b1dc05312e57543e7aa4d6c4  gcc/gimple-range.h
  8a9bf24197a610cfba7953c1233dd5ef  gcc/gimple-ssa-backprop.cc
! de05af775384560b7d73a320ca04b716  gcc/gimple-ssa-isolate-paths.cc
  841e25177d0ec3b994aade444aaf7d1f  gcc/gimple-ssa-nonnull-compare.cc
! c601c638b474c5f6fa902a24dc57b869  gcc/gimple-ssa-pta-constraints.cc
  1a13540b90afbe02c088650d3cd0b617  gcc/gimple-ssa-pta-constraints.h
! adcf87eb5ad5663f4eec5fe6cb2d9dcb  gcc/gimple-ssa-sccopy.cc
! ed229440036ea7e3f4f024ff36345e2e  gcc/gimple-ssa-split-paths.cc
! a707182c5c79c8694b0faeca12bcdba0  gcc/gimple-ssa-sprintf.cc
! 50ae29108d16899c29420df9cd816cc7  gcc/gimple-ssa-store-merging.cc
! 80c188723b9e2d5da42c41d22ce38e94  gcc/gimple-ssa-strength-reduction.cc
! a035008b9a113df9ca4e9376961a5af8  gcc/gimple-ssa-warn-access.cc
  987d7fb5fd1bb73e756015bb5e1074bd  gcc/gimple-ssa-warn-access.h
  f7b0197d94bcfef5acc93f20515d5a8f  gcc/gimple-ssa-warn-alloca.cc
! e2a88567ecc62102958a6b3c637cfbe5  gcc/gimple-ssa-warn-restrict.cc
  c7aaa3764ab30058c5d27da89f166ec2  gcc/gimple-ssa-warn-restrict.h
  79daaffce22932c0052d6f1d1d6465a2  gcc/gimple-ssa.h
  3e9d1470bb8be14b46583a41dbd2e164  gcc/gimple-streamer-in.cc
*************** c7aaa3764ab30058c5d27da89f166ec2  gcc/gi
*** 6524,6534 ****
  fd706cd70d2b5c6a514eef109a117112  gcc/gimple-walk.h
  06799abee7825c63248ec83b96f7f7a9  gcc/gimple-warn-recursion.cc
  4a43f38776337834415600ed88fb9563  gcc/gimple.cc
! 208b5a93bd83c9b24330756189d7f056  gcc/gimple.def
! bdfa24068b8a667b864afec3aab3c472  gcc/gimple.h
  46bdb18976fdb25accadbfdc07f14a8e  gcc/gimplify-me.cc
  cc5b43d0554c69571cd007e727fbb7d1  gcc/gimplify-me.h
! 589dd8e3fb88626d93e5437ecacdd38c  gcc/gimplify.cc
  5015d194d6aebf6d8d4bbb3945a77e27  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  83f82d6779ea9f6500c863169abfca55  gcc/ginclude/float.h
--- 6526,6536 ----
  fd706cd70d2b5c6a514eef109a117112  gcc/gimple-walk.h
  06799abee7825c63248ec83b96f7f7a9  gcc/gimple-warn-recursion.cc
  4a43f38776337834415600ed88fb9563  gcc/gimple.cc
! 9c96d8ec9971cb14612c09c0565d83c5  gcc/gimple.def
! 83d74df09fe460c465e209cc1370a30b  gcc/gimple.h
  46bdb18976fdb25accadbfdc07f14a8e  gcc/gimplify-me.cc
  cc5b43d0554c69571cd007e727fbb7d1  gcc/gimplify-me.h
! 7d4328b31b53e4b629f62dbe3782e020  gcc/gimplify.cc
  5015d194d6aebf6d8d4bbb3945a77e27  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  83f82d6779ea9f6500c863169abfca55  gcc/ginclude/float.h
*************** efc5cf70705a6c22ffe047d96998ee71  gcc/go
*** 6614,6625 ****
  6e0652bd7ccdcdb78d376a8205fd39ae  gcc/go/lang.opt
  a34735cec9db2102b6780074cdec10ca  gcc/go/lang.opt.urls
  51fc7243b0eaffea3c48f24b9255c233  gcc/godump.cc
! 773d89dbe837c253425c410f32a7ed8d  gcc/graph.cc
  7b97e2f3559cf679fc02c1d088bd405a  gcc/graph.h
  e611633fdebb1228a285c56e1c6d95df  gcc/graphds.cc
  dd1387fbd91b4a77cc93eaeccbc382e9  gcc/graphds.h
! 979ca437d5a7a330085f9dced6892601  gcc/graphite-dependences.cc
! 33be2ae0920f4bb7cdc03a8a607d8800  gcc/graphite-isl-ast-to-gimple.cc
  8a9846761507be70234804fa0670e4db  gcc/graphite-optimize-isl.cc
  43b8c46f2433d33b862301d14c471232  gcc/graphite-poly.cc
  59a3c55a0b983f049d2e21afaac23184  gcc/graphite-scop-detection.cc
--- 6616,6627 ----
  6e0652bd7ccdcdb78d376a8205fd39ae  gcc/go/lang.opt
  a34735cec9db2102b6780074cdec10ca  gcc/go/lang.opt.urls
  51fc7243b0eaffea3c48f24b9255c233  gcc/godump.cc
! 64f7cbc8ca4bfe5b02e26d079a5fd9ee  gcc/graph.cc
  7b97e2f3559cf679fc02c1d088bd405a  gcc/graph.h
  e611633fdebb1228a285c56e1c6d95df  gcc/graphds.cc
  dd1387fbd91b4a77cc93eaeccbc382e9  gcc/graphds.h
! d71aed2b41daea1fd1e2fb470c754bd9  gcc/graphite-dependences.cc
! 78c99ca60992b583820487fbe63ef60b  gcc/graphite-isl-ast-to-gimple.cc
  8a9846761507be70234804fa0670e4db  gcc/graphite-optimize-isl.cc
  43b8c46f2433d33b862301d14c471232  gcc/graphite-poly.cc
  59a3c55a0b983f049d2e21afaac23184  gcc/graphite-scop-detection.cc
*************** b4a116ba62ac3794dc989073ede9a6d7  gcc/gr
*** 6632,6641 ****
  2f6201c840b0701b37cfb25d21324a78  gcc/gsyms.h
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! f769699135084c7641b26c98f76142c7  gcc/haifa-sched.cc
  d8ef080a2b3ba3ee183a04862d435ab7  gcc/hard-reg-set.h
  9885346dec7f94219e6def782b8ddf11  gcc/hash-map-tests.cc
! 73c233c79267f021897530f6dbbc1dce  gcc/hash-map-traits.h
  7ed09303f4740ebe9dc87a8c39cf001e  gcc/hash-map.h
  0f92ffb7af5afaf777429696fb14ce94  gcc/hash-set-tests.cc
  359ff64eb3d9e20f465e670b18cb9660  gcc/hash-set.h
--- 6634,6643 ----
  2f6201c840b0701b37cfb25d21324a78  gcc/gsyms.h
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! 0497e6222ef86e3f2580e18f2ade2049  gcc/haifa-sched.cc
  d8ef080a2b3ba3ee183a04862d435ab7  gcc/hard-reg-set.h
  9885346dec7f94219e6def782b8ddf11  gcc/hash-map-tests.cc
! 0763ef48851de9362020563a9402da67  gcc/hash-map-traits.h
  7ed09303f4740ebe9dc87a8c39cf001e  gcc/hash-map.h
  0f92ffb7af5afaf777429696fb14ce94  gcc/hash-set-tests.cc
  359ff64eb3d9e20f465e670b18cb9660  gcc/hash-set.h
*************** f29265526da54525b91c67ebc2565517  gcc/ha
*** 6649,6733 ****
  a69f44bb2f29f2861e02a4e8ac64c734  gcc/hooks.h
  3a862f932ba5c1ae0b78ab5fb729edb7  gcc/host-default.cc
  479e4406ec671b24bb7ce7de3a604f95  gcc/hosthooks-def.h
! 9c6fda1e2e52d256e5477e5d0c6257fc  gcc/hosthooks.h
  f5de8589d497c4d607cadff1ce88dd5c  gcc/hw-doloop.cc
  665c1d736f4909ccb17f662f7f060fd7  gcc/hw-doloop.h
  e5e51e93d7d72e1822440531e4d79d1d  gcc/hwint.cc
  b6b1b7e364f00e9287ee1f56254b9be1  gcc/hwint.h
! 1c41ad8ff1fa0d161d36b093d76d3416  gcc/ifcvt.cc
  e2229f9ecac43014084b083ddf2d4637  gcc/ifcvt.h
  370b4a8b9decbb822392c32f5fb92a72  gcc/inchash.cc
  bad6404ce4e7f42ff46ce6ae70c77e99  gcc/inchash.h
  984873a66208a127d95460985f7a8950  gcc/incpath.cc
  17ffbeb68fc11afc463c1f060838519d  gcc/incpath.h
  5aa4092ef811b7dfc5987dcd38205bb6  gcc/init-regs.cc
! ea168cbe279a9f5955218fc5d10d09c5  gcc/input.cc
  27f736f8d8cba5e5dd1c30bbe7272db1  gcc/input.h
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! d0eed7f15614bd534595073a81804787  gcc/internal-fn.cc
! 4c5494dff903825d1d305853c27e1d1c  gcc/internal-fn.def
! 0e20e6632437546e842299f8f436cfdf  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
! 920db3effdd509146b3f00be906c0885  gcc/ipa-comdats.cc
! 679eb4629aa1da4dd7fbb38e3d54505f  gcc/ipa-cp.cc
  bff71bc7b721a547da3a7ddc6b208fb9  gcc/ipa-cp.h
  0951d893930a76f52aa7e3f0fbd7201e  gcc/ipa-devirt.cc
! 0f5f3d9b3c56e80eb4660f2cc0778ff7  gcc/ipa-fnsummary.cc
! 179f7c3a6fbca4d8bf253b9fc8e5b21f  gcc/ipa-fnsummary.h
! c4202186d7ed3511a93359f9b276438b  gcc/ipa-free-lang-data.cc
! a7d3f8cf31a1f63a4d4506c0667889ff  gcc/ipa-icf-gimple.cc
  8afa732b4ae1f08ca41426bc2cb25ff9  gcc/ipa-icf-gimple.h
! cd6daf6036bc08df46ce01ec22dbdba5  gcc/ipa-icf.cc
  d2917be5e45902721d8174996b327a41  gcc/ipa-icf.h
  ba9e8a0870296fd0192e3595d9f582ef  gcc/ipa-inline-analysis.cc
! 22ead4e90306fe7616ffa86a26f913c8  gcc/ipa-inline-transform.cc
! 2f02dd416750a80f367ba00a48a769cb  gcc/ipa-inline.cc
  4be9c78f2544b781ae0f89b60cd3dee0  gcc/ipa-inline.h
! 80b67405b84b45135ccd085ead5a18f9  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
  4d6a8cf9b93ae2035da4279c028c0746  gcc/ipa-modref-tree.cc
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
! e27bcdc8d3a6733a4b94a025dad33e21  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! 5de2d46c22758bff85e4365ba687f510  gcc/ipa-param-manipulation.cc
! dba11f7340415ca54713db0009a33093  gcc/ipa-param-manipulation.h
! cdf80ca29c90f97b4cca06b029f8353b  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
  a25a62951e49120c7882ca20d2486581  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
! 6b4bde2bc9275bdba6d37f49fd856e16  gcc/ipa-prop.cc
! ab51096414a0554c4c1069e327ad7801  gcc/ipa-prop.h
  14aace4627625a58b2f0a8aec7cd94f5  gcc/ipa-pure-const.cc
  f2d87c9921ca158119d238ee8d50abb6  gcc/ipa-ref.cc
  241970c18f4b9dd3845e663d39673789  gcc/ipa-ref.h
! 97515b33bc3be35a548e23f12c5647a6  gcc/ipa-reference.cc
  bd31c2a33971ac43c3f05636ba1f5e7a  gcc/ipa-reference.h
! 9837dd925a4c4433c8ee1d2065f510e8  gcc/ipa-split.cc
! cf0a44d67ef2094ff7b0a6fe8cfb4600  gcc/ipa-sra.cc
! 5c051de270e4ed5bc2334568c0f057f8  gcc/ipa-strub.cc
  4bad901423b9006d36b6a6eebf0ea7ad  gcc/ipa-strub.h
! 6be870b33158bb3c3a5b384401b73d9d  gcc/ipa-utils.cc
! 1b3adda32a23d96454915564afd44757  gcc/ipa-utils.h
! e8fdd0fb4c0781c9b4e61b76ab303698  gcc/ipa-visibility.cc
! 0e1d906c3f0262784074bd48468f47d8  gcc/ipa.cc
! d2eed0b68c15e99c452ec622319003a2  gcc/ira-build.cc
! ffd9ef09484853030b98ed202ddd44c6  gcc/ira-color.cc
  35541d3d67c6affe0600d8ad83e83978  gcc/ira-conflicts.cc
  0381959c1444b3546f46622754914676  gcc/ira-costs.cc
  ceb6470c2a3157ee691a6bcd9c8b0c31  gcc/ira-emit.cc
! 620499663821b1d3f210ec72e11415a0  gcc/ira-int.h
  988dd3dd572819850fad4fe2f5a4c10b  gcc/ira-lives.cc
! 5c111b2960664a1ad59dea503cd18e83  gcc/ira.cc
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! 64d1417c0b0cfa4325763861afd430dd  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
! fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
  ef50f102add2cd5a72f5786276d658bf  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/jit/docs/_build/texinfo/Makefile
--- 6651,6735 ----
  a69f44bb2f29f2861e02a4e8ac64c734  gcc/hooks.h
  3a862f932ba5c1ae0b78ab5fb729edb7  gcc/host-default.cc
  479e4406ec671b24bb7ce7de3a604f95  gcc/hosthooks-def.h
! d91033fad96f3bc092e5d8ee261366b8  gcc/hosthooks.h
  f5de8589d497c4d607cadff1ce88dd5c  gcc/hw-doloop.cc
  665c1d736f4909ccb17f662f7f060fd7  gcc/hw-doloop.h
  e5e51e93d7d72e1822440531e4d79d1d  gcc/hwint.cc
  b6b1b7e364f00e9287ee1f56254b9be1  gcc/hwint.h
! f876dff1fae170a8799f50eb44e26cba  gcc/ifcvt.cc
  e2229f9ecac43014084b083ddf2d4637  gcc/ifcvt.h
  370b4a8b9decbb822392c32f5fb92a72  gcc/inchash.cc
  bad6404ce4e7f42ff46ce6ae70c77e99  gcc/inchash.h
  984873a66208a127d95460985f7a8950  gcc/incpath.cc
  17ffbeb68fc11afc463c1f060838519d  gcc/incpath.h
  5aa4092ef811b7dfc5987dcd38205bb6  gcc/init-regs.cc
! c4fbf78964d1ce2aab8aa20eea773fa1  gcc/input.cc
  27f736f8d8cba5e5dd1c30bbe7272db1  gcc/input.h
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! 1ff0f5f61edc2852783a9d13e0c47136  gcc/internal-fn.cc
! 4bd8cb1b1ca1d7ba8c6a23a9384d8402  gcc/internal-fn.def
! f6c8ffd37ade81a99d6e6effb344dae2  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
! a7d9dfb72122a917ffa9ee90152b059e  gcc/ipa-comdats.cc
! a9cc78592f8f3f62b20e2d7f8e3a5dcb  gcc/ipa-cp.cc
  bff71bc7b721a547da3a7ddc6b208fb9  gcc/ipa-cp.h
  0951d893930a76f52aa7e3f0fbd7201e  gcc/ipa-devirt.cc
! 069cadb11f88729832aa5e2667ac73b8  gcc/ipa-fnsummary.cc
! 4fa21859ac86f304159512b0f788ac49  gcc/ipa-fnsummary.h
! 9233e656f2da6d6592752dc8747381eb  gcc/ipa-free-lang-data.cc
! 00dad3a5564e7cc67396124488dfd9b6  gcc/ipa-icf-gimple.cc
  8afa732b4ae1f08ca41426bc2cb25ff9  gcc/ipa-icf-gimple.h
! b9d2c6c17f140b229121cd7d871c1014  gcc/ipa-icf.cc
  d2917be5e45902721d8174996b327a41  gcc/ipa-icf.h
  ba9e8a0870296fd0192e3595d9f582ef  gcc/ipa-inline-analysis.cc
! 010ccf6279af3089cd3f9b3a3a25d993  gcc/ipa-inline-transform.cc
! 2b71885bf178682b164d9c6dbc7999e5  gcc/ipa-inline.cc
  4be9c78f2544b781ae0f89b60cd3dee0  gcc/ipa-inline.h
! a76ffc70577d458a7bb9f70e71695cd8  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
  4d6a8cf9b93ae2035da4279c028c0746  gcc/ipa-modref-tree.cc
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
! e7cd0ecfbe34f7bcabfe2df033371730  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! d6f35ebbb8296a00a1d9dfab83c1b56a  gcc/ipa-param-manipulation.cc
! a4332875948bce6b2c7fe2ddc85c9319  gcc/ipa-param-manipulation.h
! 04528448bac98f001afab7119e2150fe  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
  a25a62951e49120c7882ca20d2486581  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
! 1639296cba757f006f959f70c1ad35c7  gcc/ipa-prop.cc
! 9b0c97913300d98c3ec78027b0857fae  gcc/ipa-prop.h
  14aace4627625a58b2f0a8aec7cd94f5  gcc/ipa-pure-const.cc
  f2d87c9921ca158119d238ee8d50abb6  gcc/ipa-ref.cc
  241970c18f4b9dd3845e663d39673789  gcc/ipa-ref.h
! 90964222df98ec04e723d9348ea3599a  gcc/ipa-reference.cc
  bd31c2a33971ac43c3f05636ba1f5e7a  gcc/ipa-reference.h
! a14dec31253b740dd848f2aa1b45206a  gcc/ipa-split.cc
! 7a7fca2f51eaacc614511f68c14adf14  gcc/ipa-sra.cc
! 483dea5a0a753dacfd1a6afaf008b7cc  gcc/ipa-strub.cc
  4bad901423b9006d36b6a6eebf0ea7ad  gcc/ipa-strub.h
! 53ab854768054e9357a7e46297a433ef  gcc/ipa-utils.cc
! 93f25c7e07ed33d4f529d88a73dde0bb  gcc/ipa-utils.h
! a4305cc116c71e1a6c238562a0063f9f  gcc/ipa-visibility.cc
! 506459e1cbf22101a7eead69b8dee25b  gcc/ipa.cc
! 2216d8cfd74d4b7a2bb4de5cb3425736  gcc/ira-build.cc
! 22cc2db998bf8408453ef4b747694d00  gcc/ira-color.cc
  35541d3d67c6affe0600d8ad83e83978  gcc/ira-conflicts.cc
  0381959c1444b3546f46622754914676  gcc/ira-costs.cc
  ceb6470c2a3157ee691a6bcd9c8b0c31  gcc/ira-emit.cc
! 15fe7b56aa4bf02058ddd0ffb6edb240  gcc/ira-int.h
  988dd3dd572819850fad4fe2f5a4c10b  gcc/ira-lives.cc
! 3f61a473b1515d22e1779f8ffdb1445d  gcc/ira.cc
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! f9fd440ec5f4708ed70f2bfd6f79e613  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
! f59cfd8b37a6dc29fc4889af89fcbec5  gcc/jit/TODO.rst
  ef50f102add2cd5a72f5786276d658bf  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/jit/docs/_build/texinfo/Makefile
*************** aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/ji
*** 6741,6757 ****
  18dfe8d8e74aa3e733d194fddcba5f5b  gcc/jit/docs/cp/intro/index.rst
  6af53106be98f8cc066545ad73f37a31  gcc/jit/docs/cp/intro/tutorial01.rst
  afac1e8865058da3c55940114b030149  gcc/jit/docs/cp/intro/tutorial02.rst
! af4e952226ce1ce80a7e46a256ee8477  gcc/jit/docs/cp/intro/tutorial03.rst
  69636a657c95dfdff830026d2c54a98e  gcc/jit/docs/cp/intro/tutorial04.rst
  3e1a5a63dca29042b217abea36b254a6  gcc/jit/docs/cp/topics/asm.rst
  14bbfeed31aaa107e9577f4e8dd0fbcf  gcc/jit/docs/cp/topics/compilation.rst
  f68d3c20276ff0446d974c173676084c  gcc/jit/docs/cp/topics/contexts.rst
  28b813de2923c2a674098a45860080f6  gcc/jit/docs/cp/topics/expressions.rst
! f3a4e1fef90df856c95eaf5eb4535bda  gcc/jit/docs/cp/topics/functions.rst
  0f700435dbaa47e2db6c722cae912d84  gcc/jit/docs/cp/topics/index.rst
  1e868f17ed2ab13111b0b34624d9c564  gcc/jit/docs/cp/topics/locations.rst
  e1d9b806992d34c48c6a1451419b9d32  gcc/jit/docs/cp/topics/objects.rst
! 723a6bfd76c5182c8acee06062ef1aad  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
  8c1dee71a6fd275637e182048ba44999  gcc/jit/docs/examples/tut01-hello-world.c
  c8a249eeb50f69ba49f1a61546d06ded  gcc/jit/docs/examples/tut01-hello-world.cc
--- 6743,6759 ----
  18dfe8d8e74aa3e733d194fddcba5f5b  gcc/jit/docs/cp/intro/index.rst
  6af53106be98f8cc066545ad73f37a31  gcc/jit/docs/cp/intro/tutorial01.rst
  afac1e8865058da3c55940114b030149  gcc/jit/docs/cp/intro/tutorial02.rst
! 3b4f8a61b75a1338dfda87edf2f03275  gcc/jit/docs/cp/intro/tutorial03.rst
  69636a657c95dfdff830026d2c54a98e  gcc/jit/docs/cp/intro/tutorial04.rst
  3e1a5a63dca29042b217abea36b254a6  gcc/jit/docs/cp/topics/asm.rst
  14bbfeed31aaa107e9577f4e8dd0fbcf  gcc/jit/docs/cp/topics/compilation.rst
  f68d3c20276ff0446d974c173676084c  gcc/jit/docs/cp/topics/contexts.rst
  28b813de2923c2a674098a45860080f6  gcc/jit/docs/cp/topics/expressions.rst
! fb25da84eb1ce92f290e794291c7102c  gcc/jit/docs/cp/topics/functions.rst
  0f700435dbaa47e2db6c722cae912d84  gcc/jit/docs/cp/topics/index.rst
  1e868f17ed2ab13111b0b34624d9c564  gcc/jit/docs/cp/topics/locations.rst
  e1d9b806992d34c48c6a1451419b9d32  gcc/jit/docs/cp/topics/objects.rst
! 3e585f8fed848bb3d777b1b5fec1a83f  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
  8c1dee71a6fd275637e182048ba44999  gcc/jit/docs/examples/tut01-hello-world.c
  c8a249eeb50f69ba49f1a61546d06ded  gcc/jit/docs/examples/tut01-hello-world.cc
*************** d44558bc8dd4ddd3b0c04f0ed251bf24  gcc/ji
*** 6766,6804 ****
  702d45e7be3178381627f7530ad70937  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
  c7b44e5adea7a7eba499586788b2271e  gcc/jit/docs/index.rst
! d190d214a7969047cc7466f55d8b48f3  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
  ef1be4625eb38b9de88b6bcd7c88c380  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
  4ad7ab937168ae428e66a8944103640a  gcc/jit/docs/intro/tutorial01.rst
! a73d1bc379c1a7e6815de9a1e8b8a255  gcc/jit/docs/intro/tutorial02.rst
! 302ec6b1956048a7631ee650feb274b1  gcc/jit/docs/intro/tutorial03.rst
  a715b5bfc0dc5899735d2ab4b8cf81a0  gcc/jit/docs/intro/tutorial04.rst
  701b132b6c9d27bdaf978c2614729041  gcc/jit/docs/intro/tutorial05.rst
  9ed69e3498858f6108906526c30ecee0  gcc/jit/docs/topics/asm.rst
! 7369be8996b98e00db86123974082085  gcc/jit/docs/topics/compatibility.rst
  d30a79357cf7309b8e043c0336e190e4  gcc/jit/docs/topics/compilation.rst
! 5d52559fc6cb25b6509d8d70f490dc8e  gcc/jit/docs/topics/contexts.rst
  5b524b918afaef8400ed74b72c23d026  gcc/jit/docs/topics/expressions.rst
  ce9aaa7891f48c2d12ba4a831dabb7e5  gcc/jit/docs/topics/function-pointers.rst
! 21a676842ec3ea4c60d3805dae2a2449  gcc/jit/docs/topics/functions.rst
  89428211df050d69250f5d89d3f70ad2  gcc/jit/docs/topics/index.rst
  20ffcdce82faff9562f8b4ab3c1db72d  gcc/jit/docs/topics/locations.rst
  dd3e557741686b66ca1167a20b54c8c4  gcc/jit/docs/topics/objects.rst
! dcd80134c1305a2dd554ebb65884ee1c  gcc/jit/docs/topics/performance.rst
! 4fff39e9dde5d0a3aaa7c66eee8c57d0  gcc/jit/docs/topics/types.rst
  35e3b2007081d7c76c5a3d771d4804a2  gcc/jit/dummy-frontend.cc
! c4d0d546a4774b99788e76750cac6b2e  gcc/jit/jit-builtins.cc
  f61f8d4d404f4ad8eb63bd8d2b20364b  gcc/jit/jit-builtins.h
  a62ea7fafe6471c52e3565175e67cf1e  gcc/jit/jit-common.h
  6c6402274f6a542f84e74582de3f1428  gcc/jit/jit-dejagnu.h
  8b911ffa220b476e687953ffbeb7120d  gcc/jit/jit-logging.cc
  7020559ef92ddfc5fbe89dc2d807a1e8  gcc/jit/jit-logging.h
! 477881c5e83410b52764ab6cec2a184b  gcc/jit/jit-playback.cc
  564278cb55710a40327feb824b49fb05  gcc/jit/jit-playback.h
  5ea379d9518786cdee67530fa3e4d9d6  gcc/jit/jit-recording.cc
! ee6c0313e813f59187c94cbdd475edb2  gcc/jit/jit-recording.h
  0da592417dce91260cf30637da2c8a9a  gcc/jit/jit-result.cc
  74832bb1d0d115c99f86460a4575af73  gcc/jit/jit-result.h
  1433c3af63429eaf495e023075e44f02  gcc/jit/jit-spec.cc
--- 6768,6806 ----
  702d45e7be3178381627f7530ad70937  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
  c7b44e5adea7a7eba499586788b2271e  gcc/jit/docs/index.rst
! 1837b0d442d1cc4d6fc932602eae6623  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
  ef1be4625eb38b9de88b6bcd7c88c380  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
  4ad7ab937168ae428e66a8944103640a  gcc/jit/docs/intro/tutorial01.rst
! 261fdcab06fdcb2f5e2cd36c55fb5244  gcc/jit/docs/intro/tutorial02.rst
! a5bfb674b6349229a3e5101c00c746ec  gcc/jit/docs/intro/tutorial03.rst
  a715b5bfc0dc5899735d2ab4b8cf81a0  gcc/jit/docs/intro/tutorial04.rst
  701b132b6c9d27bdaf978c2614729041  gcc/jit/docs/intro/tutorial05.rst
  9ed69e3498858f6108906526c30ecee0  gcc/jit/docs/topics/asm.rst
! 2ac45448d0a458bae6e39faaec49785c  gcc/jit/docs/topics/compatibility.rst
  d30a79357cf7309b8e043c0336e190e4  gcc/jit/docs/topics/compilation.rst
! 6b806e355b7724368b642acde3fd71f9  gcc/jit/docs/topics/contexts.rst
  5b524b918afaef8400ed74b72c23d026  gcc/jit/docs/topics/expressions.rst
  ce9aaa7891f48c2d12ba4a831dabb7e5  gcc/jit/docs/topics/function-pointers.rst
! f836752d7153397c795e77dd91fcd605  gcc/jit/docs/topics/functions.rst
  89428211df050d69250f5d89d3f70ad2  gcc/jit/docs/topics/index.rst
  20ffcdce82faff9562f8b4ab3c1db72d  gcc/jit/docs/topics/locations.rst
  dd3e557741686b66ca1167a20b54c8c4  gcc/jit/docs/topics/objects.rst
! 3a786edd0f536917d48bb12ffaf61510  gcc/jit/docs/topics/performance.rst
! d8542f3f1c42a9fbfb0b720f0426fca1  gcc/jit/docs/topics/types.rst
  35e3b2007081d7c76c5a3d771d4804a2  gcc/jit/dummy-frontend.cc
! 3f2f71f74bbf4cee9c4b3fec16511821  gcc/jit/jit-builtins.cc
  f61f8d4d404f4ad8eb63bd8d2b20364b  gcc/jit/jit-builtins.h
  a62ea7fafe6471c52e3565175e67cf1e  gcc/jit/jit-common.h
  6c6402274f6a542f84e74582de3f1428  gcc/jit/jit-dejagnu.h
  8b911ffa220b476e687953ffbeb7120d  gcc/jit/jit-logging.cc
  7020559ef92ddfc5fbe89dc2d807a1e8  gcc/jit/jit-logging.h
! 979aba710b4513eb5c504c0109439623  gcc/jit/jit-playback.cc
  564278cb55710a40327feb824b49fb05  gcc/jit/jit-playback.h
  5ea379d9518786cdee67530fa3e4d9d6  gcc/jit/jit-recording.cc
! 4e30f5252891a0889cbd356188dab74b  gcc/jit/jit-recording.h
  0da592417dce91260cf30637da2c8a9a  gcc/jit/jit-result.cc
  74832bb1d0d115c99f86460a4575af73  gcc/jit/jit-result.h
  1433c3af63429eaf495e023075e44f02  gcc/jit/jit-spec.cc
*************** bd3ed120f383a7c313a644defb0f5e85  gcc/ji
*** 6811,6824 ****
  06738451a256364b1635493756c9e63a  gcc/jit/jit-w32.cc
  dbe1c7cd9b6c2144785270d7d92b6d0a  gcc/jit/jit-w32.h
  356d828dc1d398757c009123394406c5  gcc/jit/libgccjit++.h
! 7a60356c272514bb62e6e20704aad172  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
! 175ca350cf51d56a7eaf72e6b286cefd  gcc/jit/libgccjit.h
  2231affe16b9511efa0fd9f7c8acc0ea  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  d572540923b7254057dfb4b188fd1f5b  gcc/json-diagnostic.cc
  e0e5a496fd0a5916ecac553777ce07e4  gcc/json-diagnostic.h
! 811a81f6105b4fa37f3cd434779ba2f1  gcc/json-parsing.cc
  27a2ff1923b71a5edb954d3878bbcca7  gcc/json-parsing.h
  a385169af5b029bc24306c678f1db172  gcc/json-pointer-parsing.cc
  99bf5b86b7750607d1499699f5b9ec81  gcc/json-pointer-parsing.h
--- 6813,6826 ----
  06738451a256364b1635493756c9e63a  gcc/jit/jit-w32.cc
  dbe1c7cd9b6c2144785270d7d92b6d0a  gcc/jit/jit-w32.h
  356d828dc1d398757c009123394406c5  gcc/jit/libgccjit++.h
! cdb1f349d15e899ed2ebdcd79afc5a51  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
! 2b777b59e6eefa68b7ab578a140b89c0  gcc/jit/libgccjit.h
  2231affe16b9511efa0fd9f7c8acc0ea  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  d572540923b7254057dfb4b188fd1f5b  gcc/json-diagnostic.cc
  e0e5a496fd0a5916ecac553777ce07e4  gcc/json-diagnostic.h
! f3b4d4b27f533bba2c6ec0d3483e1a56  gcc/json-parsing.cc
  27a2ff1923b71a5edb954d3878bbcca7  gcc/json-parsing.h
  a385169af5b029bc24306c678f1db172  gcc/json-pointer-parsing.cc
  99bf5b86b7750607d1499699f5b9ec81  gcc/json-pointer-parsing.h
*************** f723ae7af6ce8158447120f28eebe476  gcc/js
*** 6827,6833 ****
  598bd9cf01e2b97715ef52af5b0f2241  gcc/jump.cc
  db38a11d4dce106f820651752f564683  gcc/langhooks-def.h
  ca1a1029159f67a3e118460330d10031  gcc/langhooks.cc
! 94c1d2790975a583c574869740ec0f0e  gcc/langhooks.h
  e5aaf0926ffa1d66709fdc320212070a  gcc/late-combine.cc
  4d0b64200ad1d5cc3dd88026fa268820  gcc/lazily-created.h
  e8cbb0a4e8793ea30337c86b60f8f64a  gcc/lcm.cc
--- 6829,6835 ----
  598bd9cf01e2b97715ef52af5b0f2241  gcc/jump.cc
  db38a11d4dce106f820651752f564683  gcc/langhooks-def.h
  ca1a1029159f67a3e118460330d10031  gcc/langhooks.cc
! 813e5b7aea1559276325708debdfa4bd  gcc/langhooks.h
  e5aaf0926ffa1d66709fdc320212070a  gcc/late-combine.cc
  4d0b64200ad1d5cc3dd88026fa268820  gcc/lazily-created.h
  e8cbb0a4e8793ea30337c86b60f8f64a  gcc/lcm.cc
*************** e05914fad6bd025e9b0679bc2b67e17f  gcc/lc
*** 6835,6842 ****
  69d7d786167955caa8935c62a136572a  gcc/libfuncs.h
  5dfa4307fadfc21e29f7033260d947fe  gcc/libgdiagnostics++.h
  9cdc06cea02544422c6d9de6b93bbf59  gcc/libgdiagnostics-private.h
! 7439328930a77e96f7d910687d75b222  gcc/libgdiagnostics.cc
! 4d4d0cd8dcda7b7689febc6aa0b4dec9  gcc/libgdiagnostics.h
  a275aabf8e35245cb8dac2644db84e90  gcc/libgdiagnostics.map
  7202651b4ebade30785d98d66ba0272f  gcc/libsarifreplay.cc
  9dddaecb6e70b0ba0fe4f7070849aac8  gcc/libsarifreplay.h
--- 6837,6844 ----
  69d7d786167955caa8935c62a136572a  gcc/libfuncs.h
  5dfa4307fadfc21e29f7033260d947fe  gcc/libgdiagnostics++.h
  9cdc06cea02544422c6d9de6b93bbf59  gcc/libgdiagnostics-private.h
! 62563e8ead7be958555bf8e72f356bb0  gcc/libgdiagnostics.cc
! f6be28e90214eab6031460cdd6b2f635  gcc/libgdiagnostics.h
  a275aabf8e35245cb8dac2644db84e90  gcc/libgdiagnostics.map
  7202651b4ebade30785d98d66ba0272f  gcc/libsarifreplay.cc
  9dddaecb6e70b0ba0fe4f7070849aac8  gcc/libsarifreplay.h
*************** e19816bbba3b641b67df23200047c6ae  gcc/li
*** 6848,6902 ****
  7c16e89438bc7bfb231d0318783fdd83  gcc/lockfile.h
  f706fe94b3a789d30e0800c32f27c242  gcc/loop-doloop.cc
  5e9eef3deae00657d9fae0f862254002  gcc/loop-init.cc
! 238af7ac2e7f736ad6b21b4f7c735f3c  gcc/loop-invariant.cc
  070c1552cdf3563c325e7f168abaf990  gcc/loop-iv.cc
  360e5741e81a23bebec6e8a9a8484fd2  gcc/loop-unroll.cc
  7812914e23c56c8dc2696a2147331691  gcc/loop-unroll.h
  c6ab645f373e1d6e9ddd212bfc3a95ba  gcc/lower-subreg.cc
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
! 841cfef931adce1d98b9755eb3231569  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! a1ac3fc66a444443c5be7b1a0b99c940  gcc/lra-constraints.cc
! 953d5c3ffc1f553b43a2dfd2cdf5af19  gcc/lra-eliminations.cc
  ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  568d6d2d43a7728ab0b54f7e837b653a  gcc/lra-lives.cc
! 54c466371f8bd5330585a882690ea725  gcc/lra-remat.cc
  39b048a65c498c5357cb27a2ce50a4df  gcc/lra-spills.cc
  b9fcc1996ccb833f1d43c26a4c7f9cf6  gcc/lra.cc
  7a689be5eced38293e966e1291a1d1b9  gcc/lra.h
! a2447b9f89d62f80177f9fa725d4749e  gcc/lto-cgraph.cc
  642fbdeaf8df2a150746f15ad409d071  gcc/lto-compress.cc
  c659fc218c745eb22044da66f2424ede  gcc/lto-compress.h
! a2303b56e4dc322d914b1efe0617e2ba  gcc/lto-ltrans-cache.cc
  3f25ddb84fb557751613b1d2f7123cc8  gcc/lto-ltrans-cache.h
  442399eb6d061d0396c090387026857d  gcc/lto-opts.cc
  83a38b1ef3670762d9336c0229c75127  gcc/lto-section-in.cc
  194f259575b70213773e1c8c0f8fcb5b  gcc/lto-section-names.h
  fa334f7be97c3e817d1992afa3d08ab9  gcc/lto-section-out.cc
! a7e9e00378501c6078d977c5ea3fabb3  gcc/lto-streamer-in.cc
! 09f467bb290592d8fe5a6fb2f07d7ca4  gcc/lto-streamer-out.cc
  6c99c98c397a53a6a56da792d20092b0  gcc/lto-streamer.cc
! 2d378e58ffe32f0e50ca9de25f61ef5f  gcc/lto-streamer.h
! ac1521f6b64c9707508bdf1e7d6be3cf  gcc/lto-wrapper.cc
! eac2752759507428169b863a54b05f4c  gcc/lto/ChangeLog
! 134de5a17ec798ec16df035aee2f01cf  gcc/lto/Make-lang.in
  107bbf87618e39ff03662c0cd52a3f35  gcc/lto/common.cc
  eb5f3398fbf5d50b50c315e2d5891e25  gcc/lto/common.h
  7cfda51bb74b97d30a44070bb3888da7  gcc/lto/config-lang.in
  cf03da3419b3411b1f34eec4bedd9929  gcc/lto/lang-specs.h
  607e203bd47f1482dabbb19305db2bbd  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! fd64987e12215fb3f9f156e8e1c06e1f  gcc/lto/lto-common.cc
  bd162a24ac9bded9022e1bd104c1c013  gcc/lto/lto-common.h
  29453d6e3c86dfa353e934a16aa96ce5  gcc/lto/lto-dump.cc
! a2c3d2b4ff2f28dc5c23ba7c85d4b17d  gcc/lto/lto-lang.cc
  d79b622fd1c2cc1ce24cbaec591de26a  gcc/lto/lto-object.cc
! 6b42550b459b3497cf9ec99c9f2c4094  gcc/lto/lto-partition.cc
  33ccaf341a69e9dc93b04e32a3cd9fff  gcc/lto/lto-partition.h
! 698737eb2bd4fb2329057e4d93502636  gcc/lto/lto-symtab.cc
  a7092ba7593f4c0f94ce57ebba32641e  gcc/lto/lto-symtab.h
  5d650e8bc18da5b7150e7080f68c9b91  gcc/lto/lto-tree.h
! f10e2305ef401f9fe9c5cd471948afea  gcc/lto/lto.cc
  e0d99466f393722c3e10caf535614ff7  gcc/lto/lto.h
  41f943bdc734bffe0c6faf690dd66924  gcc/m2/COPYING.FDL
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
--- 6850,6904 ----
  7c16e89438bc7bfb231d0318783fdd83  gcc/lockfile.h
  f706fe94b3a789d30e0800c32f27c242  gcc/loop-doloop.cc
  5e9eef3deae00657d9fae0f862254002  gcc/loop-init.cc
! 0a6f1ccf1c041629f1c0270570ecb601  gcc/loop-invariant.cc
  070c1552cdf3563c325e7f168abaf990  gcc/loop-iv.cc
  360e5741e81a23bebec6e8a9a8484fd2  gcc/loop-unroll.cc
  7812914e23c56c8dc2696a2147331691  gcc/loop-unroll.h
  c6ab645f373e1d6e9ddd212bfc3a95ba  gcc/lower-subreg.cc
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
! 4e64f9a8fc62fcb9b7a7fb3362cccd2f  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! 147cfecf8bf1cea05242c2f732f06eff  gcc/lra-constraints.cc
! f1f18b74d117415a843f7b483ec4d2d7  gcc/lra-eliminations.cc
  ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  568d6d2d43a7728ab0b54f7e837b653a  gcc/lra-lives.cc
! b6230d4e2eccd718fc469d99ce999ba9  gcc/lra-remat.cc
  39b048a65c498c5357cb27a2ce50a4df  gcc/lra-spills.cc
  b9fcc1996ccb833f1d43c26a4c7f9cf6  gcc/lra.cc
  7a689be5eced38293e966e1291a1d1b9  gcc/lra.h
! 1a1f5f815cdc6c472c7b44ce9c7ad4f9  gcc/lto-cgraph.cc
  642fbdeaf8df2a150746f15ad409d071  gcc/lto-compress.cc
  c659fc218c745eb22044da66f2424ede  gcc/lto-compress.h
! a817f4a755c45e74106eccb676e0d5ab  gcc/lto-ltrans-cache.cc
  3f25ddb84fb557751613b1d2f7123cc8  gcc/lto-ltrans-cache.h
  442399eb6d061d0396c090387026857d  gcc/lto-opts.cc
  83a38b1ef3670762d9336c0229c75127  gcc/lto-section-in.cc
  194f259575b70213773e1c8c0f8fcb5b  gcc/lto-section-names.h
  fa334f7be97c3e817d1992afa3d08ab9  gcc/lto-section-out.cc
! 4aa47048a12e0400a858dd6cf7a426b7  gcc/lto-streamer-in.cc
! 12db435d252d97ba57953664b1867063  gcc/lto-streamer-out.cc
  6c99c98c397a53a6a56da792d20092b0  gcc/lto-streamer.cc
! 0fb9ed18ca0ba35bcf8d8a6fb2f5993d  gcc/lto-streamer.h
! 820f40c1512748dbffd8f8ea35738003  gcc/lto-wrapper.cc
! 778ec50a448fb6d09ab2d8b1e29dedf2  gcc/lto/ChangeLog
! e2d60c6ff80e4c081f58d1462f513810  gcc/lto/Make-lang.in
  107bbf87618e39ff03662c0cd52a3f35  gcc/lto/common.cc
  eb5f3398fbf5d50b50c315e2d5891e25  gcc/lto/common.h
  7cfda51bb74b97d30a44070bb3888da7  gcc/lto/config-lang.in
  cf03da3419b3411b1f34eec4bedd9929  gcc/lto/lang-specs.h
  607e203bd47f1482dabbb19305db2bbd  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! 81ee7764a72079942e9c6b9b8e519e8a  gcc/lto/lto-common.cc
  bd162a24ac9bded9022e1bd104c1c013  gcc/lto/lto-common.h
  29453d6e3c86dfa353e934a16aa96ce5  gcc/lto/lto-dump.cc
! 83dd99e4cccbae3b6e5c3e101bd29c79  gcc/lto/lto-lang.cc
  d79b622fd1c2cc1ce24cbaec591de26a  gcc/lto/lto-object.cc
! 77690459b479f4bf9b87bed5187bd6cf  gcc/lto/lto-partition.cc
  33ccaf341a69e9dc93b04e32a3cd9fff  gcc/lto/lto-partition.h
! 0d0496bfad4fed1da7bba3bd2c2f02b6  gcc/lto/lto-symtab.cc
  a7092ba7593f4c0f94ce57ebba32641e  gcc/lto/lto-symtab.h
  5d650e8bc18da5b7150e7080f68c9b91  gcc/lto/lto-tree.h
! 69e82bc5799068031ce9cfad6f537e28  gcc/lto/lto.cc
  e0d99466f393722c3e10caf535614ff7  gcc/lto/lto.h
  41f943bdc734bffe0c6faf690dd66924  gcc/m2/COPYING.FDL
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
*************** cd3e00ace6dd26c0315ec6c474d5b5c6  gcc/m2
*** 7875,7902 ****
  5291f32526adc61f22c26f6aeadba4a2  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
! 0c9209452a934f189aa0860038b3a65c  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  691acd36e3b6385e31c2985e983dfaf9  gcc/match-sat-alu.pd
! e0ac1cd6ea4669aee5e47a7394e2c297  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
! 4f86eeea7af520ce0b773c1f2e34b5b4  gcc/mem-stats.h
  1857dc49df435ef8450bae9f8730d33f  gcc/memmodel.h
  6c92d4ee9086e27af2ef22fbd30322bb  gcc/memory-block.cc
  731dc54ad27c548430c126b5b054151e  gcc/memory-block.h
  476be2c2ec5a2b04b95790322b9b6fde  gcc/mkconfig.sh
  1c680ed2fea24d63c34c8362970ded74  gcc/mode-classes.def
! db866ca5438b2b6aee45f2d41ae0a2a4  gcc/mode-switching.cc
! 99103dba9ded1d7f4871fe40923b8e08  gcc/modulo-sched.cc
  ab360f5772fb7a87b6119cf198a8246f  gcc/multiple_target.cc
  f98f5be75203b0e833e7bcf563eecf14  gcc/mux-utils.h
! e181eb5f73a6d1130831161c2344d8b4  gcc/objc/ChangeLog
  e00206160b117e3384f6e554cb06b174  gcc/objc/Make-lang.in
  f3dbb06248bf04272bf34751540a8844  gcc/objc/config-lang.in
  296b176173a1ff046cbb5bb721d9f576  gcc/objc/lang-specs.h
! 3410278138f382bf16f4002cf9bb859d  gcc/objc/objc-act.cc
! 112100d0571ce3d967bdd791686e16ba  gcc/objc/objc-act.h
  2016784e712e4790f47a560e52267c52  gcc/objc/objc-encoding.cc
  638ad042ad5712a6da28ea792d9e1853  gcc/objc/objc-encoding.h
  5592fb91591ac18459f377d882097ac2  gcc/objc/objc-gnu-runtime-abi-01.cc
--- 7877,7904 ----
  5291f32526adc61f22c26f6aeadba4a2  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
! 89d79df4a8d2185bb8557998f075e087  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  691acd36e3b6385e31c2985e983dfaf9  gcc/match-sat-alu.pd
! ff09c0cbc85d34b7238ff33d6937a7e1  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
! 14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
  1857dc49df435ef8450bae9f8730d33f  gcc/memmodel.h
  6c92d4ee9086e27af2ef22fbd30322bb  gcc/memory-block.cc
  731dc54ad27c548430c126b5b054151e  gcc/memory-block.h
  476be2c2ec5a2b04b95790322b9b6fde  gcc/mkconfig.sh
  1c680ed2fea24d63c34c8362970ded74  gcc/mode-classes.def
! 173becf2370cc59c9b9db1f353933280  gcc/mode-switching.cc
! b651f65860de6833efe242939d7edf33  gcc/modulo-sched.cc
  ab360f5772fb7a87b6119cf198a8246f  gcc/multiple_target.cc
  f98f5be75203b0e833e7bcf563eecf14  gcc/mux-utils.h
! a23e7e9366339e50140d0a9cca0d3866  gcc/objc/ChangeLog
  e00206160b117e3384f6e554cb06b174  gcc/objc/Make-lang.in
  f3dbb06248bf04272bf34751540a8844  gcc/objc/config-lang.in
  296b176173a1ff046cbb5bb721d9f576  gcc/objc/lang-specs.h
! 3825c2f27078a9f177d90718ff68a454  gcc/objc/objc-act.cc
! 485833e401f6b31ddb9d19733e245cff  gcc/objc/objc-act.h
  2016784e712e4790f47a560e52267c52  gcc/objc/objc-encoding.cc
  638ad042ad5712a6da28ea792d9e1853  gcc/objc/objc-encoding.h
  5592fb91591ac18459f377d882097ac2  gcc/objc/objc-gnu-runtime-abi-01.cc
*************** c5cc36ec357f0ce91004dc9630309038  gcc/ob
*** 7906,7912 ****
  2c06dd0b759fa7e00f5cd998818160a8  gcc/objc/objc-next-metadata-tags.h
  c9dc2763bcd3be814923a8a90faf8b03  gcc/objc/objc-next-runtime-abi-01.cc
  038e6c110705222c3d8b8b0b4789637f  gcc/objc/objc-next-runtime-abi-02.cc
! 18ba36853ef3fae6673f15135eebd1c5  gcc/objc/objc-runtime-hooks.h
  82b1fd82fb8a2ba9e2a8fc3f46ac8a81  gcc/objc/objc-runtime-shared-support.cc
  6594f29228dbfaa3e7e65104fb3e5dcc  gcc/objc/objc-runtime-shared-support.h
  8a1060d8fadfe53ae2651c9f887142ef  gcc/objc/objc-tree.def
--- 7908,7914 ----
  2c06dd0b759fa7e00f5cd998818160a8  gcc/objc/objc-next-metadata-tags.h
  c9dc2763bcd3be814923a8a90faf8b03  gcc/objc/objc-next-runtime-abi-01.cc
  038e6c110705222c3d8b8b0b4789637f  gcc/objc/objc-next-runtime-abi-02.cc
! d716426f842510f560782580a02b87e8  gcc/objc/objc-runtime-hooks.h
  82b1fd82fb8a2ba9e2a8fc3f46ac8a81  gcc/objc/objc-runtime-shared-support.cc
  6594f29228dbfaa3e7e65104fb3e5dcc  gcc/objc/objc-runtime-shared-support.h
  8a1060d8fadfe53ae2651c9f887142ef  gcc/objc/objc-tree.def
*************** aa2631a800917f0a9b68ef9c3c6722fc  gcc/ob
*** 7920,7937 ****
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
  cdc26bd8ead0ef188e59165e859c822d  gcc/omp-builtins.def
! 69a9c2c8d43088e61b046c23efb7f450  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
! c22ffb16a56aa66e925e1b9d40bfa51f  gcc/omp-general.cc
  23ef2077fc947478cfb1d807aff87bee  gcc/omp-general.h
! 5767699b1f3506606c448b60393ef333  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
! ee9366bb8cc47c2c1d0afc0557831e4c  gcc/omp-offload.cc
  138089e40ad5a17f7c22aaf5abfe9743  gcc/omp-offload.h
  8702574bc611ec74396ee89f3a23626b  gcc/omp-selectors.h
! d405908d1384f370ce94c5a2ee472cef  gcc/omp-simd-clone.cc
  0f53435ba3b48b3ba50eb36cacda362a  gcc/omp-simd-clone.h
  3340340ddd004f6a4db6290704d60ddb  gcc/opt-functions.awk
  a497ad43b29c18aa6006c31050e37f1c  gcc/opt-gather.awk
--- 7922,7939 ----
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
  cdc26bd8ead0ef188e59165e859c822d  gcc/omp-builtins.def
! 09ac26948ec75f80889a2333c0395aa3  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
! 2c16523de24fa67cf3b6f66ae7780992  gcc/omp-general.cc
  23ef2077fc947478cfb1d807aff87bee  gcc/omp-general.h
! dda814fcd08b23ffea65b97e94f09081  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
! ae7de9210afb99dc1a8b512d04e32d5a  gcc/omp-offload.cc
  138089e40ad5a17f7c22aaf5abfe9743  gcc/omp-offload.h
  8702574bc611ec74396ee89f3a23626b  gcc/omp-selectors.h
! b958bb5037f7a7dbb80dfda1997aff09  gcc/omp-simd-clone.cc
  0f53435ba3b48b3ba50eb36cacda362a  gcc/omp-simd-clone.h
  3340340ddd004f6a4db6290704d60ddb  gcc/opt-functions.awk
  a497ad43b29c18aa6006c31050e37f1c  gcc/opt-gather.awk
*************** a497ad43b29c18aa6006c31050e37f1c  gcc/op
*** 7943,7953 ****
  83e2949ab4f0a281b29d45764ee87557  gcc/opt-suggestions.h
  eba7a25f3a38ce52b4cf970cc93f66ea  gcc/optabs-libfuncs.cc
  22f466f2c62ac3f6d1a71c7d7911d694  gcc/optabs-libfuncs.h
! df4d718a9c9934a10272384f58351e0f  gcc/optabs-query.cc
! e45c50053d2064312ea73720cdb8e5d9  gcc/optabs-query.h
  0135b6d221cd61d59fecebf7206e304e  gcc/optabs-tree.cc
  201b2569727bf062f908121f208a860f  gcc/optabs-tree.h
! 93076289590d19fd45a8e3070ef29137  gcc/optabs.cc
  e41b2d12060d81ec0196a849b4956aab  gcc/optabs.def
  81371a1b977075ff9a2b9637ac88cfa3  gcc/optabs.h
  10284dae2b1b50618cee778ef473c34c  gcc/optc-gen.awk
--- 7945,7955 ----
  83e2949ab4f0a281b29d45764ee87557  gcc/opt-suggestions.h
  eba7a25f3a38ce52b4cf970cc93f66ea  gcc/optabs-libfuncs.cc
  22f466f2c62ac3f6d1a71c7d7911d694  gcc/optabs-libfuncs.h
! befeb0c58dbebf62d43f2c2d3d025afb  gcc/optabs-query.cc
! 6e866f616ec7fb7f4c791b5ad349a2cd  gcc/optabs-query.h
  0135b6d221cd61d59fecebf7206e304e  gcc/optabs-tree.cc
  201b2569727bf062f908121f208a860f  gcc/optabs-tree.h
! f12c459735c0bedfe03925832f372f78  gcc/optabs.cc
  e41b2d12060d81ec0196a849b4956aab  gcc/optabs.def
  81371a1b977075ff9a2b9637ac88cfa3  gcc/optabs.h
  10284dae2b1b50618cee778ef473c34c  gcc/optc-gen.awk
*************** b8ea5cc8fc796c7d794e5fc3cf1feb87  gcc/op
*** 7961,7984 ****
  cdbb58e9722acd3ea6e5f46b3fdab810  gcc/opts-common.cc
  c9b2e818258f43e0a779e4c3caa8801d  gcc/opts-diagnostic.cc
  59b44247c12669685779dfba9d301863  gcc/opts-diagnostic.h
! 2fc49f6281f39f394f1d5c0f4feb929b  gcc/opts-global.cc
  f55f0f0a86a11d13824924aac8c98a68  gcc/opts-jobserver.h
! 87482d27be3a859ab3e475b7d20f657f  gcc/opts.cc
! 616f2783bfb18bfb6cbb11881fb0aeaf  gcc/opts.h
  413859dddc66f1f7d8ea8078e096c288  gcc/ordered-hash-map-tests.cc
  fef443de1557117f8c2847206a2ea8f5  gcc/ordered-hash-map.h
  7c8d7dc194f39f5b8c69d7f0d05bc335  gcc/output.h
! 5f96d548f10507478f5096f298505278  gcc/pair-fusion.cc
! 69198894caa672a2294267474e494d8b  gcc/pair-fusion.h
  6c13607270a8afe1edb03d80a657a846  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  ce920ed7f2cc74b4a9bc390c39f4cbee  gcc/pass_manager.h
! 23b3f227e4a3edb6df0c76124df99274  gcc/passes.cc
  d77f8f9495142a091f02e74420a91a51  gcc/passes.def
! 51273d95ed168859744a17468a7b3bda  gcc/path-coverage.cc
  a804a634cdc9dbcb92434c9e03799a1e  gcc/pex.cc
  b2f9b18f946c2e60e4f6cba0ab2df54e  gcc/pex.h
! 51380e9db88b682bc96a35cc4bce56a5  gcc/plugin.cc
  af6268dd53154434eb4c4d1c299e0ee2  gcc/plugin.def
  5678cfbc9cf98f9e69bee1118c787a42  gcc/plugin.h
  3400fea3b23f6357e8e4c1b496944dc4  gcc/po/ChangeLog
--- 7963,7986 ----
  cdbb58e9722acd3ea6e5f46b3fdab810  gcc/opts-common.cc
  c9b2e818258f43e0a779e4c3caa8801d  gcc/opts-diagnostic.cc
  59b44247c12669685779dfba9d301863  gcc/opts-diagnostic.h
! dc202dff2d7d4cb632307dc4915602b0  gcc/opts-global.cc
  f55f0f0a86a11d13824924aac8c98a68  gcc/opts-jobserver.h
! 6b1eedb9e84e83bcc62a8439d706b442  gcc/opts.cc
! 7c2605b6227dcf8eb80f826ac7b07e83  gcc/opts.h
  413859dddc66f1f7d8ea8078e096c288  gcc/ordered-hash-map-tests.cc
  fef443de1557117f8c2847206a2ea8f5  gcc/ordered-hash-map.h
  7c8d7dc194f39f5b8c69d7f0d05bc335  gcc/output.h
! 7aaac9b28a6df485fbbf75d4ed3086b8  gcc/pair-fusion.cc
! d9e22e28b3080527b0c29e8bc4e38c95  gcc/pair-fusion.h
  6c13607270a8afe1edb03d80a657a846  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  ce920ed7f2cc74b4a9bc390c39f4cbee  gcc/pass_manager.h
! c1386b247569007de9fda83d55b1aebf  gcc/passes.cc
  d77f8f9495142a091f02e74420a91a51  gcc/passes.def
! 0355d2054ba5f7935e870d42ea044cbf  gcc/path-coverage.cc
  a804a634cdc9dbcb92434c9e03799a1e  gcc/pex.cc
  b2f9b18f946c2e60e4f6cba0ab2df54e  gcc/pex.h
! 4c58d163e773c8a97fe95f623b089641  gcc/plugin.cc
  af6268dd53154434eb4c4d1c299e0ee2  gcc/plugin.def
  5678cfbc9cf98f9e69bee1118c787a42  gcc/plugin.h
  3400fea3b23f6357e8e4c1b496944dc4  gcc/po/ChangeLog
*************** b33f539d1d64f0e68a3b776164ca1f59  gcc/po
*** 8005,8069 ****
  a98a8f0aa188fa14ae528dfe8be52db4  gcc/po/vi.po
  4003fcad23fde367da03270f2632e17e  gcc/po/zh_CN.po
  9ead8430a012fd202b7762e4866a85b4  gcc/po/zh_TW.po
! 0016c64b1dc5e95008ae058ae7eba1a1  gcc/pointer-query.cc
  728738ceae729bc0f318f8accf6244c0  gcc/pointer-query.h
  8fb747d77281aa1c6e2fbc0f106ef7f5  gcc/poly-int-types.h
! 8e1ad60e1364794de50c869dcc263271  gcc/poly-int.h
! a76391e64013dd91801b9ed642b3c817  gcc/postreload-gcse.cc
  4691cef63f7b2f9321545a30af1dde82  gcc/postreload.cc
! 93fa12f13036c5d9952405e984cc24cd  gcc/predict.cc
  94064e652fd0a138c0dc656a3d96a966  gcc/predict.def
  c6b043ce6b64f82009d2f3763b6360db  gcc/predict.h
  eb92f089fe1cc11940fb41c338d0b6be  gcc/prefix.cc
  003323b16487203413f2daee66ebd8cf  gcc/prefix.h
! 5c43118ee23806d01ac9d248dad17fcb  gcc/pretty-print-format-impl.h
  58e10656420cdc69f90a551f0e66f193  gcc/pretty-print-markup-json.h
  b1408122718335443829fcfe2d5dbcf3  gcc/pretty-print-markup.h
  0b6b1f1f8720d57a0e539c5cfb4cb0fc  gcc/pretty-print-token-buffer.cc
  4e151c2f958006c15006eaaa44761320  gcc/pretty-print-token-buffer.h
  598dd697f388001a4fa8f40126a02d7e  gcc/pretty-print-urlifier.h
  413cf96df7e11826c7eccdaa49231cbe  gcc/pretty-print.cc
! cfcb5ae7d574d818b280534a26a461bb  gcc/pretty-print.h
! 902a3ede86fca66395915f9462f949f2  gcc/prime-paths.cc
  4791763965e448615fab35a2eda1f6bd  gcc/print-rtl-function.cc
! 740eac6d337d8af112f3f42511132e08  gcc/print-rtl.cc
  2cd52b1a67b570ee31c684eb846def0f  gcc/print-rtl.h
  f26f8ff623fefa8bdfe18ead347e914f  gcc/print-tree.cc
  db24d9f938cefb2027e91a5068f5f1d0  gcc/print-tree.h
  7e39922ba013c9a602f60c45e332ff09  gcc/profile-count.cc
! 4591a0265a903c86d026a1642b71188a  gcc/profile-count.h
  66a4cbd0d34605100ec913cd7c446296  gcc/profile.cc
  75fc41809b74ed162233e70c20df1264  gcc/profile.h
! 7f9b6625aa17fa4341b812c209fafb26  gcc/pta-andersen.cc
  bea702966301b6b7e6294ef33ec8b443  gcc/pta-andersen.h
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
  baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
  5b7facbc76df7d457131d6ab875c3b62  gcc/range-op-mixed.h
  69b841901021a7600a6c55aa08c8a6ab  gcc/range-op-ptr.cc
! ae0b4a659b3f4a0952726601a7f4dcde  gcc/range-op.cc
! 41245bef16499e87b06264ddc3caa493  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
  685295910dd30e1779dc47adcdaa7cbb  gcc/read-md.cc
! 16c25d0d963b52a61f08bff1e5bed4a4  gcc/read-md.h
! b8895f7e982e18901ad6f4ea1cfbe0db  gcc/read-rtl-function.cc
  d1e8f06dfe7f0d64ebabef7c52035296  gcc/read-rtl-function.h
  0f76d73b8755bc8a6b10b87d6dc76632  gcc/read-rtl.cc
! 080926a212f3d4fab9096e6394ba1ddb  gcc/real.cc
  45b87c4baefe4e526664defa3b15f968  gcc/real.h
  034d6804511ba5d0c988e1e98ab47d5d  gcc/realmpfr.cc
  5ada18d8279938c02c4d9f3751acf660  gcc/realmpfr.h
  cf3431811e710981fe8c6f711b598914  gcc/recog.cc
! 70ff0cfdb2d7d28d6188422d526830c6  gcc/recog.h
! 8bff9b4e294312d53b3edc3a5599f0a3  gcc/ree.cc
! cccab40b3ac43a58e799adb120a5dfbf  gcc/reg-notes.def
  7a6bc7c58286682936006bbdfed0b1fe  gcc/reg-stack.cc
  cbae359b740a87a489f2cbe509ba7e6d  gcc/regcprop.cc
  e871bb7c9089d9ade710735b0803cff1  gcc/regcprop.h
  435320d85f05d8915fcbd110db42a930  gcc/regenerate-attr-urls.py
  f0820f7cb3f73e347a678f682c773982  gcc/regenerate-opt-urls.py
! 0e3a39b230beb335e14d1d6336b7985e  gcc/reginfo.cc
  4fc0401c76f75e872ceb423b786535b3  gcc/regrename.cc
  3305b4e257d68cf35538509ba53235c4  gcc/regrename.h
  6580474411878a2b9597d3b70f7de88d  gcc/regs.h
--- 8007,8071 ----
  a98a8f0aa188fa14ae528dfe8be52db4  gcc/po/vi.po
  4003fcad23fde367da03270f2632e17e  gcc/po/zh_CN.po
  9ead8430a012fd202b7762e4866a85b4  gcc/po/zh_TW.po
! 793b6858d4e3f63b57b893a499d3c32b  gcc/pointer-query.cc
  728738ceae729bc0f318f8accf6244c0  gcc/pointer-query.h
  8fb747d77281aa1c6e2fbc0f106ef7f5  gcc/poly-int-types.h
! 35977a15512165ff40e54711c2edb883  gcc/poly-int.h
! 4cd887458a8f36ed38ce5b031dc61b73  gcc/postreload-gcse.cc
  4691cef63f7b2f9321545a30af1dde82  gcc/postreload.cc
! c3931890b6ca4b8016e92f1657d4b99d  gcc/predict.cc
  94064e652fd0a138c0dc656a3d96a966  gcc/predict.def
  c6b043ce6b64f82009d2f3763b6360db  gcc/predict.h
  eb92f089fe1cc11940fb41c338d0b6be  gcc/prefix.cc
  003323b16487203413f2daee66ebd8cf  gcc/prefix.h
! 60515b0bb80a103dd37e453d02d73ae0  gcc/pretty-print-format-impl.h
  58e10656420cdc69f90a551f0e66f193  gcc/pretty-print-markup-json.h
  b1408122718335443829fcfe2d5dbcf3  gcc/pretty-print-markup.h
  0b6b1f1f8720d57a0e539c5cfb4cb0fc  gcc/pretty-print-token-buffer.cc
  4e151c2f958006c15006eaaa44761320  gcc/pretty-print-token-buffer.h
  598dd697f388001a4fa8f40126a02d7e  gcc/pretty-print-urlifier.h
  413cf96df7e11826c7eccdaa49231cbe  gcc/pretty-print.cc
! 70a9d1a2afc62db998ad0103753f2508  gcc/pretty-print.h
! 6980e1765b2d7f75c604d4e11294a1fa  gcc/prime-paths.cc
  4791763965e448615fab35a2eda1f6bd  gcc/print-rtl-function.cc
! 119caf0b6c96668ad2576ff0943e1c7a  gcc/print-rtl.cc
  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
  66a4cbd0d34605100ec913cd7c446296  gcc/profile.cc
  75fc41809b74ed162233e70c20df1264  gcc/profile.h
! 3ed55ba6efd01e68096062e3c1ba0816  gcc/pta-andersen.cc
  bea702966301b6b7e6294ef33ec8b443  gcc/pta-andersen.h
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
  baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
  5b7facbc76df7d457131d6ab875c3b62  gcc/range-op-mixed.h
  69b841901021a7600a6c55aa08c8a6ab  gcc/range-op-ptr.cc
! 2e4c22a1c5f76cb521b42aa0313d7b89  gcc/range-op.cc
! 52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
  685295910dd30e1779dc47adcdaa7cbb  gcc/read-md.cc
! e0db2c8d8be3e6e434a068eea0fa67c1  gcc/read-md.h
! 70e0d9758e59e2871d438003d64520c8  gcc/read-rtl-function.cc
  d1e8f06dfe7f0d64ebabef7c52035296  gcc/read-rtl-function.h
  0f76d73b8755bc8a6b10b87d6dc76632  gcc/read-rtl.cc
! 316f13a6d6b7f9236d2683827262f362  gcc/real.cc
  45b87c4baefe4e526664defa3b15f968  gcc/real.h
  034d6804511ba5d0c988e1e98ab47d5d  gcc/realmpfr.cc
  5ada18d8279938c02c4d9f3751acf660  gcc/realmpfr.h
  cf3431811e710981fe8c6f711b598914  gcc/recog.cc
! 6f9d8ee740272502fb8e3e9b6644d7c9  gcc/recog.h
! abf7aba0b8c470a07c63a7d04c3052e6  gcc/ree.cc
! 4b5ca674534bbf5c690ccd0e5ec97cbc  gcc/reg-notes.def
  7a6bc7c58286682936006bbdfed0b1fe  gcc/reg-stack.cc
  cbae359b740a87a489f2cbe509ba7e6d  gcc/regcprop.cc
  e871bb7c9089d9ade710735b0803cff1  gcc/regcprop.h
  435320d85f05d8915fcbd110db42a930  gcc/regenerate-attr-urls.py
  f0820f7cb3f73e347a678f682c773982  gcc/regenerate-opt-urls.py
! fe5ec6b60f52307b2fb90117bcacd577  gcc/reginfo.cc
  4fc0401c76f75e872ceb423b786535b3  gcc/regrename.cc
  3305b4e257d68cf35538509ba53235c4  gcc/regrename.h
  6580474411878a2b9597d3b70f7de88d  gcc/regs.h
*************** f6ee3573d12b2bf0797c81e08e824072  gcc/re
*** 8071,8097 ****
  a32ba270250c91347c389ba4b4303641  gcc/regstat.cc
  d7256ea03d4e168a4a414594c61b73e9  gcc/reload.cc
  1c398a12a3ea644ebd07512d5b4e65c5  gcc/reload.h
! 6bb0b6dca1f3e83fbad05f4f3040d636  gcc/reload1.cc
  6ddd7549367691be792f4381bfba4159  gcc/reorg.cc
! b793684c5e7574c606a80fe60b257873  gcc/resource.cc
  7d3ffe0904b67a6517b76695b2da9665  gcc/resource.h
  9a54d98d77cb6ea171547301233d0c6a  gcc/rtl-error.cc
  e396a098307fc0c052e665f69ce59385  gcc/rtl-error.h
  08c6c461f06fdd137ad0f0b3a7f19d95  gcc/rtl-iter.h
  a2f6c6250981e92b37bcd0b9e26f3e4c  gcc/rtl-ssa.h
! 3b355603e06cd41aa623bb1825681c3c  gcc/rtl-ssa/access-utils.h
! d33406fc284f7698dc08cb0d9e66f6ce  gcc/rtl-ssa/accesses.cc
! 0d841dc8cb9b917713df3a7e505847c7  gcc/rtl-ssa/accesses.h
! 1fc53212b578a2db70679f5cf28f33b5  gcc/rtl-ssa/blocks.cc
  8b5c9d7cc52410c30ee4a6d5ab70b075  gcc/rtl-ssa/blocks.h
  5cde2269552a7c21c0cf0ea191677f6f  gcc/rtl-ssa/change-utils.h
  f3e87a0023b856d08711692c25499feb  gcc/rtl-ssa/changes.cc
  7a1cab9d5d9fc3565371c693311cb6de  gcc/rtl-ssa/changes.h
  82782cb9a0b1d420ccdaeb45e17c49f5  gcc/rtl-ssa/functions.cc
! 1d9e3601c2ed322fbec7674c7cf75326  gcc/rtl-ssa/functions.h
  b9205c8e82c85da2f7a035b090000f11  gcc/rtl-ssa/insn-utils.h
! 6b1c602802fb71d34e4807f74aef1860  gcc/rtl-ssa/insns.cc
! 5675ab32e73f48abe40c4d985345b1d1  gcc/rtl-ssa/insns.h
  93f7cdc164ed1bff5e2d2492fb7deed3  gcc/rtl-ssa/internals.h
  b437011708852e18def6acbf8fc4e1b7  gcc/rtl-ssa/internals.inl
  bd979c8e7f342fc4d558c136fe6e5347  gcc/rtl-ssa/is-a.inl
--- 8073,8099 ----
  a32ba270250c91347c389ba4b4303641  gcc/regstat.cc
  d7256ea03d4e168a4a414594c61b73e9  gcc/reload.cc
  1c398a12a3ea644ebd07512d5b4e65c5  gcc/reload.h
! d72ab8dc46b5b21779d530d4b25c1992  gcc/reload1.cc
  6ddd7549367691be792f4381bfba4159  gcc/reorg.cc
! 2980b1fff29a56dc47a0d37106e263be  gcc/resource.cc
  7d3ffe0904b67a6517b76695b2da9665  gcc/resource.h
  9a54d98d77cb6ea171547301233d0c6a  gcc/rtl-error.cc
  e396a098307fc0c052e665f69ce59385  gcc/rtl-error.h
  08c6c461f06fdd137ad0f0b3a7f19d95  gcc/rtl-iter.h
  a2f6c6250981e92b37bcd0b9e26f3e4c  gcc/rtl-ssa.h
! 25859778ba43094b9db43118ebd9966c  gcc/rtl-ssa/access-utils.h
! aaf113c4fee28af86fb4c508885e9778  gcc/rtl-ssa/accesses.cc
! 4d88db94ac449fd19adc79c345d37247  gcc/rtl-ssa/accesses.h
! 30c132feacfdd33c8d222473fbc75e8b  gcc/rtl-ssa/blocks.cc
  8b5c9d7cc52410c30ee4a6d5ab70b075  gcc/rtl-ssa/blocks.h
  5cde2269552a7c21c0cf0ea191677f6f  gcc/rtl-ssa/change-utils.h
  f3e87a0023b856d08711692c25499feb  gcc/rtl-ssa/changes.cc
  7a1cab9d5d9fc3565371c693311cb6de  gcc/rtl-ssa/changes.h
  82782cb9a0b1d420ccdaeb45e17c49f5  gcc/rtl-ssa/functions.cc
! 57adbb8825f146a65a4d4f62983ff9e6  gcc/rtl-ssa/functions.h
  b9205c8e82c85da2f7a035b090000f11  gcc/rtl-ssa/insn-utils.h
! 56e5042761999bdf1f72f8082aaa5a09  gcc/rtl-ssa/insns.cc
! 39a90a513fe2cc8637f8df109dbb0e16  gcc/rtl-ssa/insns.h
  93f7cdc164ed1bff5e2d2492fb7deed3  gcc/rtl-ssa/internals.h
  b437011708852e18def6acbf8fc4e1b7  gcc/rtl-ssa/internals.inl
  bd979c8e7f342fc4d558c136fe6e5347  gcc/rtl-ssa/is-a.inl
*************** eab7365dceccf86b8e9a8ccbb365afc3  gcc/rt
*** 8101,8108 ****
  40583244827449be4bd28679b4068f04  gcc/rtl-ssa/predicates.h
  24f0dd01b35b9a9b7f5bf7db574be3ec  gcc/rtl-tests.cc
  27956813d0124f5b5ec60d5a48840a34  gcc/rtl.cc
! a9ad8cbba3c33e3fbc0b79c6938a0295  gcc/rtl.def
! 647077b169fd2430f1b8fc33677d4fa3  gcc/rtl.h
  78a6761be9094aabb776bbba41b1906f  gcc/rtlanal.cc
  57073d447ccb92aa7b0276e4471824df  gcc/rtlanal.h
  9a5e61517f096479200fef046f8b2d35  gcc/rtlhash.cc
--- 8103,8110 ----
  40583244827449be4bd28679b4068f04  gcc/rtl-ssa/predicates.h
  24f0dd01b35b9a9b7f5bf7db574be3ec  gcc/rtl-tests.cc
  27956813d0124f5b5ec60d5a48840a34  gcc/rtl.cc
! 2ea2ab84b08b6839953b3bb5ba2e975f  gcc/rtl.def
! 6ee577867aab2289183b1b780283b450  gcc/rtl.h
  78a6761be9094aabb776bbba41b1906f  gcc/rtlanal.cc
  57073d447ccb92aa7b0276e4471824df  gcc/rtlanal.h
  9a5e61517f096479200fef046f8b2d35  gcc/rtlhash.cc
*************** ff662645190de703b9423727e52d659c  gcc/rt
*** 8114,8120 ****
  92e356710b1aae5aaabc8f47d6977fff  gcc/run-rtl-passes.cc
  f4eae48a3e90b34e88b5789e54f5f29a  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 4b6437e930c97c1ae8a3e59583d7c9a6  gcc/rust/ChangeLog
  c37ff78061953b076ac2eb5551b37be1  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  fbd9e5dbbbf2e1a3e28d730525b8eb78  gcc/rust/ast/rust-ast-builder.cc
--- 8116,8122 ----
  92e356710b1aae5aaabc8f47d6977fff  gcc/run-rtl-passes.cc
  f4eae48a3e90b34e88b5789e54f5f29a  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 6204c4dbbaccdd4ecef70df06147c88c  gcc/rust/ChangeLog
  c37ff78061953b076ac2eb5551b37be1  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  fbd9e5dbbbf2e1a3e28d730525b8eb78  gcc/rust/ast/rust-ast-builder.cc
*************** a11b51758cadbfbc20e4c2969af1aa85  gcc/ru
*** 8459,8465 ****
  37d2c9999aa0dbb0df068a1ae29137fa  gcc/rust/lex/rust-input-source.h
  2933bad78341532f4d24709e21386bba  gcc/rust/lex/rust-lex.cc
  1c9cc53e48e83ef6e080f7fb2cdeff91  gcc/rust/lex/rust-lex.h
! 4ee64c1e58ba8301a0645a9b04e6ba72  gcc/rust/lex/rust-token.cc
  3039004b292442e40b2f6827e82f0780  gcc/rust/lex/rust-token.h
  fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
  79301f1ef7130c9ccc227c2e80e6c3bf  gcc/rust/metadata/rust-export-metadata.cc
--- 8461,8467 ----
  37d2c9999aa0dbb0df068a1ae29137fa  gcc/rust/lex/rust-input-source.h
  2933bad78341532f4d24709e21386bba  gcc/rust/lex/rust-lex.cc
  1c9cc53e48e83ef6e080f7fb2cdeff91  gcc/rust/lex/rust-lex.h
! 30de1c873c0ade752ea45e73f5ea3b17  gcc/rust/lex/rust-token.cc
  3039004b292442e40b2f6827e82f0780  gcc/rust/lex/rust-token.h
  fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
  79301f1ef7130c9ccc227c2e80e6c3bf  gcc/rust/metadata/rust-export-metadata.cc
*************** a299759cc6ba50b5899a39ca2e05e4a1  gcc/ru
*** 8639,8658 ****
  5c807d7e7e80e2200bfd0e42f587912f  gcc/rust/util/rust-unwrap-segment.h
  f0f4d8d16db9fe5a40a81d75c7b1bad4  gcc/sancov.cc
  f13ef6f909911f94ad3ea11360068fa1  gcc/sanitizer.def
! b190f6bdcb063b5fca4e844b14150d0c  gcc/sanopt.cc
  be3678be2cea5e1beb181ef986ed3e3e  gcc/sarif-replay.cc
  a92419791c8e8d842c6ef029d4537463  gcc/sarif-spec-urls.def
  18b1ba21aac735e8b4fac6babbf3724f  gcc/sbitmap.cc
  8956392cfb34e0cb12dad1fc890f7d08  gcc/sbitmap.h
! 026a6787a4094ddd57955fc5a617b1b4  gcc/sched-deps.cc
  7f3c871d86d0577c88b4dbf4cb7bfde6  gcc/sched-ebb.cc
  da5c82758bbb99130aa6287f7a6c1342  gcc/sched-int.h
  017ab43b4cc0ef03de29f6129f0423e0  gcc/sched-rgn.cc
  9e378364d914a59876b4a6de4497fd39  gcc/sel-sched-dump.cc
  3b84f3b6b449c883935ef347892e770c  gcc/sel-sched-dump.h
! b6ebd1ec9c5747afb270517ad94fe6a2  gcc/sel-sched-ir.cc
! 291a3a1dd9369c3712c90457c320acad  gcc/sel-sched-ir.h
! f04046c3702a78faced8e75c7064288f  gcc/sel-sched.cc
  c8e14bcadd8fd37034a186ff2eed497c  gcc/sel-sched.h
  75125554eb32a562c567b40b674dceab  gcc/selftest-json.cc
  27bb8dee2b95b3a7efa33a896dd831e4  gcc/selftest-json.h
--- 8641,8660 ----
  5c807d7e7e80e2200bfd0e42f587912f  gcc/rust/util/rust-unwrap-segment.h
  f0f4d8d16db9fe5a40a81d75c7b1bad4  gcc/sancov.cc
  f13ef6f909911f94ad3ea11360068fa1  gcc/sanitizer.def
! afd4a8d5ecec62bde924478467202ba7  gcc/sanopt.cc
  be3678be2cea5e1beb181ef986ed3e3e  gcc/sarif-replay.cc
  a92419791c8e8d842c6ef029d4537463  gcc/sarif-spec-urls.def
  18b1ba21aac735e8b4fac6babbf3724f  gcc/sbitmap.cc
  8956392cfb34e0cb12dad1fc890f7d08  gcc/sbitmap.h
! d26422f78912993c3dae3b9221748bbf  gcc/sched-deps.cc
  7f3c871d86d0577c88b4dbf4cb7bfde6  gcc/sched-ebb.cc
  da5c82758bbb99130aa6287f7a6c1342  gcc/sched-int.h
  017ab43b4cc0ef03de29f6129f0423e0  gcc/sched-rgn.cc
  9e378364d914a59876b4a6de4497fd39  gcc/sel-sched-dump.cc
  3b84f3b6b449c883935ef347892e770c  gcc/sel-sched-dump.h
! 14833ad25c22e7c51f5cb3c7b81f5d8f  gcc/sel-sched-ir.cc
! 72bbd36ab41f757ab772dc8c2c422836  gcc/sel-sched-ir.h
! cd57f647cf61d024543d4929a0ee9cdc  gcc/sel-sched.cc
  c8e14bcadd8fd37034a186ff2eed497c  gcc/sel-sched.h
  75125554eb32a562c567b40b674dceab  gcc/selftest-json.cc
  27bb8dee2b95b3a7efa33a896dd831e4  gcc/selftest-json.h
*************** fdb979dbe9a110ffa6e78f1d2a5bc11e  gcc/se
*** 8666,8683 ****
  1c334344ba785f0a69ca21056f1f847a  gcc/sese.cc
  f7a30cc2e8344fa489739267da2d868b  gcc/sese.h
  664a1170caa1b13ee6d513a44d8de3c8  gcc/shortest-paths.h
! c5e97158cfb2af3204a5d8562aefaf85  gcc/shrink-wrap.cc
  4c1386d4baf5f8c0978b1ca3b17d79e1  gcc/shrink-wrap.h
  3f3d94e6f52cc07f64e195e1a75dc485  gcc/signop.h
  b4c90fe064bba484ce5c18adb1a9e544  gcc/simple-diagnostic-path.cc
  7affe31db6f7cb9c7fc77937feef0758  gcc/simple-diagnostic-path.h
! b4f3c96fc9bc460be2478501c60e51b8  gcc/simplify-rtx.cc
  d1aec926a9488869692e8fe2f61ca75f  gcc/sort.cc
  7daa38cb1d09a2f88958f00a965d40a1  gcc/sparseset.cc
  3883b6ff1845dcec7b2822124018ab05  gcc/sparseset.h
  f6ea836b96305da3227132e4f3e5cec8  gcc/spellcheck-tree.cc
  b4613da3bc9da7d2d84454d55d2161b5  gcc/spellcheck-tree.h
! b0e8fc9d640fb3c8cfdc6fea4711a410  gcc/spellcheck.cc
  7291c57c94e54746e4cac5d66ebc1f39  gcc/spellcheck.h
  dba4fe2f9746e20d7e3dc962566fde20  gcc/splay-tree-utils.cc
  5d8476ed18471420cd2608c85775ffc0  gcc/splay-tree-utils.h
--- 8668,8685 ----
  1c334344ba785f0a69ca21056f1f847a  gcc/sese.cc
  f7a30cc2e8344fa489739267da2d868b  gcc/sese.h
  664a1170caa1b13ee6d513a44d8de3c8  gcc/shortest-paths.h
! 5715e932df113dc7316964463ba23285  gcc/shrink-wrap.cc
  4c1386d4baf5f8c0978b1ca3b17d79e1  gcc/shrink-wrap.h
  3f3d94e6f52cc07f64e195e1a75dc485  gcc/signop.h
  b4c90fe064bba484ce5c18adb1a9e544  gcc/simple-diagnostic-path.cc
  7affe31db6f7cb9c7fc77937feef0758  gcc/simple-diagnostic-path.h
! b63e697e7d462fa3edaf7b878ea30668  gcc/simplify-rtx.cc
  d1aec926a9488869692e8fe2f61ca75f  gcc/sort.cc
  7daa38cb1d09a2f88958f00a965d40a1  gcc/sparseset.cc
  3883b6ff1845dcec7b2822124018ab05  gcc/sparseset.h
  f6ea836b96305da3227132e4f3e5cec8  gcc/spellcheck-tree.cc
  b4613da3bc9da7d2d84454d55d2161b5  gcc/spellcheck-tree.h
! b61da9baa92b1b10801198f323e85902  gcc/spellcheck.cc
  7291c57c94e54746e4cac5d66ebc1f39  gcc/spellcheck.h
  dba4fe2f9746e20d7e3dc962566fde20  gcc/splay-tree-utils.cc
  5d8476ed18471420cd2608c85775ffc0  gcc/splay-tree-utils.h
*************** d5fd8b7b90aa51d995dc6cfdadd21279  gcc/st
*** 8691,8703 ****
  d0c8ce33234bafe2dbc74e49092117d8  gcc/statistics.h
  bae414ca6b1d11488ac29960c5ec8422  gcc/stmt.cc
  bb220250a8f31c99168b5db3e1adb3a7  gcc/stmt.h
! 46ca4a8aaee638f2c6d6ba86ff439cb8  gcc/stor-layout.cc
  48b181fd932367bfce9913bb8162cfd6  gcc/stor-layout.h
  fc736757784bcbda641e40391430fdff  gcc/store-motion.cc
  5265b9b7386dd99944d80d34f6a1f143  gcc/streamer-hooks.cc
  0ad0dd047bfea81859e6033818540690  gcc/streamer-hooks.h
  2fbdaf6bb8705ecf4ec8240759690a85  gcc/stringpool.cc
! cfd45119ce5a4e4285deb2d4e2ad42bf  gcc/stringpool.h
  abe8f31bec859310f8609d28b8c28a68  gcc/substring-locations.cc
  e2888e2a91c1c5acafe55001871be3b8  gcc/substring-locations.h
  0727df4dc3352a78975951029b3fa0b1  gcc/sym-exec/sym-exec-condition.cc
--- 8693,8705 ----
  d0c8ce33234bafe2dbc74e49092117d8  gcc/statistics.h
  bae414ca6b1d11488ac29960c5ec8422  gcc/stmt.cc
  bb220250a8f31c99168b5db3e1adb3a7  gcc/stmt.h
! 3cf11db312719ef6166a69fda2e25c1c  gcc/stor-layout.cc
  48b181fd932367bfce9913bb8162cfd6  gcc/stor-layout.h
  fc736757784bcbda641e40391430fdff  gcc/store-motion.cc
  5265b9b7386dd99944d80d34f6a1f143  gcc/streamer-hooks.cc
  0ad0dd047bfea81859e6033818540690  gcc/streamer-hooks.h
  2fbdaf6bb8705ecf4ec8240759690a85  gcc/stringpool.cc
! e168c4b015c70be9a536cc0e466d3ec5  gcc/stringpool.h
  abe8f31bec859310f8609d28b8c28a68  gcc/substring-locations.cc
  e2888e2a91c1c5acafe55001871be3b8  gcc/substring-locations.h
  0727df4dc3352a78975951029b3fa0b1  gcc/sym-exec/sym-exec-condition.cc
*************** e2888e2a91c1c5acafe55001871be3b8  gcc/su
*** 8705,8731 ****
  c51c771a39da1854a99ec086014a1601  gcc/sym-exec/sym-exec-expr-is-a-helper.h
  f6ab583423ac1f325349d4b29d458142  gcc/sym-exec/sym-exec-expression.cc
  adbe702ebed4c3f1e192d85e2ad25c9c  gcc/sym-exec/sym-exec-expression.h
! eff575b7caab0563e47a1f26ca4036bf  gcc/sym-exec/sym-exec-state.cc
! 65571f6121b82a9816b12c1663395f19  gcc/sym-exec/sym-exec-state.h
! 577199e2dbe2231ebdedd774c031d82a  gcc/symbol-summary.h
  832499f2c95eca533d9d0ecbacf5bebd  gcc/symtab-clones.cc
  9c644ae81295f2ecf22a4f54c7144e34  gcc/symtab-clones.h
  e1899978827cfd0d1570e61a7c30d94a  gcc/symtab-thunks.cc
  9f6e7e9cd1feccb68765288812751504  gcc/symtab-thunks.h
! 2c2ee71cfd64c2e66f7b793fd04713e4  gcc/symtab.cc
  aa4c1d56c6974e4059ea89c2e315974f  gcc/sync-builtins.def
! f3ad4ab6a47ec1756160d39374ae0576  gcc/system.h
  53f5e973b2158c80ba4a144b03350c73  gcc/target-def.h
  d294651bcc46af1abb89e48cd851fd40  gcc/target-globals.cc
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
! 8d0dbf3229219f76ac06bdd053725387  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! 8b1a67916743a992fef7062af4d163ce  gcc/target.def
  9ca827d4a70bd09cb862e2583cb8500a  gcc/target.h
! 2b5ed5f473de31fccbd53235aa79d207  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 67a8a682db5785bf932f3e1db675a837  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8707,8733 ----
  c51c771a39da1854a99ec086014a1601  gcc/sym-exec/sym-exec-expr-is-a-helper.h
  f6ab583423ac1f325349d4b29d458142  gcc/sym-exec/sym-exec-expression.cc
  adbe702ebed4c3f1e192d85e2ad25c9c  gcc/sym-exec/sym-exec-expression.h
! 25118651b668810820b4c9389d3f1714  gcc/sym-exec/sym-exec-state.cc
! 77221303e4c6c65f82e477e92b20bce3  gcc/sym-exec/sym-exec-state.h
! 6285eb32b7b6b2a5b2ea54bf3008e79a  gcc/symbol-summary.h
  832499f2c95eca533d9d0ecbacf5bebd  gcc/symtab-clones.cc
  9c644ae81295f2ecf22a4f54c7144e34  gcc/symtab-clones.h
  e1899978827cfd0d1570e61a7c30d94a  gcc/symtab-thunks.cc
  9f6e7e9cd1feccb68765288812751504  gcc/symtab-thunks.h
! 5fbb8f16cb7ed8911c95fa1f5b8139ea  gcc/symtab.cc
  aa4c1d56c6974e4059ea89c2e315974f  gcc/sync-builtins.def
! c77257b397fb64b15bd2aa96b7c85644  gcc/system.h
  53f5e973b2158c80ba4a144b03350c73  gcc/target-def.h
  d294651bcc46af1abb89e48cd851fd40  gcc/target-globals.cc
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
! 5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! e6f13688b3f57d7fddfb5132405336a7  gcc/target.def
  9ca827d4a70bd09cb862e2583cb8500a  gcc/target.h
! 0cb420c86a7940020245f05da6f194fa  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 3b90120d387f0bdd1038c99b751e4274  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** ef64f47f4dc535f39ca0972442dfcf03  gcc/te
*** 19548,19553 ****
--- 19550,19556 ----
  364941e5a99804690001b372b53f6c4e  gcc/testsuite/c-c++-common/gomp/allocate-18.c
  a844bf6b78ba9a29d15147a46c7cf098  gcc/testsuite/c-c++-common/gomp/allocate-19.c
  67afa8e9a323740282252dc23a7b959a  gcc/testsuite/c-c++-common/gomp/allocate-2.c
+ 09ed73c2716b0086dd88b0f5b557789f  gcc/testsuite/c-c++-common/gomp/allocate-20.c
  9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
  4d623f98d85005df0ec9d97df176d9c4  gcc/testsuite/c-c++-common/gomp/allocate-4.c
  c3809265d6de98b36dec2fb830b674d2  gcc/testsuite/c-c++-common/gomp/allocate-5.c
*************** aa2e96c23bd551116e39ec68eb9f2cbc  gcc/te
*** 19637,19642 ****
--- 19640,19646 ----
  af214b06bdbe273a96343eed66fa9ff1  gcc/testsuite/c-c++-common/gomp/begin-declare-target-2.c
  c736b176de0876f0cfa7bf6da1edba17  gcc/testsuite/c-c++-common/gomp/begin-declare-target-3.c
  aa6f51f0ce9ba32480d8b3eddf2e9835  gcc/testsuite/c-c++-common/gomp/begin-declare-target-4.c
+ 15e9b6a20fd8be2cb10812c94ff73cc5  gcc/testsuite/c-c++-common/gomp/begin-declare-variant-1.c
  fc18dca9ca9c5db3a9297405a01b1376  gcc/testsuite/c-c++-common/gomp/cancel-1.c
  192802715f9a6395e2ccf6ce992c4fee  gcc/testsuite/c-c++-common/gomp/cancel-2.c
  777f4addf7c7d758291b4583ce759cbe  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
*************** d05ac6fedd74d96b8e1466d0110a8fdb  gcc/te
*** 21235,21241 ****
  79adac8c671790504a142ab2392cf927  gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out
  291db84fb7e37ae587f8903785b25b1d  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob
  2901c188067e745960930ae0bfdd4749  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out
! 5a606c5acf353a0c8fc6540716264940  gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob
  02bd2c24bf4d1dce298950f7b67c5344  gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.out
  0c8262ef265dd1714f65d56d9efd8a4d  gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob
  1d136358908b310454c8f9b5d93e9505  gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob
--- 21239,21245 ----
  79adac8c671790504a142ab2392cf927  gcc/testsuite/cobol.dg/group2/259_PERFORM_VARYING_BY_-0.2.out
  291db84fb7e37ae587f8903785b25b1d  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.cob
  2901c188067e745960930ae0bfdd4749  gcc/testsuite/cobol.dg/group2/338_Default_Arithmetic__1_.out
! f663b8c41900c43f8fb7a7d955d202c1  gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob
  02bd2c24bf4d1dce298950f7b67c5344  gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.out
  0c8262ef265dd1714f65d56d9efd8a4d  gcc/testsuite/cobol.dg/group2/88_level_with_FALSE_IS_clause.cob
  1d136358908b310454c8f9b5d93e9505  gcc/testsuite/cobol.dg/group2/88_level_with_FILLER.cob
*************** ce7bdbfa73ff92ed34eac3534df66e86  gcc/te
*** 21283,21289 ****
  c7cf12c0e90e1d426210bb32a56623a3  gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob
  5a8fd329eb7fcb844e4e4e7969944359  gcc/testsuite/cobol.dg/group2/Assorted_SPECIAL-NAMES_CLASS.cob
  38ee927ae48950a5b4e104d641a25073  gcc/testsuite/cobol.dg/group2/Assorted_SPECIAL-NAMES_CLASS.out
! 14cb1915f003e1ae9b721b4fa027a76a  gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob
  02a724680157560a26914ad3e85206a0  gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.out
  738b5e86f6b162a7f4b44d0ecfedf06b  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob
  b13823e6ef73b208ab307bb3612a5ce8  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out
--- 21287,21293 ----
  c7cf12c0e90e1d426210bb32a56623a3  gcc/testsuite/cobol.dg/group2/Alphanumeric_and_binary_numeric.cob
  5a8fd329eb7fcb844e4e4e7969944359  gcc/testsuite/cobol.dg/group2/Assorted_SPECIAL-NAMES_CLASS.cob
  38ee927ae48950a5b4e104d641a25073  gcc/testsuite/cobol.dg/group2/Assorted_SPECIAL-NAMES_CLASS.out
! d531c8871c5b790a55a152c695a84c64  gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob
  02a724680157560a26914ad3e85206a0  gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.out
  738b5e86f6b162a7f4b44d0ecfedf06b  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.cob
  b13823e6ef73b208ab307bb3612a5ce8  gcc/testsuite/cobol.dg/group2/BLANK_WHEN_ZERO.out
*************** a4281300968e70731988a9ad41094250  gcc/te
*** 21291,21296 ****
--- 21295,21312 ----
  789716db4f40a28d97c707fee16ad524  gcc/testsuite/cobol.dg/group2/CALL_with_OCCURS_DEPENDING_ON.out
  04bb991b042a76cfcf01bc1c8817a56a  gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.cob
  56a12a09adb0c17ac03345d06ae419b3  gcc/testsuite/cobol.dg/group2/CALL_with_OMITTED_parameter.out
+ 9e8e372ca1cc3b8e6e747dbae0c1c837  gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob
+ 2dff2e7a7eb43c3593f29502b0eddd47  gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out
+ 8190e0a0c61f8db4cff5342d6cd08829  gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob
+ 06dc68af3c826439a8c99cb8957df18c  gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.out
+ a1d65d48f514b195a72ca57c38425bca  gcc/testsuite/cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob
+ 260b0eb0fcf17e54946e03c728753ae2  gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.cob
+ 0fddcb96dc71beab1fb42cd6ff1d2d80  gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.out
+ bb5297a301d5fee9d5fd6a2f839eca18  gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob
+ 4487092fe31be763f767686e9664f8f0  gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out
+ 271df2b37cbbaab2846f300200a2aba5  gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob
+ 23640a3afdfd94cc82616a80f235ba4a  gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out
+ c74ada6645c215524d1625b21f8753a0  gcc/testsuite/cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob
  b4cad73bd9c7606feb792952c7e1ac43  gcc/testsuite/cobol.dg/group2/CDF2_-_DEFINE_FOO_AS_literal-1.cob
  2a3e1fc6506b14d50ecf4c86a2e114c9  gcc/testsuite/cobol.dg/group2/CDF2_-_DEFINE_FOO_AS_literal-1.out
  43d89ba687f04551cb2d482b5a9f8f1c  gcc/testsuite/cobol.dg/group2/CDF2_Trouble_with___IF__1_.cob
*************** c04168a2acd1bc44234f01ab517cfb97  gcc/te
*** 21329,21335 ****
  889ec5fde47e76be7c971e6deca40cd0  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out
  c5cf04eb9938774927bb9fc355958f13  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob
  40ee71e6000b91748c4cd8f864a83cd2  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out
! 91c93fb8a04c38feb9175daebc96f60c  gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
  e3cc25d3e34c98b2bc1d9014612f3464  gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob
  5a5abbc24fc75759207ca6686fa86a79  gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob
  f7e4a3f2c5c85ddeb645aecc5792a186  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.cob
--- 21345,21351 ----
  889ec5fde47e76be7c971e6deca40cd0  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN.out
  c5cf04eb9938774927bb9fc355958f13  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.cob
  40ee71e6000b91748c4cd8f864a83cd2  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out
! c82d0437d4c0c081e1f9b6f140c959ab  gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
  e3cc25d3e34c98b2bc1d9014612f3464  gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob
  5a5abbc24fc75759207ca6686fa86a79  gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob
  f7e4a3f2c5c85ddeb645aecc5792a186  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.cob
*************** f7e4a3f2c5c85ddeb645aecc5792a186  gcc/te
*** 21340,21345 ****
--- 21356,21363 ----
  7d1e4c4461dc538a7b081cd9ab9a781f  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE.out
  4885ad79dbcacea5aefc7b3c06a2e6a6  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_ASCII_EBCDIC.cob
  bc9c3feaf3b8988ac971cb14aa62f9b4  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_ASCII_EBCDIC.out
+ 6312604cdb1d5dce073186bdfd23ba0e  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob
+ bc9c3feaf3b8988ac971cb14aa62f9b4  gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out
  0343efd58f9da12b239e6d571691602b  gcc/testsuite/cobol.dg/group2/Complex_IF.cob
  441e3a4f6a2da5b2f89b7f633fa3ad23  gcc/testsuite/cobol.dg/group2/Complex_IF.out
  af1c1b610f0cfd57ea5f2dac953cf214  gcc/testsuite/cobol.dg/group2/Complex_INITIALIZE_with_nested_tables__1_.cob
*************** c37d3a6c238b882f0bdd37216ad6f2e2  gcc/te
*** 21692,21697 ****
--- 21710,21717 ----
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/cobol.dg/group2/Length_overflow_with_offset__3_.out
  503d617123c532839c11aa4fe6aba826  gcc/testsuite/cobol.dg/group2/Long_Division.cob
  762fe158abb4d509d72dcab7d9dd2321  gcc/testsuite/cobol.dg/group2/Long_Division.out
+ 3cbf65b8c03797932779a0528d289989  gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob
+ 1b3a1374cd3bae9ee54518384c656469  gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out
  349ac56163210da85e0e72c98b70a580  gcc/testsuite/cobol.dg/group2/MOVE_X_000203_.cob
  ae3b6ce13c9250f0ab012d801c07d172  gcc/testsuite/cobol.dg/group2/MOVE_X_000203_.out
  19fd942f8e59f704767cd4c3801d15eb  gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob
*************** c94667798e53c8974de0912e64b9f68a  gcc/te
*** 21716,21728 ****
  0c0ecf77a8e923475016b253a23bcada  gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob
  87b0bc0c9121907b31f6ee3692914a41  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.cob
  cf6cb0baac26cccf2005d78a4a1afb78  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.out
! 93a76fa238e6b843def50133986feba8  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
  92cebaacd47235a03b5cdfc283882a86  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out
  b0cd20ec9807fca430e620486c4f9568  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
  3b4538b5070b02cf4ebc653902e53e31  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
  b75fa9b5629b3032c8c34644bd817121  gcc/testsuite/cobol.dg/group2/N-Queens_algorithm.cob
  e4d2b73b0c96c1dfe3d000329bb8874f  gcc/testsuite/cobol.dg/group2/N-Queens_algorithm.out
! 860bb03d750b0e6019c8c327424cfe69  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
  4138538135757cec647177acf7df8383  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out
  f34c9056a1d17e04c048e0d33e3693a8  gcc/testsuite/cobol.dg/group2/Nested_PERFORM.cob
  1ab98bfe6cbef69dac2f301c94c9c93b  gcc/testsuite/cobol.dg/group2/Nested_PERFORM.out
--- 21736,21748 ----
  0c0ecf77a8e923475016b253a23bcada  gcc/testsuite/cobol.dg/group2/MULTIPLY_BY_literal_in_INITIAL_program.cob
  87b0bc0c9121907b31f6ee3692914a41  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.cob
  cf6cb0baac26cccf2005d78a4a1afb78  gcc/testsuite/cobol.dg/group2/MULTIPLY_to_FIX4.out
! d878c7e735196efae2746d94e0a36947  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
  92cebaacd47235a03b5cdfc283882a86  gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.out
  b0cd20ec9807fca430e620486c4f9568  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.cob
  3b4538b5070b02cf4ebc653902e53e31  gcc/testsuite/cobol.dg/group2/Multiple_INDEXED_BY_variables_with_the_same_name.out
  b75fa9b5629b3032c8c34644bd817121  gcc/testsuite/cobol.dg/group2/N-Queens_algorithm.cob
  e4d2b73b0c96c1dfe3d000329bb8874f  gcc/testsuite/cobol.dg/group2/N-Queens_algorithm.out
! e2ca5a51832b2c1ebc365309aad634be  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
  4138538135757cec647177acf7df8383  gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.out
  f34c9056a1d17e04c048e0d33e3693a8  gcc/testsuite/cobol.dg/group2/Nested_PERFORM.cob
  1ab98bfe6cbef69dac2f301c94c9c93b  gcc/testsuite/cobol.dg/group2/Nested_PERFORM.out
*************** f5d5fca25edf5df29fc8b724f75d6f2c  gcc/te
*** 21865,21871 ****
  0f9c7dc18a0ed01c8e5aaf241723dbb2  gcc/testsuite/cobol.dg/group2/Simple_floating-point_MOVE.out
  83d33552cd4dabbace4977d9979e39bf  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.cob
  f1433e4ad768b452d26c539bc7c90c60  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.out
! ef7879926c9e6fc15a9b649742410f18  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob
  80c9433022b9df365ff07308d32b9336  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out
  da9195f694cdf531af045955fcb1be4f  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob
  fb4f975832cfa17a33f58aba4b9cb092  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out
--- 21885,21891 ----
  0f9c7dc18a0ed01c8e5aaf241723dbb2  gcc/testsuite/cobol.dg/group2/Simple_floating-point_MOVE.out
  83d33552cd4dabbace4977d9979e39bf  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.cob
  f1433e4ad768b452d26c539bc7c90c60  gcc/testsuite/cobol.dg/group2/Simple_floating-point_VALUE_and_MOVE.out
! 8f9044c5b49c0e4345400073625d4eed  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob
  80c9433022b9df365ff07308d32b9336  gcc/testsuite/cobol.dg/group2/Simple_p-scaling.out
  da9195f694cdf531af045955fcb1be4f  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.cob
  fb4f975832cfa17a33f58aba4b9cb092  gcc/testsuite/cobol.dg/group2/Static_CALL_with_ON_EXCEPTION__with_-fno-static-call_.out
*************** b420dc948722a4b2fc490a3babd17b7f  gcc/te
*** 21923,21939 ****
  3153d2ffae3ff3b87ed8cadff567a8f5  gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.cob
  6f257ad2abd428c7909f8ea323ccc168  gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.out
  8b384b3032fcac908a2fdc502dc156e8  gcc/testsuite/cobol.dg/group2/_-static__compilation.cob
! 7ccbb0b17254a4346153a02e58218979  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob
  e54e577d8de75b710938fa62794487fc  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out
  a75f94d635d6f81fcf6e666df78229f2  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.cob
  5bc38b398042105e78868858a0adf5fd  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.out
  caf587aa2806bd2fe7496ca58c88ba7c  gcc/testsuite/cobol.dg/group2/command-line.cob
  ae3b6ce13c9250f0ab012d801c07d172  gcc/testsuite/cobol.dg/group2/command-line.out
  fbbad213aa004e2ac9524af74c84a427  gcc/testsuite/cobol.dg/group2/compare_alpha_to_all__literal_.cob
  fb787429ca42cb8685738ef89bcd4f2c  gcc/testsuite/cobol.dg/group2/compare_alpha_to_all__literal_.out
! f652621ad9a30366338da4e4ca2f7247  gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob
  8cae6e5de9d4512dfc0233e08100d8c7  gcc/testsuite/cobol.dg/group2/compare_national_to_display.out
! cf848acea038b3ccc0e234831bb19a88  gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob
  271a68f8b1f2b07b63849c6abeb23b13  gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.out
  5ee523a5b423e4957df5452b15a66ba1  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob
  7abd1cea9afc680263418e1915b26370  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out
--- 21943,21976 ----
  3153d2ffae3ff3b87ed8cadff567a8f5  gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.cob
  6f257ad2abd428c7909f8ea323ccc168  gcc/testsuite/cobol.dg/group2/USING_Signed___NumericDisplay_BY_VALUE.out
  8b384b3032fcac908a2fdc502dc156e8  gcc/testsuite/cobol.dg/group2/_-static__compilation.cob
! c324304c1c3854281aa227b869f73dbe  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob
  e54e577d8de75b710938fa62794487fc  gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.out
+ a5c9edf3aa903ad25bbe5266e1a161f3  gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.cob
+ 56eb60d2a8037e88f06d68fe10a77b82  gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.out
+ c6aae2b6236187cb151a791dd3e038b3  gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.cob
+ 59bfdf3b125d85fe84fb86c504bfc475  gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.out
+ 1c9ec22aad751f2007b7ceeb2a3efbaf  gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.cob
+ 86e90b9df26b64cc69ab9e4d1f66d40e  gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.out
+ 8c8da27c07959c080862ffe861b42b0e  gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.cob
+ 6b6577ddcd58867745bcd870856aed7c  gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.out
+ 543cdcdbe8a8d563e542baa1a0418c45  gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.cob
+ 2c4b011282ded304c9d0437e568f3488  gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.out
+ 6dd44e326e748d529987b47017bd561c  gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.cob
+ d910f7704ad5ade4b7a81e4888f4b4b9  gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.out
+ 53f6e2f991cf6aeec6bfbacc6e7759c5  gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.cob
+ 66fd28599286b9e4ff9871c48ef11fba  gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.out
  a75f94d635d6f81fcf6e666df78229f2  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.cob
  5bc38b398042105e78868858a0adf5fd  gcc/testsuite/cobol.dg/group2/call_subprogram_using_pointer__passing_pointer.out
+ cd939f69cddc5b160139ea6907d79ef4  gcc/testsuite/cobol.dg/group2/cbltypes.cpy
  caf587aa2806bd2fe7496ca58c88ba7c  gcc/testsuite/cobol.dg/group2/command-line.cob
  ae3b6ce13c9250f0ab012d801c07d172  gcc/testsuite/cobol.dg/group2/command-line.out
  fbbad213aa004e2ac9524af74c84a427  gcc/testsuite/cobol.dg/group2/compare_alpha_to_all__literal_.cob
  fb787429ca42cb8685738ef89bcd4f2c  gcc/testsuite/cobol.dg/group2/compare_alpha_to_all__literal_.out
! 2d9b86b23649fefd0577c6ae484f454a  gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.cob
! 6054cf48384d0a04d5ff8e583ef0ff76  gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.out
! d98c1bb944cb4b9820f2e8c5d1d93d11  gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob
  8cae6e5de9d4512dfc0233e08100d8c7  gcc/testsuite/cobol.dg/group2/compare_national_to_display.out
! 0c924369f1912ecd33f99190da468623  gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob
  271a68f8b1f2b07b63849c6abeb23b13  gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.out
  5ee523a5b423e4957df5452b15a66ba1  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.cob
  7abd1cea9afc680263418e1915b26370  gcc/testsuite/cobol.dg/group2/debugging_lines__WITH_DEBUGGING_MODE_.out
*************** d23088a98a20d2069d7fb0cad5a416f7  gcc/te
*** 21965,21970 ****
--- 22002,22009 ----
  485a46d485361b3b618c4705dcd36210  gcc/testsuite/cobol.dg/group2/length_of_ODO_Rules_7__8A__and_8B.cob
  5eb817262236b0ba59a5015d171025fb  gcc/testsuite/cobol.dg/group2/length_of_ODO_Rules_7__8A__and_8B.out
  285be9aed0693bd7a17971c0b0d45f14  gcc/testsuite/cobol.dg/group2/length_of_ODO_w_-_reference_modification.cob
+ e4f125c530b7f6fb8112ce177491c698  gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob
+ 13b37ba39b19273c7560eec98e34c0f9  gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out
  a9be62b5e367d9e2cd063a29e035d62f  gcc/testsuite/cobol.dg/group2/procedure_division_using_by.cob
  b3770e519b9e35fc37d2bfb704502b37  gcc/testsuite/cobol.dg/group2/refmod_with_nested_parentheses.cob
  68f048a675b888cb7c2d0e432621ce7e  gcc/testsuite/cobol.dg/group2/refmod_with_nested_parentheses.out
*************** a0e21528a4a4b6c55e3ddacf0a8cf5f7  gcc/te
*** 22052,22058 ****
  c8f402708041b93f25fb375136b1fa17  gcc/testsuite/g++.dg/DRs/dr3110.C
  7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
  cdd5e29f9e112d6201410809ca83e0d2  gcc/testsuite/g++.dg/DRs/dr882.C
! e608eff392cbbd42abc2849e8bfffa67  gcc/testsuite/g++.dg/README
  e8bf67ef94000b454e80c6b1ca4a5715  gcc/testsuite/g++.dg/Walloca1.C
  41ea7d6ccdba5e37380fb26255042463  gcc/testsuite/g++.dg/Walloca2.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
--- 22091,22097 ----
  c8f402708041b93f25fb375136b1fa17  gcc/testsuite/g++.dg/DRs/dr3110.C
  7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
  cdd5e29f9e112d6201410809ca83e0d2  gcc/testsuite/g++.dg/DRs/dr882.C
! f3665025fe2ece893fd841eb42e363c8  gcc/testsuite/g++.dg/README
  e8bf67ef94000b454e80c6b1ca4a5715  gcc/testsuite/g++.dg/Walloca1.C
  41ea7d6ccdba5e37380fb26255042463  gcc/testsuite/g++.dg/Walloca2.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
*************** fbaa97f955828122edb02abade5c00a5  gcc/te
*** 28349,28354 ****
--- 28388,28394 ----
  05972a123b20a66b9c7899c2bb0b5042  gcc/testsuite/g++.dg/cpp26/expansion-stmt4.C
  c52edd0a13ff5fb8338be44eb349b17c  gcc/testsuite/g++.dg/cpp26/expansion-stmt40.C
  9bf935574926cc3e4cd8cab9708f9ede  gcc/testsuite/g++.dg/cpp26/expansion-stmt41.C
+ 5cca76b98b9ab6de3265c4d30709010d  gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
  8419176a2bf5898de53901daf6efe2a9  gcc/testsuite/g++.dg/cpp26/expansion-stmt6.C
  f3b34592f993c84838b0ef36dad5ed5e  gcc/testsuite/g++.dg/cpp26/expansion-stmt7.C
*************** c3d9ded980076b7db82a63c086636931  gcc/te
*** 29420,29425 ****
--- 29460,29466 ----
  95297857429ac8850dbeb5773639ea6b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
  56e3e8d11a55552a749cc9a73432a46d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval30.C
  bac0d859a20303eb8aa06430661ec006  gcc/testsuite/g++.dg/cpp2a/lambda-uneval31.C
+ 79eb7d8eade0a86c140c3da95112b5a6  gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C
  2f7bd1774e5f890e65ee937419a29669  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
  8e6b610dd3dab06841943bfa5f325489  gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
  91159fd20af1b89a4545ef0450293574  gcc/testsuite/g++.dg/cpp2a/lambda-uneval6.C
*************** d1e2592670bcdeda87ffce22aa27ec30  gcc/te
*** 34903,34908 ****
--- 34944,34954 ----
  392ae29759fb872beb821c7a47f07a1c  gcc/testsuite/g++.dg/modules/pr119844_b.C
  c612aa7562a08eee08fd881b3b27fee6  gcc/testsuite/g++.dg/modules/pr120040_a.C
  680ac168b034a19e8070cf8c66cd3edc  gcc/testsuite/g++.dg/modules/pr120040_b.C
+ 09833a4134bbc214e6154bb84a6dcaa8  gcc/testsuite/g++.dg/modules/pr120458-1_a.C
+ 268433014cbe16801f5f870dc31e1149  gcc/testsuite/g++.dg/modules/pr120458-1_b.C
+ 06d024c030cf5c2ea2fe8422001a0c6d  gcc/testsuite/g++.dg/modules/pr120458-2.map
+ 2e4062540d3abe05994650adf49b5132  gcc/testsuite/g++.dg/modules/pr120458-2_a.C
+ 1054fe88a9f9735079a3f41016c7cee6  gcc/testsuite/g++.dg/modules/pr120458-2_b.C
  625496a3dbc3dab3e9ee3fd5aa044187  gcc/testsuite/g++.dg/modules/pr122053_a.C
  1b9a9e771ff94ed09a2f483d4eb9b884  gcc/testsuite/g++.dg/modules/pr122053_b.C
  2b317cc9d17067098caad41a9ab4b86e  gcc/testsuite/g++.dg/modules/pr122922_a.C
*************** d136e38dee13129995acfc6e78e53437  gcc/te
*** 35705,35711 ****
  5df975dd16407b09ce95f607721a896a  gcc/testsuite/g++.dg/opt/pr103984.C
  d6ec8512f5a1e34e7906eed12da4ba3d  gcc/testsuite/g++.dg/opt/pr103989.C
  b503536c5b760d3b8bf52f3b09253012  gcc/testsuite/g++.dg/opt/pr104334.C
! fb1736849e3ca82d6870f75abb9c5be7  gcc/testsuite/g++.dg/opt/pr104515.C
  4821bda808ec2c117c297e4f155752e3  gcc/testsuite/g++.dg/opt/pr104681.C
  a05f3fe9e917eacdb552f9ade1d73f34  gcc/testsuite/g++.dg/opt/pr104880.C
  bad9496f071793031ea4ab93b911a483  gcc/testsuite/g++.dg/opt/pr105235-1.C
--- 35751,35757 ----
  5df975dd16407b09ce95f607721a896a  gcc/testsuite/g++.dg/opt/pr103984.C
  d6ec8512f5a1e34e7906eed12da4ba3d  gcc/testsuite/g++.dg/opt/pr103989.C
  b503536c5b760d3b8bf52f3b09253012  gcc/testsuite/g++.dg/opt/pr104334.C
! a4e5894596d0e1b17038daeabdfddf6e  gcc/testsuite/g++.dg/opt/pr104515.C
  4821bda808ec2c117c297e4f155752e3  gcc/testsuite/g++.dg/opt/pr104681.C
  a05f3fe9e917eacdb552f9ade1d73f34  gcc/testsuite/g++.dg/opt/pr104880.C
  bad9496f071793031ea4ab93b911a483  gcc/testsuite/g++.dg/opt/pr105235-1.C
*************** bcc6c29c87ee411683aa56afca6aea50  gcc/te
*** 36074,36079 ****
--- 36120,36126 ----
  704a289cc183c9c58d161a065dc540b8  gcc/testsuite/g++.dg/other/array5.C
  db68b7a03fb0ede3fec05340bda061e1  gcc/testsuite/g++.dg/other/array6.C
  06234a6c8c1c5a78689f7b10df173a6e  gcc/testsuite/g++.dg/other/array7.C
+ d114dbef8703f9b6a139991f4981e0b6  gcc/testsuite/g++.dg/other/array8.C
  327666cc7728d2edf1a48530ef433c9f  gcc/testsuite/g++.dg/other/assign1.C
  e152b39260fef4a571113f5182edeea0  gcc/testsuite/g++.dg/other/avx2-pr85572-1.C
  dc1cf6dc500d953cbe68a0048105430f  gcc/testsuite/g++.dg/other/big-struct.C
*************** c43e40fe08389dac58e1fabc0937b315  gcc/te
*** 37582,37587 ****
--- 37629,37635 ----
  a3ca02798bae6834626899e3f48626d9  gcc/testsuite/g++.dg/reflect/bases_of3.C
  f31771b6d142554bef46d22e7ebe37ed  gcc/testsuite/g++.dg/reflect/bases_of4.C
  8d37e56fd9c7ad7b03647b9d62cfd01e  gcc/testsuite/g++.dg/reflect/bases_of5.C
+ 3f782c96873e944c8cec5519fe0f53d7  gcc/testsuite/g++.dg/reflect/bases_of6.C
  817512416d8343f0871b4548743aabf7  gcc/testsuite/g++.dg/reflect/bit_cast.C
  118a467750da473b2ad68973e520b6c9  gcc/testsuite/g++.dg/reflect/bit_size_of1.C
  cdfee9c92cd1c39030b9538abaa0bbc0  gcc/testsuite/g++.dg/reflect/bitfield1.C
*************** d1618ed5affc804f7f8cda302ecd3b2e  gcc/te
*** 38014,38019 ****
--- 38062,38068 ----
  121fa58431980b8ab5bd16473ccf8c21  gcc/testsuite/g++.dg/reflect/pr124792.C
  0bfe2b4b0d52d493a24af0d81d278986  gcc/testsuite/g++.dg/reflect/pr125007.C
  ccc4415ba1de4b5fda2f4d61583fab4c  gcc/testsuite/g++.dg/reflect/pr125179.C
+ c35e7ee674a0e569c67e5b1b3a3dc568  gcc/testsuite/g++.dg/reflect/pr125412.C
  e6404856d4cc9cc02aa5ebec3e5ecb82  gcc/testsuite/g++.dg/reflect/qrn1.C
  4ef5fc49aed920d8bfc3bc57a9ddef71  gcc/testsuite/g++.dg/reflect/qrn2.C
  8a49e7b1ad0cad9ac48fdcf37ad900cf  gcc/testsuite/g++.dg/reflect/range_args.C
*************** ea4e143932bfcde8a35c6a9f47ca6cde  gcc/te
*** 40914,40920 ****
  3994473d87cf2cf8e4060f87f4631734  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
  34be04a2a8ccec91647967353a92f38e  gcc/testsuite/g++.dg/tree-ssa/pr88152-1.C
  17e69860f1e7b4c26b8a5dbaecf9adb8  gcc/testsuite/g++.dg/tree-ssa/pr88152-2.C
! f7ebb73b88a3c39c92da3ddb3316bc02  gcc/testsuite/g++.dg/tree-ssa/pr88797.C
  2650e6ee3cdee1000d24ba2bb4b5fc07  gcc/testsuite/g++.dg/tree-ssa/pr89698.C
  1f998bcf66238aaf5155a2aca15ee3b0  gcc/testsuite/g++.dg/tree-ssa/pr89802.C
  b866758c2fd516b4dacfd775ceebf59a  gcc/testsuite/g++.dg/tree-ssa/pr90078.C
--- 40963,40969 ----
  3994473d87cf2cf8e4060f87f4631734  gcc/testsuite/g++.dg/tree-ssa/pr8781.C
  34be04a2a8ccec91647967353a92f38e  gcc/testsuite/g++.dg/tree-ssa/pr88152-1.C
  17e69860f1e7b4c26b8a5dbaecf9adb8  gcc/testsuite/g++.dg/tree-ssa/pr88152-2.C
! 93d2a012638c4d5b84e6335531052403  gcc/testsuite/g++.dg/tree-ssa/pr88797.C
  2650e6ee3cdee1000d24ba2bb4b5fc07  gcc/testsuite/g++.dg/tree-ssa/pr89698.C
  1f998bcf66238aaf5155a2aca15ee3b0  gcc/testsuite/g++.dg/tree-ssa/pr89802.C
  b866758c2fd516b4dacfd775ceebf59a  gcc/testsuite/g++.dg/tree-ssa/pr90078.C
*************** ae2abc2a5a067a849f424b7aee4a38f1  gcc/te
*** 41479,41486 ****
  c84bc79847f1966edf2b1f4b3b013e19  gcc/testsuite/g++.dg/warn/Winterference-2.C
  7a5fabbcc3f8e983ae01b4963469c94a  gcc/testsuite/g++.dg/warn/Winterference.C
  f1360330e2c03adfb9e1efd9136d3f31  gcc/testsuite/g++.dg/warn/Winterference.H
! 617b1baf48ffae995c6198567500b3c3  gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
! 6cb792f5a5a29a4931676fce151db135  gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
  d554bb6f7fc49fa2be2114e5d2f1bd07  gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
  46a0dc2739da6ef3dec0ccf4a8f1bd5d  gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C
  17e77e62941094c0a88c7c296201a543  gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
--- 41528,41535 ----
  c84bc79847f1966edf2b1f4b3b013e19  gcc/testsuite/g++.dg/warn/Winterference-2.C
  7a5fabbcc3f8e983ae01b4963469c94a  gcc/testsuite/g++.dg/warn/Winterference.C
  f1360330e2c03adfb9e1efd9136d3f31  gcc/testsuite/g++.dg/warn/Winterference.H
! 7e8635437404101de298c6184477b8e3  gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
! d2b13e104d6a1425931a905949931f7f  gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
  d554bb6f7fc49fa2be2114e5d2f1bd07  gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
  46a0dc2739da6ef3dec0ccf4a8f1bd5d  gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C
  17e77e62941094c0a88c7c296201a543  gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
*************** a1e80c97392f15c445626accf3d33f52  gcc/te
*** 45605,45611 ****
  fc961318316b49991b985e2fdd2be83d  gcc/testsuite/g++.target/aarch64/spaceship_1.C
  4501fff92ad989d592916380d816d0d7  gcc/testsuite/g++.target/aarch64/spaceship_2.C
  43ef3ca7cf2796812900332b2f3aa1c3  gcc/testsuite/g++.target/aarch64/spaceship_3.C
! 91f78220f524fb09dfa3d0ea8955d68c  gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
  546af9a83b6016321f7eca8e57bd79bf  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
  4be94bbd6cb338300aa5e5978429a0f3  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
--- 45654,45660 ----
  fc961318316b49991b985e2fdd2be83d  gcc/testsuite/g++.target/aarch64/spaceship_1.C
  4501fff92ad989d592916380d816d0d7  gcc/testsuite/g++.target/aarch64/spaceship_2.C
  43ef3ca7cf2796812900332b2f3aa1c3  gcc/testsuite/g++.target/aarch64/spaceship_3.C
! a2d0713d4589292443f01832c969dd5a  gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
  546af9a83b6016321f7eca8e57bd79bf  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
  4be94bbd6cb338300aa5e5978429a0f3  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
*************** f84a62b2c04fd0a9824305fdbf33ca9a  gcc/te
*** 51045,51071 ****
  7d527fafe1db806347cfb826be8f7ac6  gcc/testsuite/gcc.dg/Wstrict-flex-arrays-2.c
  1ab9973f43ef639043dfbd2f42f2c6c7  gcc/testsuite/gcc.dg/Wstrict-flex-arrays-3.c
  b70ddb0fb0f39ff0a77446d94a7b7efb  gcc/testsuite/gcc.dg/Wstrict-flex-arrays.c
- 1110716453a4773019d5bb6410117baf  gcc/testsuite/gcc.dg/Wstrict-overflow-10.c
- 5949afbfe54027b57c5a7ff340e5c3d8  gcc/testsuite/gcc.dg/Wstrict-overflow-11.c
- a202b608fa712e5194f82040deca3921  gcc/testsuite/gcc.dg/Wstrict-overflow-12.c
- efb50dd7e74ce2706387aa36aaa5a610  gcc/testsuite/gcc.dg/Wstrict-overflow-13.c
- b2149e27f56a52f2dc36e1fe62c006f4  gcc/testsuite/gcc.dg/Wstrict-overflow-14.c
- 050b649df1a6a49d8d08af6eac0c57f9  gcc/testsuite/gcc.dg/Wstrict-overflow-15.c
- d073c2038b51bc8c9fff723efab10eaa  gcc/testsuite/gcc.dg/Wstrict-overflow-16.c
- 5abcb1076457d35302c9050c02874e82  gcc/testsuite/gcc.dg/Wstrict-overflow-17.c
- 534fab5c92abaf3acf41c21b886e30d2  gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
- b52d121e1316dbd9e52693b569b05bc6  gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
- 9391f3a448b1237ff2144b2525ab77a0  gcc/testsuite/gcc.dg/Wstrict-overflow-2.c
- ee8039d5d07f67c24878cd6c0c5c5feb  gcc/testsuite/gcc.dg/Wstrict-overflow-20.c
- 167ebb1c270e158c31f713ca1543922e  gcc/testsuite/gcc.dg/Wstrict-overflow-21.c
- bfc663ffe6e57f766fa3d5ea61094f45  gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
- 1183e3a61062495f2a2c7d53c3304fc4  gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
- 2ae95adea145503dd29f9ab2e813f13e  gcc/testsuite/gcc.dg/Wstrict-overflow-26.c
- 1e3318a6af245b949f1c505b7e8b1ab4  gcc/testsuite/gcc.dg/Wstrict-overflow-27.c
- 43d27c6b3c5f95da1becd819eb01bc7c  gcc/testsuite/gcc.dg/Wstrict-overflow-4.c
- 78e163530595bd814f038df2ea425bbd  gcc/testsuite/gcc.dg/Wstrict-overflow-6.c
- 9370d40d57e04c6abd79b41e84b18923  gcc/testsuite/gcc.dg/Wstrict-overflow-7.c
- dca4d071a83223262a2d5fa630b1dce7  gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
  d16c4746f11d3c8c32ad67a5f38a857d  gcc/testsuite/gcc.dg/Wstring-compare-2.c
  f386e62f0368675c818d0680e43238c1  gcc/testsuite/gcc.dg/Wstring-compare-3.c
  1af01381c92736dc6947178cfbe38286  gcc/testsuite/gcc.dg/Wstring-compare.c
--- 51094,51099 ----
*************** aa6e262f1d508ec048e76ac4af6675a4  gcc/te
*** 52277,52282 ****
--- 52305,52314 ----
  f525432551e7ed288bba1822837bc342  gcc/testsuite/gcc.dg/bitint-130.c
  d8a2ce357fedbb0b34fa7ed096b60a22  gcc/testsuite/gcc.dg/bitint-131.c
  81b5fc705410e41c3e4f3d0486526920  gcc/testsuite/gcc.dg/bitint-132.c
+ c6c062afcbfcf1773f8643cb9c680878  gcc/testsuite/gcc.dg/bitint-133.c
+ 640106caf441d1dc13c7960973536172  gcc/testsuite/gcc.dg/bitint-134.c
+ 224168b724b7cd0477d851df0b0508fd  gcc/testsuite/gcc.dg/bitint-135.c
+ 2b817b0eceb5bad3bd6792766b2e505f  gcc/testsuite/gcc.dg/bitint-136.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
  acfbe287f11e3faf0020cde57be42822  gcc/testsuite/gcc.dg/bitint-16.c
*************** ee8131c6a8c9753b56fee8c390b0317c  gcc/te
*** 56738,56744 ****
  60361af977014e7bcbcbd7f689d078ba  gcc/testsuite/gcc.dg/ipa/PR64559.c
  484329c6f176bf519f41e9257ff4adda  gcc/testsuite/gcc.dg/ipa/PR65282.c
  d4c1a7113a33d3c2137dc2348b102dc0  gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
! 0c21243b5f905c28312323f53e90cbbd  gcc/testsuite/gcc.dg/ipa/fnsummary-1.c
  5bb1e383d7837b494b7630980b0ef6f3  gcc/testsuite/gcc.dg/ipa/fopt-info-inline-1.c
  6438286ac73aa139024f31997ab14db7  gcc/testsuite/gcc.dg/ipa/iinline-1.c
  8c71eef392227cf4fbf71b2219f5af59  gcc/testsuite/gcc.dg/ipa/iinline-2.c
--- 56770,56776 ----
  60361af977014e7bcbcbd7f689d078ba  gcc/testsuite/gcc.dg/ipa/PR64559.c
  484329c6f176bf519f41e9257ff4adda  gcc/testsuite/gcc.dg/ipa/PR65282.c
  d4c1a7113a33d3c2137dc2348b102dc0  gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
! 0f620b3e6d2e18ed797ba8a292654d38  gcc/testsuite/gcc.dg/ipa/fnsummary-1.c
  5bb1e383d7837b494b7630980b0ef6f3  gcc/testsuite/gcc.dg/ipa/fopt-info-inline-1.c
  6438286ac73aa139024f31997ab14db7  gcc/testsuite/gcc.dg/ipa/iinline-1.c
  8c71eef392227cf4fbf71b2219f5af59  gcc/testsuite/gcc.dg/ipa/iinline-2.c
*************** bd8139d78717b2c59fb034414884e732  gcc/te
*** 57794,57800 ****
  31c22741d2efc49130ed805245ca2eef  gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
  264d209c57cc45ef9e3d126da7533b59  gcc/testsuite/gcc.dg/optimize-bswapsi-6.c
  83a0ff009417660c84e29c7126de74fa  gcc/testsuite/gcc.dg/optimize-bswapsi-7.c
! a8c315968907b6e4af7ba7ac664c3d4d  gcc/testsuite/gcc.dg/opts-1.c
  4d9c904a82fe597f0cd8af7c5de6e850  gcc/testsuite/gcc.dg/opts-2.c
  38a8c929ac7b34d42957355372ae18f5  gcc/testsuite/gcc.dg/opts-3.c
  52af19ae3928ad977bfd497068f37530  gcc/testsuite/gcc.dg/opts-4.c
--- 57826,57832 ----
  31c22741d2efc49130ed805245ca2eef  gcc/testsuite/gcc.dg/optimize-bswapsi-5.c
  264d209c57cc45ef9e3d126da7533b59  gcc/testsuite/gcc.dg/optimize-bswapsi-6.c
  83a0ff009417660c84e29c7126de74fa  gcc/testsuite/gcc.dg/optimize-bswapsi-7.c
! a7c81d8a6b901cb118283ac3a10f5593  gcc/testsuite/gcc.dg/opts-1.c
  4d9c904a82fe597f0cd8af7c5de6e850  gcc/testsuite/gcc.dg/opts-2.c
  38a8c929ac7b34d42957355372ae18f5  gcc/testsuite/gcc.dg/opts-3.c
  52af19ae3928ad977bfd497068f37530  gcc/testsuite/gcc.dg/opts-4.c
*************** f402be89e4891c76c691c8144fe168f7  gcc/te
*** 58910,58915 ****
--- 58942,58948 ----
  5bc3929959db4e7efdda8bc02c4c7e26  gcc/testsuite/gcc.dg/pr124454-1.c
  f733cdb22a88b058648393623d505a3f  gcc/testsuite/gcc.dg/pr124476.c
  579ed8ebf6c470274c30ac557f9672d2  gcc/testsuite/gcc.dg/pr124576.c
+ a0af6600ae1ec0429d2ce13c4ccc8a92  gcc/testsuite/gcc.dg/pr124630.c
  0b8c4e1486bc61b4cdb4efb2e7f08d74  gcc/testsuite/gcc.dg/pr124635.c
  0ced2b8b876682f9fea2fd8e8fc8b6a9  gcc/testsuite/gcc.dg/pr124671.c
  f85e3805a900aeb94e96e6ea1712a125  gcc/testsuite/gcc.dg/pr124809.c
*************** e19df95f209b2da05645180e97cb9dcd  gcc/te
*** 59292,59298 ****
  ca041af75fe0f09cf1a4cb24575fa6b4  gcc/testsuite/gcc.dg/pr36111.c
  0dff0cba33bb03c59caaaac446899c65  gcc/testsuite/gcc.dg/pr36194.c
  a351c46ab7b7896d89c0aaf343781a79  gcc/testsuite/gcc.dg/pr36224.c
- 09d93dcc4bc3e8fbc848668c8b756077  gcc/testsuite/gcc.dg/pr36227.c
  7e5f93038fc8dfcc3034a38162f1bcf0  gcc/testsuite/gcc.dg/pr36300-1.c
  7b00000b8f6d2694034e362af78bfa7d  gcc/testsuite/gcc.dg/pr36300-2.c
  6e918e959631706539f163db55bf114d  gcc/testsuite/gcc.dg/pr36489.c
--- 59325,59330 ----
*************** de8f6616861b6d1833b342b736b8e231  gcc/te
*** 59594,59601 ****
  c9199dd4c92f0ffefd4e78b3e949d60c  gcc/testsuite/gcc.dg/pr47899.c
  0189febe6f5773718cce787cf5f65a31  gcc/testsuite/gcc.dg/pr47917.c
  bace128075344adae336fb1e86e43651  gcc/testsuite/gcc.dg/pr47991.c
- 9695f7e5ee7f573c5b07dffc4d5f88a1  gcc/testsuite/gcc.dg/pr48022-1.c
- e3a905069941b54d512ecbf84029af70  gcc/testsuite/gcc.dg/pr48022-2.c
  7fa77c9fcc9e27b5464b0d8bd984e5d9  gcc/testsuite/gcc.dg/pr48062.c
  dbad6bf21c758cc9426e223a6921b19a  gcc/testsuite/gcc.dg/pr48067.c
  be00a8a02bef3dc23f87c37115049083  gcc/testsuite/gcc.dg/pr48134.c
--- 59626,59631 ----
*************** f648b3ca8fa8dacfae5505b781aa9ac3  gcc/te
*** 59647,59653 ****
  278101dc56c6c92fe5b965c1bf9f4c01  gcc/testsuite/gcc.dg/pr49602.c
  cee7e9aebbf42a1e10d45436fcd9ac4a  gcc/testsuite/gcc.dg/pr49619.c
  57c18c96941d65f3b717abf870bf1120  gcc/testsuite/gcc.dg/pr49696.c
- 1a9eab63069af84d88f5e225fc651582  gcc/testsuite/gcc.dg/pr49705.c
  c81fad7542fb13b97b0fbfa63560156f  gcc/testsuite/gcc.dg/pr49799.c
  2d41b2550df31018c871f06b9d2b19b2  gcc/testsuite/gcc.dg/pr49860.c
  b0b7289b6caa51cb2716571334d3063d  gcc/testsuite/gcc.dg/pr49899.c
--- 59677,59682 ----
*************** fd89861b9252a0fb20bd9228ee0e3ce8  gcc/te
*** 59749,59755 ****
  32b30927820f59f30da88af1324b8559  gcc/testsuite/gcc.dg/pr52808.c
  e2ec6d72bdfd63430ec334fa1b08a13a  gcc/testsuite/gcc.dg/pr52862.c
  972a77d78979d9949f2962ab47e1409b  gcc/testsuite/gcc.dg/pr52880.c
- 257e77438ad3ee1c091c74ad4c8c91da  gcc/testsuite/gcc.dg/pr52904.c
  2ef0147a6461ad47446f6cf74e6e5743  gcc/testsuite/gcc.dg/pr53037-1.c
  4aa7b4b0a5ca35106f4a0b6d3580c61d  gcc/testsuite/gcc.dg/pr53037-2.c
  24c4553a939b3bb86fc30396cc2ca4e4  gcc/testsuite/gcc.dg/pr53037-3.c
--- 59778,59783 ----
*************** bb156c6c81366579b6d35fa7f4c47036  gcc/te
*** 60376,60382 ****
  c3a7668e11743524d0adc31ad84aaa1e  gcc/testsuite/gcc.dg/pr81564.c
  bacc84d97eb736b7ff43089089accd59  gcc/testsuite/gcc.dg/pr81578.c
  d0740fea8c2bde45e4d2daafa1a131cc  gcc/testsuite/gcc.dg/pr81588.c
! ac9cd43f4966552e06f69dd903586ae5  gcc/testsuite/gcc.dg/pr81592.c
  25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
  15e9928cc7fd07b5da8b5ab724a2878d  gcc/testsuite/gcc.dg/pr81650.c
  44463eeb15323b96c557afddb523b471  gcc/testsuite/gcc.dg/pr81661.c
--- 60404,60410 ----
  c3a7668e11743524d0adc31ad84aaa1e  gcc/testsuite/gcc.dg/pr81564.c
  bacc84d97eb736b7ff43089089accd59  gcc/testsuite/gcc.dg/pr81578.c
  d0740fea8c2bde45e4d2daafa1a131cc  gcc/testsuite/gcc.dg/pr81588.c
! 8ef154e2e2c7d66e5d77b2e9492610d1  gcc/testsuite/gcc.dg/pr81592.c
  25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
  15e9928cc7fd07b5da8b5ab724a2878d  gcc/testsuite/gcc.dg/pr81650.c
  44463eeb15323b96c557afddb523b471  gcc/testsuite/gcc.dg/pr81661.c
*************** cd69ccaaeda9135ad00087594e6184dc  gcc/te
*** 60969,60975 ****
  5f2a2de0d5914faa1ba7ad8f5b1996d0  gcc/testsuite/gcc.dg/pragma-diag-1.c
  4d38693f433bacf50dd2fbcc072129a1  gcc/testsuite/gcc.dg/pragma-diag-10.c
  3927755743a61af316a63adaa0bfa70b  gcc/testsuite/gcc.dg/pragma-diag-2.c
! b0f8c4136fa3fadda0bb7286049aebb9  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
  723d12527ff2fe04be31723543977c45  gcc/testsuite/gcc.dg/pragma-diag-6.c
--- 60997,61003 ----
  5f2a2de0d5914faa1ba7ad8f5b1996d0  gcc/testsuite/gcc.dg/pragma-diag-1.c
  4d38693f433bacf50dd2fbcc072129a1  gcc/testsuite/gcc.dg/pragma-diag-10.c
  3927755743a61af316a63adaa0bfa70b  gcc/testsuite/gcc.dg/pragma-diag-2.c
! 345aadf1b29acecac784368750fbb19d  gcc/testsuite/gcc.dg/pragma-diag-3.c
  7b506a3b87be9653f7adc0616c85ddaf  gcc/testsuite/gcc.dg/pragma-diag-4.c
  d6168f0bfa501820da2947f6acdd96ef  gcc/testsuite/gcc.dg/pragma-diag-5.c
  723d12527ff2fe04be31723543977c45  gcc/testsuite/gcc.dg/pragma-diag-6.c
*************** a4e7912ba45315f15f41a05f18653c74  gcc/te
*** 61449,61455 ****
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
  07e6a63f5ceb593a5ec396e028fd341c  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! 37bc180d71e72229e3d48d77381916ab  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  3375b039bdaf5a1d18366c0c2f11f507  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
  6e9664759f9a2a278adb8639495ec2e1  gcc/testsuite/gcc.dg/stdckdint-1.c
--- 61477,61483 ----
  3eb20a070e129b9f71ad84ec481fe8df  gcc/testsuite/gcc.dg/stack-layout-1.c
  d5355400a72402c33417096b04dc2a5d  gcc/testsuite/gcc.dg/stack-layout-2.c
  07e6a63f5ceb593a5ec396e028fd341c  gcc/testsuite/gcc.dg/stack-layout-dynamic-1.c
! 41c88a1fa5ff9b4f8c72cf3fc1fde2ef  gcc/testsuite/gcc.dg/stack-usage-1.c
  198c846924d490e8eba17829d0caf626  gcc/testsuite/gcc.dg/stack-usage-2.c
  3375b039bdaf5a1d18366c0c2f11f507  gcc/testsuite/gcc.dg/stackprotectexplicit1.c
  6e9664759f9a2a278adb8639495ec2e1  gcc/testsuite/gcc.dg/stdckdint-1.c
*************** d7326ef9375ea91105dcbf0bba4d1205  gcc/te
*** 62015,62020 ****
--- 62043,62049 ----
  b6424a10413a947652a95562d4e3b802  gcc/testsuite/gcc.dg/torture/bitint-96.c
  ee26ff7694951d734cb37f5440d359f0  gcc/testsuite/gcc.dg/torture/bitint-97.c
  c299927a53c830c051bc34995cc856a1  gcc/testsuite/gcc.dg/torture/bitint-98.c
+ 01beaa69b46f1a7f6e5d5c484cc9edc8  gcc/testsuite/gcc.dg/torture/bitint-99.c
  cf9904d4026e69bddaf745011bbaaab3  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  c3c39411545c83e500562780b71883b6  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
  3799cfeec447b62af156b116f77ae4e8  gcc/testsuite/gcc.dg/torture/builtin-convert-1.c
*************** f04a0ca1134a2f6b7f28283527f4394b  gcc/te
*** 62801,62807 ****
--- 62830,62838 ----
  4f9a7c7f22e75df6c54df1e67ad75557  gcc/testsuite/gcc.dg/torture/pr125234-1.c
  97b1645c0c31a99b15b63ae9e310caed  gcc/testsuite/gcc.dg/torture/pr125250.c
  9ef627b78ab64a9e96e5c32fca00b504  gcc/testsuite/gcc.dg/torture/pr125290-1.c
+ 0b34788b54b02a9e9a5b23bbc972d402  gcc/testsuite/gcc.dg/torture/pr125396-1.c
  d769bd22a00fe25d5f4489238592c27f  gcc/testsuite/gcc.dg/torture/pr125419-1.c
+ 6a16ceebaece6036d0f60fda105af99e  gcc/testsuite/gcc.dg/torture/pr125453-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
*************** e0f2db853fca999c02cdf79ba1194a7a  gcc/te
*** 64466,64472 ****
  a0f533cf1734bcf6ffb5fc5a84378862  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-4.c
  3169d2a3ce970212b12d917baf5b24b1  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c
  39eed18d80aa24f1a65dbe00e3249c05  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-6.c
! 443298e1325b7200ac2bc6f7b658a6c7  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
  ba534422ad0a79e177e4df595590f346  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-8.c
  bbd27c9626a85b85613edc25e673f5b8  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-9.c
  8fbc9eee0416b3a104acac36b4f55468  gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
--- 64497,64503 ----
  a0f533cf1734bcf6ffb5fc5a84378862  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-4.c
  3169d2a3ce970212b12d917baf5b24b1  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-5.c
  39eed18d80aa24f1a65dbe00e3249c05  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-6.c
! bbaacb6a59236774867cbe061ab4e8c5  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
  ba534422ad0a79e177e4df595590f346  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-8.c
  bbd27c9626a85b85613edc25e673f5b8  gcc/testsuite/gcc.dg/tree-ssa/copy-headers-9.c
  8fbc9eee0416b3a104acac36b4f55468  gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
*************** dfe8d5ab532409e84d48b549d54eaf25  gcc/te
*** 66026,66038 ****
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
  42cfda00a4e3f590579d9164da8db652  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
! 10c1af7fa5ffda3e118bacb383d46f57  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
  84aa833acb5b0b615f7f68aa3b7e2469  gcc/testsuite/gcc.dg/tree-ssa/split-path-12.c
! 5f9b5295c2afe0d2059a327f97a9af94  gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c
! d25bed281c9e52c5070488f498c6e1ac  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  df2fef34213133c5afed537f489aca64  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  d992ba599bfc7773921562d11d02f7da  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
! a947bd2aec2bda9a99172e0f0bfe8acd  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
  7306543330c7415c1a56433c3640a1da  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
  46474197a5896cf18dd8ec96929014da  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
--- 66057,66069 ----
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
  42cfda00a4e3f590579d9164da8db652  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
! 4f74ab053fb15d2aae883b3d30d3d4b2  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
  84aa833acb5b0b615f7f68aa3b7e2469  gcc/testsuite/gcc.dg/tree-ssa/split-path-12.c
! 6e73a8d607b554d156c4bb4d6b18de63  gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c
! 4ed8bda954bf8d5f0f9cec4c89152dc7  gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
  df2fef34213133c5afed537f489aca64  gcc/testsuite/gcc.dg/tree-ssa/split-path-3.c
  d992ba599bfc7773921562d11d02f7da  gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
! 8532e7dedadcd4286f689f12209bd1bf  gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
  7306543330c7415c1a56433c3640a1da  gcc/testsuite/gcc.dg/tree-ssa/split-path-6.c
  46474197a5896cf18dd8ec96929014da  gcc/testsuite/gcc.dg/tree-ssa/split-path-7.c
  cc58f2bbf63f20c83f4c8c0d2d1348d8  gcc/testsuite/gcc.dg/tree-ssa/split-path-8.c
*************** e9a7f92621e123a2f43bd6eb8a377ec4  gcc/te
*** 67260,67266 ****
  65c2e352193aba278f5e7bc523df7f77  gcc/testsuite/gcc.dg/vect/bb-slp-sum-of-diffs.c
  fc8c785166c2bf723856a358abae638a  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-double.c
  f3f8f88ffc2fdbd76104d8c2df9d5a2c  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-float.c
! 95726074b91226ec9408baaf51f6fc5f  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c
  10728fb4a6950c82cb6bc9d0eb53db56  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-double.c
  9c1bae87de05b1d234e79606fac9e2ed  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-float.c
  fe3215787c8e8f2ed17a1b9c757b5bcb  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-half-float.c
--- 67291,67297 ----
  65c2e352193aba278f5e7bc523df7f77  gcc/testsuite/gcc.dg/vect/bb-slp-sum-of-diffs.c
  fc8c785166c2bf723856a358abae638a  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-double.c
  f3f8f88ffc2fdbd76104d8c2df9d5a2c  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-float.c
! a4acb982e3a6f00145126f99a78b2b9c  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c
  10728fb4a6950c82cb6bc9d0eb53db56  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-double.c
  9c1bae87de05b1d234e79606fac9e2ed  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-float.c
  fe3215787c8e8f2ed17a1b9c757b5bcb  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-half-float.c
*************** fe3215787c8e8f2ed17a1b9c757b5bcb  gcc/te
*** 67272,67284 ****
  87e4526cc9df43f2a40e361af1b14bae  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
  be69beba870ab0e8027df3a96e1e3a99  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-double.c
  a2b6574b490bdeae547c7c3d79c95eed  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-float.c
! ebaebc19e7f2353f823de1f12e1687af  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c
  fa9e975179c7549630562771c7beb477  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-double.c
  696fb756ddff68598ae74b6574bf930a  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-float.c
  8bf53e580f4f0838c8bb08429abb3cc6  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-half-float.c
  63d0650eadca149641643cc10372f0dc  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-double.c
  7872d9eb2f30f8baf7e42f5ccc6980ad  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-float.c
! d039718def2f3937914a518ee3bf2343  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c
  1fc38485361104e297d916db73278323  gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c
  f98f85041aa7e74dc854e5f95344a5e7  gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
  9224167900cc04aa98d04baedf23218f  gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c
--- 67303,67315 ----
  87e4526cc9df43f2a40e361af1b14bae  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
  be69beba870ab0e8027df3a96e1e3a99  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-double.c
  a2b6574b490bdeae547c7c3d79c95eed  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-float.c
! fd056a6aeada05eb60c69f625235db74  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c
  fa9e975179c7549630562771c7beb477  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-double.c
  696fb756ddff68598ae74b6574bf930a  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-float.c
  8bf53e580f4f0838c8bb08429abb3cc6  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mls-half-float.c
  63d0650eadca149641643cc10372f0dc  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-double.c
  7872d9eb2f30f8baf7e42f5ccc6980ad  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-float.c
! 0b4c422ecb64940ebd5b7b2b63d1ca4c  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c
  1fc38485361104e297d916db73278323  gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c
  f98f85041aa7e74dc854e5f95344a5e7  gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
  9224167900cc04aa98d04baedf23218f  gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c
*************** afb9c2452043c4e42b352d4e8ff76fc5  gcc/te
*** 68739,68744 ****
--- 68770,68786 ----
  064fad2dfa034410343d195edfc9a26d  gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
  41840760f1977f481892205b1118db9b  gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
  5255db3025b7dc2620f6c83a2979c5ba  gcc/testsuite/gcc.dg/vect/vect-dv-1.c
+ b79026687229783cdeac0ff4a4ff75de  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_1.c
+ 2b9c2b5dc6b33868e514d62a714533d4  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_10.c
+ 18fbc255d62b8d082e93a191ec6d6b98  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_11.c
+ d4c1971001b9f97e1eff2af6a57460be  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_2.c
+ cc06c0ec808beac2f385fb736b69ed0a  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_3.c
+ ef4395e4287b0c5e23a1042d98569553  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_4.c
+ 76799da956cd671863fef1a2cd8b570d  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_5.c
+ 6f3fc9d2808393b62ae4c63b6fbc9e5f  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_6.c
+ fc77f68ef2930177e97a64e54fe595be  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_7.c
+ c5c4ec7fbd84f0d0313c5ded82d5cfac  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_8.c
+ 9bae677851a47e69ecf8e06e50ef534c  gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_9.c
  4747b41b65ed1b3e582dd065bdc81d27  gcc/testsuite/gcc.dg/vect/vect-early-break-run_1.c
  ea56c22a03eb32b0e220d6e15ef8436a  gcc/testsuite/gcc.dg/vect/vect-early-break-run_10.c
  16bcb04c3817a36a854370d9e98dfa98  gcc/testsuite/gcc.dg/vect/vect-early-break-run_2.c
*************** da160a8349fe2e0daa932c3bd967f635  gcc/te
*** 69144,69149 ****
--- 69186,69192 ----
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
  b860939f62d716a264f763f82b69b2c8  gcc/testsuite/gcc.dg/vect/vect-prefetch-drop.c
+ 27a59828b347ef4e58b80080b9b10a8b  gcc/testsuite/gcc.dg/vect/vect-prefetch-drop_2.c
  bcf8d4d938304b75cfe5af73ef6b191b  gcc/testsuite/gcc.dg/vect/vect-profile-1.c
  ae4441b04534528916849ebd82e66022  gcc/testsuite/gcc.dg/vect/vect-recip.c
  dcb575790bfcf549452814ca72a66ab3  gcc/testsuite/gcc.dg/vect/vect-recurr-1.c
*************** a545b8f7fc60af12576f85397e1733cb  gcc/te
*** 70033,70039 ****
  d75448581ffe687b59d90766e852e7df  gcc/testsuite/gcc.target/aarch64/acle/bf16_feature.c
  80f5f996bc3addf12ec6ed7a7a97d085  gcc/testsuite/gcc.target/aarch64/acle/bf16_sve_feature.c
  62e20cc9b647dedfdd26cf101e10f58e  gcc/testsuite/gcc.target/aarch64/acle/bti_def.c
! d124c7c1e8b3b4829d01e2f756bf3113  gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
--- 70076,70082 ----
  d75448581ffe687b59d90766e852e7df  gcc/testsuite/gcc.target/aarch64/acle/bf16_feature.c
  80f5f996bc3addf12ec6ed7a7a97d085  gcc/testsuite/gcc.target/aarch64/acle/bf16_sve_feature.c
  62e20cc9b647dedfdd26cf101e10f58e  gcc/testsuite/gcc.target/aarch64/acle/bti_def.c
! 548a3d0faf6558cd1d91bf65e40226cd  gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
*************** ee2655ac32e03b2e446c179151077b7f  gcc/te
*** 70053,70059 ****
  6250b2f6cb86c3d3eff8e1089a62dc6b  gcc/testsuite/gcc.target/aarch64/acle/fpmr-4.c
  b124b4a8775459bdb8e9131c4d83da44  gcc/testsuite/gcc.target/aarch64/acle/fpmr-5.c
  d25dadda19568d3e3a80f390ab997b6f  gcc/testsuite/gcc.target/aarch64/acle/fpmr-6.c
! f8963e4d534b1e16d42c1b8dfefdcc33  gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c
  56cadf41ea040c38f913b6c3e6475be3  gcc/testsuite/gcc.target/aarch64/acle/jcvt_1.c
  a7c4014d53740d897076d06edcac5aaa  gcc/testsuite/gcc.target/aarch64/acle/jcvt_2.c
  ccf5175907998c0c871634fd51ca889f  gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c
--- 70096,70102 ----
  6250b2f6cb86c3d3eff8e1089a62dc6b  gcc/testsuite/gcc.target/aarch64/acle/fpmr-4.c
  b124b4a8775459bdb8e9131c4d83da44  gcc/testsuite/gcc.target/aarch64/acle/fpmr-5.c
  d25dadda19568d3e3a80f390ab997b6f  gcc/testsuite/gcc.target/aarch64/acle/fpmr-6.c
! 9f27c626cf36fb1cce3ac775d318d73f  gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c
  56cadf41ea040c38f913b6c3e6475be3  gcc/testsuite/gcc.target/aarch64/acle/jcvt_1.c
  a7c4014d53740d897076d06edcac5aaa  gcc/testsuite/gcc.target/aarch64/acle/jcvt_2.c
  ccf5175907998c0c871634fd51ca889f  gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c
*************** cb2535b12d22ed2d65b724ad88f45bc4  gcc/te
*** 70091,70097 ****
  0a69bf9729408f6be58df7afb5e98546  gcc/testsuite/gcc.target/aarch64/acle/pldir.c
  4f75ca7b0d38f756a18d8f9574e56fd4  gcc/testsuite/gcc.target/aarch64/acle/pmull64.c
  7891d663249f27cbe3e8c65142207451  gcc/testsuite/gcc.target/aarch64/acle/pr108140.c
! e15fb874d0ae7c74f74b2eb5bd8f8bf3  gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
  9effc18b2bce4cad72da3e28af5e9e4f  gcc/testsuite/gcc.target/aarch64/acle/pr110132.c
  08a8a5810dce9bd6c10770aa725b8e19  gcc/testsuite/gcc.target/aarch64/acle/rcpc3.c
  59a572a57e0172b2d647b53aaa71b73b  gcc/testsuite/gcc.target/aarch64/acle/rintnzx_1.c
--- 70134,70140 ----
  0a69bf9729408f6be58df7afb5e98546  gcc/testsuite/gcc.target/aarch64/acle/pldir.c
  4f75ca7b0d38f756a18d8f9574e56fd4  gcc/testsuite/gcc.target/aarch64/acle/pmull64.c
  7891d663249f27cbe3e8c65142207451  gcc/testsuite/gcc.target/aarch64/acle/pr108140.c
! 2b6c70e9dc2f0e7f95493b892c9c1b26  gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
  9effc18b2bce4cad72da3e28af5e9e4f  gcc/testsuite/gcc.target/aarch64/acle/pr110132.c
  08a8a5810dce9bd6c10770aa725b8e19  gcc/testsuite/gcc.target/aarch64/acle/rcpc3.c
  59a572a57e0172b2d647b53aaa71b73b  gcc/testsuite/gcc.target/aarch64/acle/rintnzx_1.c
*************** fa7780f2752e4fa50b018aad6ab46b33  gcc/te
*** 70834,70841 ****
  45fd75f2db6f8fa64db6d2ca793f30a9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align32-O2.c
  ba1aa14b7548fcc22d232467eb0998c9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align8-O2.c
  f7378d596bb7308498db40ad34fd8dab  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning.h
! 7ee185cb33807a1f720d53edf2d9ea7f  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c
! 7be9d438ae36df6c35211a17e968308a  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c
  b2b956bad084ba29822ce226a454dfc9  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi.h
  cd00ceeea45683383cf6ab2205253ad0  gcc/testsuite/gcc.target/aarch64/bitint-alignments.c
  965ec77b8d3e85d1504d8274b1d5ec0c  gcc/testsuite/gcc.target/aarch64/bitint-args.c
--- 70877,70884 ----
  45fd75f2db6f8fa64db6d2ca793f30a9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align32-O2.c
  ba1aa14b7548fcc22d232467eb0998c9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align8-O2.c
  f7378d596bb7308498db40ad34fd8dab  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning.h
! 94c192dfa9c66e7e787ceb538d9e0b18  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c
! 32eb07059f9714c1dcc6bae54be1d8ca  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c
  b2b956bad084ba29822ce226a454dfc9  gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi.h
  cd00ceeea45683383cf6ab2205253ad0  gcc/testsuite/gcc.target/aarch64/bitint-alignments.c
  965ec77b8d3e85d1504d8274b1d5ec0c  gcc/testsuite/gcc.target/aarch64/bitint-args.c
*************** c944449cf5b356cfed6ac847f005db22  gcc/te
*** 70888,70895 ****
  241d8ea25e2bb3fe6d39fe6f2201baf9  gcc/testsuite/gcc.target/aarch64/ccmp_3.c
  f19dc69c0aeda4c531ac93459c18637a  gcc/testsuite/gcc.target/aarch64/ccmp_4.c
  9239537044e0e8b3473c23208cfaec87  gcc/testsuite/gcc.target/aarch64/ccmp_5.c
! 70c0b89f4478698228c8666355217647  gcc/testsuite/gcc.target/aarch64/chkfeat-1.c
! 4aa2d1c495d6def4c227963d7952b5ef  gcc/testsuite/gcc.target/aarch64/chkfeat-2.c
  210a06b80ccb6a87c0693b42719d3182  gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
  f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/testsuite/gcc.target/aarch64/clrsb.c
  06b1d011104c741b0b515b92676f6c71  gcc/testsuite/gcc.target/aarch64/clz.c
--- 70931,70938 ----
  241d8ea25e2bb3fe6d39fe6f2201baf9  gcc/testsuite/gcc.target/aarch64/ccmp_3.c
  f19dc69c0aeda4c531ac93459c18637a  gcc/testsuite/gcc.target/aarch64/ccmp_4.c
  9239537044e0e8b3473c23208cfaec87  gcc/testsuite/gcc.target/aarch64/ccmp_5.c
! 765b521e40a2ec0b9e3b4b41bbf8eb17  gcc/testsuite/gcc.target/aarch64/chkfeat-1.c
! 2c99cb1a0a63ab9185d01805bc08883c  gcc/testsuite/gcc.target/aarch64/chkfeat-2.c
  210a06b80ccb6a87c0693b42719d3182  gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
  f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/testsuite/gcc.target/aarch64/clrsb.c
  06b1d011104c741b0b515b92676f6c71  gcc/testsuite/gcc.target/aarch64/clz.c
*************** dcbe68009cf519fec972930376254917  gcc/te
*** 70905,70911 ****
  30def1aed0f72b4de05071d990411f92  gcc/testsuite/gcc.target/aarch64/cmpbr-3.c
  9ad011820658da0adf00e992677c5a87  gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
  284a9e1dc225fd1f94fa5595de5a9fb3  gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
! eebc0417878d7c88189b1642d56018d0  gcc/testsuite/gcc.target/aarch64/cmpbr.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
--- 70948,70954 ----
  30def1aed0f72b4de05071d990411f92  gcc/testsuite/gcc.target/aarch64/cmpbr-3.c
  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
  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
*************** a9ccf8cef71e90daa83ae00204fd983c  gcc/te
*** 71061,71067 ****
  5fdc01fccf89920c24ce6dadea7114d3  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_2.c
  a041d79193cf5904e847d0b04f865370  gcc/testsuite/gcc.target/aarch64/early_ra_1.c
  8315d244ed24d1cd05bc6fae2d911e8e  gcc/testsuite/gcc.target/aarch64/eh_return-2.c
! 541dacd7bf1c293af6ef0e1ad4c5f943  gcc/testsuite/gcc.target/aarch64/eh_return-3.c
  2818d548f4447845f5e9a6ff272a8403  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
  f2c4a1c8449840e049da3e2b01f2ee85  gcc/testsuite/gcc.target/aarch64/eor3-opt.c
--- 71104,71110 ----
  5fdc01fccf89920c24ce6dadea7114d3  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_2.c
  a041d79193cf5904e847d0b04f865370  gcc/testsuite/gcc.target/aarch64/early_ra_1.c
  8315d244ed24d1cd05bc6fae2d911e8e  gcc/testsuite/gcc.target/aarch64/eh_return-2.c
! 826af8b4a22ad132341fa0069b793061  gcc/testsuite/gcc.target/aarch64/eh_return-3.c
  2818d548f4447845f5e9a6ff272a8403  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
  f2c4a1c8449840e049da3e2b01f2ee85  gcc/testsuite/gcc.target/aarch64/eor3-opt.c
*************** f882a3bcf76769d2283cd4e0d6a2e78e  gcc/te
*** 71081,71086 ****
--- 71124,71130 ----
  9c119f8df44ce77ecfc28a65abf8a65d  gcc/testsuite/gcc.target/aarch64/erratas_opt_7.c
  22c29db8b0e375d1103b7babe7f2fcac  gcc/testsuite/gcc.target/aarch64/erratas_opt_8.c
  e97b955f204e1a0d3642543b55763bb6  gcc/testsuite/gcc.target/aarch64/erratas_opt_9.c
+ 4c419d768da544ff67135f2e2b457f19  gcc/testsuite/gcc.target/aarch64/ext-dce-1.c
  8dac5a05d1eca8860b3df16bc7b03f2a  gcc/testsuite/gcc.target/aarch64/extend-syntax.c
  2891c499ed6535aa72a2a9a39cba281f  gcc/testsuite/gcc.target/aarch64/extend-vec.c
  4703bff993ef8bad5cc876cd178c66da  gcc/testsuite/gcc.target/aarch64/extend.c
*************** d14387d4d6469c35c1d6c113cd51a8d4  gcc/te
*** 71212,71220 ****
  237d15896642e0342329e004b64e68d1  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c
  e1dcc78279c9fd4b279892ad7b4b9528  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.h
  a3f09a5788feef95b851aa9332288837  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-3.c
! 59c18033df44edca1b19f79975fe0594  gcc/testsuite/gcc.target/aarch64/gcspopm-1.c
  728bf2591fc293a713ad37c266f44f99  gcc/testsuite/gcc.target/aarch64/gcspr-1.c
! 4c25587ec17a0189db204e6635cab43c  gcc/testsuite/gcc.target/aarch64/gcsss-1.c
  814f2a8701d47a79b645e43e6fe31b57  gcc/testsuite/gcc.target/aarch64/get_fpcr64_1.c
  dcfff550a1456524fd7870f0bec66e6f  gcc/testsuite/gcc.target/aarch64/get_fpsr64_1.c
  77410b35f9bf6bc7cf2a51fbc9461727  gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
--- 71256,71264 ----
  237d15896642e0342329e004b64e68d1  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.c
  e1dcc78279c9fd4b279892ad7b4b9528  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-2.h
  a3f09a5788feef95b851aa9332288837  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-3.c
! ffeab1a3b6ad9d856f3fcd62ce19fa92  gcc/testsuite/gcc.target/aarch64/gcspopm-1.c
  728bf2591fc293a713ad37c266f44f99  gcc/testsuite/gcc.target/aarch64/gcspr-1.c
! 56783df45bfa59b0750580f230b39f9b  gcc/testsuite/gcc.target/aarch64/gcsss-1.c
  814f2a8701d47a79b645e43e6fe31b57  gcc/testsuite/gcc.target/aarch64/get_fpcr64_1.c
  dcfff550a1456524fd7870f0bec66e6f  gcc/testsuite/gcc.target/aarch64/get_fpsr64_1.c
  77410b35f9bf6bc7cf2a51fbc9461727  gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
*************** e133d603af3ecab67fb41464a457b091  gcc/te
*** 71256,71262 ****
  b37a5781e82510dfa7ecdf3ce4922a58  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  991106b935a581db429c79eb1313b434  gcc/testsuite/gcc.target/aarch64/inszero_split_1.c
! 18f0bd2efa738426efce6208b83e0cbd  gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
  2feabf7a23a544e445cd6f1d402811d0  gcc/testsuite/gcc.target/aarch64/lane-bound-1.c
  49907aab7182a2a85495455c2d574117  gcc/testsuite/gcc.target/aarch64/lane-bound-2.c
  a2e2c14972d8ad4675b55c041ef37bd5  gcc/testsuite/gcc.target/aarch64/lane-bound-3.c
--- 71300,71306 ----
  b37a5781e82510dfa7ecdf3ce4922a58  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  991106b935a581db429c79eb1313b434  gcc/testsuite/gcc.target/aarch64/inszero_split_1.c
! 7ac3aba210a75b796dd4d6293416a4a0  gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
  2feabf7a23a544e445cd6f1d402811d0  gcc/testsuite/gcc.target/aarch64/lane-bound-1.c
  49907aab7182a2a85495455c2d574117  gcc/testsuite/gcc.target/aarch64/lane-bound-2.c
  a2e2c14972d8ad4675b55c041ef37bd5  gcc/testsuite/gcc.target/aarch64/lane-bound-3.c
*************** eaf979ea406da0e4b0c25f5727580faa  gcc/te
*** 71279,71285 ****
  f63af0e2c637d2d9ca8823625488dcda  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.c
  5163e8d4cea70416f782eaff9affa0df  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.h
  1f6c2cb1d0138cf6fab877c2e97f2ee1  gcc/testsuite/gcc.target/aarch64/ldp_stp_15.c
! 1df852b19573d2ea3b90e47cd4c3cb14  gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
  ffedc0ef46ae1e25eb82fb4257a7f56e  gcc/testsuite/gcc.target/aarch64/ldp_stp_17.c
  3a55fffd11d3423c5e90823f9fde479a  gcc/testsuite/gcc.target/aarch64/ldp_stp_18.c
  c5975ec22e631fd84b727d806f60c43b  gcc/testsuite/gcc.target/aarch64/ldp_stp_19.c
--- 71323,71329 ----
  f63af0e2c637d2d9ca8823625488dcda  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.c
  5163e8d4cea70416f782eaff9affa0df  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.h
  1f6c2cb1d0138cf6fab877c2e97f2ee1  gcc/testsuite/gcc.target/aarch64/ldp_stp_15.c
! 151737dcaa4735e8423ad45cc5a23ccc  gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
  ffedc0ef46ae1e25eb82fb4257a7f56e  gcc/testsuite/gcc.target/aarch64/ldp_stp_17.c
  3a55fffd11d3423c5e90823f9fde479a  gcc/testsuite/gcc.target/aarch64/ldp_stp_18.c
  c5975ec22e631fd84b727d806f60c43b  gcc/testsuite/gcc.target/aarch64/ldp_stp_19.c
*************** cb18e653bc36a91d64d93edcc2632490  gcc/te
*** 71332,71339 ****
  33eab0e3b5245e5b101b281c59cd1cae  gcc/testsuite/gcc.target/aarch64/mem-shift-canonical.c
  5ef2589d506c837eb28befbe4fe31ab7  gcc/testsuite/gcc.target/aarch64/memmove.c
  b50e1f81d7305cfe5249cb4bd2be5e6f  gcc/testsuite/gcc.target/aarch64/memmove2.c
! 913e2469a12f166a024ccedfe08051db  gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c
! f36275b28313084fe8b53fd06787e739  gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c
  ef180504b13044e94b604990b6c3ef43  gcc/testsuite/gcc.target/aarch64/memset-q-reg.c
  99f047cbf8399ea75f540f743fbcd4cb  gcc/testsuite/gcc.target/aarch64/memset-strict-align-1.c
  8540bb84a700a548a308ce55edcbe16e  gcc/testsuite/gcc.target/aarch64/memtag/alloca-1.c
--- 71376,71383 ----
  33eab0e3b5245e5b101b281c59cd1cae  gcc/testsuite/gcc.target/aarch64/mem-shift-canonical.c
  5ef2589d506c837eb28befbe4fe31ab7  gcc/testsuite/gcc.target/aarch64/memmove.c
  b50e1f81d7305cfe5249cb4bd2be5e6f  gcc/testsuite/gcc.target/aarch64/memmove2.c
! 8996f19cc353a08449870313014d1590  gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c
! 93eea1fffda4e3c7054de50077c3a72c  gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c
  ef180504b13044e94b604990b6c3ef43  gcc/testsuite/gcc.target/aarch64/memset-q-reg.c
  99f047cbf8399ea75f540f743fbcd4cb  gcc/testsuite/gcc.target/aarch64/memset-strict-align-1.c
  8540bb84a700a548a308ce55edcbe16e  gcc/testsuite/gcc.target/aarch64/memtag/alloca-1.c
*************** d748f5e863b9d4ccef203f85f7cde94b  gcc/te
*** 71397,71405 ****
  cb35ae597b395ee5d00d96a082dfbd6a  gcc/testsuite/gcc.target/aarch64/mod_2.x
  481a94d7f7a8fdba3c53a9430caeada3  gcc/testsuite/gcc.target/aarch64/mod_256.c
  6714e4053de7fc3d6c40dec08a0ca1d1  gcc/testsuite/gcc.target/aarch64/mod_256.x
! 838782f1efd4baefc000469e9fa89394  gcc/testsuite/gcc.target/aarch64/mops_1.c
! 1a56fe0cba4f9ce878a71c556244fa39  gcc/testsuite/gcc.target/aarch64/mops_2.c
! 9e207cc04909dc52e63cc6c37858b5e4  gcc/testsuite/gcc.target/aarch64/mops_3.c
  4f70f13ba5254fb500f72a9e35ec9b20  gcc/testsuite/gcc.target/aarch64/mops_4.c
  fd48ccb944d2f2990e98c181bd06ec24  gcc/testsuite/gcc.target/aarch64/mops_5.c
  6b6269dcfa6bceb701b7943ad5703be6  gcc/testsuite/gcc.target/aarch64/mops_6.c
--- 71441,71449 ----
  cb35ae597b395ee5d00d96a082dfbd6a  gcc/testsuite/gcc.target/aarch64/mod_2.x
  481a94d7f7a8fdba3c53a9430caeada3  gcc/testsuite/gcc.target/aarch64/mod_256.c
  6714e4053de7fc3d6c40dec08a0ca1d1  gcc/testsuite/gcc.target/aarch64/mod_256.x
! 92c620378a3adfb66f33170c2751fb6d  gcc/testsuite/gcc.target/aarch64/mops_1.c
! dd40ecd010f26edf82543bc77ee4ebcf  gcc/testsuite/gcc.target/aarch64/mops_2.c
! 0b4b491de108a1a436067b202fb34cd1  gcc/testsuite/gcc.target/aarch64/mops_3.c
  4f70f13ba5254fb500f72a9e35ec9b20  gcc/testsuite/gcc.target/aarch64/mops_4.c
  fd48ccb944d2f2990e98c181bd06ec24  gcc/testsuite/gcc.target/aarch64/mops_5.c
  6b6269dcfa6bceb701b7943ad5703be6  gcc/testsuite/gcc.target/aarch64/mops_6.c
*************** f6ab612d7f8f0a3e569b67ec3d18908f  gcc/te
*** 71418,71435 ****
  85fbc78b9315391c60d6d963528f56b8  gcc/testsuite/gcc.target/aarch64/movi_hf.c
  2784b30a145816de47d288c3241aeac2  gcc/testsuite/gcc.target/aarch64/movk.c
  ae82e1a65f9bde05cbb20490441434f5  gcc/testsuite/gcc.target/aarch64/movk_2.c
! eb1f3b98910d52b14f033a9a92438cd5  gcc/testsuite/gcc.target/aarch64/movk_3.c
  8f9a97c266a8915a1e8b920efda091a7  gcc/testsuite/gcc.target/aarch64/movqi_1.c
  2e662fccbf891a9576b284c3ae46432e  gcc/testsuite/gcc.target/aarch64/movqi_2.c
  d4c27b38956ec8fb167aea6848768109  gcc/testsuite/gcc.target/aarch64/movsf_1.c
  0060cd9a84f65c212cbfdfe356bd78c6  gcc/testsuite/gcc.target/aarch64/movsf_2.c
  98d49c1bf6bb77a3f05ffd1ccaccde82  gcc/testsuite/gcc.target/aarch64/movsi_1.c
  9390dd19a47368363c8572da8cefc42c  gcc/testsuite/gcc.target/aarch64/movsi_2.c
! 5260008b5bf426c473c9db5529ca9d42  gcc/testsuite/gcc.target/aarch64/movtf_1.c
  39df00ec4bd1411c1c8d69fd09d821b5  gcc/testsuite/gcc.target/aarch64/movtf_2.c
  22ce7a399c1449e3a73e5c07d1ec6c46  gcc/testsuite/gcc.target/aarch64/movtf_3.c
  d0ea1a89930f9754bad4281bd290e63c  gcc/testsuite/gcc.target/aarch64/movtf_4.c
! 823357b095860206610462e9b4d49d8f  gcc/testsuite/gcc.target/aarch64/movti_1.c
  61256683e06efa0fd21cd86e4829697d  gcc/testsuite/gcc.target/aarch64/movti_2.c
  113e45c7b700546ca7d0dac30a1d8bd2  gcc/testsuite/gcc.target/aarch64/movti_3.c
  509511b9929fa7991e2506df6d9fd3c6  gcc/testsuite/gcc.target/aarch64/movti_4.c
--- 71462,71479 ----
  85fbc78b9315391c60d6d963528f56b8  gcc/testsuite/gcc.target/aarch64/movi_hf.c
  2784b30a145816de47d288c3241aeac2  gcc/testsuite/gcc.target/aarch64/movk.c
  ae82e1a65f9bde05cbb20490441434f5  gcc/testsuite/gcc.target/aarch64/movk_2.c
! 542e51196a9bec34b01cb7294dadabd5  gcc/testsuite/gcc.target/aarch64/movk_3.c
  8f9a97c266a8915a1e8b920efda091a7  gcc/testsuite/gcc.target/aarch64/movqi_1.c
  2e662fccbf891a9576b284c3ae46432e  gcc/testsuite/gcc.target/aarch64/movqi_2.c
  d4c27b38956ec8fb167aea6848768109  gcc/testsuite/gcc.target/aarch64/movsf_1.c
  0060cd9a84f65c212cbfdfe356bd78c6  gcc/testsuite/gcc.target/aarch64/movsf_2.c
  98d49c1bf6bb77a3f05ffd1ccaccde82  gcc/testsuite/gcc.target/aarch64/movsi_1.c
  9390dd19a47368363c8572da8cefc42c  gcc/testsuite/gcc.target/aarch64/movsi_2.c
! 62570f4aa277bdb5688e83e17794e973  gcc/testsuite/gcc.target/aarch64/movtf_1.c
  39df00ec4bd1411c1c8d69fd09d821b5  gcc/testsuite/gcc.target/aarch64/movtf_2.c
  22ce7a399c1449e3a73e5c07d1ec6c46  gcc/testsuite/gcc.target/aarch64/movtf_3.c
  d0ea1a89930f9754bad4281bd290e63c  gcc/testsuite/gcc.target/aarch64/movtf_4.c
! 320b79f0c80427a33685a626af3a241c  gcc/testsuite/gcc.target/aarch64/movti_1.c
  61256683e06efa0fd21cd86e4829697d  gcc/testsuite/gcc.target/aarch64/movti_2.c
  113e45c7b700546ca7d0dac30a1d8bd2  gcc/testsuite/gcc.target/aarch64/movti_3.c
  509511b9929fa7991e2506df6d9fd3c6  gcc/testsuite/gcc.target/aarch64/movti_4.c
*************** fb19dd57034e67da13f2a5b22815fcc5  gcc/te
*** 71533,71538 ****
--- 71577,71593 ----
  56f1cae94d74d605f3127ff54df58e5e  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c
  9567b5cb1744b0c5a301604d3a25bbc2  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
  b716a0213aba89c759289668d57ef9cd  gcc/testsuite/gcc.target/aarch64/no_merge_trunc_signed_zero.c
+ e212f9be3215abbdefb65d685dc14ee7  gcc/testsuite/gcc.target/aarch64/noeffect.c
+ bb26205f7db370df3bf8317e49f967fa  gcc/testsuite/gcc.target/aarch64/noeffect10.c
+ a2cf7f56cec78598a0afb46c4f8a7733  gcc/testsuite/gcc.target/aarch64/noeffect11.c
+ 470aa94f18e2c34ab5cf866d909b836a  gcc/testsuite/gcc.target/aarch64/noeffect2.c
+ 2cc5a39734c4a3627083dcdf784a9e6f  gcc/testsuite/gcc.target/aarch64/noeffect3.c
+ b8f9f76a3b071ab60eb709edf101c40e  gcc/testsuite/gcc.target/aarch64/noeffect4.c
+ 006113671fb98eb14a57a7c868cdd567  gcc/testsuite/gcc.target/aarch64/noeffect5.c
+ 2fabaf216b43fd6bf6f787c5548ae331  gcc/testsuite/gcc.target/aarch64/noeffect6.c
+ f64dfe9345caae5a20372002ee8a3f26  gcc/testsuite/gcc.target/aarch64/noeffect7.c
+ 8be40077bce83bd6d2b680f6c8e4125a  gcc/testsuite/gcc.target/aarch64/noeffect8.c
+ 24a3a8e785fd56bbc1d9d4c376b69c85  gcc/testsuite/gcc.target/aarch64/noeffect9.c
  13a63494139cde5273b13f2e4eb58493  gcc/testsuite/gcc.target/aarch64/nofp_1.c
  b0e90aa46397bdde3bb349cc558012c7  gcc/testsuite/gcc.target/aarch64/nofp_2.c
  31192c5ad4b7d30f5e3a3f25a5e74741  gcc/testsuite/gcc.target/aarch64/noplt_1.c
*************** a5a030e82205f8d9b2799618b27cc294  gcc/te
*** 71808,71814 ****
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
  4aa462ffa5914a7dd8ae0a2383731a49  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
! f76dd066bc43a08b0ab74e36bd588f9a  gcc/testsuite/gcc.target/aarch64/pr71727.c
  c8c052e3ffb361fbe4b0043b1414c58b  gcc/testsuite/gcc.target/aarch64/pr78038.c
  ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  f9f37ccfc032535c8079deb6b916aca7  gcc/testsuite/gcc.target/aarch64/pr78382.c
--- 71863,71869 ----
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
  1acf0bf1d4e41e413852c39aabdc7e52  gcc/testsuite/gcc.target/aarch64/pr71016.c
  4aa462ffa5914a7dd8ae0a2383731a49  gcc/testsuite/gcc.target/aarch64/pr71727-2.c
! 667cc3acb7d77f45c25c6b9fa1a9ffcb  gcc/testsuite/gcc.target/aarch64/pr71727.c
  c8c052e3ffb361fbe4b0043b1414c58b  gcc/testsuite/gcc.target/aarch64/pr78038.c
  ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  f9f37ccfc032535c8079deb6b916aca7  gcc/testsuite/gcc.target/aarch64/pr78382.c
*************** f9f37ccfc032535c8079deb6b916aca7  gcc/te
*** 71822,71828 ****
  61509ec6c4ac78da70369f76797f43be  gcc/testsuite/gcc.target/aarch64/pr81647.c
  83d999153e7b99641d3f07b79d3dd12f  gcc/testsuite/gcc.target/aarch64/pr83370.c
  d1d34ae8edbb84b094c7f011971b77f4  gcc/testsuite/gcc.target/aarch64/pr84252.c
! 2c637fae82427ff05452a4d7a593117a  gcc/testsuite/gcc.target/aarch64/pr84882.c
  f1ca93aa1717ebabd10b953f8c0f43fb  gcc/testsuite/gcc.target/aarch64/pr87305.c
  438fbd8d80e583c9dd8e4b6f03d561d9  gcc/testsuite/gcc.target/aarch64/pr87511.c
  0c8e55f8ca526b3ff4c65395e56b96c5  gcc/testsuite/gcc.target/aarch64/pr87839.c
--- 71877,71883 ----
  61509ec6c4ac78da70369f76797f43be  gcc/testsuite/gcc.target/aarch64/pr81647.c
  83d999153e7b99641d3f07b79d3dd12f  gcc/testsuite/gcc.target/aarch64/pr83370.c
  d1d34ae8edbb84b094c7f011971b77f4  gcc/testsuite/gcc.target/aarch64/pr84252.c
! b96ee931e916b680ab220c1e13b9b38b  gcc/testsuite/gcc.target/aarch64/pr84882.c
  f1ca93aa1717ebabd10b953f8c0f43fb  gcc/testsuite/gcc.target/aarch64/pr87305.c
  438fbd8d80e583c9dd8e4b6f03d561d9  gcc/testsuite/gcc.target/aarch64/pr87511.c
  0c8e55f8ca526b3ff4c65395e56b96c5  gcc/testsuite/gcc.target/aarch64/pr87839.c
*************** ae5cf71ae02c3cde7a67cfb54ec03bbe  gcc/te
*** 71873,71880 ****
  6abd9df2e9c6482903f6b17629c288d1  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  be30d927e2df67d4fe2786d0d026bbaa  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
! 38af83405c4b19363e539e8f2589d817  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! 972a5c7af8c5f5f358e348fde045bc9c  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
  b5ff836b5a987f9feaf35c5f8ec9f4db  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
--- 71928,71935 ----
  6abd9df2e9c6482903f6b17629c288d1  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  be30d927e2df67d4fe2786d0d026bbaa  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
! cf24cdff529adfd1c49b54f67eadad90  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! 1151d990e97328e3b0a995ccf6af04df  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
  b5ff836b5a987f9feaf35c5f8ec9f4db  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
*************** e8f3940401f61957e271283ead08f9df  gcc/te
*** 72642,72649 ****
  07e3d6d42e241c26ef2af7d1e45830cb  gcc/testsuite/gcc.target/aarch64/sme/inlining_8.c
  1f4fd6ac1194382f19cfb0c1abb67f01  gcc/testsuite/gcc.target/aarch64/sme/inlining_9.c
  b3810edd100268236942967f1ddc5f1c  gcc/testsuite/gcc.target/aarch64/sme/keyword_macros_1.c
! 3cfd28c478957407a1a22a25631e018b  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
! 03c37ea9cd6945db11f3c43a838afd20  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c
  26c5b65254a5e6fffb46740bb729dcde  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_scp.c
  c9d369dea4ca29ccd648d788cfb8ea09  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_ts.c
  8b77b15e6a3831e3b0fed7e89decf181  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_2.c
--- 72697,72704 ----
  07e3d6d42e241c26ef2af7d1e45830cb  gcc/testsuite/gcc.target/aarch64/sme/inlining_8.c
  1f4fd6ac1194382f19cfb0c1abb67f01  gcc/testsuite/gcc.target/aarch64/sme/inlining_9.c
  b3810edd100268236942967f1ddc5f1c  gcc/testsuite/gcc.target/aarch64/sme/keyword_macros_1.c
! 29d50eaebc5c93dd5defc58db14017b5  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
! 9aa4dde06e8ad985f8ee35031a1542a3  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c
  26c5b65254a5e6fffb46740bb729dcde  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_scp.c
  c9d369dea4ca29ccd648d788cfb8ea09  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_ts.c
  8b77b15e6a3831e3b0fed7e89decf181  gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_2.c
*************** b6770baead4ef6d2ad8473d82e4b2e81  gcc/te
*** 73178,73183 ****
--- 73233,73244 ----
  676a036c6c3b39dc99d832f1dcf5d10a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mops_za32.c
  780e8095f57566123b3586c781c8536d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_bf16_x2.c
  cd54535dc5d72aa10e588e1ec2d9adf3  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_bf16_x4.c
+ 869ffe822c6a9fc206cfd36260dc0471  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c
+ 543cfdc6f4d5b861c3a502917112fa1d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c
+ b38745be4d21fb2fc5917f29efb035d8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c
+ 9327eb97638c0e7cb3cf354ab8dccbd3  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c
+ 1370f3f38204ffc74ed59176a8415828  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c
+ 65870c9eed68d1f2b0f15ded421becd5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c
  1bd058819a98a2bb24793b63bef8055a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/pext_lane_c16.c
  3dd427493b752d8f7e1b1194a95082e9  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/pext_lane_c16_x2.c
  0af095bf34c3ea37bc43a6a2ad37f2c7  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/pext_lane_c32.c
*************** fcd07f204caee5fb5f0b3544c2afad20  gcc/te
*** 73517,73554 ****
  ca9fec7655002d228c407324be5f1085  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdot_lane_za64_u16_vg1x4.c
  1e80567ee2628e7aea761b9cc281156a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdotb_lane_za32_mf8_vg1x4.c
  a8ef6a2dc9f8bf3aa206a545c35afba1  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdott_lane_za32_mf8_vg1x4.c
! 9b20af2c8c04297e1df69b26834a69a2  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c
! 7b6b13feb83a0eacd12b12f200d086d9  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c
! 5a498c4d2e0347fdf29c36d6de6b5ac3  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c
! 19e203b4ddb24b35a6142a6da7390ea3  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c
! a0102f1c7379f4d1adb338498167af37  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c
! 46f57ede3faf9666b3e123a8dc69b965  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c
! d27f64b7cb7d69910646fc4461d249bc  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c
! 71b09027b1e45711fa48c0139cfeb523  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c
! 4b571b7f90ab99f0c3892cd2a605da43  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c
! a19be69f6bb56801e5a512a0871b5ad0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c
! cb4a692b4610a9c271f808143db547f1  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c
! 3f8f8639050b03902793f9cac2457c36  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c
! f86f7ae361488fcc166a605da8129ca4  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c
! 31ee68abda9e7fd6d62d12ce1d7ec46a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c
! 5153aad39f083aa5fe13c82928b7f612  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c
! 1fa0526800c6f15cb1617b0e2f509917  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c
! a28f2aeb240f3fe6d2978ac84eac16d0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c
! 78d746aa6018decc24e66608448d27f4  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c
! 1a5b67513f4dad49f19569977aba993f  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c
! 500b3d8d486f1ca3e1bf932d2392cd90  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c
! 3e64c2454b674524207ccf5c304430d0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c
! 7838812a41e50924d68e5ffee2d6c2d8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c
! b4e86269a8a36f0ff430b8052d586952  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c
! 40ca519516e5cf033b0dbb65f318e309  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c
! 3260b6e750c44afb00caa1cd4911192e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c
! 5949764cffc1a1bb9cb17ad6f763c3f4  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c
! 25c9a49a80a0d60778d6b6cd78687164  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c
! 923d93923fb7e156b23cfccba15b1895  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c
! 85ce8c25a037a052e9eba4dfe278fb11  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c
! ce9ea0a1e105ac8397d4f8251d29964b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c
! 5b8abce669536776257dfff0c6e0242f  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c
! 28a1bc002c42979d2282ed886d53cd2e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c
  08cf4a63583c3e5100cec7c3a2720ce7  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg2.c
  68acf687eb123345a3a3dbd2bf25aefd  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg4.c
  6a519a7b258ef8d924c58d73a4927e9b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za32_vg2.c
--- 73578,73615 ----
  ca9fec7655002d228c407324be5f1085  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdot_lane_za64_u16_vg1x4.c
  1e80567ee2628e7aea761b9cc281156a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdotb_lane_za32_mf8_vg1x4.c
  a8ef6a2dc9f8bf3aa206a545c35afba1  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/vdott_lane_za32_mf8_vg1x4.c
! 92285bc2fe9c473095c9e64d2c82e533  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c
! 72b3a70bbc6b02f5cfebf96fd354d087  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c
! 1ffb7f66b1ac1c377baaeb3c9c8281a5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c
! 30d7d2a13258ecd8261af01f04d32911  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c
! e9ebd032d773880a0b25595062ef7ff5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c
! e9b67f1cf17b50e4c116cf604f2a0142  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c
! 734723d40cb3b6413e3b5d12bd13c6b0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c
! 628b6ad34740e483aaff37c481615253  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c
! 63e4de020a0251a9525058bc5c334a1e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c
! 089e935957f5191fff168caece71f265  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c
! f0d9867039eb5223f95288041657d2a0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c
! 7be4679fd579068f567411b0eeb8c29e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c
! faad6d24f5677ff11369c2d71ebf4a4c  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c
! 5f8b05d6a5c8a113d397e191aa6a3414  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c
! 50d01e9b875eb3dcfac65db14185194e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c
! 930bdd78f9d8fe6626744b80f8a5bcba  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c
! 6da3d94ea356962babff2b35a8b7b1a5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c
! e5e335ff8bcdde07908192e5bfe5ce04  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c
! 2de2be63ee56f2432def6e847a4f72b9  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c
! 96462d3f01990b0e41760d74921474eb  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c
! c8f76870e0d45d6afbc86626cbe7fd6d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c
! 4334ae97dd1f35e546ad060375ee3965  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c
! 23f1322ade237cb2db50e9570cfe51c1  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c
! ef9432d910e65c9084c058d4fc48c628  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c
! 5d7f6421d3edb503acb886d87c015cf5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c
! 8fbb1b735e2b6b9473e6fae95247c0b2  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c
! 59e35a74dfff7bc172ab9ca699b3f932  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c
! 11c17dfcfe63a6636c325d33ba395efe  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c
! 5e18e897c61277c98ae062961a34fa66  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c
! 649b691b9d212bdf2a980b4ce7879afc  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c
! cfa6453f5d519b84376dd392716364f5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c
! 0e51187cfccc812264662824f3e4bd10  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c
  08cf4a63583c3e5100cec7c3a2720ce7  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg2.c
  68acf687eb123345a3a3dbd2bf25aefd  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za16_vg4.c
  6a519a7b258ef8d924c58d73a4927e9b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/write_hor_za32_vg2.c
*************** b329f5f42842d8fbfcde90b3b0ac95d8  gcc/te
*** 74019,74035 ****
  3c2bfed20b9f97bbbae82ffcb83009d0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnt_u64.c
  58c289b1a3f39fc3e5edd5d5acc9c236  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnt_u8.c
  44ffc5ce85b80981d2f67fbe32e2b1d8  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb.c
! 828dc47f5d84f727166c9b012dc3c50d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c
  27ad78a94ffd7d127492f3ff869e7e79  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd.c
! 324b44e908f45c4bac7c1a2f2b6cbe9c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c
  d37ed3dd0d252523d8c0862ceac30045  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth.c
! d707671ee0877fc02eaa93a45e67e22c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c
  f6c264e158b2e8ac464fe4f627877166  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b16.c
  e9c4ac3ab5181792a38c1f99758a8cb9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b32.c
  d3f8e6d4321c6201b92317aff6f39ad9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b64.c
  0a4eeec02551c7158f2719a01f256ff6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b8.c
  1a63084b9a12c3b748f9e7ec72a061a2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw.c
! 6a9b991664fe6aa60efc65c1f94f482c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c
  8a18c752adf22e3a80061ee06b1a753f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_f32.c
  b3e3f4e5edc927eecc1258622b3d5f39  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_f64.c
  fe1207fc8a777e1821f360d05d26c092  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_s32.c
--- 74080,74096 ----
  3c2bfed20b9f97bbbae82ffcb83009d0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnt_u64.c
  58c289b1a3f39fc3e5edd5d5acc9c236  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnt_u8.c
  44ffc5ce85b80981d2f67fbe32e2b1d8  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb.c
! 1741598b8513e881a4ad523a854b4d9a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c
  27ad78a94ffd7d127492f3ff869e7e79  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd.c
! 94e36b38887b68142fadb565d7960441  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c
  d37ed3dd0d252523d8c0862ceac30045  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth.c
! e674d73b27891ba754b4f99e71231bcb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c
  f6c264e158b2e8ac464fe4f627877166  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b16.c
  e9c4ac3ab5181792a38c1f99758a8cb9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b32.c
  d3f8e6d4321c6201b92317aff6f39ad9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b64.c
  0a4eeec02551c7158f2719a01f256ff6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntp_b8.c
  1a63084b9a12c3b748f9e7ec72a061a2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw.c
! 86892e9a1791c7f53ea409a56824040a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c
  8a18c752adf22e3a80061ee06b1a753f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_f32.c
  b3e3f4e5edc927eecc1258622b3d5f39  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_f64.c
  fe1207fc8a777e1821f360d05d26c092  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/compact_s32.c
*************** b65e770c3562f33aefd54a3b74450ac1  gcc/te
*** 74109,74126 ****
  04b6ada14aad43d52b3cc37e4832c0d1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c
  04e3e03506437f03fc7d88cec19b87d0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c
  1075461320ed346407ebc2d76d445d38  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c
! 971773828e1fbea146e0f3f21e1c69aa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
  d00ff5ebebaac4bd6ddfe3b7eb4e8c15  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c
  5f52e286ec5f5db4bc2019a8224b395b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c
  c2b74d2f1b6237278e04da1e610611f0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c
! efc9aa3c5150286ba49aa86637deb5a3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
  3c9617a069dac845321ea3de55e8a45d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c
  4b2de0f90ea5912af0dee6e63aa4efa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b16.c
  4b644e1ff71911187926414b8f179e4a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b32.c
  f48b23cbea6952de74b95b1d47adb067  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b64.c
  ed637b53961ec5bfb3bf5d8a150e2aa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b8.c
  37c252aeced91b6927f3518d25ca2513  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f16.c
! 63debd988bcba903be9567b782eb9cd1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c
  236111f61d803d04cb282939770d27cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f64.c
  f5a0826bba69752fcc9b37f914be1902  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_bf16.c
  105c175549280dc0bf9e65264943f7cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_f16.c
--- 74170,74187 ----
  04b6ada14aad43d52b3cc37e4832c0d1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c
  04e3e03506437f03fc7d88cec19b87d0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c
  1075461320ed346407ebc2d76d445d38  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c
! cdbf1d5d8f583dbd301e1b92329a391a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
  d00ff5ebebaac4bd6ddfe3b7eb4e8c15  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c
  5f52e286ec5f5db4bc2019a8224b395b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c
  c2b74d2f1b6237278e04da1e610611f0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c
! 31ec809681bb87e9a61b221d84844af1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
  3c9617a069dac845321ea3de55e8a45d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c
  4b2de0f90ea5912af0dee6e63aa4efa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b16.c
  4b644e1ff71911187926414b8f179e4a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b32.c
  f48b23cbea6952de74b95b1d47adb067  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b64.c
  ed637b53961ec5bfb3bf5d8a150e2aa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b8.c
  37c252aeced91b6927f3518d25ca2513  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f16.c
! 4beb880617e5ac305e3e6a62639e5ac0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c
  236111f61d803d04cb282939770d27cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f64.c
  f5a0826bba69752fcc9b37f914be1902  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_bf16.c
  105c175549280dc0bf9e65264943f7cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_f16.c
*************** e120287b61594f3f87d24e39b60667fd  gcc/te
*** 74136,74146 ****
  4e7535e47c74b3c708af7a4dfc401ae4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_u64.c
  f8f8638f48c3596e9d035baad57ef360  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_u8.c
  f98fdc2a6a48fd58601c0889633b765b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s16.c
! 8519f8a27888c14dd4121dfbc78a62bc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c
  ee368c67024fbf6ff5e0924f3d861b52  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s64.c
  aa96539a4f8fe6bd2ce7820e8a5fc9fd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s8.c
  709586ca5874a21197bf878a7cdf9a4e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u16.c
! a30abc09c3894db82116e58d2f9f6c2b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c
  b16dc71ce46ce632ec2a67806ab3e884  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u64.c
  d05276a39576da8b55d94719b8939ced  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u8.c
  29deda905e68937e8f6d6de5972708e4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eor_b.c
--- 74197,74207 ----
  4e7535e47c74b3c708af7a4dfc401ae4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_u64.c
  f8f8638f48c3596e9d035baad57ef360  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_lane_u8.c
  f98fdc2a6a48fd58601c0889633b765b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s16.c
! 36bea4f5365bc18082d8ccdf2bed209b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c
  ee368c67024fbf6ff5e0924f3d861b52  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s64.c
  aa96539a4f8fe6bd2ce7820e8a5fc9fd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s8.c
  709586ca5874a21197bf878a7cdf9a4e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u16.c
! f266b34f0f8e15ebe7c410d126f87d37  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c
  b16dc71ce46ce632ec2a67806ab3e884  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u64.c
  d05276a39576da8b55d94719b8939ced  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u8.c
  29deda905e68937e8f6d6de5972708e4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eor_b.c
*************** b31dedcf780f6dc764715de216b29b3a  gcc/te
*** 74244,74254 ****
  cf36673e01c55b69f6fff9be380fef32  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/get_neonq_u8.c
  2d7dfd3dbfa56b3731c8a620b216b2dc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s16.c
  d6d2a8d820651d1e5ca985f93f370acc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s32.c
! 2009976ec8d5bc89e259f8860ce85d06  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c
  b61a0e75d42a082d079acc5a38cb3ec2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s8.c
  c112cde46c17367677246856777fa9b1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u16.c
  fa04ff84c84a82a7851f1010f5998970  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u32.c
! f218bf76954efe68bef9e7cd041d423f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c
  8b8fc7c323b238ca0336e6f95fceee4c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u8.c
  86ffebd042015d5da171853625828bc8  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/insr_bf16.c
  3ca80e516246fd85e42df759065f76b4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/insr_f16.c
--- 74305,74315 ----
  cf36673e01c55b69f6fff9be380fef32  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/get_neonq_u8.c
  2d7dfd3dbfa56b3731c8a620b216b2dc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s16.c
  d6d2a8d820651d1e5ca985f93f370acc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s32.c
! 70ac05ab5c5b683cce387660c8ee0246  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c
  b61a0e75d42a082d079acc5a38cb3ec2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s8.c
  c112cde46c17367677246856777fa9b1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u16.c
  fa04ff84c84a82a7851f1010f5998970  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u32.c
! c43dac050f0f1d6f082b7cd1977b2073  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c
  8b8fc7c323b238ca0336e6f95fceee4c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u8.c
  86ffebd042015d5da171853625828bc8  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/insr_bf16.c
  3ca80e516246fd85e42df759065f76b4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/insr_f16.c
*************** b52d1ae2b2e31f4493dc3161dbe751c8  gcc/te
*** 74293,74304 ****
  ea2331685e4c2dedd59eaa91b0d021c0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f16.c
  2e6341a1f6a8a2b027caaf56dd300d53  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f32.c
  5a1a38b3c278f45638abef02e960fbf0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f64.c
! 577176523b5f3128122458bad98e098a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c
! 2a77897832b78a377844ae06b36524f6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c
! 3384ef06d9d226fb5b484c34421b837a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c
! 02af7b0a39ef3b4d782beeada9d6af1b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c
! 4bc07faf9c88db6a0ce0c46b5753d811  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c
! bd644290c330980cb24bc33f8757f758  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c
  c39760a563bf2d0a6861b1eb74b6b239  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_mf8.c
  1a8b45a2dd1233b376f297b70e1c285c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_s16.c
  72c4d38fb9071a4553787ccbba3ce6fd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_s32.c
--- 74354,74365 ----
  ea2331685e4c2dedd59eaa91b0d021c0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f16.c
  2e6341a1f6a8a2b027caaf56dd300d53  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f32.c
  5a1a38b3c278f45638abef02e960fbf0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_f64.c
! 8d52e0bbf0d6679cecf6b069885f3ab5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c
! 94aaefde7b7ab61d0c75e6cd8bd696e4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c
! 323a2f3702d4383a6ebec9cc2bb14c23  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c
! 447970513bbb6880e0396c86ac004d84  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c
! b9b0087f896252e56b6cb11bf699faef  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c
! a429e034d7ef1563729644e9c22a9726  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c
  c39760a563bf2d0a6861b1eb74b6b239  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_mf8.c
  1a8b45a2dd1233b376f297b70e1c285c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_s16.c
  72c4d38fb9071a4553787ccbba3ce6fd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_s32.c
*************** a9b2ea4359685f07672ca4c606e0d0bb  gcc/te
*** 74334,74381 ****
  652384b77b26ddee737ff583931e24d5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u32.c
  3a3b53bcc706091c4b60da8fffabfce7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u64.c
  b421f75f9732bbb0bde36acabbf8c963  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u8.c
! d3a215470357b3709f4b6a276baf62e4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c
! d91d31ce5c1935d0a3647f2ab4129608  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c
! 8b5da653a668436032c4daff47f4c106  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c
! e3ae83b0b529b2d8d2df4b48a16d09aa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c
  bff5572cfa0d524c84f4711919a25207  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s16.c
  b5cc27a3ee0224994b4481c74b4bd7e3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s32.c
  2dedb1916971fb48c2e201fdeeb72e7c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s64.c
  a5cc2ad492ad4bfb918dc2b713b83918  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u16.c
  3274cadb4791dcaf92e38842d6cf642e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u32.c
  8142d7a2413bd36fa710d1f85580f35a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u64.c
! d1fb3d0d93619899a0f4c4abcbfc4bd6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c
! df456e684f688057b0e0245b8a781cbe  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c
! 0b32897a501a99d48d6be35d91ca68d3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c
! 34309d28b020f96d6572607f8a09330f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c
  f8cf75f4fb397aef001f64fc6cc227e2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_s32.c
  7a1ef923eb4fcdc18654e0708e71dbf4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_s64.c
  2e92a6b03acdbcb6fe22328e39cee20d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_u32.c
  6e6631addfb43b925c3be080ce9feaf5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_u64.c
! 75d7550cea2cc5a6732331bc20f6b378  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c
! fc213903a5bd697a8d837632c4225a8a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c
  6f2cb979573837dfd9c5a34edc541f2a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_s64.c
  24d8d0723883bb41768513a05575500d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_u64.c
! a14d65d9133b7eec9400673614537d44  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c
! 95c924e6be0cf8be402860476c3b2f37  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c
! 7553f602cbf4be7d52b52a32591c0aeb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c
! 2d20fcc0f2543a3e8f0778e30d93be48  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c
  21435ca9ed66e1f9a81537c0a1f23ac5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s16.c
  a138a160ccf1cb89533940cad5aea423  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s32.c
  7cd6d11eb870dd15b5d8ee8c702e44dc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s64.c
  3586ebf58298e8bee9c9a423c3d87531  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u16.c
  a6f236c2a2556dc0057a73c9f27d2258  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u32.c
  ec77ce11b1c4dfb9f5f4a2fb6f043028  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u64.c
! 29b843606f8f5069aa8c50e0d6bb0ec3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c
! b90edd4b9850285c1c590d2eb42ed7aa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c
! ff45c51344338601dfc43b41b30daaed  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c
! 5ef92cb74c751290fc5c831046a4b589  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c
  4752218f6dc97f29d90e55e356e68669  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_s32.c
  c11d2e4612a07d9e345e275ebf8c3b82  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_s64.c
  342c7bbf25ec3e4a15e5c6700154f8e2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_u32.c
  74c7e44b9da8327b3ab189c37749e8f3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_u64.c
! fb2dbf3b97973d2700dcd5356ef547ce  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c
! eefcd4cfb2562c6a1847c2a1581e9505  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c
  f03fd7687091e62ea174ea32e5f5eb92  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_s64.c
  6f0ed7f64040505845b170b919797c9a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_u64.c
  65954aa3ed80607a75b2ff5fe63e485f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld2_bf16.c
--- 74395,74442 ----
  652384b77b26ddee737ff583931e24d5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u32.c
  3a3b53bcc706091c4b60da8fffabfce7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u64.c
  b421f75f9732bbb0bde36acabbf8c963  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1rq_u8.c
! 2952e99ee04b1340f7f2832b83f1012e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c
! ebbca1ee09411004bb1676b2ded6b197  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c
! 650029211748b57b601017f05790bbdb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c
! 075d5c8d264997ee5faaed0242ba7f4c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c
  bff5572cfa0d524c84f4711919a25207  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s16.c
  b5cc27a3ee0224994b4481c74b4bd7e3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s32.c
  2dedb1916971fb48c2e201fdeeb72e7c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_s64.c
  a5cc2ad492ad4bfb918dc2b713b83918  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u16.c
  3274cadb4791dcaf92e38842d6cf642e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u32.c
  8142d7a2413bd36fa710d1f85580f35a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_u64.c
! d7e4f1eb34176667cb66b045548d8c94  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c
! 66ea4e4c096b245879cfd29ae9db7c6d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c
! 21c3d3162b9c6a979898aa0757f3de68  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c
! 30ed1edc03fbe69fd63c60c5ae49821e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c
  f8cf75f4fb397aef001f64fc6cc227e2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_s32.c
  7a1ef923eb4fcdc18654e0708e71dbf4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_s64.c
  2e92a6b03acdbcb6fe22328e39cee20d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_u32.c
  6e6631addfb43b925c3be080ce9feaf5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_u64.c
! 402748335f568b3a8f1e771db31818e4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c
! c491dfa2ce950947e853813591ef2be6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c
  6f2cb979573837dfd9c5a34edc541f2a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_s64.c
  24d8d0723883bb41768513a05575500d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_u64.c
! 31e0328505c8da09ec4b0a8494fb7043  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c
! 43ca158569669be913a2a62bc702e114  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c
! 9f0d3fe9965dfb0d20f585e9c0c32a81  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c
! 87b640c2802b0648075d326c77840fba  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c
  21435ca9ed66e1f9a81537c0a1f23ac5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s16.c
  a138a160ccf1cb89533940cad5aea423  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s32.c
  7cd6d11eb870dd15b5d8ee8c702e44dc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_s64.c
  3586ebf58298e8bee9c9a423c3d87531  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u16.c
  a6f236c2a2556dc0057a73c9f27d2258  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u32.c
  ec77ce11b1c4dfb9f5f4a2fb6f043028  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_u64.c
! dd1193bc08ad2428ef64134e40ef1d27  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c
! 2d0a21af8896728112c9994548f4b291  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c
! 73ce11c1035f181bb133ed6a822c2c44  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c
! 68ba00445d66f6febe1bddb20f3193da  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c
  4752218f6dc97f29d90e55e356e68669  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_s32.c
  c11d2e4612a07d9e345e275ebf8c3b82  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_s64.c
  342c7bbf25ec3e4a15e5c6700154f8e2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_u32.c
  74c7e44b9da8327b3ab189c37749e8f3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_u64.c
! 65f6a92a820d38b7dd5d41b44749fd8a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c
! e499c3db0ee576047282a436e156bac0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c
  f03fd7687091e62ea174ea32e5f5eb92  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_s64.c
  6f0ed7f64040505845b170b919797c9a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_u64.c
  65954aa3ed80607a75b2ff5fe63e485f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld2_bf16.c
*************** d31b3ffc906cf6810b360869459069e6  gcc/te
*** 74421,74432 ****
  30b46aabd07192731f3adb8f83dd1212  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f16.c
  8335996fe1444bcbe6c74dc961a10231  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f32.c
  bba1d1b31275bd7756c4297671325104  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f64.c
! 7e0d98fec79bbf1961aca3d5e35139bb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c
! c89ca6f96aac30ad6759323af0004456  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c
! 0c8d09c6bb254034de3ea96bae6358b7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c
! d1dba4144a654f78d973e20a1668c882  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c
! dde3af6835ea596605602320f1167625  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c
! 934a59b1fa9add9e68fcf5896df69461  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c
  4b9a2d17b88293d1a0566f166b363c3f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_mf8.c
  0421684cf52a2d54d9c546a159cca0cc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_s16.c
  8ab75c8db54027530b6dd216031e0a01  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_s32.c
--- 74482,74493 ----
  30b46aabd07192731f3adb8f83dd1212  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f16.c
  8335996fe1444bcbe6c74dc961a10231  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f32.c
  bba1d1b31275bd7756c4297671325104  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_f64.c
! f45597e757da88dbe63e42ef7c70b1b2  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c
! a067376224a9c87fcb4148ba6eb3ae03  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c
! 9961c3b3937bdde21168b2eb7270a27e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c
! 2ab2d0c8dba577974071eae9a29bf886  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c
! d9848ca74a79e526f18c30972e5cbc67  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c
! 7ed2e84764dcf05fcadfb8c2f6fc3e0e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c
  4b9a2d17b88293d1a0566f166b363c3f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_mf8.c
  0421684cf52a2d54d9c546a159cca0cc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_s16.c
  8ab75c8db54027530b6dd216031e0a01  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_s32.c
*************** b080a692b98f873a1ef67c5c71b58e0e  gcc/te
*** 74436,74483 ****
  7ac8b73cd4a2c58fac534c2a296d0b3e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u32.c
  aeee3412b3f839515759d994ac318b97  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u64.c
  75af2edc079e382603bada4e2691b581  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u8.c
! 163ecab4bc28e604534521ccd63b7176  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c
! 2ef714f6a533dae0c879a5b57debfea0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c
! 147f9a31e5659e504d36884c07a51792  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c
! eb3dad7f102565b8fa6f6482d48b2e2c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c
  a2b683e88d141874eaa005cebb456543  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c
  ee2818e05adb636623476116a3d0a397  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c
  59f5909c1f1722f96a69d0d286a0596f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c
  873d294e8b4bc712b6f95de535e2bd85  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c
  995259ed9ccaf29c70874162995c32d7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c
  c48a736b01825582981b2869940d5f76  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c
! 56564b0762c56b5d44df1fc350dc7ef5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c
! 96a8d5680a4b16b13d6bfe26bad9cc88  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c
! 5ea23136d7b5e624a2c1c86ad254bd56  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c
! bfb9f8ecdefc084f0f6375e38d0bdb15  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c
  ec5b3e8deecb2030816f4771f7b61571  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c
  4aec86089a481871b31a690f420a9d62  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c
  1845be498ae6efe5c724a95c720c0ba6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c
  8030dfe7708340a4a966b63973c5f919  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c
! d4e16cca825a006702d825cd586d4b84  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c
! 518e03a291dc83635637cef11499044a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c
  276cea894a74474c675ac66b46390308  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c
  700b3fec0561b232cb2efe3269a65aaf  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c
! 680528ac5f5e44d3ce4f53ba35f2380d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c
! e809a8f48fd4b7fcc5fb088eb4db36f6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c
! 38595f6f8d4aba47456affabf3c185db  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c
! 2f94432920d108dc5dde97ad7d3cdc59  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c
  d63c506fd5be4b0cb9da8521d5b29804  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c
  dcd09d562b47b664a7f8e76d31d8249b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c
  24ad7b327f1f3ec840c90291f4e5f2ef  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c
  e51be79a0d06a3f09e562e9b819d80d4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c
  7ad1fa01618cebae76605d7bacc0a8a5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c
  4e764d231047c4f82b206e0219ff4110  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c
! 3f0c464fc2a7699613a2338d98b68f3e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c
! bc6a31d935e896939ed8abf55f385971  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c
! 4e192b273aef88ca5729e69cb9f8879b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c
! ee232e933025c6c0eb2cd0b221284a52  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c
  b4f95dff3feacf4f99d2ef5098cd0b2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c
  c43ee22f1df9ddce21408ebbe6068752  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c
  3165be280429f37fff88176ecf4fe8a0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c
  7f91a1270511f872c276fa611782065d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c
! 606030bb2e0d7238fc90c34c995f7e8b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c
! 98c852b3a89e470fa1a4af03980be9ce  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c
  d218de56c80e66d43dfb8916d07dc602  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c
  8bf03f5bb37dba5764669e60b9df0e6b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c
  dc6e962ac84ecdf0894efab67faaea06  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldnf1_bf16.c
--- 74497,74544 ----
  7ac8b73cd4a2c58fac534c2a296d0b3e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u32.c
  aeee3412b3f839515759d994ac318b97  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u64.c
  75af2edc079e382603bada4e2691b581  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_u8.c
! 212be596be0a88341fa45bc76cd1661a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c
! 4c05689729e76a5ca3231d3f7fd04293  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c
! 1de72e6771a1c7f352391f274fcf65fd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c
! a19e3d4237b551d69067fb7651fb1e3d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c
  a2b683e88d141874eaa005cebb456543  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c
  ee2818e05adb636623476116a3d0a397  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c
  59f5909c1f1722f96a69d0d286a0596f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c
  873d294e8b4bc712b6f95de535e2bd85  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c
  995259ed9ccaf29c70874162995c32d7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c
  c48a736b01825582981b2869940d5f76  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c
! 421b01b48e22daa9eb1ab7f5902ab3bb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c
! ce3b5999e17e17fd7c665bc3a7b8631d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c
! 869445b029e3f6761535d31a884293c4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c
! df923a86bfc9dc175b583d722b096d94  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c
  ec5b3e8deecb2030816f4771f7b61571  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c
  4aec86089a481871b31a690f420a9d62  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c
  1845be498ae6efe5c724a95c720c0ba6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c
  8030dfe7708340a4a966b63973c5f919  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c
! 3c39de542f0049682204a8baf2931fd1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c
! 9e1ba0d19629f09e222cb429540282e5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c
  276cea894a74474c675ac66b46390308  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c
  700b3fec0561b232cb2efe3269a65aaf  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c
! f6a3dd333d3499f6e85d17707cc69bb4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c
! a202851030faf8a94a67149d16656b11  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c
! 635c5e851bc8499654a979d91f205855  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c
! f2c1f01e23991ab34e24bb488773609d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c
  d63c506fd5be4b0cb9da8521d5b29804  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c
  dcd09d562b47b664a7f8e76d31d8249b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c
  24ad7b327f1f3ec840c90291f4e5f2ef  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c
  e51be79a0d06a3f09e562e9b819d80d4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c
  7ad1fa01618cebae76605d7bacc0a8a5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c
  4e764d231047c4f82b206e0219ff4110  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c
! e4c185dd3bb5a2f928a2353332737f72  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c
! 739a3c0a6cd92da84e541b83ccd75991  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c
! d85d385d73af1a2c9f5990160e418e77  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c
! ac695d130bc1e60e5f448bab3ffc7858  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c
  b4f95dff3feacf4f99d2ef5098cd0b2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c
  c43ee22f1df9ddce21408ebbe6068752  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c
  3165be280429f37fff88176ecf4fe8a0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c
  7f91a1270511f872c276fa611782065d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c
! 3ea393424d4f6011e2a6cf27415191ec  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c
! 62027953a7728a5f6c22126eea9c632e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c
  d218de56c80e66d43dfb8916d07dc602  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c
  8bf03f5bb37dba5764669e60b9df0e6b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c
  dc6e962ac84ecdf0894efab67faaea06  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldnf1_bf16.c
*************** b7cc4463af24bb1921c063f838fa417a  gcc/te
*** 74758,74770 ****
  73c7ee9306ac7dcb32cf1e8e49198c29  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b64.c
  297d0e2f8ba3ca3c4bcc0b35d5ad1e84  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b8.c
  f553a000f0d242ee83eed2e71e19e97c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
! bcd3be7b70530e9d6438f64ec4f45457  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c
  3992c83f32ee97dd6b007a67ed2a43ab  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
! 5ff23ab0a1b1b1feb85ed3d017762856  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c
  46b4eef32aec3332c1d539468f97e383  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
! 2550bd34a1ac685389c7bddbb6c3acd4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c
  683521c94ab79cca7b242e3004c6de68  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
! 1c8fb1198210b8e4a1f409325a5ee11d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c
  e39dfcc81aee1e3dc7f7e3714bd7fd33  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_any.c
  0acf46d836c699d5621e8f96a73d2141  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_first.c
  286d0147b6b0f9122f4a7202023fbc53  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_last.c
--- 74819,74831 ----
  73c7ee9306ac7dcb32cf1e8e49198c29  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b64.c
  297d0e2f8ba3ca3c4bcc0b35d5ad1e84  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/pnext_b8.c
  f553a000f0d242ee83eed2e71e19e97c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
! c63184d97196e5d36ea24d656783d306  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c
  3992c83f32ee97dd6b007a67ed2a43ab  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
! 31428ebaf777896ebdffc94e78b1d493  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c
  46b4eef32aec3332c1d539468f97e383  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
! 05a40da93c57b27bbb0999cc590945a9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c
  683521c94ab79cca7b242e3004c6de68  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
! f4d42bf4cfb8dfdc69ce19ff3371024f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c
  e39dfcc81aee1e3dc7f7e3714bd7fd33  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_any.c
  0acf46d836c699d5621e8f96a73d2141  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_first.c
  286d0147b6b0f9122f4a7202023fbc53  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ptest_last.c
*************** a261810d80432e53bc4c2370a713ef62  gcc/te
*** 75058,75069 ****
  c179b42173edfee79ce25062392064ac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s32.c
  da04e20b57b022218ed025e38b7f118e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s64.c
  ae27b2136e698d70a6ef463854dbfd49  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s8.c
! 6c7e67f40d9b0c192cc784088857271a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c
! a2a62d2635e9302e11af19077b8eb798  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c
! 66886442bfa62f5a29095b21908863f6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c
! 2c741cb88b7352972b30980d7413dc7e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c
! 2ea401b67d1986d6e3ad52ad3a9a2d84  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c
! b066c63189097791f0c3b03da4f6edbd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c
  f6942da9d71094f35902cc1a14cfe03d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u16.c
  526bfc06f534c12c8ecdc45fa8d7aa36  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u32.c
  e8d3e3b478fc9b269bf6b987184960e0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u64.c
--- 75119,75130 ----
  c179b42173edfee79ce25062392064ac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s32.c
  da04e20b57b022218ed025e38b7f118e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s64.c
  ae27b2136e698d70a6ef463854dbfd49  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_s8.c
! e5b82b11a0b1ea5a8b4d99288bc38764  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c
! fb0d0a73c092af2f038823863709133f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c
! 7b0eeaa34d596ffabbc331a80943b851  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c
! 39893821b6d892edd805c9bcebc4ae19  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c
! f944fe3990d79d97242e3f937b01ef07  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c
! 8646c0ff11552804b0ce6569b90f5d0d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c
  f6942da9d71094f35902cc1a14cfe03d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u16.c
  526bfc06f534c12c8ecdc45fa8d7aa36  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u32.c
  e8d3e3b478fc9b269bf6b987184960e0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_u64.c
*************** e8d3e3b478fc9b269bf6b987184960e0  gcc/te
*** 75071,75094 ****
  3612373cafcfd660fc900731020b10b3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s16.c
  060f7d5e0fe25a9dd4dfd4354e7a85d3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s32.c
  ea966453ffdcd38c27bd58630b7b1608  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s64.c
! 88daf60f2b58cfdc42158cecaddfbdb9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c
! 1eda45c8b264b42dbcb1e7723280cf61  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c
! 9c35be890ac55d57f9d8529945111a91  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c
! cd8f29bfa39e1a683181d9b31048750b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c
  2742d375fda131bbd1b2faa39042b907  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u16.c
  90537f3ac23cebc3ec5c77b3252d8cc5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u32.c
  a3169a5777f3404e4736acb10ff72edd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u64.c
  1a017ac3a378ff8c9746e6a78ac9a492  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_s32.c
  8637813c5062cbef7ed95f5c465a3ace  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_s64.c
! cfa2e478e7723458183c64f4de196186  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c
! 8c355dabac2fcb6214c7039b677d3bd9  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c
! b72bb653fc8f12683dac5ca7c88d14e0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c
! b844dbbce4d9273188572c3e14b59257  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c
  cef09c955878f5789e8ae3c836548ac3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_u32.c
  af157fd449f44595e08085c693ebd1df  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_u64.c
  567a372880991112e96624ce96ea0f7a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_s64.c
! 278fb8b2fe76573b2df5f0b6d6ef0b6b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c
! cf917eca5be3f513c8bb1f33960c94b7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c
  71349887404d0d817edb48b646d3d599  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_u64.c
  985417b60ae9e966c50cf8d24d92cbe4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st2_bf16.c
  3973173efe68872351a0bda773c11c11  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st2_f16.c
--- 75132,75155 ----
  3612373cafcfd660fc900731020b10b3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s16.c
  060f7d5e0fe25a9dd4dfd4354e7a85d3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s32.c
  ea966453ffdcd38c27bd58630b7b1608  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_s64.c
! ad6c8c069ce62433977d93a13f7e2fe7  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c
! d7be9dbd4af152c734b8f93efcf269e1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c
! c46bef3de8036e5b616491e9d013e038  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c
! afaea5972d72634f73f284ce3247b6d6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c
  2742d375fda131bbd1b2faa39042b907  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u16.c
  90537f3ac23cebc3ec5c77b3252d8cc5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u32.c
  a3169a5777f3404e4736acb10ff72edd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_u64.c
  1a017ac3a378ff8c9746e6a78ac9a492  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_s32.c
  8637813c5062cbef7ed95f5c465a3ace  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_s64.c
! d4a4f6b7ec28f893c7d6581428724e22  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c
! 5827544e574b41e0944ce1d73bd6ab8b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c
! 588ef561ee693ab30e63d307f63cfd1f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c
! eb99d0c6e156887243d1eb9053855998  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c
  cef09c955878f5789e8ae3c836548ac3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_u32.c
  af157fd449f44595e08085c693ebd1df  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_u64.c
  567a372880991112e96624ce96ea0f7a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_s64.c
! fc2a383965afbae3f0bd24c9e38dc947  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c
! c0955cb2041085a478bb1b1bfd314f3f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c
  71349887404d0d817edb48b646d3d599  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_u64.c
  985417b60ae9e966c50cf8d24d92cbe4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st2_bf16.c
  3973173efe68872351a0bda773c11c11  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st2_f16.c
*************** e9c4cd3cb1aef04a10f798e0008948c6  gcc/te
*** 75336,75349 ****
  30bb8e3c650bd1d8e1086e56e40aa08a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u32.c
  7e676f63a879780cde206cc71a3d83c0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u64.c
  359a55956a359585da725337266a2092  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u8.c
! c8dab6f4a3196444b529691994cb64bc  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c
! 65a7a8b71063dcdfe866ae264de69c5a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c
! d4ea63165de2ed65c86ac78ef25bb11b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c
! 93293d0d575afb8585419843897ab8c1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c
! 41ce0bf9cc36bad3c6e488c272376657  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c
! 4a766e3fc9ae54b1cc63b5da16fe8d56  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c
! 5fb08f0acf7677ed871ee69847e84453  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c
! a3078377c030a1be852f198b31549804  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c
  9aef2adc104916dd2bf28fc878da3d35  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b16.c
  c3923e8a1bf47e00389c626a54cd4022  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b32.c
  5640b477164140dd8be12d243e3f960d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b64.c
--- 75397,75410 ----
  30bb8e3c650bd1d8e1086e56e40aa08a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u32.c
  7e676f63a879780cde206cc71a3d83c0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u64.c
  359a55956a359585da725337266a2092  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/uzp2q_u8.c
! 1d5367e825eb8115bdda9b33d25003df  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c
! d1389fa6788b1112c829fb2b3081a2bd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c
! 2c0a04e8ecf4b4076f468ff01c8158eb  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c
! 42d6cf5f3771d2ba95ea45d45f530026  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c
! 7d57cd6540a330541e3e0e58392c67b5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c
! 69ed0bb8a8aa42fc6b9063e0decf4b90  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c
! f08acfa5ab3dcb95cfd975e58cc3f897  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c
! da0c2ac7eb1aac038ce7ffb66f453a38  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c
  9aef2adc104916dd2bf28fc878da3d35  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b16.c
  c3923e8a1bf47e00389c626a54cd4022  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b32.c
  5640b477164140dd8be12d243e3f960d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/zip1_b64.c
*************** a1f49719a6a2f5d52bed7574b5f19664  gcc/te
*** 75744,75753 ****
  20338404eea8edc0ba93110522fbcddc  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cmpuo_1.c
  493d587eaeaa014288091839539ed594  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnot_1.c
  8670785b5e7c8b75fb219f0ddae33190  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_1.c
! 9e41721b4dcb606909b3efa814293f4e  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c
! 60a6cb5f3583610557e9b4dde6cd5453  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c
! 2279605ca76a398874fa5ee6664d3d52  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
! ccec270f903888ca00fe8baba907fa5f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
  3e73a503600e07b17bb8c9d3ecb3bef4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
  2c7b7b97a194070a3802ca49f8a03b57  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c
  fb0b99833eb0c168abc014e0554a156c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cpy_1.c
--- 75805,75814 ----
  20338404eea8edc0ba93110522fbcddc  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cmpuo_1.c
  493d587eaeaa014288091839539ed594  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnot_1.c
  8670785b5e7c8b75fb219f0ddae33190  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_1.c
! babf414c7083590fb3dbee59c501b9ca  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c
! 4ab50d19e9b257b884092782ddd0721b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c
! 3328c09173681d869d6fce775a9a57e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
! 2edad8fb824137d1d0e839593147bad9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
  3e73a503600e07b17bb8c9d3ecb3bef4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
  2c7b7b97a194070a3802ca49f8a03b57  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c
  fb0b99833eb0c168abc014e0554a156c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cpy_1.c
*************** cbc14176bcaf520187ca5e1cb7a290ba  gcc/te
*** 75871,75877 ****
  f4c9f8f5a8d604bc447fb7d463e7735f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_2.c
  14793ed2e5397935138c3dfaf3068f34  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_3.c
  0806391c016c8debb474b7d2ccb7f9e1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_4.c
! a01ecfddff6a97f8ab51ac44399e1b21  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c
  8d27746de2e197744e83115819fe44f7  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_6.c
  961cd5bf40c30fe194d6c5a5bb165705  gcc/testsuite/gcc.target/aarch64/sve/addsub_1.c
  56d4c411c942789ba83621762b5183d3  gcc/testsuite/gcc.target/aarch64/sve/addsub_2.c
--- 75932,75938 ----
  f4c9f8f5a8d604bc447fb7d463e7735f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_2.c
  14793ed2e5397935138c3dfaf3068f34  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_3.c
  0806391c016c8debb474b7d2ccb7f9e1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_4.c
! 3fc01cfb459f1e5f66ad165666b9289a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c
  8d27746de2e197744e83115819fe44f7  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_6.c
  961cd5bf40c30fe194d6c5a5bb165705  gcc/testsuite/gcc.target/aarch64/sve/addsub_1.c
  56d4c411c942789ba83621762b5183d3  gcc/testsuite/gcc.target/aarch64/sve/addsub_2.c
*************** b30c9d812f160fecba2a87cfc8066003  gcc/te
*** 76136,76143 ****
  2cb4d7fb5b43492872ebb5bf43ada8f0  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_1.c
  df528e108d824f91ad17e17022a54f46  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
  3f80e6ac7e9eb0358bfcba6677fdffad  gcc/testsuite/gcc.target/aarch64/sve/const_1.c
! a04b176d1f4debec96b6eb4ccec14017  gcc/testsuite/gcc.target/aarch64/sve/const_2.c
! 748aa3fe4ea69df2485d8d4f5cea0000  gcc/testsuite/gcc.target/aarch64/sve/const_3.c
  8d7ecba02de4f6f13e67abb27095c1ea  gcc/testsuite/gcc.target/aarch64/sve/const_fold_div_1.c
  3e10341bbad5f59e9c4238e5d9a9baaa  gcc/testsuite/gcc.target/aarch64/sve/const_fold_lsl_1.c
  91eee6bf2d1bca4f85df6d04b1f8f095  gcc/testsuite/gcc.target/aarch64/sve/const_fold_mul_1.c
--- 76197,76204 ----
  2cb4d7fb5b43492872ebb5bf43ada8f0  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_1.c
  df528e108d824f91ad17e17022a54f46  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
  3f80e6ac7e9eb0358bfcba6677fdffad  gcc/testsuite/gcc.target/aarch64/sve/const_1.c
! 1486a9247aad0fbc872c17a6eab41940  gcc/testsuite/gcc.target/aarch64/sve/const_2.c
! b7e38288d184e5c029161b8ed1565bd2  gcc/testsuite/gcc.target/aarch64/sve/const_3.c
  8d7ecba02de4f6f13e67abb27095c1ea  gcc/testsuite/gcc.target/aarch64/sve/const_fold_div_1.c
  3e10341bbad5f59e9c4238e5d9a9baaa  gcc/testsuite/gcc.target/aarch64/sve/const_fold_lsl_1.c
  91eee6bf2d1bca4f85df6d04b1f8f095  gcc/testsuite/gcc.target/aarch64/sve/const_fold_mul_1.c
*************** f18be1e7abbda4855f72a61ca0933ab7  gcc/te
*** 76247,76253 ****
  5dcdcb3bfd4e0ede6827ac488ba11d6a  gcc/testsuite/gcc.target/aarch64/sve/fsubr_1.c
  3b3029334aae94b745b7fb933c8662d1  gcc/testsuite/gcc.target/aarch64/sve/gather_earlyclobber.c
  f07bba8d8481e5ecf52b8e2cb7e34fc4  gcc/testsuite/gcc.target/aarch64/sve/gather_load_1.c
! d624e2893eea113ceac2f384f150224e  gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c
  85f4fd77f528414afa59cb2cf0575f23  gcc/testsuite/gcc.target/aarch64/sve/gather_load_11.c
  8b9466310c672ff0417ea3bc0ea3cc40  gcc/testsuite/gcc.target/aarch64/sve/gather_load_12.c
  7f4cd52326e79718b633362cecfc0a4b  gcc/testsuite/gcc.target/aarch64/sve/gather_load_13.c
--- 76308,76314 ----
  5dcdcb3bfd4e0ede6827ac488ba11d6a  gcc/testsuite/gcc.target/aarch64/sve/fsubr_1.c
  3b3029334aae94b745b7fb933c8662d1  gcc/testsuite/gcc.target/aarch64/sve/gather_earlyclobber.c
  f07bba8d8481e5ecf52b8e2cb7e34fc4  gcc/testsuite/gcc.target/aarch64/sve/gather_load_1.c
! 2e6afcf0667e27a32c8be62767eb3c76  gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c
  85f4fd77f528414afa59cb2cf0575f23  gcc/testsuite/gcc.target/aarch64/sve/gather_load_11.c
  8b9466310c672ff0417ea3bc0ea3cc40  gcc/testsuite/gcc.target/aarch64/sve/gather_load_12.c
  7f4cd52326e79718b633362cecfc0a4b  gcc/testsuite/gcc.target/aarch64/sve/gather_load_13.c
*************** f2fc77b4628ad8199175a8ebdd69e3e1  gcc/te
*** 76276,76281 ****
--- 76337,76343 ----
  d65171df277fd805666a8293e1ed92b2  gcc/testsuite/gcc.target/aarch64/sve/gomp/target-device.c
  e2d939ce1598891fb0151a910f6caebb  gcc/testsuite/gcc.target/aarch64/sve/gomp/target-link.c
  042e57b6147e2e10a51806c2939b1aca  gcc/testsuite/gcc.target/aarch64/sve/gomp/target.c
+ 3cdf75362179cbfc03758b562a5ee5e3  gcc/testsuite/gcc.target/aarch64/sve/highway_run.c
  9fffa4c6db492d5b9ae9ba7986fa3965  gcc/testsuite/gcc.target/aarch64/sve/index_1.c
  618eb3df3240452455692fd2c208f19d  gcc/testsuite/gcc.target/aarch64/sve/index_1_run.c
  92ccdb217141d67be3914247a776816e  gcc/testsuite/gcc.target/aarch64/sve/index_const_fold.c
*************** c1b4210e7c857e81f9f5dd17c8019137  gcc/te
*** 76434,76439 ****
--- 76496,76512 ----
  5c72c004716eb8bfa14105992e9351d1  gcc/testsuite/gcc.target/aarch64/sve/neg_1.c
  19192fb8ee188e2e0c251c4d7fec027b  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1.c
  8544826a8b7a261158f7b83af125df56  gcc/testsuite/gcc.target/aarch64/sve/nlogical_1_run.c
+ 9fbf5590b40d724116789eba890811d3  gcc/testsuite/gcc.target/aarch64/sve/noeffect.c
+ 2337fb8624791aeddb5e2e4d72107643  gcc/testsuite/gcc.target/aarch64/sve/noeffect10.c
+ 2c4fdcff496617dff591fe1d18766ff3  gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c
+ f7d51607bb876f7214245000c4b44951  gcc/testsuite/gcc.target/aarch64/sve/noeffect2.c
+ c82305630a0a14344362c72d1861a362  gcc/testsuite/gcc.target/aarch64/sve/noeffect3.c
+ 1e9311f0fb870496157e1bcd99e86c2a  gcc/testsuite/gcc.target/aarch64/sve/noeffect4.c
+ ce4e192cf4b4ab3b891f4655d7e7160e  gcc/testsuite/gcc.target/aarch64/sve/noeffect5.c
+ 40a6db82bc2690edb83de89b9d249027  gcc/testsuite/gcc.target/aarch64/sve/noeffect6.c
+ 4cb6201f21f02149abc8228e76138f56  gcc/testsuite/gcc.target/aarch64/sve/noeffect7.c
+ ceecdb430b769eac82d2bf1c6724a74a  gcc/testsuite/gcc.target/aarch64/sve/noeffect8.c
+ 0d6943784a5d4253a2bcaa45674404ef  gcc/testsuite/gcc.target/aarch64/sve/noeffect9.c
  746ca7f5666b70779bb2d11b745cb684  gcc/testsuite/gcc.target/aarch64/sve/nopeel_1.c
  82a96e648c528899d2018dd434c8c574  gcc/testsuite/gcc.target/aarch64/sve/override_sve_width_1.c
  88297aa00c0ea56bf3fce0f8ccae0962  gcc/testsuite/gcc.target/aarch64/sve/pack_1.c
*************** f7762a57c0440c80f5ca35e798f26fdc  gcc/te
*** 76576,76590 ****
  6bfcf63a1d4b589a189f8674b52ccb55  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1.c
  169092757dc1c053f54c2ea37b51c838  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_1024.c
  2769a82ba506210aef2d808b63f64317  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_128.c
! 667b558d36dfdd0866e9494b62b13ae2  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c
  ccb2910c4016d12f642c73fb3f63e511  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_256.c
  a781ee1e4bfe63bd1be7a9397a847724  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_512.c
! 7d33b782b82f77fd66186a9af931d454  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c
! e7355b5cfe59559484918534243c9049  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c
! ddaac92d6ed896f310340ba4b5159bd8  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c
! 2c7732e1259f11f699140df3db04a453  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c
! af5e35c89314c8ed21a0498d880960fa  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c
! fff12dc2088f2702387133ff15077ae8  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c
  467df00c49d5cdd5a0904a0d794a6d10  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c
  f2456a359f3821da1bc28f9a5f7e556e  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct.h
  3bdedaf042ffb29eabe08512390ff3b9  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_1_1024.c
--- 76649,76663 ----
  6bfcf63a1d4b589a189f8674b52ccb55  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1.c
  169092757dc1c053f54c2ea37b51c838  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_1024.c
  2769a82ba506210aef2d808b63f64317  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_128.c
! 670a2f093036483f17def85b99f7ca74  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c
  ccb2910c4016d12f642c73fb3f63e511  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_256.c
  a781ee1e4bfe63bd1be7a9397a847724  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_512.c
! 729b9f990cb42251d2ddf4bacbe4c283  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c
! 7ebb670440f9a66f46a86b8055937872  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c
! e7dae3822e2b6f3fa9010f932a15d862  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c
! e6cec8d7ee9e74dbce13e58e3167dc5e  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c
! d98e82c99ca98388b9c4a141fe9b95ac  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c
! 322895bce4bd1a3f68500a9ecf5a4567  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c
  467df00c49d5cdd5a0904a0d794a6d10  gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_3.c
  f2456a359f3821da1bc28f9a5f7e556e  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct.h
  3bdedaf042ffb29eabe08512390ff3b9  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_1_1024.c
*************** d3252738fa0db5bfceb3e80d9754a54f  gcc/te
*** 76597,76603 ****
  859d5154812c85cbc1e73c45328f242a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_2048.c
  4f44041e2c506ee8f11eda5ef8e6d82a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_256.c
  10f8dc4eefc15929b133ffd9eb7d8dcc  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_512.c
! 284884206f1f6904d0af7df86bab5340  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
  dbe89864fb99377871dd0d209abfd059  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c
  ff2ac4b70a46e17015348c2091d8ca97  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_512.c
  4d884f04b08f8626de41656c2dc89c2b  gcc/testsuite/gcc.target/aarch64/sve/pcs/unprototyped_1.c
--- 76670,76676 ----
  859d5154812c85cbc1e73c45328f242a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_2048.c
  4f44041e2c506ee8f11eda5ef8e6d82a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_256.c
  10f8dc4eefc15929b133ffd9eb7d8dcc  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_512.c
! 2e5fb1c0c537accfa30029eb471129ed  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
  dbe89864fb99377871dd0d209abfd059  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c
  ff2ac4b70a46e17015348c2091d8ca97  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_512.c
  4d884f04b08f8626de41656c2dc89c2b  gcc/testsuite/gcc.target/aarch64/sve/pcs/unprototyped_1.c
*************** cf1e31d86ea35bf64d1fc0c0d41f4784  gcc/te
*** 76667,76673 ****
  818cc5792252309e9298c3170c6120a5  gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c
  0f0656798d3d0baa65f6683e820f0cc7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c
  264d49e0f73e5e65409b957c1db3f6e4  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c
! 72ed2a71c8fcd65f9d3290573a793b6a  gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
  02b2bc34734215e7a392ad462e1a11d0  gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c
  0961ee1b90ed132141201b720ebd239f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c
  baae1f5bb8c38ef2ca2546ba0a310f21  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c
--- 76740,76746 ----
  818cc5792252309e9298c3170c6120a5  gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c
  0f0656798d3d0baa65f6683e820f0cc7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c
  264d49e0f73e5e65409b957c1db3f6e4  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c
! 2032432ce9cbc85ee22ec920abb9ecec  gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
  02b2bc34734215e7a392ad462e1a11d0  gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c
  0961ee1b90ed132141201b720ebd239f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c
  baae1f5bb8c38ef2ca2546ba0a310f21  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c
*************** bd41758e7f9337d1504182a29ac2f34a  gcc/te
*** 76893,76899 ****
  c69b4bba1e19dad1933f8dab40b611ec  gcc/testsuite/gcc.target/aarch64/sve/single_3.c
  6a7ed656f683a5152eaca3d77adad186  gcc/testsuite/gcc.target/aarch64/sve/single_4.c
  be62ee77685e07cba780bef99d05a7eb  gcc/testsuite/gcc.target/aarch64/sve/single_5.c
! 2b5533c811869448f2c015cec02da768  gcc/testsuite/gcc.target/aarch64/sve/slp_1.c
  2d92793326712b8d9999095da4e74955  gcc/testsuite/gcc.target/aarch64/sve/slp_10.c
  df29a45b5ee2033132b0a6f7d96ebfe3  gcc/testsuite/gcc.target/aarch64/sve/slp_10_run.c
  7f0aab629d8cefaf2b6472c91398d3f0  gcc/testsuite/gcc.target/aarch64/sve/slp_11.c
--- 76966,76972 ----
  c69b4bba1e19dad1933f8dab40b611ec  gcc/testsuite/gcc.target/aarch64/sve/single_3.c
  6a7ed656f683a5152eaca3d77adad186  gcc/testsuite/gcc.target/aarch64/sve/single_4.c
  be62ee77685e07cba780bef99d05a7eb  gcc/testsuite/gcc.target/aarch64/sve/single_5.c
! 3580a03ed0e9019774142b5b48e6201d  gcc/testsuite/gcc.target/aarch64/sve/slp_1.c
  2d92793326712b8d9999095da4e74955  gcc/testsuite/gcc.target/aarch64/sve/slp_10.c
  df29a45b5ee2033132b0a6f7d96ebfe3  gcc/testsuite/gcc.target/aarch64/sve/slp_10_run.c
  7f0aab629d8cefaf2b6472c91398d3f0  gcc/testsuite/gcc.target/aarch64/sve/slp_11.c
*************** fede82c538ecebf82ae0f495a35f66db  gcc/te
*** 77206,77211 ****
--- 77279,77285 ----
  2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
  4bc986ea41d65424e0c6997ea24e7b74  gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
  7326fab600b933872ff79bc8e4ed6c2f  gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c
+ 9f06c13c5002dfa5ff25e76ea23acb6d  gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
  ad5ce34e9e891872cc75c0ffed59addd  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
  a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
  51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
*************** cbf57b974a665fb3b5f56fc31ef1ddb5  gcc/te
*** 77304,77309 ****
--- 77378,77390 ----
  eb1b023f35011d4a4197742634e3795e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abdlt_u16.c
  72a798594b65a9af415d3fd1a42d6604  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abdlt_u32.c
  3916ca295055144efcfa81924002e63a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abdlt_u64.c
+ 3ea92bbd904d7e301d3d010e7b968ef9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c
+ 723494b9646ca45b1dbeb966eb3959fc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c
+ a1391a4f4e5c4cb6caa2c799a474dc63  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c
+ 8efda651700f3a9200ec3cac67aa3b36  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c
+ cc44aae20193e907397c30d7980558b8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c
+ 7e41bb9c10b4980ff94883a6e644822b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c
+ b0172a7054563b0bd13ee38013c822d9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c
  3e85c9374e6664d67abc60c4818ef310  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/adalp_s16.c
  4ff9a922ad888150abdc24177f5e3180  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/adalp_s32.c
  f6471a6d73c16be5febc05d21578053c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/adalp_s64.c
*************** cca4e4271240eaf1de7ccbf78da63331  gcc/te
*** 77466,77471 ****
--- 77547,77564 ----
  3f6cccf8111dbefdd1c669ef08bd0f2b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_u32.c
  bc62569ce00b2ded888256f041b09a3a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_u64.c
  d8675fab69b82a3e7011caf1e0f17382  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clamp_u8.c
+ 20ff7bd62525544d5b4bec9c885b42c3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c
+ 47805ddc68ef797ed9b1697683bbe929  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c
+ 73d93ca96cca10d9c50da62d6b71d7dc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c
+ b28009ea349617b271df3e8183c023df  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c
+ 556e73c790c37e1539286335b9932eaf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c
+ 07fa77ba14ece7a05376f7d71473a2fe  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c
+ 4102c401d788629892833b18d3b74463  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c
+ 2ad2b2fcf1ba3477423fbc90ae87c461  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c
+ 860dee95416a1cd5b70eb9ebdaae3145  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c
+ 9aa0cc3499f8abb62762dd64649ffc56  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c
+ dca61ba192c6af87825f6f3126a6d542  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c
+ 7b871fb80df04e19e5e3191e8900fc2f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c
  04f6f3e01cf6c6c9881f925bde0284b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_lane_s16.c
  c3ead83f0e0dbc2ae7605c6dc8594fb4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_lane_s32.c
  917dde77769978a3a4d5fbd8ec3ae9ac  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_lane_u16.c
*************** a5a6ef6576bce11b8497809ba3ccd985  gcc/te
*** 77478,77498 ****
--- 77571,77640 ----
  54ece81f2ec7cb204ace80c08a1b31f9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_u32.c
  d2f99dbdf69a524cc2dc6523b5f9f81c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_u64.c
  c518ac2920fe8e1da71c43e965abdda3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cmla_u8.c
+ ad1bd83bd3f98e62ae91495260ce88c1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c
+ b9cf96de6fa91b6ca424c8b3e014698b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c
+ 3207a48a1d7f0fe83e6dc51ec79752bf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c
+ 4d6878441166cab5bb023ce7803a0c28  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c
+ aaad9ed9122b4e10f8c2c68c4325ad12  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c
+ b795b7d351c297d1ec58dffa743b72d9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c
+ 157062779468b837aa10e2d2a33c749b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c
+ c90ebad2f3851cfa79d484ab0f82fc56  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c
+ 65e8c5d9fb315df3caec25a93c1f8472  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c
+ a74f53dc8dc3ea9e2c791fbf73779100  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c
+ 6c371bc886950a00a1b96f34069443b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c
+ e39e6fd0fd999c349490dd2f56ae91cd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c
+ 831e9054cbfd2529b7aae1f04f2acccc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c
+ db7b67d58a8b164b7ff39d3377674b65  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c
+ 52ea4610edaac960e5977666c7daac8b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c
+ 40bdafa8e874ae502c467b874f02efde  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c
+ a8ac76b2f9e13ec7599f4b0f54b5ff9d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c
+ 5788cd5bf679547d0e06df1ae17ffbba  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c
+ 56d22b8ffb800d9adecbeaadf68fe72f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c
+ 2e2ecba0b08dfb31c7f5695c68795b30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c
  5f48d128a03ba1b068eb3e0202939f5d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c16.c
  4bf91c2c4cd7281fadcdcbb6a8af80c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c32.c
  65fe09e3c46599a45ac8995d0da1fbad  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c64.c
  4a9815fdb220f791c3e4cdf921dc0005  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cntp_c8.c
+ 1843b0fc3a9722f5d1ed38712d15471a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_bf16.c
+ 35c1ba5162690496fb70261f4b89fb60  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f32.c
+ fbdc8e3f476333d95cc6d139834dbe4c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f64.c
+ 74833e9a8a74cef267aced75ca492cb6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_mf8.c
+ cbdeca124892088564378a2279d2fd4c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s16.c
+ 34f4bb5f4cadd4f65b8c5829315d65df  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s32.c
+ a0b7b0a194596ae1239b9375463fd8c6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s64.c
+ 6be00734ddb34f077220bbed32bf05cb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s8.c
+ 32dc0c360d38a2a36aa59e84fb8c31c4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u16.c
+ 394c4256f8f268d104e46434f41ba90a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u32.c
+ 3f91496cd675d6b77de291728a235387  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u64.c
+ 3f9d1222761d971c9b8067345cf3eb76  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u8.c
+ 25b3deb276f9bb8d300bf60044b4f7d2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c
+ 59540625d0622257fe241e70dd927d13  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c
+ 7c1ea4f4f66ba8e921f303d75cd1dc6d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c
+ c30a58369c498fbed581280ef42645c2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c
  8b4ba765bbd9f9fb49a6ea5d6659475f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_mf8.c
+ 111b2ce4a0faef0fdb75229efac34c9a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c
+ 11e77ee648870fa3971e29bd8d72e5c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c
+ 61b16ced5cdaea9c3eb871936e4e37c2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c
+ 2fafbef4ef821203d79a05418e7dd115  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c
+ 2d96f2d3d7543ee2347444bfcf0b2723  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c
+ fb532c9c57ae9be3cb53c63ba9e42b6f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c
  43c1de3aa752708ea904bc999fd9ec63  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32.c
+ 943bc33d5a69e56b157a4e9a7bacb327  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c
  b8dab7fa99579a48ae2f4cf945d83634  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64.c
+ 638775807a2462a2ae07800067298ef9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c
  3d0166610e164f0fc0226449764d581d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_mf8.c
  dd5ad57ef9bf6124f1661592946de6b0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtn_mf8.c
  4cacd0e80242196f4ce707176bdbaff4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnb_mf8.c
+ f777648aabe70b27d49c7a710e03497d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c
  db102a02a1b3d79628c6648a924ef52a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16.c
+ 8d87220f2305aa9431f63303c4e106a4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c
  4409b8e8e9a435833c7f108477d110d6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32.c
+ 9efb8d5a6a15d9a03840ffbe3251d820  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c
  e4e7b6403e48ccf57a49c11134e1c519  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_mf8.c
  2f3ad239a3a26f81f86344ac3d4757f7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32.c
+ 063dfea2db3f7d2bd8b5ed6376ca0365  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c
  c592e3a613a98192f4bea62a7aac452f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32.c
+ be317860786cf3f302403d8be60cc9db  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c
  7b5b1b7a0df19eed1e58c16046321b33  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_f32.c
  71dd618453c28658cdd8fb3349d1dbd1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_f32.c
  09e793bbdb9ae49a179fe3a71d0bb9a0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c
*************** bce1a311f716a78a9c726ee4034d4b25  gcc/te
*** 77545,77550 ****
--- 77687,77714 ----
  a8e2ffbaa744d1150f674c33981af953  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/eortb_u32.c
  9642daa8890c50615c9a33d6460d28e1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/eortb_u64.c
  4b272fdd8f83a9def654b0b3c63d48b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/eortb_u8.c
+ e94abe7c956f96e937f4f66e2d52d109  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_bf16.c
+ 698ac3c8dca23ed368e440f38d1c4727  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f32.c
+ 9f5cc3c3a9d54a814d667302450a3b97  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f64.c
+ 20e98178c8451c8807e2e325380cc8a4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_mf8.c
+ a438b439f8488b63fbd6cdaebc2b9f0f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s16.c
+ 56012da6254de5261172be5169198c2c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s32.c
+ 7098c5252429b203ccee9adbc98cbb12  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s64.c
+ 7231187e8cb09dfb3caf35cc21d9c67d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s8.c
+ 373cf0b5cf50a97cba53397fbb77e09a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u16.c
+ e28bca33e3eae3ece23812239ab37f09  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u32.c
+ b2083707fb0db646c36ee4289fe4cf26  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u64.c
+ 11ebc7fbd6291a3b632236759037d465  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u8.c
+ c649b9f71d8105eb86b0e6594a849311  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c
+ 33c6472eed12e5c8d286ae77f80c2afa  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c
+ 605cbb17918ed1555682b0ba44d59379  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c
+ 10a02b053ba6b9b79374ef72d2be2dcb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c
+ f623ed6b8a000b5870110f9a554fb727  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c
+ 14157d334fbf3da14f0416817f8e0a6c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c
+ 43b11798f3cc9e3e77111352533bc317  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c
+ ba70c6d3e30d7d2fa045ea4f87bd0fcf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c
+ a07dda57b37f62429a79fd1b218e2999  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c
+ a19ffa793f8adc6a37581903c7c9b65f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c
  193b0279bd430c529df56e4df6e6c4fb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_bf16.c
  52fd7ce0a4e63c06ce99e76cca82eaa3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_f16.c
  5add1722f9f9efb58e8725250b4c4320  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_f32.c
*************** e5d8b37658250431fa3464a88fcf6f71  gcc/te
*** 77557,77562 ****
--- 77721,77732 ----
  f487a14d33457cd124b7a1e419d7d3c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_u32.c
  11add37e77fb4754552c1ddb02ec36b7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_u64.c
  87fcae3aed770689b7473fa95b6a7fb6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extq_u8.c
+ df47d513e5cbfdc2c89e7f46f0b31d43  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c
+ f987b0824bbd00dab667f492bb2f5138  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c
+ 7914f6cce650ed0f1e3262a04a92a703  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b16.c
+ a56c0bc498ee2ac58126072a2ab5e806  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b32.c
+ ffc3f898cd875184ee65e01eea42ae1d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b64.c
+ 471428a1de5ce1c4a7cab90528e3e530  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b8.c
  ab75632cc9764d4c2a95c78cb9e92896  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/fmmla_f8f16mm_sve2.c
  bd2faaa8379abc5d6dc0f94d51e0603c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/fmmla_f8f32mm_sve2.c
  3bef647f0f7b57b8421e22563f6cc3cf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/fmmla_sve_f16f32mm.c
*************** f16e23d85f4b1bf1c739c56f1cb191a2  gcc/te
*** 77590,77595 ****
--- 77760,77769 ----
  9b5a9a297c5b79b77ed2c0b67d1b69cd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/hsubr_u32.c
  8ccd672328a2d11ceaf8164f0c7c336f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/hsubr_u64.c
  cba769b6b5db4a7190ffd535a9a7e63b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/hsubr_u8.c
+ 937c6bbdcafd89857bd7b7075b6f1e30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b16.c
+ 00fdc4d0f7b5bf69ca8207e9d1c92283  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b32.c
+ 476d1b8b33c36b312a2341e4085f79ad  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b64.c
+ 2b3d5a5e20a7a4c06a3cc70e3703d688  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b8.c
  062039d0ea9db32cbb64c3b08bc05a63  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x2.c
  36fe54afec020749961656390ab1abca  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_bf16_x4.c
  59f68c1353c5a87871f0607beb3b5f7b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_f16_x2.c
*************** bd5258767541f7f656453fac897daef8  gcc/te
*** 77616,77633 ****
  2e0eea19a02e3939fbc1e0b410758915  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u64_x4.c
  3575beebc4bf603b2bf7238991ecef69  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x2.c
  37fe20f635e56f483413a42066be444e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x4.c
! 3f01f1d6cc9df025810988780752a556  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c
! 8d9c86ab0547430d89c09d02f5b4a213  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c
! 481ff6bac37d6a5cf568772ed600893a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c
! 8d9bc1919123c4ad3805cea7aef21d14  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c
! 18b001f35a70e659c0cf52482d4c8e30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c
! 58ef4c9b94a7aabbef737b20e2e33f3c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c
! 6f940aaf0de239fbbfe44b0815b8b2fc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c
! af75de775e1f6dc851e676d17d937509  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c
! ff0b02ba59512e70028c1af8c7d0c972  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c
! 67f1668e10fcacf16a7340b6b91c485d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c
! e690e7f97af013f598d3d202b0b1ac47  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c
! 43139c32596f07cf92f9b5a835752746  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c
  0b178272262cbf5aa040edee94306d2f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_f64.c
  4ec267f3437e4ab6183ffce8589cc096  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_s64.c
  1dbac8007c65aec234b9b069593a361e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_u64.c
--- 77790,77807 ----
  2e0eea19a02e3939fbc1e0b410758915  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u64_x4.c
  3575beebc4bf603b2bf7238991ecef69  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x2.c
  37fe20f635e56f483413a42066be444e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1_u8_x4.c
! 6c2337a04b3012b1cf81f1f6abe38f5a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c
! 4c93ec738bcf8c31a1b2187d184c6b68  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c
! e2f97a6c885cb64ebecdcada1c57943d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c
! 395c785d153bf4db2d4e2da1895b31b7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c
! e9f7df0f814a5538addfefbb159c6e9d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c
! bf5a7f76dd08d6f1f6fb89f32286b7f6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c
! c3611e9d2d5b96266c958d9c956b6ef3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c
! 496cb0f0125627cea9949a87ac8bf6ae  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c
! 1ebbcd8b9879b331452d537e02ea3696  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c
! 4fb78f69981d53aa3df38e8907351d32  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c
! 6acb933b0a3ba466f44225d1e13ca6c2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c
! 7a9fdcc6aa411a5dddcbdf107d74e83c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c
  0b178272262cbf5aa040edee94306d2f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_f64.c
  4ec267f3437e4ab6183ffce8589cc096  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_s64.c
  1dbac8007c65aec234b9b069593a361e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1udq_u64.c
*************** ab8ff81f16d7d5da108bbb7122d54fdd  gcc/te
*** 77678,77689 ****
  994d728b6cf7959ccb2799f02d5542d0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x4.c
  7358f90d5e5bad775012e018f318598e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x2.c
  0f2417441d7de3ab9e6d49b844ba2823  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x4.c
! 513970c59fd27dd2bf07d28b0f24ddfd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c
! 6b39035e9294c0921efe3b55edc9760c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c
! ebadc36dc160d8ffc0360e8c8e81dddd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c
! 8b235b99fe6f46ca010addddae970c36  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c
! 9ac61c1f0593f782c84eae9faae47523  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c
! e637a133c84cb7de8c650a02343e825f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c
  fec080cdb249a68ee318a00f8bf5f6f3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x2.c
  56d7eb8b9c4cdd22c80f4a00484a931e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x4.c
  c3fa1aab3fabebb9edae11a8a273f4e8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x2.c
--- 77852,77863 ----
  994d728b6cf7959ccb2799f02d5542d0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f32_x4.c
  7358f90d5e5bad775012e018f318598e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x2.c
  0f2417441d7de3ab9e6d49b844ba2823  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_f64_x4.c
! 6ed652c48d8dd02a4c37e137c07d75e6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c
! 3a8c93d50edc8b061bba861d8ae0268b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c
! 4c1c5e558865479bfbca4c02d8beb230  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c
! 104e0c3cd95fd8b3e22247f7cde283b0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c
! 5fb98975bf3bcba5f5aa780af2ffb9f6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c
! 8a3395a0999f33099d42ad9144758c72  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c
  fec080cdb249a68ee318a00f8bf5f6f3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x2.c
  56d7eb8b9c4cdd22c80f4a00484a931e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_mf8_x4.c
  c3fa1aab3fabebb9edae11a8a273f4e8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_s16_x2.c
*************** f9fa25007caaaba4744288aa126f35c5  gcc/te
*** 77702,77730 ****
  efc40917536c97005d13b8207a3ecef7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x4.c
  1cc63d813a03c0b5ec1047f456c771b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x2.c
  fd93a9f0013fa086aa131f0db1aade0e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x4.c
! a60ca3e79c196d63516903f8bee10109  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c
! b1a7ce65192798dea38154969f6df5ce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c
! 3ebe000d098875b50540e7970ab1336b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c
! 1f40af3c78532bf92655443eaef99f80  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c
! f229cfd988349323c293f16886badbc9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c
! de73bf3b0755354fc4d1361f75affd86  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c
! 8c92f4d0ddd0369c97bda66b429547da  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c
! 920842105727e1eb98f3f5c73fcc42a5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c
! 6ed339cfd74e4c39b350be630a8f2f84  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c
! d04882e2e37a1b88658ffa29379c1eb5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c
! b22ec6b7adb826b320b7b5b23c47ca46  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c
! fbe0657b2f16c71e1084b6c953b45817  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c
! cb42a0b620d3a714ae7cad3eec373cbf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c
! 9e75e965810b5e165298142ea9556fd5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c
! 2cdb82450495146b964a46f0861ad803  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c
! c36735f0c2c27fd53e4d0c425e1cd42e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c
! 2602868d6f7bf3c79995aa1d0abfd1fa  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c
! be6e8caa61b5b4bde00f012fe83d2fc0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c
! a686d38021ec5c3f87eae54413f6a7c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c
! 641ccb1b01f9bf98637eaec7c0ea4138  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c
  3b3858da743cc4a472d159cac9335700  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16.c
  7803182f3fba07a8b946e6232aebddeb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32.c
  ba0e2b35831f7095231c85cba3cfb584  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64.c
  fd45b73cca3d00a864b8c5302646b684  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_bf16.c
  3d9a7e1b3d91e6e56d0d38e3686097ba  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_f16.c
  76c9cbe4849d1c109a96a6ea5082d2f4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_s16.c
--- 77876,77907 ----
  efc40917536c97005d13b8207a3ecef7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u64_x4.c
  1cc63d813a03c0b5ec1047f456c771b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x2.c
  fd93a9f0013fa086aa131f0db1aade0e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_u8_x4.c
! a48249cb33ae5fa959ea1a895effd133  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c
! d1814c9656b11ea810a21ff7d48dd103  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c
! 1aa450cc6d3b06d5c07d0d4845be6663  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c
! 71e2f69da5c9a3598e9b3e5441a27bb7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c
! 19eb239be4a06c96868b65504fd86cef  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c
! 02ef9917cb93f228bd9d00ddf7848fbb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c
! 03a4d2feca04f73a47d75e348779f3b6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c
! 951bc8c27350073aeb048ef3cb690814  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c
! 67b1514ac31bed34aaf431c4323c464c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c
! 82f22541a1e93cefd7d8b38e9816e061  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c
! 1e59c777a65030966f10d392f7ee5de1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c
! e1425e210024a6c862c885aa3abdd45d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c
! 6601453fa25926c128b3be8874fa6a98  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c
! 59ede6fd603fe79e8992a1970c4ab31a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c
! 60d0769d29ecd7535541e77b844f20a3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c
! a196dec3202a39b31f3697ec3339e80a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c
! 21f5e10511e501f929652a3916700439  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c
! 569d0353d87f02e1fd94ae9fcc2d3849  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c
! c6471ca53688f7c904ee72fd3a3c38ae  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c
! 4a00af3956d6057f49cf7a6a7babf331  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c
  3b3858da743cc4a472d159cac9335700  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16.c
+ 0cb7d900399e0150fc6ee474aa926867  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c
  7803182f3fba07a8b946e6232aebddeb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32.c
+ 28f478f6405965246bf759a5cb41f87f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c
  ba0e2b35831f7095231c85cba3cfb584  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64.c
+ 943b46b24d29fc49820dfa70d45693c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c
  fd45b73cca3d00a864b8c5302646b684  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_bf16.c
  3d9a7e1b3d91e6e56d0d38e3686097ba  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_f16.c
  76c9cbe4849d1c109a96a6ea5082d2f4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/luti2_s16.c
*************** ccd242c808554f9b42425151f2707ec6  gcc/te
*** 77929,77938 ****
--- 78106,78130 ----
  3275cbbef032c93eba25f71a538a3157  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nbsl_u32.c
  107e6d8c6bc2dc7a4c9aeb9561104a9d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nbsl_u64.c
  cf6676cbf5ef438e603b7840f953d807  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nbsl_u8.c
+ 09c9700ed35dec76e179f0b67036e656  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c
+ c06b71bf49071856e3f3497252db2e6c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c
+ dd075860a078ff5bd1e6765cbd3a4dfe  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c
+ 4a6e7dadf00239e205b21d372a7ed927  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c
+ ac38672b63553c92b1d619bd5001b4e2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c
+ cb34351fcbed8ebcaadd5e34b6a44353  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c
+ 4da70792e1ff06eb2396e33f55630fe0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c
  64132908b8bd08e7e28cc13c1ebe7eaf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nmatch_s16.c
  1f10a15a7cdea6e526938bc921ba977d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nmatch_s8.c
  36845e3bf5900d5a90be7656ce77f583  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nmatch_u16.c
  f2135caf646e542ba160cb5099588c04  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/nmatch_u8.c
+ 2061b47b938971ece220ffc227602d0b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s16_z.c
+ 9fe3dabf09ec54b9d1e492538b7b5402  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s32_z.c
+ fee634491747ced5fd514d4483a0395f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s64_z.c
+ 1683781c1fab1d3eba4bacd2eeb379e3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s8_z.c
+ 8f9789c504c945bb66dea2d03e54465f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u16_z.c
+ 708aae55e4260c2155dfa3c332bdbe4e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u32_z.c
+ 4e1b61e3cb870f110158e839ccb2a2d0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u64_z.c
+ d9d391b0687fd77c0f629ae4cac57be7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u8_z.c
  c27031f961f89df14f9a74994273c844  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/orqv_s16.c
  3abd271e483bf710d517b84c00a676b6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/orqv_s32.c
  14426ffe067ab11d3d98027a926a62b8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/orqv_s64.c
*************** c2ce2cc4cd0a2a1cb835ccac21e96305  gcc/te
*** 77981,77989 ****
--- 78173,78185 ----
  7d40b89febbf1034cfdf92a232827f81  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c64.c
  29ddde8b7c0b1ef6d1bbce17746b175a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ptrue_c8.c
  ce9d85d1f663a89c99059331f390a83b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16.c
+ 6d466c9cf722a4e676eaac19cd99d94e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c
  14c9fc2b0a767b5ac248c20f85d1e802  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32.c
+ db8be9130521675c9869935e6f25b68d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c
  fbc69905263b1e74fa97aabff6224321  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64.c
+ 3f3ed6d7ac9155eec1e9a0137047d41e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c
  01ec16a5256300b51b3e94a0421c80da  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8.c
+ e5cab249801a7bce0b92de2d59284dfa  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c
  38fe15ead3a16839a8e989107f4e1a68  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qadd_s16.c
  4d7ee00e8d0be3d6403f6d17c7f04fbc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qadd_s32.c
  33bd0c0ee78a061e5e97cf45cdb4ceb1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qadd_s64.c
*************** de2f4f00bacf06909e5770da1ca37d8a  gcc/te
*** 78043,78051 ****
--- 78239,78251 ----
  0ef3bb772b21f664bc5443fcd873ff5b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qdmullt_s32.c
  e67680abd1885c0fe6fcc3359efe4ba9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qdmullt_s64.c
  90aa4a4261561f5ade3cbe804df38b14  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16.c
+ 3754bb0beb45b5e27ec2e3b9e21da7df  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c
  a68042d5af1b928f342bd30b23154305  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32.c
+ 1eac0fb2385a4823660d9a3379bb5357  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c
  72a05e4b2fef604ce063072e63755a09  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64.c
+ 7fdda4f40bfd93aecba48be93b22b050  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c
  62da58d65b6de526a54d1bc3caff01a3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8.c
+ 7927b0c4aba6ae8f7c9550382c92989a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c
  dc76fb910b3cf3d90ddae132e5179cc2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrdcmlah_lane_s16.c
  73dcdec2565979e25e7d0498a17412a4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrdcmlah_lane_s32.c
  3b9615d40126ab476b2cdc67bef2f741  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qrdcmlah_s16.c
*************** d4639ecdcd782342338d7cc2128666d2  gcc/te
*** 78180,78199 ****
--- 78380,78435 ----
  b9b880247845019946d9397ae50a7dcf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/raddhnt_u64.c
  96438bdfb17fb69927c45a82c26bcbd0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_s64.c
  4b908d3cdc65630d5d194574d04a9d04  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rax1_u64.c
+ 676e8eebe89222f9bb2050a49542b1e6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c
+ 46079c7ef0191e8a5b3f80ad46d9eeca  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c
+ 567c2d61daa324ccf26e3434e543dc27  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c
+ 5a599b64e00212a3a82deb668d086e1e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c
+ d0bf888ed0fdf7ae9601e84531b8b5c6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c
+ 8b17a70eeb9a058e0c93ecefa4862a45  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c
+ ef03f43b7fd55434402c13eaf4a781e0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c
+ e9adaa8a77a24e7bccb41f5540b4e382  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c
  1e60fc894c3aa822383f66ed0fae4f0d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32.c
+ 8fefce5c6a2b384c93dd9585937914c5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c
+ c07892e8f3302315070272e4ea290ea9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c
+ 5beffe99af8589ca725cb655d58b718f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c
+ aabdb53f60faa706cf8f4fd6f7659b88  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c
+ eb47bbfde14c9ea25bcd73b9e4ccff99  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c
+ f2e91afc97765e6344a9994366d83d82  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c
+ 6b9ca014148d8f4c92fe1ae655e9009e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c
+ a4d47eb62e20c34406403690c0449072  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c
+ 15d98c15c98b93a5927b0a70fd59810f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c
+ df93ac1ded1bc24261c4c465fefcdff8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c
  6dcdd634683cc5bf89527f1b3aa8bbe1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16.c
+ 357ae26c5eafd50a2a35e60fca94e32e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c
  012a6600194eaffae32608214f7961c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16.c
+ fd6e85549ce2fb48ff4675af893b3a55  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c
  8f78cd01c576e45a1c23352b4a45549e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32.c
+ 55becb14e866814678ee60d85f05a2cc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c
  3139d30903d8bd1998eaa0bf27d502dd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64.c
+ eba9b9d3ac6e652f35f464a865d21c82  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c
  8c457d56ca87881e9d85f89925c16ef4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_mf8.c
  57d9d47866b138860f9596ecf5f33c3f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16.c
+ 94a33e2ae87c5a59a4bf04fd9aa06fac  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c
  3a81d4e766ce2c370d5f1e889ebb6571  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32.c
+ 38abcf2f8f3b8f484c8ba30e4f755a51  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c
  7579a7ee86d83cfb156bfd8326fc64b9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64.c
+ 3c2181953f95483b2c4df5e73f965974  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c
  c1b1f25927be0ef1d0776d5609fa76f7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8.c
+ 83ef78de31fc015578a56eab64ee3bab  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c
  28e02d840ab26dfbfdd422470b9a0664  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16.c
+ 6bd8830f92d5bb840d63f59015f93d2f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c
  3ba755e3a4fcf839884e3245bac1c47b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32.c
+ 173afc46d75193223f402fa3bedce652  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c
  439b4003f6ccff9474809f43a320434c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64.c
+ c10f60dabb772030b0f66292980426a7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c
  1e000b1c81ff64e2c2bc15b428bc2184  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8.c
+ aed84e4dd61a933207dfcb888d4b31e4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c
+ 5835d3fa2ef3f573c9931ace9762092c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c
+ 4cde33f949f1bfebfec889efa19890b9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c
+ c7101014603aeb6c8afa969f2fc8166f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c
+ dfb7b4ab9b52ea1cf98f05b1d509d6ea  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c
+ 279403f43f3e673e4c7ce95ee7e480e6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c
+ 4d31d058f5dcaee656571c0b1730a82e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c
  9596a6d388086fba832d8a2f53ea57c9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s16.c
  10d33337c7eb8998a71c51e7f2bb3e30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s32.c
  dbc6f1ccc6394bbd64f2989e6f385bce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_s64.c
*************** f6da1644b8587c81196d209acab06d29  gcc/te
*** 78202,78207 ****
--- 78438,78472 ----
  c5eb426b2341c09d3c0bdcb7c62db190  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_u32.c
  b8dc3ebd57fa140b2d71b58825e6aa93  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_u64.c
  f3aca869a7985ebef3fe96870db58a2f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rhadd_u8.c
+ 8b641e99bfc61829b1ee1bd968beda4c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c
+ a81efc6ec7f682b5fc153b3b8fefc678  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c
+ 20ef127ea9f2eaf2ddb973b27a32015e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c
+ 0c4df8fb54a9c9a2a0e51fdd0e9b1a32  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c
+ 72e26a568510129d0729ec83110104e9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c
+ c4b092c5997a9c76cc9502235acb9594  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c
+ ea03ce7896fcfc1739274c4104f6cd7f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c
+ d7b32e30899e80183a6ca0363500b547  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c
+ 84f2cb36181e844236a45c2254be4808  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c
+ da31e1c695b073117149d5559d466f1e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c
+ b83ec1a3a669230ccbe2d4931a5e0bdb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c
+ 05bac2a7cd971b69a8986b0b968ccb01  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c
+ d26bd7058c40628ec815bedb22772dd4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c
+ 43834bf2fbbee09f00ce46b299a9ee84  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c
+ 5be361ce22f607059a8ffeaece990dbc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c
+ 2e1414000ab5d227c258840bcebc8a78  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c
+ 81999ee4d6388739dca62f672694204b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c
+ 69cd963c9a4b4c51b393d58dafa53cd4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c
+ 8f53ba1edaca8fb4814586f4b085c057  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c
+ b89f8d1ced554489572e302fd3dc34ea  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c
+ 07f3aba39812faef58ba45417e3b5fb6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c
+ e2620595956a04461dc565fe6cf46753  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c
+ c9277d44493e5dd4c563a1212616361e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c
+ 57aef9e3f6689a32a816ab49653d6eb9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c
+ 8063038963dd824a0552418aa5d519ab  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c
+ d92bdf958f751f3cbc13e0752d0b2f32  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c
+ 44c039b167a2115756e505ee9870dce5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c
+ d1a87a2d3225fb4b94e8cfbf6645b98f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c
+ d3155cd834024e1aeafcfd9418bd7d43  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c
  fd39e87dc57493a6d7d4354e069aa5b1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rshl_s16.c
  e045e4314aa84ec2024d0d616f7b30fd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rshl_s32.c
  88b5c2cdb4f809b295ed0ccb10ff9662  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rshl_s64.c
*************** f1123ea521dac7212eeeee22a161e8f9  gcc/te
*** 78231,78236 ****
--- 78496,78502 ----
  c3fd8f74d3d5091d3faf12a3885fb696  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rshrnt_u32.c
  999d62e0396df72deeeec24cfba21c81  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rshrnt_u64.c
  05f3d9dba3ff15832ce2416b79ae74bd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32.c
+ e2acd4a374f4cbe3c8a5ceadab20fd55  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c
  902fdf812a8d33b404bb4406c742618b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsra_s16.c
  d7c2885551387a894c01a35af3cf1405  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsra_s32.c
  e79815e5da4b6c466bbf661f07b7403d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsra_s64.c
*************** c5b11471e175d181dd735ae246dc35a1  gcc/te
*** 78293,78298 ****
--- 78559,78567 ----
  758003ce0b3606de12e22bd93e65fa5a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqadd_u32.c
  1a95d35ed842e41b4bdd6a13b54ad441  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqadd_u64.c
  2fd1e8f8a9be6b5857a6d795a922011f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqadd_u8.c
+ 6efb0fd5246412bf4280a1a0b0dc84e0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c
+ 57e9e2f338bed8994a6b31780e81b88c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c
+ c13ca8088f89b1cad5ed69a95b0330f0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c
  573c3064af5c21b38c08fdf5bd8992b3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sra_s16.c
  06fb6829621dc2b151704266712402bd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sra_s32.c
  17df8199f3a246541ac88c4021d98350  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sra_s64.c
*************** f350197a21e7c06213d3915643cb332a  gcc/te
*** 78336,78353 ****
  b7b52aea9a4a5a66b7163df2f99a830e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_f64.c
  d9ae76f30f41556916f66f3273d956a1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_s64.c
  718e6d011edc5ae8fd2b348f96c0abec  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_u64.c
! 1273f12960560667fe75edcfdcfbd2e6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c
! e2413a64c4af0a4df43164dffe14562d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c
! 9e730da52475c38d3af7cf487b635e15  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c
! 94d91737cdf7acac4cb0ef512b753667  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c
! 374c059fe3b85a4bc8cda857a4507fc0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c
! 70180fc9c7146fdeb493d5283d116b3f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c
! 243966f9eabed10788da297ae6b0972a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c
! ee5bddc4a344163d1823221de7cc9ef0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c
! f2251996414dc5cc3f88eefd3c1395e0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c
! 008f9de8e66448ae6f63c3a4ec193e97  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c
! 4656b7962a17274ec5883c6b2d47e67d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c
! a1df9aa2576da03ff205638c59f54625  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c
  ebc5659726a53db291fc02ce3d847bda  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_f32.c
  b065be546ee7f31dd9b2c370f7ed1e57  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_s32.c
  adab1b5220b5d8c70d174b96c3782e94  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_u32.c
--- 78605,78622 ----
  b7b52aea9a4a5a66b7163df2f99a830e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_f64.c
  d9ae76f30f41556916f66f3273d956a1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_s64.c
  718e6d011edc5ae8fd2b348f96c0abec  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1dq_u64.c
! 0d07aff7ef3d8890cd895fc708518f41  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c
! 0987cc684b9ee83ef12d218d10a61b8a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c
! cd41da457614eaf2f672396c73795d31  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c
! dc941529bf2a2c341d2484e89ae859c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c
! aeb3a6f94744dd9e94da1f74a97b0dd2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c
! 4fcb6b19dc2caf47d96ef6b9cd9e2519  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c
! 38d3c2728d246c1ada80c92f5c90df39  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c
! 35dd32ea2fd10014bad87a4e7605d279  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c
! c942970b11bb1c572538a3e8ce064dff  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c
! b80680e670d28151c8ebd9cf08893cd2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c
! eebd606ccb4ec6e0833822d146f387f9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c
! 54586248552daeb191f9ce079596f956  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c
  ebc5659726a53db291fc02ce3d847bda  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_f32.c
  b065be546ee7f31dd9b2c370f7ed1e57  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_s32.c
  adab1b5220b5d8c70d174b96c3782e94  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1wq_u32.c
*************** acdfe3a768956a640e7fcbbd9f1f5193  gcc/te
*** 78405,78416 ****
  283abc270be9f9f5894fa5443645f983  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x4.c
  3fcd7df36d6fb2a2a7f332a8ebd8d14e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x2.c
  253f95eca6edf1388e38933ace016b1b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x4.c
! c945c741506cfe18e6192b7f0814a439  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c
! 7e1ffd28d44eac004f137d2e84c44661  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c
! 88c3b1c287ec55b17f5e20b76461ab68  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c
! 4a861e267f9730814813ec1225e6e85d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c
! 01554c94701f7ef3bb23c9ac65f92831  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c
! 572da2dccd6c69b23ac3fb897e09e757  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c
  b838fdace78adfc0f68faf785cff56cf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x2.c
  3c6d0ea2d84a3c9d1335f132657494ef  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x4.c
  03e2c626953c0e05f89ba43f05954626  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x2.c
--- 78674,78685 ----
  283abc270be9f9f5894fa5443645f983  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s64_x4.c
  3fcd7df36d6fb2a2a7f332a8ebd8d14e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x2.c
  253f95eca6edf1388e38933ace016b1b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_s8_x4.c
! 1800eb5e1f39c58f6dc5c066a80b513d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c
! 98a91d4893a6f39dd7f0d8b210f660b3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c
! 562998e089d9a239876ac2072509cd3d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c
! 6434863ea34923782fca5f0b6a1b8ae7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c
! 09fd1ca770bc0936e4d72e4c3543d3b7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c
! 13c731aba07435aca646330fd398450d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c
  b838fdace78adfc0f68faf785cff56cf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x2.c
  3c6d0ea2d84a3c9d1335f132657494ef  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u16_x4.c
  03e2c626953c0e05f89ba43f05954626  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u32_x2.c
*************** b838fdace78adfc0f68faf785cff56cf  gcc/te
*** 78419,78434 ****
  9eff6ad263e978d20daa41090aff9c1f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x4.c
  3c22bbe2a4b9c313ca21faae8cbcd25a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x2.c
  f9c79c3595f37a059c82895d3756d621  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x4.c
! b9454b8ad108258d36dc70a72ca457e7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c
! 20fc4567375dd5f16d81cfbe3a5c9434  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c
! 719384270753cdf68b292dd867ac52b4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c
! 4cc6920d1677729a340d273d4631c77c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c
! c312d89bbd2088e951ba0ae1661da39d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c
! 16f61ba1944b8585345afa4615b1e0a2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c
! b76dbbbbc38da3a9c7706b002743bca3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c
! 16201a8936adf8d4a18ec02191651985  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c
! 9cab9643ce3e5452aa5f508750b0410a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c
! 0dc63dd27af7187f1fe9b470ce753d8d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c
  36dbf9a9c2c36d2e98447f88064b4c54  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sub_bf16.c
  918873d71fd9273dfd39b597eff8bf96  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/subhnb_s16.c
  3f6d9166b25591eb6a69da47844fefe7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/subhnb_s32.c
--- 78688,78703 ----
  9eff6ad263e978d20daa41090aff9c1f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u64_x4.c
  3c22bbe2a4b9c313ca21faae8cbcd25a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x2.c
  f9c79c3595f37a059c82895d3756d621  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_u8_x4.c
! 606ecf02f25567b760ad732e8318a314  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c
! fca29571592ba9014ee2d1a05f304c7d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c
! 1168bfb06c30491767fe2acef1ffd6d6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c
! 8314379e04ceade7b8062077bf13e3f0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c
! 1d8dc641100eb253cef5538a52b07fbb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c
! d102b3fadd24d581fefede68d0fa4110  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c
! 77502eb60725a6cee6e6f0a86d6b33fc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c
! 622d49f3dce6d8fb334ded34b801083c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c
! c1353b529f49979dd7ac4437f8b92525  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c
! 9913dc44f09e97f79b3f6dcf84c78201  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c
  36dbf9a9c2c36d2e98447f88064b4c54  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sub_bf16.c
  918873d71fd9273dfd39b597eff8bf96  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/subhnb_s16.c
  3f6d9166b25591eb6a69da47844fefe7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/subhnb_s32.c
*************** ecf5598d1bf38a4a1fde805f10a52f11  gcc/te
*** 78551,78622 ****
  9c848f1153544a1d7a1532d5f7dfa91c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u32.c
  d2f772bcd50aefdc4ae233fb726baf5e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u64.c
  2ad86ed2bc2b97295e154ec5ec1cc91a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u8.c
! fbd1af7d547b3746c3b9c6dd01a54f7b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c
! f69931e849018c88b76ea2f6cb665090  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c
! 34a6f0f576263d6c01e24a0c2035802a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c
! f1c654ae034e6140f41ffefae9fa7f1b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c
! 8f811d47a60dc89dd060e2730ee13d1f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c
! 64ac1afa8f588e5a97042d0fc7f05e6c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c
! b3c69f8473ea8cfcbb8fbcc20443cc24  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c
! e9377b75740826797a3d1dbbf88a579f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c
! ce26a368c023ee7ba58ae44e9c112310  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c
! 60d30c7390cc1a13ad591cd192383193  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c
! d8ba651a4bebe49fca073aa8058b397c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c
! bc24ec5ede4ca6b90a2d1690cdcf2364  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c
! 076fe94954a8819935920495f4582f80  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c
! c70ff3bc542797f3179d042a8a406489  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c
! d2827de7d9c612bea1672387dd9c3127  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c
! 61212bbb70422cf619f3f00e7a6d1df5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c
! 0c78c417b267aa95b6a2800edd9de802  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c
! 1df643ad8c675f420c833de8c2bc2624  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c
! 1dc1cf8375e57e51f8cfb695ad02fcf5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c
! c2c6bb9b8c67aed70c2a13402c4867c6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c
! be8aabc3b69e1b84a0cda4ddaf7972f0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c
! f1c8c945aad9e9357f7823666ec0e5ef  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c
! c2401e79a9bc770ba94ea84d40c0b32a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c
! fbd24496285a210e1586619473d9e537  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c
! d3fc952cd59c06119505757904bf82bf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c
! 211112f9fc7f8380827d3f55caa37b30  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c
! 771bea0d36af1f9893ac818086251d62  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c
! e716a0d48c31b65694929dd2c97a16fc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c
! 2422eb1f096144c28a1d43132a84a8b6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c
! f837e68e9e4d9ba67a20827c4980503f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c
! e44074ee5cfc20bc02d9363972331689  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c
! a50178b5b0149a46b82b2a4b50212948  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c
! 7b7e4affd649fa07a2736bea988003de  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c
! 0104079e98c1e44491ab69cdc373f360  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c
! f56aa66955c60850729f1dba351ef3f7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c
! dccfd2656ea5055c4408f57f485407e3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c
! 8255e5a99cf3b9be7452dc3dff22a492  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c
! 25c997301d59012287b397f15b4a523e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c
! bf440f4e86a05830cafddc9dcd67a489  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c
! 9448222f709ff52ac35570472ac52424  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c
! 0d36b9b42fd125d3a469228e8f857081  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c
! dc31cb42cd22b6e15d06ef0f0e33c8d2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c
! 35152ad23102bc51e9100a3e4265425a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c
! 0995b6ade16b91e3341afc99624b601b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c
! 6cdad786629b6f00e83200ec00673d38  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c
! 69e74ee31abc91dd66b9fbf817ef03c0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c
! cb255f36f8ec7fcb61c3f27e016aa48e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c
! d9a8b715bf4b7ba2b74020b16badd615  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c
! bb2d19eabb6f2887c6a6bf25f7d5d35c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c
! d7918c767da374a2fc727e34e8f4306e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c
! 16342c2c57d1a5ae68c5f62a3765802d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c
! 24a19862a183bb4fb438b6fc795d4e36  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c
! a55dc98ec4aeefef90ffe4f86b76dae3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c
! f8f54246234b0585e1d46229a5a2f121  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c
! c000091f95efe657ff48fcfc8ef5d4ea  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c
! 2cd95144e0fae82b40c8cf560cd903f7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c
! 055b3b9980c4d2e413ea04a9ae27ac57  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c
! b9b55eb4e3d15780378e45af8914a7b0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c
! 7a418b8b103c38b380de3814d2edb2a1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c
! a8e0fda77a6199dddfc71f49ed1be103  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c
! 05dc5aea10c60b2394d8a1a66b10677e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c
! 27a3bd7110f2a0e531b895ff20fd1712  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c
! 0159ee0c77f52a41a39116abf9c3a14f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c
! 50f42189997dbf33d630f6e7c96e9e00  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c
! 9fdc60984f4ec741b73b5ebda3f7c6c5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c
! 69c2af29d4c0058fb0fea0a2917a5824  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c
  257d88d168334d3fa51889e93786bf78  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s16.c
  f407eccb7c834f653772a05416d771c1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s32.c
  76fdbc821da15f9490d96888176497cb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s64.c
--- 78820,78891 ----
  9c848f1153544a1d7a1532d5f7dfa91c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u32.c
  d2f772bcd50aefdc4ae233fb726baf5e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u64.c
  2ad86ed2bc2b97295e154ec5ec1cc91a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/uzpq2_u8.c
! 7dbe38055984130fa229056dd0ad4b1e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c
! a9d8cf38b0ab1b28fc72e20c0bc71cff  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c
! 98d8b034cef079b2b179d3120e67d776  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c
! d00538dee46e7cbf7fd21701c24fd8a0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c
! d0b591743851226dd95b5115e56cf3a6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c
! 497ebe63a8c688e62e0b15fdeeffb3b5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c
! 11230cc3543130db321a76e4134ae290  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c
! 4f3ddf1e7d575d3c505a44e5f7de706a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c
! 33fe3c45a0fbb75c46872d8f63b572d0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c
! 8850bfe47043be053a6f9d2c98078e58  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c
! bb805465808625be9ed2f3452b04aad6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c
! 5ffaaf967e6c9e927879346c4ddda5db  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c
! ce093b54763309bd1f53ce720e6e0d5f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c
! 00473b104d87ff0b8a530e80e1d5cde6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c
! e293fc3d202ecf3ee5e573a89d6c185a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c
! 1eff080c4e1e6a67e19188869228d8d6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c
! 673499375245accfd4eb89e94865c350  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c
! b299e47a4d58c2454f29d92119e3215b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c
! 3bdc0cea90c304d4a69eda841d35c6a3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c
! d1ad246b8931f674e925c259a141f351  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c
! 78cc84ee73223e02d80c3afb2ed21257  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c
! 6f505b32264daaa9c3a20e3334d23804  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c
! fae05a649aca44e1140bd45ab43521e4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c
! 77601b14fba57f6e1d96ac314f65f4ce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c
! 40bec940b4678a90c17ffc0d6dcfd693  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c
! 5b7995d95c6b02a485a829c75f28c05a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c
! 37468271c784405912fd59cb6d05f014  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c
! aff3a62125684ad713862c6e2bdf05d4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c
! a60e7ebd13d6ada3629ec86d2825ab89  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c
! eb3ba4f77fbd6f6416443de21434dafc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c
! 7897284297f7ef78110bea53857d63e0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c
! 3cf3c565821ba03451046558bb8fc219  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c
! 435682c4c58a01fc3d059d1f15892f31  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c
! ad2943740aa1b65f9b1ddad03f9b8c63  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c
! f26b7fff2672b0059edbc3a005e0efd1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c
! e2aaef33d258657db6a5c00217f3de14  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c
! c2c17a33aa22752024264cba4aa6d56e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c
! 85884688d9eab55f64c19c6be80348f6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c
! 2d12d118f47f32d1a6b072dc7c5d799d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c
! eb4d09820d08a7836c9687a0a9536f6b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c
! d228ec86e7c9341b14b6484d13e2bcce  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c
! 90ca21e1b70b98c11c5ee98f3ff652ca  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c
! a155f7a2062c74a53095d1b59f0898a8  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c
! 4eb5f3b4fea4dc3a2e06b1af62489f58  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c
! 7cb023349f2b5d1a46b60b83132996e1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c
! a2590b7b82233cc13f8913c92af52bba  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c
! 77eb5ef7a7ba9d573ee592a45534439b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c
! e0e2b8fcce09bd6157bd8497d75266f2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c
! d1d42c98c10b449780d486e90762692f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c
! d63c0b700462f5a4b7e3f211e7b4b26b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c
! 5bf760c3780356e387aeef4ad1316667  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c
! c04d5effb77de542e471ae7caa848161  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c
! 21fafae57a4be934113cc904596935c4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c
! 18f273fb94125eedfd469278b16dff65  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c
! 982295ee3e28dd9ff3e09904ab369f7a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c
! fee359a35443b9ff5c9c204dac8d4d29  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c
! 5ac02526396d527b0ee58e3b73babf10  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c
! 67edd4954d0a22539f6979320ac80045  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c
! f5d524a1526f85c33d285b3ebe103fd4  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c
! 8a13b95f1530c29af0e25ffa9db38724  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c
! f19f62741902baa26257644f78ce4930  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c
! ec8a921298d49e7d771fe9c15b741cdb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c
! 50b60885cb397d5ccc06cffb156dc1c3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c
! f472360f7ee34a702a7abd6f2cb6a994  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c
! c8a6d56a24ae65e058575881d55c47ac  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c
! 1f279020be2c1ea2914538fefe581555  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c
  257d88d168334d3fa51889e93786bf78  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s16.c
  f407eccb7c834f653772a05416d771c1  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s32.c
  76fdbc821da15f9490d96888176497cb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/xar_s64.c
*************** b520c329bd96ea8f45efbe9537a1a325  gcc/te
*** 78649,78654 ****
--- 78918,78925 ----
  f6109ccab2b862ae05ae03274ecbfd7d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/zipq2_u32.c
  8bd4d1dad2f681ab4dd1ec1031c8f77e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/zipq2_u64.c
  15bd74b801894fce1d7f266276329db7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/zipq2_u8.c
+ 4ad044a70bfc68fc137579f4f08057d6  gcc/testsuite/gcc.target/aarch64/sve2/acle/general/firstp.c
+ d2e2238898998c4e39e227b873433e0d  gcc/testsuite/gcc.target/aarch64/sve2/acle/general/lastp.c
  5dc288c453fe0628ecb1c0a4e662e89e  gcc/testsuite/gcc.target/aarch64/sve2/acle/general/match_1.c
  78c6211a3aa4a4e23f2ee812b07b8d9c  gcc/testsuite/gcc.target/aarch64/sve2/acle/general/match_2.c
  0fc7b1a5f8b8b2048a528f0ec6633f88  gcc/testsuite/gcc.target/aarch64/sve2/acle/general/match_3.c
*************** cfed1de6c3a12e6d1bfaaba77c0e7100  gcc/te
*** 78789,78795 ****
  a5e6b722f4144697d90e30cfabaee788  gcc/testsuite/gcc.target/aarch64/test_frame_14.c
  576b76733224038c69565bcbe03d9f46  gcc/testsuite/gcc.target/aarch64/test_frame_15.c
  b89bd7b9ce6a66501a3114f0ec37a670  gcc/testsuite/gcc.target/aarch64/test_frame_16.c
! 1558cee3b358a4686101166d3efa7561  gcc/testsuite/gcc.target/aarch64/test_frame_17.c
  5e7d8c8412f87dc4b8e1d4440e369e15  gcc/testsuite/gcc.target/aarch64/test_frame_2.c
  3b6dc13fe4d40fc07c0288cb31d3cfc5  gcc/testsuite/gcc.target/aarch64/test_frame_3.c
  876852d872a721e883015b9600044c4a  gcc/testsuite/gcc.target/aarch64/test_frame_4.c
--- 79060,79066 ----
  a5e6b722f4144697d90e30cfabaee788  gcc/testsuite/gcc.target/aarch64/test_frame_14.c
  576b76733224038c69565bcbe03d9f46  gcc/testsuite/gcc.target/aarch64/test_frame_15.c
  b89bd7b9ce6a66501a3114f0ec37a670  gcc/testsuite/gcc.target/aarch64/test_frame_16.c
! d021dec577f91b1a9f00d662010e90a5  gcc/testsuite/gcc.target/aarch64/test_frame_17.c
  5e7d8c8412f87dc4b8e1d4440e369e15  gcc/testsuite/gcc.target/aarch64/test_frame_2.c
  3b6dc13fe4d40fc07c0288cb31d3cfc5  gcc/testsuite/gcc.target/aarch64/test_frame_3.c
  876852d872a721e883015b9600044c4a  gcc/testsuite/gcc.target/aarch64/test_frame_4.c
*************** a33d718b7ff09fd8cf43144ef6dcd24e  gcc/te
*** 78902,78921 ****
  5a02fc8d0841b45c544a81856934d565  gcc/testsuite/gcc.target/aarch64/vec-init-15.c
  fe39e0171addd79f69407e9a5dd97957  gcc/testsuite/gcc.target/aarch64/vec-init-16.c
  716927e27c337fb94328f360dbc20d8d  gcc/testsuite/gcc.target/aarch64/vec-init-17.c
! 4708e95243595b28f32a0c795a28354a  gcc/testsuite/gcc.target/aarch64/vec-init-18.c
  afa8fab2054c54e87a7ba607a3edf2d4  gcc/testsuite/gcc.target/aarch64/vec-init-19.c
  d75418024f450ee16a7a73711a6003a1  gcc/testsuite/gcc.target/aarch64/vec-init-20.c
  3ea86b4f1a8221327beda15839097483  gcc/testsuite/gcc.target/aarch64/vec-init-21.c
  ea033577ced75cfd9d67b3cf9125dec3  gcc/testsuite/gcc.target/aarch64/vec-init-22-size.c
  81ef2e4eb8b0848ab9df921cd60488da  gcc/testsuite/gcc.target/aarch64/vec-init-22-speed.c
  29813326d297818de7e632909c908723  gcc/testsuite/gcc.target/aarch64/vec-init-22.h
  3e4c042c59f7ebd0de553ce71974d7f0  gcc/testsuite/gcc.target/aarch64/vec-init-6.c
  23056a98bd836157022df74aba0ea38d  gcc/testsuite/gcc.target/aarch64/vec-init-7.c
  a0d7ee23594a897783efec837fcc9a89  gcc/testsuite/gcc.target/aarch64/vec-init-8.c
  275233faed2deec8a7f02f21b29580a9  gcc/testsuite/gcc.target/aarch64/vec-init-9.c
  86a847e5bf1fb5499432a6b5ad8911b4  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-2.c
  94984b8886aab5d70d86c49c090fc10a  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-be.c
! 767bc7332af83dd2a294e88db4db168a  gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c
  c04188bb2b4a3589f00728d8e90d679f  gcc/testsuite/gcc.target/aarch64/vec-rot-exec.c
  f66a2dc11214cc437d96ec038cc0e85e  gcc/testsuite/gcc.target/aarch64/vec-set-zero.c
  b1c97e59631c205f913afab4e1ffde4a  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
--- 79173,79193 ----
  5a02fc8d0841b45c544a81856934d565  gcc/testsuite/gcc.target/aarch64/vec-init-15.c
  fe39e0171addd79f69407e9a5dd97957  gcc/testsuite/gcc.target/aarch64/vec-init-16.c
  716927e27c337fb94328f360dbc20d8d  gcc/testsuite/gcc.target/aarch64/vec-init-17.c
! f008d6c0e901b5626497ecedd836449e  gcc/testsuite/gcc.target/aarch64/vec-init-18.c
  afa8fab2054c54e87a7ba607a3edf2d4  gcc/testsuite/gcc.target/aarch64/vec-init-19.c
  d75418024f450ee16a7a73711a6003a1  gcc/testsuite/gcc.target/aarch64/vec-init-20.c
  3ea86b4f1a8221327beda15839097483  gcc/testsuite/gcc.target/aarch64/vec-init-21.c
  ea033577ced75cfd9d67b3cf9125dec3  gcc/testsuite/gcc.target/aarch64/vec-init-22-size.c
  81ef2e4eb8b0848ab9df921cd60488da  gcc/testsuite/gcc.target/aarch64/vec-init-22-speed.c
  29813326d297818de7e632909c908723  gcc/testsuite/gcc.target/aarch64/vec-init-22.h
+ 0c2b02dc320d75c6699d8243c33cb3a6  gcc/testsuite/gcc.target/aarch64/vec-init-23.c
  3e4c042c59f7ebd0de553ce71974d7f0  gcc/testsuite/gcc.target/aarch64/vec-init-6.c
  23056a98bd836157022df74aba0ea38d  gcc/testsuite/gcc.target/aarch64/vec-init-7.c
  a0d7ee23594a897783efec837fcc9a89  gcc/testsuite/gcc.target/aarch64/vec-init-8.c
  275233faed2deec8a7f02f21b29580a9  gcc/testsuite/gcc.target/aarch64/vec-init-9.c
  86a847e5bf1fb5499432a6b5ad8911b4  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-2.c
  94984b8886aab5d70d86c49c090fc10a  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-be.c
! 96c3d8151cec83da572adb52b5e4a648  gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c
  c04188bb2b4a3589f00728d8e90d679f  gcc/testsuite/gcc.target/aarch64/vec-rot-exec.c
  f66a2dc11214cc437d96ec038cc0e85e  gcc/testsuite/gcc.target/aarch64/vec-set-zero.c
  b1c97e59631c205f913afab4e1ffde4a  gcc/testsuite/gcc.target/aarch64/vec_init_1.c
*************** d1048da76a8288fba979b423a69446fc  gcc/te
*** 78928,78934 ****
  459f637ca04566f864e27fecd8292d26  gcc/testsuite/gcc.target/aarch64/vect-clz.c
  e17c8c4e15c789037c218893bf9161b8  gcc/testsuite/gcc.target/aarch64/vect-compile.c
  1c2584b79632ca3e23f0b3181d2e3616  gcc/testsuite/gcc.target/aarch64/vect-convert-1.c
! 43ef4a0332aa6c94272b53d31377c4fd  gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c
  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
--- 79200,79206 ----
  459f637ca04566f864e27fecd8292d26  gcc/testsuite/gcc.target/aarch64/vect-clz.c
  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
  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
*************** f0df0c8f4daf66789854622391d700cf  gcc/te
*** 83492,83497 ****
--- 83764,83778 ----
  335e928612eeba541ace98419cfa1588  gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
  63785ceba6e301ca68abd46c75c8f6a8  gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
  d0438290469e79373f6dd3933d324608  gcc/testsuite/gcc.target/avr/torture/pr122187.c
+ 29f4c964db7ef564a3a000cb063b157c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c
+ 67193b81ec722633cd4a96c262f212b7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c
+ 74bee38deb2c7a93221837e40bbfadc7  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c
+ cfa6dc119f8aecd5a863526026a0b850  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c
+ ebbf958a9ec613b0e83f39734d21b008  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c
+ 61f30bb6c17362860da7175576769d9c  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c
+ 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
  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
*************** b3c414f1b3d6c48c7e20a5673443690c  gcc/te
*** 84524,84529 ****
--- 84805,84811 ----
  3728bc527c22e7d020089e67e42d0ad3  gcc/testsuite/gcc.target/i386/apx-ndd.c
  a10a2300e50d1345807af584a2601db4  gcc/testsuite/gcc.target/i386/apx-nf-2.c
  15bf82033251ae56d7b3b5b15718fd37  gcc/testsuite/gcc.target/i386/apx-nf-pr119539.c
+ 0decd98b9e126f7f42a3e0b2e3017ecc  gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c
  3a538fbe06f2d0145fdb6f44cbf17dd3  gcc/testsuite/gcc.target/i386/apx-nf.c
  fcf6ebcd2d266f7ad2c63665e05f9315  gcc/testsuite/gcc.target/i386/apx-ppx-1.c
  83cfbdd6adce9415b1a93deae7f63899  gcc/testsuite/gcc.target/i386/apx-ppx-2.c
*************** d8c6cc28d2c4d257bb954582a66146d4  gcc/te
*** 86706,86712 ****
  5e82ba7d6ba2bc9eb1ce979813f8d396  gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c
  47fee7cb6c90c9ac41c16bb5604a8121  gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c
  45e69165f83009060e6547672824081d  gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c
! 5b6e6dc105a4b04ae06f3e8e1783fcd1  gcc/testsuite/gcc.target/i386/avx512f-simd-1.c
  d07633a082fff2eee78d609e435574cd  gcc/testsuite/gcc.target/i386/avx512f-sub-df-zmm-1.c
  a8977c0f479d1e5898c2928fe8d8bfac  gcc/testsuite/gcc.target/i386/avx512f-sub-di-zmm-1.c
  f4b280b457a1819bd1be6209dcf920e1  gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-1.c
--- 86988,86994 ----
  5e82ba7d6ba2bc9eb1ce979813f8d396  gcc/testsuite/gcc.target/i386/avx512f-setzero-pd-1.c
  47fee7cb6c90c9ac41c16bb5604a8121  gcc/testsuite/gcc.target/i386/avx512f-setzero-ps-1.c
  45e69165f83009060e6547672824081d  gcc/testsuite/gcc.target/i386/avx512f-setzero-si512-1.c
! a8a2902cdc33193047ae3d126b0aba28  gcc/testsuite/gcc.target/i386/avx512f-simd-1.c
  d07633a082fff2eee78d609e435574cd  gcc/testsuite/gcc.target/i386/avx512f-sub-df-zmm-1.c
  a8977c0f479d1e5898c2928fe8d8bfac  gcc/testsuite/gcc.target/i386/avx512f-sub-di-zmm-1.c
  f4b280b457a1819bd1be6209dcf920e1  gcc/testsuite/gcc.target/i386/avx512f-sub-sf-zmm-1.c
*************** d27914ddcfa1d9a135c3e7189bd6af10  gcc/te
*** 90814,90819 ****
--- 91096,91102 ----
  d9ed650f309dc0e24daeb25d90c34fa0  gcc/testsuite/gcc.target/i386/pr124316.c
  2b4c9300861033dc1756ecbfd425f3c6  gcc/testsuite/gcc.target/i386/pr124407-1.c
  101572df1dd23dde5382be2d1a1478fe  gcc/testsuite/gcc.target/i386/pr124407-2.c
+ d0f168bdbd2c62aefe3cfd034c39eb50  gcc/testsuite/gcc.target/i386/pr124630.c
  20438ee87f52efda141c43d1f08416e1  gcc/testsuite/gcc.target/i386/pr124696.c
  bea9ac1f62d27e3b10bc9739d9cbeb54  gcc/testsuite/gcc.target/i386/pr124697-1a.c
  2040d361ee3379e7489acc7a96fd0980  gcc/testsuite/gcc.target/i386/pr124697-1b.c
*************** b39743561f1aade37b33835b241fb062  gcc/te
*** 91278,91283 ****
--- 91561,91571 ----
  b845585001d3aa1599603bf8f8438393  gcc/testsuite/gcc.target/i386/pr53907.c
  c6b9296a558aaf5187a02addf73c05d0  gcc/testsuite/gcc.target/i386/pr54157.c
  c8e7054dc6f3a98a7c0df3f9b79853fa  gcc/testsuite/gcc.target/i386/pr54400.c
+ 0bbfb1c84eb46ed966fea351668c97c0  gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c
+ 456a0d35e90b4c2794b0b0d1b3d3d5df  gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c
+ bbd6e0edaa674fedd87a72b50b9ae302  gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c
+ cf466c9bccd12d45d208e5a7cad7072e  gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c
+ e925170df088457d7077406bc0ca644d  gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c
  414b8adf659b6e0fae2493215e4c8e43  gcc/testsuite/gcc.target/i386/pr54445-1.c
  f69bb6692a438b6c4c3ae59e8151f9e5  gcc/testsuite/gcc.target/i386/pr54445-2.c
  44119610eb32887f2d86d9e5b6ad2610  gcc/testsuite/gcc.target/i386/pr54457.c
*************** c477d7333d280aa9ba0232f363826175  gcc/te
*** 92342,92347 ****
--- 92630,92637 ----
  104a2416e74048f45915a5e09656c2aa  gcc/testsuite/gcc.target/i386/pr89523-7.c
  fa633632e627d7c0fcb34ba2673e196b  gcc/testsuite/gcc.target/i386/pr89523-8.c
  aab7cb035d0456e2d0bf25f7f53cfd30  gcc/testsuite/gcc.target/i386/pr89523-9.c
+ 12f6d6455975ca954167353df8416e82  gcc/testsuite/gcc.target/i386/pr89597-1.c
+ 201c8b6cb8a206d6886e918d7bb528e3  gcc/testsuite/gcc.target/i386/pr89597-2.c
  a41d7f9c6f0661f0053e46490638ad39  gcc/testsuite/gcc.target/i386/pr89618-2.c
  8d11eaa1821254c815377b2af471ed8f  gcc/testsuite/gcc.target/i386/pr89618.c
  7a4a0653050f553879a39852089ab9b9  gcc/testsuite/gcc.target/i386/pr89676.c
*************** fe7ee8a9110596ef272c4f9b6ad8adad  gcc/te
*** 92898,92903 ****
--- 93188,93194 ----
  cb124d5c93c2e76f3801c19b1b4fbccb  gcc/testsuite/gcc.target/i386/returninst1.c
  df84b27dca8b92b01be8aba496b2b00b  gcc/testsuite/gcc.target/i386/returninst2.c
  a9852fce4779d3f3ac93cc2781a554c8  gcc/testsuite/gcc.target/i386/returninst3.c
+ fd020afcefa70c05117aa2bd69ae4472  gcc/testsuite/gcc.target/i386/rewrite-sib-without-base.c
  63bd489c03ce382cdba38349c30041ad  gcc/testsuite/gcc.target/i386/rotate-1.c
  92191117b3eaed784b93caca04681834  gcc/testsuite/gcc.target/i386/rotate-2.c
  7b171f958f4d58c28be1d86746ae7551  gcc/testsuite/gcc.target/i386/rotate-3.c
*************** f5cb6fdc99159a8d8291d2ae013cdc6e  gcc/te
*** 93280,93292 ****
--- 93571,93586 ----
  7298245145c703059737c65a6ce41ef1  gcc/testsuite/gcc.target/i386/sse2-packsswb-1.c
  0cb971d6f9f1ff695b42303a0ddc8f50  gcc/testsuite/gcc.target/i386/sse2-packuswb-1.c
  5b99958ac4d152d53410a841a97b9553  gcc/testsuite/gcc.target/i386/sse2-paddb-1.c
+ 9f5203a92f5ef710caac6359141d92ca  gcc/testsuite/gcc.target/i386/sse2-paddb-2.c
  fff95cb638d398b811b878236f00b805  gcc/testsuite/gcc.target/i386/sse2-paddd-1.c
+ e3f5549152d8adff532b3beef5873797  gcc/testsuite/gcc.target/i386/sse2-paddd-2.c
  b5c1d8e8dbc21da42151d14436d95365  gcc/testsuite/gcc.target/i386/sse2-paddq-1.c
  1967140f89073cc72866c8f34e4de377  gcc/testsuite/gcc.target/i386/sse2-paddsb-1.c
  98b2bb700e1798aa9149ab48a39bea96  gcc/testsuite/gcc.target/i386/sse2-paddsw-1.c
  161716e2f130a7ac2d50b15517814604  gcc/testsuite/gcc.target/i386/sse2-paddusb-1.c
  b4cbdc33b07f014c0de8f010c518a0dc  gcc/testsuite/gcc.target/i386/sse2-paddusw-1.c
  88e46e5ad94a3a28d4e1e898d3a1e78a  gcc/testsuite/gcc.target/i386/sse2-paddw-1.c
+ 7758ffa01916d1ca5f12db4ccc798981  gcc/testsuite/gcc.target/i386/sse2-paddw-2.c
  219fec283fe61b463c7d302c49392f62  gcc/testsuite/gcc.target/i386/sse2-pand-1.c
  6dbac7d9c01b9575a45f0e353e509aaf  gcc/testsuite/gcc.target/i386/sse2-pandn-1.c
  625f4a64c917a7bbee4395cdc03b9f48  gcc/testsuite/gcc.target/i386/sse2-pavgb-1.c
*************** e70990bdd04949e1e73bd7bf7615d869  gcc/te
*** 93353,93363 ****
--- 93647,93660 ----
  c14648267adc3c23d66f23e87548327b  gcc/testsuite/gcc.target/i386/sse2-psrlw-1.c
  afbdbe5dcfb41909a7a1b6f27bf3773c  gcc/testsuite/gcc.target/i386/sse2-psrlw-2.c
  7320d7085ea3abc2fe30bc30de711f7d  gcc/testsuite/gcc.target/i386/sse2-psubb-1.c
+ 6856dc1e429bbc81c5a4f06e40567cd9  gcc/testsuite/gcc.target/i386/sse2-psubb-2.c
  4074d7d0d7357386ad3f8d4b1a9424f2  gcc/testsuite/gcc.target/i386/sse2-psubd-1.c
+ 34cf36f8913b032395468455613592be  gcc/testsuite/gcc.target/i386/sse2-psubd-2.c
  3d11a8a252034920f7201e61f0fc2061  gcc/testsuite/gcc.target/i386/sse2-psubq-1.c
  68f35fbee22f54d573a1b38013d713b0  gcc/testsuite/gcc.target/i386/sse2-psubsb-1.c
  85ee5fec0e4b995d4c61ad39e3c50303  gcc/testsuite/gcc.target/i386/sse2-psubsw-1.c
  580fb7fce8019ac6ad2f46eee70ceb56  gcc/testsuite/gcc.target/i386/sse2-psubw-1.c
+ 3a65b3f7ac5a522e380c6e04d64c60b1  gcc/testsuite/gcc.target/i386/sse2-psubw-2.c
  c302dd2d1f67a170695b5bbd22fee7ce  gcc/testsuite/gcc.target/i386/sse2-punpckhbw-1.c
  ba412402d675f68d3cfc9e4ffaf93422  gcc/testsuite/gcc.target/i386/sse2-punpckhdq-1.c
  ee0947efe3f26b9b3c81387731fd5821  gcc/testsuite/gcc.target/i386/sse2-punpckhqdq-1.c
*************** caaaf541c6f7eb87214c11b5dc2b35f0  gcc/te
*** 93535,93540 ****
--- 93832,93838 ----
  15ef11d1dac7ad31e1121e9c543bea70  gcc/testsuite/gcc.target/i386/sse4_1-ptest-4.c
  c7f19bd30ed931063fa75e82444dd743  gcc/testsuite/gcc.target/i386/sse4_1-ptest-5.c
  b2f9c9d9e447094c2e94c85cc66d9048  gcc/testsuite/gcc.target/i386/sse4_1-ptest-6.c
+ beadd74c6b2c61bd002da7ded83265c1  gcc/testsuite/gcc.target/i386/sse4_1-ptest-7.c
  979882f4a979ba3fa3db8e91247c5430  gcc/testsuite/gcc.target/i386/sse4_1-ptest-8.c
  fcaa09f9da1b7cb7bf668016fbdeeb62  gcc/testsuite/gcc.target/i386/sse4_1-ptest-9.c
  6408e72a864871562196b6c57a9cad38  gcc/testsuite/gcc.target/i386/sse4_1-rint-inline.c
*************** ca5571ee490db85826dd15cbfd5c6555  gcc/te
*** 93675,93681 ****
  915a1e795ed7f5bdc16dea9e8b895e29  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
! f2432fa4e94240719fb29b95541fb57b  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
  319cc0f3906e51e474cdde7fe57dbde5  gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
  1feabd730a99874265b945ee66a92de8  gcc/testsuite/gcc.target/i386/stackalign/longlong-1.c
  6831dc4f5fea82d8bf5e9ddc994f2ee6  gcc/testsuite/gcc.target/i386/stackalign/longlong-2.c
--- 93973,93979 ----
  915a1e795ed7f5bdc16dea9e8b895e29  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
! c44151e178338495e43c18b275a14f28  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
  319cc0f3906e51e474cdde7fe57dbde5  gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
  1feabd730a99874265b945ee66a92de8  gcc/testsuite/gcc.target/i386/stackalign/longlong-1.c
  6831dc4f5fea82d8bf5e9ddc994f2ee6  gcc/testsuite/gcc.target/i386/stackalign/longlong-2.c
*************** e26420568eb59260ac109ca747ecbf46  gcc/te
*** 94262,94268 ****
  4931eef8fe508d14b75d3631fe8bbafc  gcc/testsuite/gcc.target/loongarch/la64/movcf2gr-via-fr.c
  bb6ea01b244f2c3e617730a44580a7bc  gcc/testsuite/gcc.target/loongarch/la64/movcf2gr.c
  24d980eb7e8265126262771e4989fbd5  gcc/testsuite/gcc.target/loongarch/la64/movsf.c
! d23b33973d13d263ab78b5b4e0b94ef3  gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c
  a81bb88e2af3a8501ccdfe54556bf467  gcc/testsuite/gcc.target/loongarch/la64/mulh_wu.c
  ab8d85a261f0846c278e2d6db2c6ab77  gcc/testsuite/gcc.target/loongarch/la64/mulw_d_w.c
  a82bd0c91438f0a8e295e7cb52d0c28d  gcc/testsuite/gcc.target/loongarch/la64/mulw_d_wu.c
--- 94560,94566 ----
  4931eef8fe508d14b75d3631fe8bbafc  gcc/testsuite/gcc.target/loongarch/la64/movcf2gr-via-fr.c
  bb6ea01b244f2c3e617730a44580a7bc  gcc/testsuite/gcc.target/loongarch/la64/movcf2gr.c
  24d980eb7e8265126262771e4989fbd5  gcc/testsuite/gcc.target/loongarch/la64/movsf.c
! 5e35f6e941a56eb5722c40eec1043584  gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c
  a81bb88e2af3a8501ccdfe54556bf467  gcc/testsuite/gcc.target/loongarch/la64/mulh_wu.c
  ab8d85a261f0846c278e2d6db2c6ab77  gcc/testsuite/gcc.target/loongarch/la64/mulw_d_w.c
  a82bd0c91438f0a8e295e7cb52d0c28d  gcc/testsuite/gcc.target/loongarch/la64/mulw_d_wu.c
*************** dada9b5540f865ba0c0df21dc2b72904  gcc/te
*** 96936,96942 ****
  e7f24c5bcf4677a0ae7a8fdcd1aeff80  gcc/testsuite/gcc.target/powerpc/mod-no_copy.c
  fed2453600d3a45ca2a5679c322ff194  gcc/testsuite/gcc.target/powerpc/mod-peephole.c
  b3bf87376bd60d32d00ef203e1cf7d6e  gcc/testsuite/gcc.target/powerpc/mod-vectorize.c
! 41f56657bf9cb785fd18785e626fbd53  gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c
  ad1bf2ac6624bd6fd4ccb08fb87916e8  gcc/testsuite/gcc.target/powerpc/mul-vectorize-1.c
  0756792d071f22b4d0d92c56ab912d25  gcc/testsuite/gcc.target/powerpc/mul-vectorize-2.c
  64af73bfe790036cc6a9cae813ae5517  gcc/testsuite/gcc.target/powerpc/mul-vectorize-3.c
--- 97234,97240 ----
  e7f24c5bcf4677a0ae7a8fdcd1aeff80  gcc/testsuite/gcc.target/powerpc/mod-no_copy.c
  fed2453600d3a45ca2a5679c322ff194  gcc/testsuite/gcc.target/powerpc/mod-peephole.c
  b3bf87376bd60d32d00ef203e1cf7d6e  gcc/testsuite/gcc.target/powerpc/mod-vectorize.c
! 90a470d068b02a782dd9922ee4f1ad94  gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c
  ad1bf2ac6624bd6fd4ccb08fb87916e8  gcc/testsuite/gcc.target/powerpc/mul-vectorize-1.c
  0756792d071f22b4d0d92c56ab912d25  gcc/testsuite/gcc.target/powerpc/mul-vectorize-2.c
  64af73bfe790036cc6a9cae813ae5517  gcc/testsuite/gcc.target/powerpc/mul-vectorize-3.c
*************** ede37792c75d3dd4e95f80cc7fbca305  gcc/te
*** 98886,98901 ****
  6bfea5b991446b7c6a32cf5404a1d43b  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-acquire.c
  a46df14c0088c2d651208ca19eb01cb8  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-relaxed.c
  4920e86b6ffcf6883f4deb01e4a55d16  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-seq-cst.c
! 159e8792b104783998934c9925a998c2  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
! 0b4382b44ea5d2234b4083a6c35ab6ab  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
! 633d070b4a1c42f478db39c4244135ac  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
  82b895436dff086fcb57612a470f3b65  gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c
  e0a5ea71bf7350ae31bb77913dfa1ee0  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-acquire.c
  565fe336db6b556582a6d881d96ca86b  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-relaxed.c
  c7831e9890b75b07100c51fa065b3eb9  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-seq-cst.c
! b60be37a3dc8947f21a32b72634f813e  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
! 6346f76444d149b2e942ac9ca803da29  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
! 41dc36a3f7c6eda97fbfaec8d85669f2  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
  c70bca20c7bd6aa021b2e89d48d2d2ce  gcc/testsuite/gcc.target/riscv/amo/amo.exp
  9cfa276fc7d939150c8c384d7c10667b  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-1.c
  7f3e1b2a559ce8cef571d2a40d2dfcee  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-2.c
--- 99184,99199 ----
  6bfea5b991446b7c6a32cf5404a1d43b  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-acquire.c
  a46df14c0088c2d651208ca19eb01cb8  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-relaxed.c
  4920e86b6ffcf6883f4deb01e4a55d16  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-seq-cst.c
! 800e38e415da635c7b5f7eaf06368039  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
! cae5cf9d61178ce2455367b5c137bcc2  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
! e12d07883ba155285cf05105af939e1a  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
  82b895436dff086fcb57612a470f3b65  gcc/testsuite/gcc.target/riscv/amo/a-ztso-fence.c
  e0a5ea71bf7350ae31bb77913dfa1ee0  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-acquire.c
  565fe336db6b556582a6d881d96ca86b  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-relaxed.c
  c7831e9890b75b07100c51fa065b3eb9  gcc/testsuite/gcc.target/riscv/amo/a-ztso-load-seq-cst.c
! 9d7bb8c02b865761f23903076ce75228  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
! 362f060c91fb3990158c24719cedb179  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
! 11792a15a9f8f4ce81630dc0fff2370f  gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
  c70bca20c7bd6aa021b2e89d48d2d2ce  gcc/testsuite/gcc.target/riscv/amo/amo.exp
  9cfa276fc7d939150c8c384d7c10667b  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-1.c
  7f3e1b2a559ce8cef571d2a40d2dfcee  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-2.c
*************** ec086e301c7bbfed8a34fc05332d47cb  gcc/te
*** 98952,98966 ****
  754399070c647b90de5a92836308d209  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-acquire.c
  25cca71964acd2f075b6d6548e7a563b  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-relaxed.c
  4d7f29cd81c70a72a15d4db36c0123e1  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-seq-cst.c
! a037b78c87793aada59503957a58517a  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
! ccefab651aff3606dc8519ba659367ca  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
! 32afc6587b69bf60b711f26274ba7063  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
  aeb87f725b5694b0db33d0fbc731ef5e  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-acquire.c
  bbfeec4e0698f66a0dd4987944a4cbba  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-relaxed.c
  e045d211a5d61e8344c17c7da02405be  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-seq-cst.c
! 6acd155f4d182342a7a4881312665fbc  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
! 8523aad453296639eaa2ac0fc74964a2  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
! 7825189b41d82b7e9d551e0be6b82887  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
  b9ebd1e4504ecfa275782ec37aa4723b  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c
  d1f6520e274df1fc900d5d6f5ab1e736  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire-release.c
  c0dde667a9b1afa2b69638e7e956af2d  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire.c
--- 99250,99264 ----
  754399070c647b90de5a92836308d209  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-acquire.c
  25cca71964acd2f075b6d6548e7a563b  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-relaxed.c
  4d7f29cd81c70a72a15d4db36c0123e1  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-load-seq-cst.c
! 730a1d7d07bbce85edeb28aed84aebb3  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
! d67090fb6f25959b3baf6f0f07cfbaee  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
! 1ba04226034075ea411cbaff1cd899bd  gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
  aeb87f725b5694b0db33d0fbc731ef5e  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-acquire.c
  bbfeec4e0698f66a0dd4987944a4cbba  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-relaxed.c
  e045d211a5d61e8344c17c7da02405be  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-load-seq-cst.c
! 3419d010b13a021434f0c76587717e31  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
! f98a109a96a9e847cb49326ab08a5751  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
! f68d923eefabd1db91eebef0e7159c70  gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
  b9ebd1e4504ecfa275782ec37aa4723b  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-amo-add-int.c
  d1f6520e274df1fc900d5d6f5ab1e736  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire-release.c
  c0dde667a9b1afa2b69638e7e956af2d  gcc/testsuite/gcc.target/riscv/amo/zalrsc-rvwmo-compare-exchange-int-acquire.c
*************** cc2941f3dabb2ba9df05f8e62bd343b7  gcc/te
*** 99150,99157 ****
  a9f179cd56442e765d568724c13e3d64  gcc/testsuite/gcc.target/riscv/core_list_init.c
  da7018048a2f8abf32640890d4b206be  gcc/testsuite/gcc.target/riscv/cpymem-32-ooo.c
  43e997784ea5cad989d86a3e1b2871ac  gcc/testsuite/gcc.target/riscv/cpymem-32.c
! 1a1e8b7e22dc6166c42b6e188b623490  gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
! 19777aecc04394cc7a5c69570e53d35b  gcc/testsuite/gcc.target/riscv/cpymem-64.c
  76eac1ca2e2fd53aca5c7373acab975a  gcc/testsuite/gcc.target/riscv/cpymemsi-1.c
  1747eae5340caf36457b77b1c3c16436  gcc/testsuite/gcc.target/riscv/cpymemsi-2.c
  32f282163f36da7af3d9ee530827d04e  gcc/testsuite/gcc.target/riscv/cpymemsi-3.c
--- 99448,99455 ----
  a9f179cd56442e765d568724c13e3d64  gcc/testsuite/gcc.target/riscv/core_list_init.c
  da7018048a2f8abf32640890d4b206be  gcc/testsuite/gcc.target/riscv/cpymem-32-ooo.c
  43e997784ea5cad989d86a3e1b2871ac  gcc/testsuite/gcc.target/riscv/cpymem-32.c
! 513d1cb5460f349b31013e476f554d62  gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
! 2a9bb971ac05e61e787eb9fc2b147657  gcc/testsuite/gcc.target/riscv/cpymem-64.c
  76eac1ca2e2fd53aca5c7373acab975a  gcc/testsuite/gcc.target/riscv/cpymemsi-1.c
  1747eae5340caf36457b77b1c3c16436  gcc/testsuite/gcc.target/riscv/cpymemsi-2.c
  32f282163f36da7af3d9ee530827d04e  gcc/testsuite/gcc.target/riscv/cpymemsi-3.c
*************** a4c468f0dabef5849f00b0ea4f2d7f34  gcc/te
*** 99416,99421 ****
--- 99714,99721 ----
  563117792f9d6ea0cadd47fbafeed890  gcc/testsuite/gcc.target/riscv/divmod-2.c
  5436f7a25300f600f9163405e8836b6f  gcc/testsuite/gcc.target/riscv/ext-dce-1.c
  5a1d2cabe7e71d1c3b7c41816442ac0e  gcc/testsuite/gcc.target/riscv/ext-dce-2.c
+ e850a2d4d5d1cf01a0cc82d1158702f4  gcc/testsuite/gcc.target/riscv/ext-dce-3.c
+ 5c4d5dadf108967dcc7fd25a4896d80c  gcc/testsuite/gcc.target/riscv/ext-dce-4.c
  b289cfd1cdd529019c81c25ebf8aee0f  gcc/testsuite/gcc.target/riscv/ext-dce-promote-1.c
  a9e21b2d22d00c5d449271103515f86d  gcc/testsuite/gcc.target/riscv/ext-dce-promote-2.c
  7cf820151c7fd7e6165871cdb49c8cac  gcc/testsuite/gcc.target/riscv/extend-shift-helpers.h
*************** ae02daa4bc8481883fe04d40d406d399  gcc/te
*** 99446,99455 ****
--- 99746,99764 ----
  2d216f926f95d1287381cc3a356efca6  gcc/testsuite/gcc.target/riscv/fold-mem-offsets-1.c
  9e174a10020bacb8dfe12a3a74abbbf6  gcc/testsuite/gcc.target/riscv/fold-mem-offsets-2.c
  283a36ea2b27d4b3d5c343ac1a6c9a56  gcc/testsuite/gcc.target/riscv/fold-mem-offsets-3.c
+ 1434a42ef70e223feff4e8da1254fed3  gcc/testsuite/gcc.target/riscv/fp-reg-class.c
  cedad2f9b384500f9e940017126bf4b1  gcc/testsuite/gcc.target/riscv/fsflags.c
+ f780cb1be54aedb9fe11df82907cd8cf  gcc/testsuite/gcc.target/riscv/fusion-auipc-addi-2.c
  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
+ b3bc693563ee0a79385d8ea1da742689  gcc/testsuite/gcc.target/riscv/fusion-zexth-2.c
  b796b04945e1b6a15ea412e1f173491f  gcc/testsuite/gcc.target/riscv/fusion-zexth.c
+ 0442ec1cd390f80a89747367791783af  gcc/testsuite/gcc.target/riscv/fusion-zextw-2.c
  af53028d827479a713825d6fcf5939b4  gcc/testsuite/gcc.target/riscv/fusion-zextw.c
  eaf46dc2abfb9500969790b031ffa83b  gcc/testsuite/gcc.target/riscv/gcse-const.c
  2b6d530e5981a0ccde512097a5169b16  gcc/testsuite/gcc.target/riscv/gnu-property-align-rv32.c
*************** f4d15f0f76038ce87073049d4d456ff6  gcc/te
*** 99507,99513 ****
  8499a3cd439fb6c9b5053ff1651105af  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c
  47a4c49696b231a88b31b94ebebd9874  gcc/testsuite/gcc.target/riscv/mcpu-xt-c9501fdvt.c
  3311f6659838594b5135f5297b263bd1  gcc/testsuite/gcc.target/riscv/mem-extend.c
! 16126a8d4ef67d573cd4276fa7c8cb6f  gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
  2dd2de1f802134107e9ed820836a3aa7  gcc/testsuite/gcc.target/riscv/memset-nonoverlapping.c
  155b4b4616cf38c809b507b28b13ffd5  gcc/testsuite/gcc.target/riscv/mipscondmov.c
  bc8bb3f906e5bd1b6d9079aad3307e5a  gcc/testsuite/gcc.target/riscv/mipsprefetch.c
--- 99816,99822 ----
  8499a3cd439fb6c9b5053ff1651105af  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c
  47a4c49696b231a88b31b94ebebd9874  gcc/testsuite/gcc.target/riscv/mcpu-xt-c9501fdvt.c
  3311f6659838594b5135f5297b263bd1  gcc/testsuite/gcc.target/riscv/mem-extend.c
! 946ddaa3d2bd56dab2b6bef260213f86  gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
  2dd2de1f802134107e9ed820836a3aa7  gcc/testsuite/gcc.target/riscv/memset-nonoverlapping.c
  155b4b4616cf38c809b507b28b13ffd5  gcc/testsuite/gcc.target/riscv/mipscondmov.c
  bc8bb3f906e5bd1b6d9079aad3307e5a  gcc/testsuite/gcc.target/riscv/mipsprefetch.c
*************** f035fac0dc9b5f42ec0a469a8391163c  gcc/te
*** 99972,99978 ****
  8d7255840198f77168c7067059ac39ac  gcc/testsuite/gcc.target/riscv/pr57650.c
  db206807e7e87fc388e039471812c6e0  gcc/testsuite/gcc.target/riscv/pr58727.c
  ae7832d0dbfbabb51f555f2e9c3138bc  gcc/testsuite/gcc.target/riscv/pr64345.c
! 9a44cd39f0fe595fcf632b001e4b7d12  gcc/testsuite/gcc.target/riscv/pr67731.c
  4652135af633fda87e51a6ef8d505b6d  gcc/testsuite/gcc.target/riscv/pr80770-2.c
  e3bfbe592522e285c497fdc836c58ed3  gcc/testsuite/gcc.target/riscv/pr80770.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
--- 100281,100287 ----
  8d7255840198f77168c7067059ac39ac  gcc/testsuite/gcc.target/riscv/pr57650.c
  db206807e7e87fc388e039471812c6e0  gcc/testsuite/gcc.target/riscv/pr58727.c
  ae7832d0dbfbabb51f555f2e9c3138bc  gcc/testsuite/gcc.target/riscv/pr64345.c
! a4a202f1399aa8c9184e570fbe7d1c4e  gcc/testsuite/gcc.target/riscv/pr67731.c
  4652135af633fda87e51a6ef8d505b6d  gcc/testsuite/gcc.target/riscv/pr80770-2.c
  e3bfbe592522e285c497fdc836c58ed3  gcc/testsuite/gcc.target/riscv/pr80770.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
*************** ade16f059b010bf66d77fcf2968ef4e1  gcc/te
*** 100504,100511 ****
  6f9350a646cebff7eff9226d3220b3da  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-rv32gcv.c
  6bcb6446657b62391ad60c34d4e9b3f2  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-rv64gcv.c
  79de851b19bf562fd7b650f742485afa  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-template.h
! 34c4cc8c4270e0f79800e5de7eeb149f  gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c
! ad335589099a94191b9aed7b0762be2e  gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c
  20b13d398df88501296ba6a72e6c9c15  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-1.c
  ff340d9c6dee8784837f8941d76ecb52  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-2.c
  5522a5c36ca95ef215635928ff0690c4  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-3.c
--- 100813,100820 ----
  6f9350a646cebff7eff9226d3220b3da  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-rv32gcv.c
  6bcb6446657b62391ad60c34d4e9b3f2  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-rv64gcv.c
  79de851b19bf562fd7b650f742485afa  gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vzext-template.h
! a7eda6a8b7052e65d674ed0d1254b548  gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c
! f39c140163eefa731e017083bac0a117  gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c
  20b13d398df88501296ba6a72e6c9c15  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-1.c
  ff340d9c6dee8784837f8941d76ecb52  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-2.c
  5522a5c36ca95ef215635928ff0690c4  gcc/testsuite/gcc.target/riscv/rvv/autovec/early-break-3.c
*************** d6f32022613367c165768e009d673ee3  gcc/te
*** 100860,100866 ****
  f975c36225a2f74a7a6020b07ad719f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123317-run-4.c
  26832b17589cc511f51734659c1f2c14  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123317-run.h
  e894a5c8e8bd464dcdd9c92665222f35  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123381.c
! c10f8db5df2b65c9fba341cccb30fe9c  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c
  f2ec98071ccfe1a1f2bdf4df284cc4bf  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123839.c
  3bc5599b02b046096a6eb9e4366940ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123910.c
  435f94201bb6109ed80f56efab255e18  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123916.c
--- 101169,101175 ----
  f975c36225a2f74a7a6020b07ad719f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123317-run-4.c
  26832b17589cc511f51734659c1f2c14  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123317-run.h
  e894a5c8e8bd464dcdd9c92665222f35  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123381.c
! 2144f44aa626adbcf723e874e1e6906f  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c
  f2ec98071ccfe1a1f2bdf4df284cc4bf  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123839.c
  3bc5599b02b046096a6eb9e4366940ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123910.c
  435f94201bb6109ed80f56efab255e18  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123916.c
*************** cdba373e4c3a0250dd05956a2143e9a4  gcc/te
*** 103474,103480 ****
  d1a07787bddb153d6016b775f6000390  gcc/testsuite/gcc.target/riscv/rvv/base/pr115068.c
  5a296afee4b3d78665ed78bbb359d432  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-1.c
  10e5125a3113c385efd5e57538cbdeb0  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-2.c
! 213f8b639e1f7eb7914b209e26dccdc1  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c
  595037b248f8ecfb01495bc6d08271c4  gcc/testsuite/gcc.target/riscv/rvv/base/pr115763-1.c
  63214e034878b2ccd3db00c4353e678c  gcc/testsuite/gcc.target/riscv/rvv/base/pr115763-2.c
  a4e81b82dec302406091f71256d90e9f  gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c
--- 103783,103789 ----
  d1a07787bddb153d6016b775f6000390  gcc/testsuite/gcc.target/riscv/rvv/base/pr115068.c
  5a296afee4b3d78665ed78bbb359d432  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-1.c
  10e5125a3113c385efd5e57538cbdeb0  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-2.c
! ee56c1ccac5ef72ba274d93907009a0a  gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c
  595037b248f8ecfb01495bc6d08271c4  gcc/testsuite/gcc.target/riscv/rvv/base/pr115763-1.c
  63214e034878b2ccd3db00c4353e678c  gcc/testsuite/gcc.target/riscv/rvv/base/pr115763-2.c
  a4e81b82dec302406091f71256d90e9f  gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c
*************** a8db2129ce64619adefe97016e2a537b  gcc/te
*** 112321,112326 ****
--- 112630,112637 ----
  69f7d2e39ae1d08b07a3d6e622ed82fb  gcc/testsuite/gfortran.dg/20231103-2.f90
  9b50c383f7b022f4fe7d97cf7f5fb283  gcc/testsuite/gfortran.dg/EXformat_1.F90
  d80fbb8b308e7fcbcd0be2241cff3e64  gcc/testsuite/gfortran.dg/EXformat_2.f90
+ 688aecb4793a675b5967ada8a034b5c4  gcc/testsuite/gfortran.dg/EXformat_3.F90
+ 1887cff12c57c47f7b24259ca449ec8c  gcc/testsuite/gfortran.dg/EXrounding.F90
  747722c12afa6e089d9e33c3d05257f7  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c
  57077f084b8ec81f4f537428d13a6588  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.f90
  a0882a6b88250e8258ab4511465c89da  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_10.c
*************** cb8920b39d43f8d36d7c87cd6ce3188a  gcc/te
*** 112722,112727 ****
--- 113033,113039 ----
  e96279b8586c27726b6d13e5aef5f5ce  gcc/testsuite/gfortran.dg/argument_checking_25.f90
  41fda9edc825e051657e0ef512854333  gcc/testsuite/gfortran.dg/argument_checking_26.f90
  c14ff6618ca60358eed38607ccf6e442  gcc/testsuite/gfortran.dg/argument_checking_27.f90
+ 1588b03554f28c8c20c602e73ef08894  gcc/testsuite/gfortran.dg/argument_checking_28.f90
  9420e2390509236501a51aceaffd8fec  gcc/testsuite/gfortran.dg/argument_checking_3.f90
  ca22fc708f8e1b6425943105c693f41e  gcc/testsuite/gfortran.dg/argument_checking_4.f90
  6ef91b131477d21bf8c75369daea1d04  gcc/testsuite/gfortran.dg/argument_checking_5.f90
*************** d6fbab5adc927361e8f7c4b8f3e420d5  gcc/te
*** 113302,113307 ****
--- 113614,113620 ----
  bd6eb17303abbc4e9007d3120de885aa  gcc/testsuite/gfortran.dg/block_end_error_1.f90
  467e3192431dc9f382e940356a5e9e31  gcc/testsuite/gfortran.dg/block_name_1.f90
  eba8a97b0e3415431e3a1eaebb576a73  gcc/testsuite/gfortran.dg/block_name_2.f90
+ 9998799d35b9a9320b7c704ca9929c36  gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90
  d9e1d07ea9cf0a2f95002225bdeea245  gcc/testsuite/gfortran.dg/blockdata_1.f90
  7be718b97b1a8caee5588bdd25d68acf  gcc/testsuite/gfortran.dg/blockdata_10.f90
  7dd308b3ba190467e90bfb36452b2778  gcc/testsuite/gfortran.dg/blockdata_11.f90
*************** b09906ea02ce8406cdd3e27bb94de042  gcc/te
*** 113665,113670 ****
--- 113978,113993 ----
  0b80eb392f4e3e83bc15612cb9208b4d  gcc/testsuite/gfortran.dg/c_f_pointer_tests_7.f90
  3ebb7270a1c7e8ff9b05aa304958ca0b  gcc/testsuite/gfortran.dg/c_f_pointer_tests_8.f90
  f82e9b9c0fd2496c70490c91bc661d8b  gcc/testsuite/gfortran.dg/c_f_pointer_tests_9.f90
+ e908b90251e8574abfba246afbfc9e86  gcc/testsuite/gfortran.dg/c_f_strpointer-1.f90
+ 7b3b311d7e64a9b8885674dd305fab45  gcc/testsuite/gfortran.dg/c_f_strpointer-10.f90
+ c4d1e8b5bde03bf0e52614046e0ed459  gcc/testsuite/gfortran.dg/c_f_strpointer-2.f90
+ 2c1b1d87d719663eea3b1054b0b6cbf1  gcc/testsuite/gfortran.dg/c_f_strpointer-3.f90
+ 5230b83144ab8eb45fbf23a29f422842  gcc/testsuite/gfortran.dg/c_f_strpointer-4.f90
+ c2345bc3cacb2d7a9c8a09413ed9df3c  gcc/testsuite/gfortran.dg/c_f_strpointer-5.f90
+ 4774bdc3615f22f0eff03609fc22b69f  gcc/testsuite/gfortran.dg/c_f_strpointer-6.f90
+ 5551022076448680a3b43145e5d08455  gcc/testsuite/gfortran.dg/c_f_strpointer-7.f90
+ da0c2f7221191491ec7a4df62e1c67a3  gcc/testsuite/gfortran.dg/c_f_strpointer-8.f90
+ 355eacce76d0084bcb75e85c4efd3060  gcc/testsuite/gfortran.dg/c_f_strpointer-9.f90
  d4987bd92136fbe1dc0dbed4d878bc35  gcc/testsuite/gfortran.dg/c_f_tests_driver.c
  6225c3ed3e9774c1780dabafdb403bbb  gcc/testsuite/gfortran.dg/c_funloc_tests.f03
  50477914f8343ce12f792f525c61b042  gcc/testsuite/gfortran.dg/c_funloc_tests_10.f90
*************** cb48bc9a0566f3bcad450b477a411d19  gcc/te
*** 115277,115282 ****
--- 115600,115608 ----
  b060001875a843faa2fbb059b6065205  gcc/testsuite/gfortran.dg/f2c_9.f90
  7943f4283e42602d972c24a1e6f85613  gcc/testsuite/gfortran.dg/f_c_string1.f90
  642e53e25a1d978aa0e3106a1c9b0699  gcc/testsuite/gfortran.dg/f_c_string2.f90
+ dd30d77155088385a06d69166e184b17  gcc/testsuite/gfortran.dg/f_c_string3.f90
+ 7783d9b848799dadf6d14d02d0913db5  gcc/testsuite/gfortran.dg/f_c_string4.f90
+ 97822b4d1d2a98455f6e32f979f8c44a  gcc/testsuite/gfortran.dg/f_c_string5.f90
  b2260dd74c0c2b606b400d2e461aaf77  gcc/testsuite/gfortran.dg/feed_1.f90
  06a2412335a46d2c0d1fc2f8d8bd6231  gcc/testsuite/gfortran.dg/feed_2.f90
  50fdb3b1afaf5f61132c104e8d9e3e56  gcc/testsuite/gfortran.dg/fgetc_1.f90
*************** db9a9c9e9be7de239493d5f606d71961  gcc/te
*** 116020,116026 ****
  4acd7d30dbb157b399ab53244bf88e88  gcc/testsuite/gfortran.dg/gomp/allocate-clause.f90
  1fafa7d4d833eb325754164f72bc4809  gcc/testsuite/gfortran.dg/gomp/allocate-pinned-1.f90
  7ffef7d2c60bb7fd7f09fb3731cdfd4c  gcc/testsuite/gfortran.dg/gomp/allocate-static-2.f90
! e98b64bfaca60de48d18e4479c7bacf7  gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90
  fdba6887e6e07e9db7286a8aa1e260ed  gcc/testsuite/gfortran.dg/gomp/allocators-1.f90
  de1aa465fd55a6b4c24514982405ff85  gcc/testsuite/gfortran.dg/gomp/allocators-2.f90
  bfb655d90e0515502b27574637d7ae99  gcc/testsuite/gfortran.dg/gomp/allocators-3.f90
--- 116346,116352 ----
  4acd7d30dbb157b399ab53244bf88e88  gcc/testsuite/gfortran.dg/gomp/allocate-clause.f90
  1fafa7d4d833eb325754164f72bc4809  gcc/testsuite/gfortran.dg/gomp/allocate-pinned-1.f90
  7ffef7d2c60bb7fd7f09fb3731cdfd4c  gcc/testsuite/gfortran.dg/gomp/allocate-static-2.f90
! 9f7695a1607fc133cf70071e87b1daae  gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90
  fdba6887e6e07e9db7286a8aa1e260ed  gcc/testsuite/gfortran.dg/gomp/allocators-1.f90
  de1aa465fd55a6b4c24514982405ff85  gcc/testsuite/gfortran.dg/gomp/allocators-2.f90
  bfb655d90e0515502b27574637d7ae99  gcc/testsuite/gfortran.dg/gomp/allocators-3.f90
*************** aedab00c95be355c3ec0c7306612ae62  gcc/te
*** 117846,117852 ****
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
! 7536c9c0b974b088ce6fd6596dd07bb6  gcc/testsuite/gfortran.dg/module_private_2.f90
  caecc4fd8aa5de5428a7b4a6c3ee736b  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
  dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/testsuite/gfortran.dg/module_procedure_1.f90
--- 118172,118178 ----
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
! 83a9d58f9d6a671795510bde09849124  gcc/testsuite/gfortran.dg/module_private_2.f90
  caecc4fd8aa5de5428a7b4a6c3ee736b  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
  dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/testsuite/gfortran.dg/module_procedure_1.f90
*************** a367beafff806aa88b45192d28091201  gcc/te
*** 118575,118581 ****
  89000eec5be4848c1ee9f28782affc5d  gcc/testsuite/gfortran.dg/pr108544.f90
  ff15b9a6b62e2f00e552b437eece42bf  gcc/testsuite/gfortran.dg/pr108592.f90
  b4c38adb4e9d005c1c883b2efff25b07  gcc/testsuite/gfortran.dg/pr108889.f90
! 7f1da97161aa1f82490b1a5323dd6fba  gcc/testsuite/gfortran.dg/pr108961.f90
  8f9de055ba3027b7ae59405bcbee699f  gcc/testsuite/gfortran.dg/pr109209.f90
  b7b6edb61862ad55069c70c4744ad157  gcc/testsuite/gfortran.dg/pr109265.f90
  78ada5d286128144e86af4a4c1aac9cc  gcc/testsuite/gfortran.dg/pr109345.f90
--- 118901,118907 ----
  89000eec5be4848c1ee9f28782affc5d  gcc/testsuite/gfortran.dg/pr108544.f90
  ff15b9a6b62e2f00e552b437eece42bf  gcc/testsuite/gfortran.dg/pr108592.f90
  b4c38adb4e9d005c1c883b2efff25b07  gcc/testsuite/gfortran.dg/pr108889.f90
! d6499d33a6aedea500abc2c35452ffbb  gcc/testsuite/gfortran.dg/pr108961.f90
  8f9de055ba3027b7ae59405bcbee699f  gcc/testsuite/gfortran.dg/pr109209.f90
  b7b6edb61862ad55069c70c4744ad157  gcc/testsuite/gfortran.dg/pr109265.f90
  78ada5d286128144e86af4a4c1aac9cc  gcc/testsuite/gfortran.dg/pr109345.f90
*************** f19a3e696f77f97e6aa2d83addab4ac4  gcc/te
*** 119729,119741 ****
  34c911109f23bf944fad22240fbb32c4  gcc/testsuite/gfortran.dg/ptr_func_assign_6.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
! 49160e67e683a86326398387d510d296  gcc/testsuite/gfortran.dg/public_private_module_2.f90
  d103e889cb7d81b0f6805dbfc1c68c26  gcc/testsuite/gfortran.dg/public_private_module_3.f90
  84ea34192deaf0c1463e5796a16847a2  gcc/testsuite/gfortran.dg/public_private_module_4.f90
  a7c876a660d440bd1bfe0f762107a374  gcc/testsuite/gfortran.dg/public_private_module_5.f90
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
! 61ecb108069d9936f4052101c4821b4d  gcc/testsuite/gfortran.dg/public_private_module_7.f90
! 955bea9146bbe6215229285af568e9f2  gcc/testsuite/gfortran.dg/public_private_module_8.f90
  fb25d86bd7f82a05dc6183df6a9066f7  gcc/testsuite/gfortran.dg/pure_byref_1.f90
  493586b435409bfed03105c632c3fc74  gcc/testsuite/gfortran.dg/pure_byref_2.f90
  89567835c985900d9ee730feee919f80  gcc/testsuite/gfortran.dg/pure_byref_3.f90
--- 120055,120067 ----
  34c911109f23bf944fad22240fbb32c4  gcc/testsuite/gfortran.dg/ptr_func_assign_6.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
! 808c10a9c07592aecf3fea04937d1922  gcc/testsuite/gfortran.dg/public_private_module_2.f90
  d103e889cb7d81b0f6805dbfc1c68c26  gcc/testsuite/gfortran.dg/public_private_module_3.f90
  84ea34192deaf0c1463e5796a16847a2  gcc/testsuite/gfortran.dg/public_private_module_4.f90
  a7c876a660d440bd1bfe0f762107a374  gcc/testsuite/gfortran.dg/public_private_module_5.f90
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
! ec6cb88dae71e3a45fb7feac95463080  gcc/testsuite/gfortran.dg/public_private_module_7.f90
! 13c902145bd85796b3faec9a4869aab8  gcc/testsuite/gfortran.dg/public_private_module_8.f90
  fb25d86bd7f82a05dc6183df6a9066f7  gcc/testsuite/gfortran.dg/pure_byref_1.f90
  493586b435409bfed03105c632c3fc74  gcc/testsuite/gfortran.dg/pure_byref_2.f90
  89567835c985900d9ee730feee919f80  gcc/testsuite/gfortran.dg/pure_byref_3.f90
*************** d470cf2de70b478f82f67f0729c09b76  gcc/te
*** 120328,120333 ****
--- 120654,120661 ----
  8b4b5d6a33ef9520206432c7652a183f  gcc/testsuite/gfortran.dg/submodule_7.f08
  0588325ee7072ce91be610f63a4baee1  gcc/testsuite/gfortran.dg/submodule_8.f08
  bbf9d850641248605c066ac6bca34a54  gcc/testsuite/gfortran.dg/submodule_9.f08
+ f673eaf234a3b89c2be2af99a05295fb  gcc/testsuite/gfortran.dg/submodule_private_host.f90
+ 4243bbc731cc61f561b1c44fc29ecb89  gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90
  83aae3d2902f46d94fad6d8bc10e2163  gcc/testsuite/gfortran.dg/submodule_twice.f90
  83c3576872a648d3e88b3ed27521cda8  gcc/testsuite/gfortran.dg/submodule_unexp.f90
  4b03a1050fa7469f4a1b8a73b6c04f2f  gcc/testsuite/gfortran.dg/subnormal_1.f90
*************** fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/te
*** 120979,120985 ****
  1d37c013db4796b65d121229b6e04f40  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
  3dc26997d0b1c97db5c9aebb047411db  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_6.f90
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! babf649d09171c4fca19c8092348ee07  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
--- 121307,121313 ----
  1d37c013db4796b65d121229b6e04f40  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
  3dc26997d0b1c97db5c9aebb047411db  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_6.f90
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! c9497af1ed4f39ba98f09ab4c4e7e8d0  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
*************** de9eeadec9703aff96169206e31a3a22  gcc/te
*** 128643,128649 ****
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 7339d227a50dceaca1653d797f3f9d2d  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
--- 128971,128977 ----
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 0987a2df4e54290893b6dfd0335d86bd  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
*************** f265270649135d73a0e62a9ae94c76b9  gcc/te
*** 131391,131398 ****
  aa15e3ae03e66b9ca714b351d53609dd  gcc/text-art/canvas.h
  8f237c17257ae7bdd5f6e56f482544fb  gcc/text-art/dump-widget-info.h
  1572ec08fea27180aa5e607483529082  gcc/text-art/dump.h
! b23b6b7f372f9dd31a52372818a65d1f  gcc/text-art/ruler.cc
! 3f0493f47f028266b684320b92d7baae  gcc/text-art/ruler.h
  6c49759f75ccacdcb9a26df23b050f6d  gcc/text-art/selftests.cc
  db98dee9e81ec4e012882ad964da967f  gcc/text-art/selftests.h
  e739929109a5de82bdbc3f18c490bd52  gcc/text-art/style.cc
--- 131719,131726 ----
  aa15e3ae03e66b9ca714b351d53609dd  gcc/text-art/canvas.h
  8f237c17257ae7bdd5f6e56f482544fb  gcc/text-art/dump-widget-info.h
  1572ec08fea27180aa5e607483529082  gcc/text-art/dump.h
! c110b8f66ef8f145976d6a78c7a8549f  gcc/text-art/ruler.cc
! 07cd1aaec618c1379bfc014beb08b614  gcc/text-art/ruler.h
  6c49759f75ccacdcb9a26df23b050f6d  gcc/text-art/selftests.cc
  db98dee9e81ec4e012882ad964da967f  gcc/text-art/selftests.h
  e739929109a5de82bdbc3f18c490bd52  gcc/text-art/style.cc
*************** cbe90a107fcd179a95684d58982b5779  gcc/te
*** 131408,131436 ****
  16df2eee5df7c3c54070ef71bde6afcb  gcc/text-art/widget.h
  4020706e89a3193babbae430014c2735  gcc/text-range-label.h
  092eef5e89ca84562a58ff0e91eaee48  gcc/timevar.cc
! ee4165de3d74b0fde5ca55a403c7f37b  gcc/timevar.def
  160bb6626a9562507750456253c82eb4  gcc/timevar.h
  af430d420eee56a4d869b7421ddb08b9  gcc/topics/pass-events.h
! 480ac969ad3b5485ec5045df000fadab  gcc/toplev.cc
  4cc76bc48e83cd9bdd4f991959a6f230  gcc/toplev.h
  08a29208cd04c7f3a5f2b43bec77b277  gcc/tracer.cc
  461d12af5a299c303884d0d07511a6a9  gcc/tracer.h
! 993a97b28cca7c2e5421ec297455f2ce  gcc/trans-mem.cc
  a4340dde4019e28f9fad54b2a7770c74  gcc/trans-mem.h
  330c89392efb47062df1e82fff7ef01d  gcc/tree-affine.cc
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
! bc74f92323ee5636997f0c03aec16115  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! f0c9b0e9b5fa2c5658faa665fb0a2272  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
! 004be06477b671feecb3c825f52a13d9  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! 77991ea87c738f435f58edb91daefd74  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
! a3fd0a3b7cf7687811c2d140c14f489d  gcc/tree-complex.cc
! dea74d5dd62de97a94d9f3e749f5bd06  gcc/tree-core.h
! 4a0e32c3f4db8d2b600df44d6f3bfb90  gcc/tree-data-ref.cc
! 885e741c83d91ee864f9af2a1a079312  gcc/tree-data-ref.h
  89ef786b9c4639015bae3652c90fa60f  gcc/tree-dfa.cc
  e4c2f21e28741c793a32ae0fc8dbfa4c  gcc/tree-dfa.h
  0747c6d31b270b2ef08edf37adc78e96  gcc/tree-diagnostic-cfg.cc
--- 131736,131764 ----
  16df2eee5df7c3c54070ef71bde6afcb  gcc/text-art/widget.h
  4020706e89a3193babbae430014c2735  gcc/text-range-label.h
  092eef5e89ca84562a58ff0e91eaee48  gcc/timevar.cc
! 7ae6e65fc4154cb546728c98d8ef8f9c  gcc/timevar.def
  160bb6626a9562507750456253c82eb4  gcc/timevar.h
  af430d420eee56a4d869b7421ddb08b9  gcc/topics/pass-events.h
! 74d9f2c00376136f1e480bf4efff7a36  gcc/toplev.cc
  4cc76bc48e83cd9bdd4f991959a6f230  gcc/toplev.h
  08a29208cd04c7f3a5f2b43bec77b277  gcc/tracer.cc
  461d12af5a299c303884d0d07511a6a9  gcc/tracer.h
! df9b95e6cdd45ab18dad654a786428ca  gcc/trans-mem.cc
  a4340dde4019e28f9fad54b2a7770c74  gcc/trans-mem.h
  330c89392efb47062df1e82fff7ef01d  gcc/tree-affine.cc
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
! 80bb689c790bf8a20a1604f1fb450d2e  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! 0598cf504b8563c14c4daf96eb3f46af  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
! 930348a0e01a15c999f55d255a5b9f42  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! 9e024483d94f1dc1bd27e0830583ba9c  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
! f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
! 46abfe97f89875bdd02b434e6c31327e  gcc/tree-core.h
! 872c20fe2fd8d662c991f9f0b4ddaaef  gcc/tree-data-ref.cc
! 8a41e760788789609c052d419c155691  gcc/tree-data-ref.h
  89ef786b9c4639015bae3652c90fa60f  gcc/tree-dfa.cc
  e4c2f21e28741c793a32ae0fc8dbfa4c  gcc/tree-dfa.h
  0747c6d31b270b2ef08edf37adc78e96  gcc/tree-diagnostic-cfg.cc
*************** e034d1768d04fbcb8aefa0625b256dcd  gcc/tr
*** 131440,131549 ****
  2356f32b95e1208633e492dbb6aec24a  gcc/tree-diagnostic.h
  c3f03b9ec39a5dd9d9d6328f439b796c  gcc/tree-dump.cc
  324fb4c2b4c5efd6cfc188ff13bca7ee  gcc/tree-dump.h
! 15b0d5dea2517e8735029b57cc29208e  gcc/tree-eh.cc
  d7c0da59494a51ae966d29f4618b2f9a  gcc/tree-eh.h
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! 2cbf7c07966448c7108b23f5ccc8374d  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
! 36641aac4acff031aafd6e8316186bf0  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
! c6ce99fc424184a60f3dd558c37751bd  gcc/tree-into-ssa.cc
  72f7e515faeeb8223adbdd63816cd07d  gcc/tree-into-ssa.h
  ffbdc6cd519d8fe2b404591eecafac89  gcc/tree-iterator.cc
  638181e8d71d4551c866f5609255762e  gcc/tree-iterator.h
  da9de571efa01bc66c1db48e416352ae  gcc/tree-logical-location.cc
  3fc6fceee69fd62a808aa84716a854b7  gcc/tree-logical-location.h
! 7232339926988cc760690932854773a6  gcc/tree-loop-distribution.cc
  b980e97059595b9c229e76799b1309df  gcc/tree-nested.cc
  7bdbfccebe0ea4963fd220c0676ad6a2  gcc/tree-nested.h
  d239500c752edeffb49a14623c8a522a  gcc/tree-nrv.cc
! cc426a8cd04031d2ec180f0d10e2531c  gcc/tree-object-size.cc
  ceb2c708500ddb7d48dbc25764c96b5d  gcc/tree-object-size.h
  e3ac97ae6e4c501bb7dabaf26cdf8a30  gcc/tree-outof-ssa.cc
  7810fba9c2ee7167c24df41d8458fad3  gcc/tree-outof-ssa.h
! c8e26af48c749019e87aa9559c16101d  gcc/tree-parloops.cc
  898be2fb978b49d3654ad458a2cfab7d  gcc/tree-parloops.h
  fe7cb8d01db48420c7b2914863f3580c  gcc/tree-pass.h
  559089300f750cecc62d34797418b3cc  gcc/tree-phinodes.cc
  d370934f01e7c80fa4e88a80fabbcb95  gcc/tree-phinodes.h
! a24cff30baef257a999b4fac3ca47d5a  gcc/tree-predcom.cc
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  45c5e55c37764fad83ea33411f4eb348  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! 1ad5e1ab19c4386e24d5679133ee5502  gcc/tree-profile.cc
! 8def679c7023ae2080f9f39c7cf30cd3  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
! ce9274119122c3cd5ea7c58552f62d21  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  39f64c2e1c6ae742ac610f096aa9e013  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
! fcb7975097b4ee08d301f6de516fdd62  gcc/tree-ssa-alias-compare.h
! 9c20916ac2e4fdfc859f243e764d56db  gcc/tree-ssa-alias.cc
  05510947cfea397a44870db7a92b253c  gcc/tree-ssa-alias.h
! 24e11f1ed0e2bb7810093e5a8d37fd61  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
! 397fa8587be3541feae34aee955f9229  gcc/tree-ssa-dce.cc
  34546de59e69d1a125c3fa7747d7f0e2  gcc/tree-ssa-dce.h
! 49ea38a06cadbaa424304a42a436cba8  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
! eb45207f0c6a42c26f3322d4ccd5cc21  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! 82d1147e003412dabe820e815cdf2eed  gcc/tree-ssa-forwprop.cc
! bb90d30f7c6176fd9edf8b10cc7803b6  gcc/tree-ssa-ifcombine.cc
! 96b11e029c398aaecd1c642c41c88884  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
! dcaeaaad1469ccb53d09d0c3975284d7  gcc/tree-ssa-loop-ch.cc
! 7e0fc21bd49ee6c5642e711dcaa8196a  gcc/tree-ssa-loop-im.cc
! f8b96abb98adf78d9bf9645ec4529541  gcc/tree-ssa-loop-ivcanon.cc
! d24792a2959758d0e543ff78a3449773  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
  9c2771407c6cb32b3d230d8b3c87a2b8  gcc/tree-ssa-loop-manip.cc
  d6013c7f2ea70d40b0d82c53eacccd45  gcc/tree-ssa-loop-manip.h
! 0b89f1372a57411cf07dcb10d552755a  gcc/tree-ssa-loop-niter.cc
! 722669ffcd66a5eddeeebe77512a22fa  gcc/tree-ssa-loop-niter.h
! a00381a12f6e0a0c69845030d621d615  gcc/tree-ssa-loop-prefetch.cc
! f90bb829a4d4ab0700f5e8b5c30e8d13  gcc/tree-ssa-loop-split.cc
  e095960ef0fe00db5db9f4a2e88515d1  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 406c7948bf51ea197264ff2b52a23a9c  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
! b50e386b38111783b2afaf5e0562b47d  gcc/tree-ssa-phiopt.cc
! e548b44ff2b868f552f8100aeea9ec7a  gcc/tree-ssa-phiprop.cc
! 2629a2f2f3697ec132db57ae1cbd88dd  gcc/tree-ssa-pre.cc
! 63af51f1dd8ae411ddff56d9abeb68a1  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
! 5b77fd429ee7e541ce41a750ef1ba809  gcc/tree-ssa-reassoc.cc
! 82a2c700ac2e32f106bcbd11fc5cf152  gcc/tree-ssa-reassoc.h
! fdcd4f12e83f639ac995861cd763232d  gcc/tree-ssa-sccvn.cc
  969557a6ff2537ae4a6d36fde566e436  gcc/tree-ssa-sccvn.h
! 43b66558734f8fe9fec03260c6814f6b  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
  3b2415ac4cc87839b64bcb95bc5ba760  gcc/tree-ssa-sink.cc
  ccd81769582e0122376dc2d42e8c2af1  gcc/tree-ssa-strlen.cc
  7e86234d60a489dfd04ff6e6792e020e  gcc/tree-ssa-strlen.h
! 4c095e72d51f754fb4a38150afa250e6  gcc/tree-ssa-structalias.cc
  1cb62c7fa7db51a11ab31132b6a2edee  gcc/tree-ssa-structalias.h
  0446a2ea253b8980787fe93568c7836b  gcc/tree-ssa-tail-merge.cc
  4835f0b56bdf88ee25d6d6e08808a7db  gcc/tree-ssa-ter.cc
  ade30359e437d413371ab6bf896f2aa8  gcc/tree-ssa-ter.h
! 4c513039b9c6f19dac425ae61676f4d9  gcc/tree-ssa-threadbackward.cc
! ad70c411b7d21101dac0ae7123f4d652  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
! 193675ff54e34d6c9e3f9ed273875065  gcc/tree-ssa-uninit.cc
! c85c70b5c1b24e1b76b814ae799a7ded  gcc/tree-ssa.cc
  070343f0d359685a1e4b6492f3a41e29  gcc/tree-ssa.h
! 71f7ada8f58374ddb220c758cc5e10a3  gcc/tree-ssanames.cc
  90fbd5cfafe635bc28561bc0092642e2  gcc/tree-ssanames.h
  9800375f31e457a30cf501959cec78df  gcc/tree-stdarg.cc
  208d28432e9ae5fc3f0dd219bf094d10  gcc/tree-stdarg.h
--- 131768,131877 ----
  2356f32b95e1208633e492dbb6aec24a  gcc/tree-diagnostic.h
  c3f03b9ec39a5dd9d9d6328f439b796c  gcc/tree-dump.cc
  324fb4c2b4c5efd6cfc188ff13bca7ee  gcc/tree-dump.h
! 206f4da0266e470427c125e6983f4178  gcc/tree-eh.cc
  d7c0da59494a51ae966d29f4618b2f9a  gcc/tree-eh.h
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! e7540c83626e9fb7c743de1a61333c69  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
! abcba2a22e072da7c4ef537475cdefef  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
! a5cbab6e62ef515070f1e584b679c35c  gcc/tree-into-ssa.cc
  72f7e515faeeb8223adbdd63816cd07d  gcc/tree-into-ssa.h
  ffbdc6cd519d8fe2b404591eecafac89  gcc/tree-iterator.cc
  638181e8d71d4551c866f5609255762e  gcc/tree-iterator.h
  da9de571efa01bc66c1db48e416352ae  gcc/tree-logical-location.cc
  3fc6fceee69fd62a808aa84716a854b7  gcc/tree-logical-location.h
! 171f3ff8f6df290bf7db7fd2eb70e077  gcc/tree-loop-distribution.cc
  b980e97059595b9c229e76799b1309df  gcc/tree-nested.cc
  7bdbfccebe0ea4963fd220c0676ad6a2  gcc/tree-nested.h
  d239500c752edeffb49a14623c8a522a  gcc/tree-nrv.cc
! 8157c4cf3bda13c019a5c6784e7e9e70  gcc/tree-object-size.cc
  ceb2c708500ddb7d48dbc25764c96b5d  gcc/tree-object-size.h
  e3ac97ae6e4c501bb7dabaf26cdf8a30  gcc/tree-outof-ssa.cc
  7810fba9c2ee7167c24df41d8458fad3  gcc/tree-outof-ssa.h
! 1f0636a04a2cc3390a38e648d396a06f  gcc/tree-parloops.cc
  898be2fb978b49d3654ad458a2cfab7d  gcc/tree-parloops.h
  fe7cb8d01db48420c7b2914863f3580c  gcc/tree-pass.h
  559089300f750cecc62d34797418b3cc  gcc/tree-phinodes.cc
  d370934f01e7c80fa4e88a80fabbcb95  gcc/tree-phinodes.h
! e955b77da9f61f19437f61d65861e763  gcc/tree-predcom.cc
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  45c5e55c37764fad83ea33411f4eb348  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! fb27a9c19b7277714515baa728b01a3e  gcc/tree-profile.cc
! 8511042d23c47db78e45767f4d0d330e  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
! c3b5af33118e23a3f3b653f87a6181d3  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  39f64c2e1c6ae742ac610f096aa9e013  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
! bcc14a4de2b37f6c98080d60cd3a2c36  gcc/tree-ssa-alias-compare.h
! fb7e0c140fb1708d8ea6d5897c0afb52  gcc/tree-ssa-alias.cc
  05510947cfea397a44870db7a92b253c  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
! df4e4238b30ad2c7205810ae235106fa  gcc/tree-ssa-dce.cc
  34546de59e69d1a125c3fa7747d7f0e2  gcc/tree-ssa-dce.h
! d3ba54bdbce506bfec685e833b6e9903  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
! ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! 496ede189cdfeea6d80d161ba8398507  gcc/tree-ssa-forwprop.cc
! 3e4848e9a46f33eab1b56187075818bb  gcc/tree-ssa-ifcombine.cc
! b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
! 8810d451bbe1958d41d972bc0224c156  gcc/tree-ssa-loop-ch.cc
! 31a81dd99f3d7b63e7f58b05fa41f5b2  gcc/tree-ssa-loop-im.cc
! 972578d2900bb38415f9eb02b271096c  gcc/tree-ssa-loop-ivcanon.cc
! 0ff8b0d1d7dd766e7d9347fd91cff3cb  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
  9c2771407c6cb32b3d230d8b3c87a2b8  gcc/tree-ssa-loop-manip.cc
  d6013c7f2ea70d40b0d82c53eacccd45  gcc/tree-ssa-loop-manip.h
! 4d1f966a4b591d6ace40d0d06d4416c8  gcc/tree-ssa-loop-niter.cc
! 4b19cd267d749c27d7e2b616b46fe8d6  gcc/tree-ssa-loop-niter.h
! 1b3164ae2d55cbf742ebf0774d0106cf  gcc/tree-ssa-loop-prefetch.cc
! f7b409734eec08cd9a87244dc663df3a  gcc/tree-ssa-loop-split.cc
  e095960ef0fe00db5db9f4a2e88515d1  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 09680ffb8471185727088b92d1154f46  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
! 1cca568878d3bd0b35a675e4a07e5ec9  gcc/tree-ssa-phiopt.cc
! fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
! bc7a10fe1c5522f4d907263e36ac5945  gcc/tree-ssa-pre.cc
! f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
! 179bb6ff163d218928ee4aef2eb99a4d  gcc/tree-ssa-reassoc.cc
! 9a67eb78dfcbdb36f2fbf9b5dd4ff29c  gcc/tree-ssa-reassoc.h
! 130d38fb56cc8103be961d49cd393130  gcc/tree-ssa-sccvn.cc
  969557a6ff2537ae4a6d36fde566e436  gcc/tree-ssa-sccvn.h
! 2b138ac94e5d6a2e499018e91e58a737  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
  3b2415ac4cc87839b64bcb95bc5ba760  gcc/tree-ssa-sink.cc
  ccd81769582e0122376dc2d42e8c2af1  gcc/tree-ssa-strlen.cc
  7e86234d60a489dfd04ff6e6792e020e  gcc/tree-ssa-strlen.h
! ff50beb419088f374a4b656a71fd772a  gcc/tree-ssa-structalias.cc
  1cb62c7fa7db51a11ab31132b6a2edee  gcc/tree-ssa-structalias.h
  0446a2ea253b8980787fe93568c7836b  gcc/tree-ssa-tail-merge.cc
  4835f0b56bdf88ee25d6d6e08808a7db  gcc/tree-ssa-ter.cc
  ade30359e437d413371ab6bf896f2aa8  gcc/tree-ssa-ter.h
! aec3a3878fe29a9644281cb009405ac7  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
! 5bc0c1ce1e36ce9bf867ddbb1095c996  gcc/tree-ssa-uninit.cc
! 9efa39c096ff342ed062200d36b3c7a2  gcc/tree-ssa.cc
  070343f0d359685a1e4b6492f3a41e29  gcc/tree-ssa.h
! 052a721ed990fd6834de1f701e1bc4e2  gcc/tree-ssanames.cc
  90fbd5cfafe635bc28561bc0092642e2  gcc/tree-ssanames.h
  9800375f31e457a30cf501959cec78df  gcc/tree-stdarg.cc
  208d28432e9ae5fc3f0dd219bf094d10  gcc/tree-stdarg.h
*************** c85c70b5c1b24e1b76b814ae799a7ded  gcc/tr
*** 131551,131576 ****
  f8119a019450befbbf3e3e40b010cf74  gcc/tree-streamer-out.cc
  4d591a91fc3bb023839baddd9e66a821  gcc/tree-streamer.cc
  9776b3844a0761f68ee0aca3fd2e74ea  gcc/tree-streamer.h
! a276a785e139fcb28cbe71af406290bf  gcc/tree-switch-conversion.cc
! e316eddfbf9a02433a4ee93e648f3aa4  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! 3132fac426d61d73bcd587a2b616e235  gcc/tree-vect-data-refs.cc
! a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
! 5945009d0ba922b53aacbb6f724d3caf  gcc/tree-vect-loop-manip.cc
! 624e853033600b79b38e595705354ec3  gcc/tree-vect-loop.cc
! ea563f2f1f50f0980e0888d5fb188c39  gcc/tree-vect-patterns.cc
! e530cc3aafb91a29f53ad4826859fa85  gcc/tree-vect-slp-patterns.cc
! 71139909bba27465cd822be8bc2bf6dc  gcc/tree-vect-slp.cc
! 7aa4b46994d785b73e9a762ae8062809  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
! f0d1488584aa7165744ddc40b3d98e30  gcc/tree-vectorizer.cc
! 1c4ff57c2d14795783b43ada68bc9165  gcc/tree-vectorizer.h
! 366e0ed463591e966ced4d1fd421282d  gcc/tree-vrp.cc
! d7273e63988959e17e61bc75f7f0cf29  gcc/tree-vrp.h
! dd57fd4c22c61522419ffb9ff325074b  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! f2567fc812e31ecd85a4a0c19ea9a089  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
--- 131879,131904 ----
  f8119a019450befbbf3e3e40b010cf74  gcc/tree-streamer-out.cc
  4d591a91fc3bb023839baddd9e66a821  gcc/tree-streamer.cc
  9776b3844a0761f68ee0aca3fd2e74ea  gcc/tree-streamer.h
! 31edb0540b970325ae5c017fddf7eb02  gcc/tree-switch-conversion.cc
! fa20fc0102b6036d5fa58b953c127e15  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! 79d28d0d4ca64025fb1a08e9dcbcb5c1  gcc/tree-vect-data-refs.cc
! 8d27b93ebf87d8bcc1776ea3342d49c8  gcc/tree-vect-generic.cc
! d90dc34c00884559151b7a123968de81  gcc/tree-vect-loop-manip.cc
! 611eb64702d58ba91622f696b7c3df7c  gcc/tree-vect-loop.cc
! a578c6e238754943f93881eb99ffb11b  gcc/tree-vect-patterns.cc
! fca6575f06b5244c2486665f74355847  gcc/tree-vect-slp-patterns.cc
! 6b7806488a0b4885fcd026df4e52e7f3  gcc/tree-vect-slp.cc
! 151339ea3bf2b1a62eac3aee470b8353  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
! 13e9cef2390dd1636d08ad094097b58f  gcc/tree-vectorizer.cc
! 6201aff3ee6195478897f3dfa1642cf8  gcc/tree-vectorizer.h
! 06edc6b7e3bcc27f8a1767c3a653e931  gcc/tree-vrp.cc
! c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
! a2af3d8258859a2fe1149b921165f8be  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! c210638e4e3d74f2af292ddbb36f6620  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
*************** e43734cf1c3363a7a6d250eaa9c6b87b  gcc/ts
*** 131579,131593 ****
  73cf7e5eef7232575aac45474ed7f03a  gcc/tsystem.h
  c79610c0bd601062663853b8fcae475c  gcc/typeclass.h
  76d55cad7b50e37496d3e8cd7868baa3  gcc/typed-splay-tree.cc
! 09689981816eb6cd15fda96e89152291  gcc/typed-splay-tree.h
! 85f31f9fcbbc2285dbc2cfdcaa9b417d  gcc/ubsan.cc
  334bfcc0efaa117072eb417cb20a2c9e  gcc/ubsan.h
  0102d3e99143514b227fb0552a6ed2f9  gcc/unique-argv.h
  df6e60fd226c010029982dccb67d2e71  gcc/valtrack.cc
  8e6c00c7b13e3ea0af5115a1da91a388  gcc/valtrack.h
  4eda99869334c77f724a5630acdfb6cf  gcc/value-pointer-equiv.cc
  87b8ea160aedd51d0b39987c651c19c5  gcc/value-pointer-equiv.h
! 25abf8431e827e6fdd5d719820f13b81  gcc/value-prof.cc
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
  1618d5795aa6fd02634fdfff4d2a0f39  gcc/value-query.cc
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
--- 131907,131921 ----
  73cf7e5eef7232575aac45474ed7f03a  gcc/tsystem.h
  c79610c0bd601062663853b8fcae475c  gcc/typeclass.h
  76d55cad7b50e37496d3e8cd7868baa3  gcc/typed-splay-tree.cc
! 94e0e01e50964808ff8c812a9675c3e4  gcc/typed-splay-tree.h
! 3a946d23840e66e0b9f8c404c58f458d  gcc/ubsan.cc
  334bfcc0efaa117072eb417cb20a2c9e  gcc/ubsan.h
  0102d3e99143514b227fb0552a6ed2f9  gcc/unique-argv.h
  df6e60fd226c010029982dccb67d2e71  gcc/valtrack.cc
  8e6c00c7b13e3ea0af5115a1da91a388  gcc/valtrack.h
  4eda99869334c77f724a5630acdfb6cf  gcc/value-pointer-equiv.cc
  87b8ea160aedd51d0b39987c651c19c5  gcc/value-pointer-equiv.h
! e904de1854afc7cd34a51dc8be49131d  gcc/value-prof.cc
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
  1618d5795aa6fd02634fdfff4d2a0f39  gcc/value-query.cc
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
*************** c559980f2936e62bb80a512b1682d0fd  gcc/va
*** 131595,131606 ****
  4235b252ca8759d55215ee9cd42e1e93  gcc/value-range-pretty-print.h
  c52feacf8aa8466aace1377dc368a67c  gcc/value-range-storage.cc
  e65249df44ee10434babf84d1f108509  gcc/value-range-storage.h
! 85ec4b4a240d25a8d0296a413e960bcb  gcc/value-range.cc
! dc6847f80ec5b2bfbfb505a18197c8a8  gcc/value-range.h
! 89dd7a2e6c8aad8f04c37053eb24ec36  gcc/value-relation.cc
  ea7df3e5b6ab2e6e23e741431d583880  gcc/value-relation.h
! 67243720463ddf0b7b00721a5680051a  gcc/var-tracking.cc
! 1657e0e5b170dd495911d1c2ceeb23da  gcc/varasm.cc
  183473e8cac5bad9279eb1937e4edda9  gcc/varasm.h
  136dfca78729a02f744f7929df4331c9  gcc/varpool.cc
  1eb1aeaffcea7302f0e479e7e824f742  gcc/vec-perm-indices.cc
--- 131923,131934 ----
  4235b252ca8759d55215ee9cd42e1e93  gcc/value-range-pretty-print.h
  c52feacf8aa8466aace1377dc368a67c  gcc/value-range-storage.cc
  e65249df44ee10434babf84d1f108509  gcc/value-range-storage.h
! 09177461b21100d1fe07b2a443b95f3d  gcc/value-range.cc
! 407468c3950969dc8f1856a1d2cdd96e  gcc/value-range.h
! 67666161e57e5be58fba9c1c031067b0  gcc/value-relation.cc
  ea7df3e5b6ab2e6e23e741431d583880  gcc/value-relation.h
! 063ac1ec4666e86252dc7653bde86852  gcc/var-tracking.cc
! abe4064b9258df5b6c87d9394dc9b67c  gcc/varasm.cc
  183473e8cac5bad9279eb1937e4edda9  gcc/varasm.h
  136dfca78729a02f744f7929df4331c9  gcc/varpool.cc
  1eb1aeaffcea7302f0e479e7e824f742  gcc/vec-perm-indices.cc
*************** c91273a15934abde46fad0e255ab7a7d  gcc/ve
*** 131610,131626 ****
  f2d9db7b65884c657d64eb3ef0099e7e  gcc/vector-builder.h
  5bd2fdb85907c3cd81a94bbb079987db  gcc/vmsdbg.h
  95acf3cb9ab17aea0a6c6f22c2aed8cb  gcc/vmsdbgout.cc
! 558b35a32509b11569059469a6483940  gcc/vr-values.cc
  249b704a63c681faf2b2167bbe2ca8f4  gcc/vr-values.h
! 53d46f0fb835547c9c6d96fa70175570  gcc/vtable-verify.cc
  b1375286068f9ca70e290ce9a506bf2f  gcc/vtable-verify.h
! d55ccdff82a43a777b5126ab555d5e17  gcc/warning-control.cc
  9cb13ff5d429d6e67976ef4de9baa933  gcc/web.cc
  e164527fa2ee6715cf2af8861bacd107  gcc/wide-int-bitmask.h
  1b202f82a19624ac3a25fa1a3f24fc9d  gcc/wide-int-print.cc
  9edad7be0af7a88f4f4b05afeef55e59  gcc/wide-int-print.h
! b43850588531a10c92f2edb3db6ca034  gcc/wide-int.cc
! 780cdaa4e3e004ee73cc6bde32be2535  gcc/wide-int.h
  270601d5667d37001f6cceedc54db709  gcc/xcoff.h
  9bbcc6c5fc2143d227f9bb62f34ddaed  gcc/xml-printer.h
  36083181908ce997d5ccb6a13d6a0420  gcc/xml.cc
--- 131938,131954 ----
  f2d9db7b65884c657d64eb3ef0099e7e  gcc/vector-builder.h
  5bd2fdb85907c3cd81a94bbb079987db  gcc/vmsdbg.h
  95acf3cb9ab17aea0a6c6f22c2aed8cb  gcc/vmsdbgout.cc
! aaa82b12fe2828b6dea025332d908022  gcc/vr-values.cc
  249b704a63c681faf2b2167bbe2ca8f4  gcc/vr-values.h
! e139f60dc114f61888f7f0d6be9919d9  gcc/vtable-verify.cc
  b1375286068f9ca70e290ce9a506bf2f  gcc/vtable-verify.h
! fb28fa3e9bc0bb169e4cdfe015405cc6  gcc/warning-control.cc
  9cb13ff5d429d6e67976ef4de9baa933  gcc/web.cc
  e164527fa2ee6715cf2af8861bacd107  gcc/wide-int-bitmask.h
  1b202f82a19624ac3a25fa1a3f24fc9d  gcc/wide-int-print.cc
  9edad7be0af7a88f4f4b05afeef55e59  gcc/wide-int-print.h
! cabd25cbfb9f8a0f15a27a3dbbf33aae  gcc/wide-int.cc
! b9002f6e3447b71f88677a616cf6e810  gcc/wide-int.h
  270601d5667d37001f6cceedc54db709  gcc/xcoff.h
  9bbcc6c5fc2143d227f9bb62f34ddaed  gcc/xml-printer.h
  36083181908ce997d5ccb6a13d6a0420  gcc/xml.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 131640,131646 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 7951d14fb62dcd2e310889d7b17da201  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  e4fcea241d25fd2866c6026dcccbe5bd  include/ansidecl.h
--- 131968,131974 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 0c1efdf3826b59ce5496c1aa1d503a4f  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  e4fcea241d25fd2866c6026dcccbe5bd  include/ansidecl.h
*************** e4fcea241d25fd2866c6026dcccbe5bd  includ
*** 131648,131692 ****
  ed012d2e1b2a35d00ee7b147a09713fe  include/collectorAPI.h
  2110ede75cbfd491e2b7bb4deb05b5c3  include/ctf.h
  4a7378da931c05c2172a79e6ed78de02  include/cuda/cuda.h
! 73105846f80b24f2de5ca33a74c4a3fd  include/demangle.h
! 622d688e2437daea4f45308fbc4b9825  include/doubly-linked-list.h
  de08e3c7e21f36ea23bcc1e19ef0d81f  include/dwarf2.def
  e3524ea4cc4a5d0491f3c5e034d8fce9  include/dwarf2.h
  a22fa0998e3b6214e560e27e65108188  include/dyn-string.h
  7b3b7a0b762230719a7769d22e8c552e  include/environ.h
  7547613e9b1a047a7ab38b56cee07d35  include/fibheap.h
  0eef9b8faf693ce2239190d02f66ed76  include/filenames.h
! 6ecba0b8174bade2ad04bf2270a587b9  include/floatformat.h
  0aad86732d8daaeebea3b853803b1d4c  include/fnmatch.h
  9232b9a40242bf1c6326f16ca0d9c9e7  include/gcc-c-fe.def
  ff8608ebca7f383f54b64f18d8f39542  include/gcc-c-interface.h
! bc0703195f68825eedb5f2ecc8359ea5  include/gcc-cp-fe.def
  38f9b31b1c8cf769aa1c437d0c0e614e  include/gcc-cp-interface.h
  1f473e7d70366fbbe39ec745cde53247  include/gcc-interface.h
  449fdb595aee67684de51e4fd976f01b  include/gdb/gdb-index.h
  22135c8657b517d667c6d7e6b9b0de3c  include/getopt.h
! e4201c1533f78bca5a356d6bb4a0744b  include/gomp-constants.h
  3c78dff688fb8d8a53788a7820f5f1f8  include/hashtab.h
! 2118d769c13ea72b98f0c28e1db51b7b  include/hsa.h
! d551a31f3c70723b0e716ae5b1248096  include/hsa_ext_amd.h
  6188b71a256d4cdc0522d9d8ff6f2807  include/hsa_ext_image.h
  0766533c1949ff4fe987a4af50cdb32c  include/leb128.h
  ce863ca5e88324199af7ad39073c7d6e  include/libcollector.h
  80b25a2bff9d15ed6c56f74217f80b76  include/libfcollector.h
! 19239a64a518a0c34e43a916d31581f7  include/libiberty.h
! 269e96117e918d8d18fc74875ee6df38  include/longlong.h
  8dd60990ec321da0aa8c2a632444a5e3  include/lto-symtab.h
  f37c151c683fedf084760b845e6fa266  include/md5.h
  a2eac0ce250339616deec76191462af5  include/objalloc.h
  9a8f5999d889f25278b8d5722afda81b  include/obstack.h
  9ba97c329f8fe729c39299042bcdd02d  include/partition.h
! 38ddaa6e46a3d1259cea38a6d5c5529c  include/plugin-api.h
  bf956d6db2f5846c3979a44199c2359d  include/safe-ctype.h
  1ff55d48508fb7c313550994bde0ac94  include/sha1.h
  7e9d7a27aa476704c58fd210ef6e4b72  include/simple-object.h
  2d84d93f59f490f3e4a277d4af957d6f  include/sort.h
  a63d9bbd6d2a3c192294e4ddc38eeb70  include/spincount.h
! 84c7ce44722b791afafd7aeddbe16998  include/splay-tree.h
  c4d1e9f954552d144e97866328d6112f  include/symcat.h
  07ab30bfc0a43169f07b4e2c56c87ec5  include/timeval-utils.h
  34cfad09cc9812d1f3c73eb1f5993e1d  include/vtv-change-permission.h
--- 131976,132020 ----
  ed012d2e1b2a35d00ee7b147a09713fe  include/collectorAPI.h
  2110ede75cbfd491e2b7bb4deb05b5c3  include/ctf.h
  4a7378da931c05c2172a79e6ed78de02  include/cuda/cuda.h
! dd6a82ec4242e8c91ef7d0acccd20244  include/demangle.h
! c981ff1b5b1036b8e70b3039532c357a  include/doubly-linked-list.h
  de08e3c7e21f36ea23bcc1e19ef0d81f  include/dwarf2.def
  e3524ea4cc4a5d0491f3c5e034d8fce9  include/dwarf2.h
  a22fa0998e3b6214e560e27e65108188  include/dyn-string.h
  7b3b7a0b762230719a7769d22e8c552e  include/environ.h
  7547613e9b1a047a7ab38b56cee07d35  include/fibheap.h
  0eef9b8faf693ce2239190d02f66ed76  include/filenames.h
! f1b98fd1f44b449549a7dc2c61c00ba3  include/floatformat.h
  0aad86732d8daaeebea3b853803b1d4c  include/fnmatch.h
  9232b9a40242bf1c6326f16ca0d9c9e7  include/gcc-c-fe.def
  ff8608ebca7f383f54b64f18d8f39542  include/gcc-c-interface.h
! c80f0d1413922b6c23015d781fb57ade  include/gcc-cp-fe.def
  38f9b31b1c8cf769aa1c437d0c0e614e  include/gcc-cp-interface.h
  1f473e7d70366fbbe39ec745cde53247  include/gcc-interface.h
  449fdb595aee67684de51e4fd976f01b  include/gdb/gdb-index.h
  22135c8657b517d667c6d7e6b9b0de3c  include/getopt.h
! f97f81349f4e78570b384de459ef2e17  include/gomp-constants.h
  3c78dff688fb8d8a53788a7820f5f1f8  include/hashtab.h
! e10a926ac9146a394aa47259c571ac55  include/hsa.h
! 834b1af17bcbcd3944b557484c126a73  include/hsa_ext_amd.h
  6188b71a256d4cdc0522d9d8ff6f2807  include/hsa_ext_image.h
  0766533c1949ff4fe987a4af50cdb32c  include/leb128.h
  ce863ca5e88324199af7ad39073c7d6e  include/libcollector.h
  80b25a2bff9d15ed6c56f74217f80b76  include/libfcollector.h
! 200a8543a7ba0462f177c998500a89f8  include/libiberty.h
! 391344aea4266b85c740160777e9a5bf  include/longlong.h
  8dd60990ec321da0aa8c2a632444a5e3  include/lto-symtab.h
  f37c151c683fedf084760b845e6fa266  include/md5.h
  a2eac0ce250339616deec76191462af5  include/objalloc.h
  9a8f5999d889f25278b8d5722afda81b  include/obstack.h
  9ba97c329f8fe729c39299042bcdd02d  include/partition.h
! 6837804e7fa8b429e768acd1c2c57116  include/plugin-api.h
  bf956d6db2f5846c3979a44199c2359d  include/safe-ctype.h
  1ff55d48508fb7c313550994bde0ac94  include/sha1.h
  7e9d7a27aa476704c58fd210ef6e4b72  include/simple-object.h
  2d84d93f59f490f3e4a277d4af957d6f  include/sort.h
  a63d9bbd6d2a3c192294e4ddc38eeb70  include/spincount.h
! 394bcee930905312aa43ff70717d9f8e  include/splay-tree.h
  c4d1e9f954552d144e97866328d6112f  include/symcat.h
  07ab30bfc0a43169f07b4e2c56c87ec5  include/timeval-utils.h
  34cfad09cc9812d1f3c73eb1f5993e1d  include/vtv-change-permission.h
*************** f26e462c6f89f856041d649e1dfa527e  includ
*** 131700,131709 ****
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  ab9e00e84d092822a6cc241ba44f609b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 015f95a1c78b927c26e8f0ffa89a3fb6  libatomic/ChangeLog
  7774b8df5edff5c25147dd50568e9695  libatomic/Makefile.am
  9d8df11efea7190e7628fd28505b1691  libatomic/Makefile.in
! c71e52c92fcc7c91ee0b4a3685c98bf4  libatomic/acinclude.m4
  aca4499ba41919adee70a940d26e1b87  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
  85778ae74823824ea052d5783265c513  libatomic/cas_n.c
--- 132028,132037 ----
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  ab9e00e84d092822a6cc241ba44f609b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 83796de8bf663e1c03563a70801e0888  libatomic/ChangeLog
  7774b8df5edff5c25147dd50568e9695  libatomic/Makefile.am
  9d8df11efea7190e7628fd28505b1691  libatomic/Makefile.in
! 7ff46642515d8d59f1f5f78b96cf1b91  libatomic/acinclude.m4
  aca4499ba41919adee70a940d26e1b87  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
  85778ae74823824ea052d5783265c513  libatomic/cas_n.c
*************** ed3d69739cb2f35407547229f0393f92  libato
*** 131738,131744 ****
  18e12ed35584156293b3386bbaa4c810  libatomic/config/x86/fenv.c
  ff7145d48440dfce80b40e64432d54b2  libatomic/config/x86/host-config.h
  9dba85cfea4771af56b0d0f71f9dd213  libatomic/config/x86/init.c
! 7feef78bc80b5a1f27a5245e54c38533  libatomic/configure
  60d72b653adc80a0f9eb3e64a12806c5  libatomic/configure.ac
  0de16a62b4d69145d18c1019044e5415  libatomic/configure.tgt
  17dfc1d9215cf4dc01bf9f1341c7fadf  libatomic/exch_n.c
--- 132066,132072 ----
  18e12ed35584156293b3386bbaa4c810  libatomic/config/x86/fenv.c
  ff7145d48440dfce80b40e64432d54b2  libatomic/config/x86/host-config.h
  9dba85cfea4771af56b0d0f71f9dd213  libatomic/config/x86/init.c
! e92d2e9aa4205d2a68d767a42e69d168  libatomic/configure
  60d72b653adc80a0f9eb3e64a12806c5  libatomic/configure.ac
  0de16a62b4d69145d18c1019044e5415  libatomic/configure.tgt
  17dfc1d9215cf4dc01bf9f1341c7fadf  libatomic/exch_n.c
*************** ccfc3fd656c22a300f42e57f02683c9a  libato
*** 131760,131766 ****
  c93b85d7b95ed603e6bde591f826d6c5  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 8e58d225b6fad8afd12425ed65404cf1  libatomic/libatomic_i.h
  1708f3694a349f00c13d500f4bd5088c  libatomic/load_n.c
  25ed5bbc5d4edc9b495cdaad40b37de2  libatomic/store_n.c
  5ba2afdc380e3c38e33233fa77823f2c  libatomic/tas_n.c
--- 132088,132094 ----
  c93b85d7b95ed603e6bde591f826d6c5  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! d090e5d15fc9b1ad0de799b1be48ca66  libatomic/libatomic_i.h
  1708f3694a349f00c13d500f4bd5088c  libatomic/load_n.c
  25ed5bbc5d4edc9b495cdaad40b37de2  libatomic/store_n.c
  5ba2afdc380e3c38e33233fa77823f2c  libatomic/tas_n.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 131798,131804 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 75d629ad101d6f826af765d3d06a50e9  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  3666db75f4b55461411d215c60f35beb  libbacktrace/Makefile.am
  f9e4383641cb9203faa7433e51857ce2  libbacktrace/Makefile.in
--- 132126,132132 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 419243fd0af81cfe1de57deff84136f5  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  3666db75f4b55461411d215c60f35beb  libbacktrace/Makefile.am
  f9e4383641cb9203faa7433e51857ce2  libbacktrace/Makefile.in
*************** edfaf8bfb5589c6323039e8289c4bb3c  libbac
*** 131806,131812 ****
  4883dd3a6f42b0e31a8a56dbd4de9950  libbacktrace/aclocal.m4
  719dc569c62e5d69a68f4863a4ababba  libbacktrace/alloc.c
  f4b1ae56f4c4053efc21b5465684f95d  libbacktrace/allocfail.c
! ee751f0cbff61e7e1ce0637b912d8510  libbacktrace/allocfail.sh
  3bcfde89a7dff1482bb03683c70e2c53  libbacktrace/atomic.c
  56223a0e6fed39f8de32761005c19112  libbacktrace/backtrace-supported.h.in
  96e20545918ca8d6408cd9507c957153  libbacktrace/backtrace.c
--- 132134,132140 ----
  4883dd3a6f42b0e31a8a56dbd4de9950  libbacktrace/aclocal.m4
  719dc569c62e5d69a68f4863a4ababba  libbacktrace/alloc.c
  f4b1ae56f4c4053efc21b5465684f95d  libbacktrace/allocfail.c
! 9957fac2a5bea80745c23eb0ff65516a  libbacktrace/allocfail.sh
  3bcfde89a7dff1482bb03683c70e2c53  libbacktrace/atomic.c
  56223a0e6fed39f8de32761005c19112  libbacktrace/backtrace-supported.h.in
  96e20545918ca8d6408cd9507c957153  libbacktrace/backtrace.c
*************** af9ddebed2e099e1b87b2f3ca1d3c59d  libbac
*** 131818,131824 ****
  46ec0883605fc53660c7f51dbe16b83f  libbacktrace/dwarf.c
  883b410489e200aea1b6ecc248562d86  libbacktrace/edtest.c
  1908cd42481d0b1a8a32ff691f4eaeb9  libbacktrace/edtest2.c
! 8371674f43ce712f9f131fc81911ee96  libbacktrace/elf.c
  46ea221f18220bbecd9d7128ca3f6741  libbacktrace/fileline.c
  2101239b2b163b2ca53d5ae30bbfaadf  libbacktrace/filetype.awk
  f074a8be4c44a8cd964cec9d10340d19  libbacktrace/install-debuginfo-for-buildid.sh.in
--- 132146,132152 ----
  46ec0883605fc53660c7f51dbe16b83f  libbacktrace/dwarf.c
  883b410489e200aea1b6ecc248562d86  libbacktrace/edtest.c
  1908cd42481d0b1a8a32ff691f4eaeb9  libbacktrace/edtest2.c
! a88412bf0b6f16559e7b447282b9b318  libbacktrace/elf.c
  46ea221f18220bbecd9d7128ca3f6741  libbacktrace/fileline.c
  2101239b2b163b2ca53d5ae30bbfaadf  libbacktrace/filetype.awk
  f074a8be4c44a8cd964cec9d10340d19  libbacktrace/install-debuginfo-for-buildid.sh.in
*************** a03a89b65820bc9322189d3a99e333b5  libcc1
*** 131884,131897 ****
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 9393d6292882a64d4c74b8193c57bbe8  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
! ca1c6fe3df5427016005ce753c73d454  libcody/README.md
! 99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
  6085d20f25e5c2f4809b76fc28261fb5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! fbd197f7a8c4380bf81aa2ca35950438  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
--- 132212,132225 ----
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 488031aef62106fdccd5ce01df450e86  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
! 1de0cccff69d4de00876be155e9418d4  libcody/README.md
! 7e76ca01b2ee9c3e8561926fd28e0463  libcody/buffer.cc
  6085d20f25e5c2f4809b76fc28261fb5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! f468ab3706cc61a3d02d6fe88a329bb6  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 131903,131909 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  c94add0032978604acf65591bb86d2d6  libcody/server.cc
! 81c98ed7ef4bce8b3b1c6b91a070f6a8  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  4f1e80b433907c013fc6e4eaf2b0e8aa  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 132231,132237 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  c94add0032978604acf65591bb86d2d6  libcody/server.cc
! 9bfe5fc5e3a32308c035621e0b912b60  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  4f1e80b433907c013fc6e4eaf2b0e8aa  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** ce84d633b2df3cc02e63c283e8c7cbd8  libcpp
*** 131915,131935 ****
  154834f1a6c5c86f0234b15fb1935611  libcpp/directives.cc
  e6648c5f8f4e111883be81dc9e8dd630  libcpp/errors.cc
  37523565269ad97ff6a5145be04df661  libcpp/expr.cc
! 68b59487adfb7aaadd47d0fe0808c171  libcpp/files.cc
  d7530c9a36bef9a00a690083401e3c83  libcpp/generated_cpp_wcwidth.h
  bf0c57c21ee2aeaa654ee6781e41cad5  libcpp/identifiers.cc
! a72f35908cfbf53a2b400c41cc011477  libcpp/include/cpplib.h
  a5730f5ab9435bb5d8446830fe8f3706  libcpp/include/label-text.h
! 8cb860e4fa9bf4c99ce3c92bfa2ca0c8  libcpp/include/line-map.h
  6c27e4af6058e741469234cdf0f74c01  libcpp/include/mkdeps.h
  0c5086e2180aacc727c73843682f1fe9  libcpp/include/rich-location.h
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
  5a44adf11235c72de2f0c0e89db76903  libcpp/init.cc
! 5dd7b91660095eb30390141c1882293c  libcpp/internal.h
! eec01dea6d3427e2180f77d3002420b8  libcpp/lex.cc
! 249925d70293b09b52183c1e2c75784d  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! 8fdce4dfce3a69798f4bcfddbc367465  libcpp/macro.cc
  d26583cbbddfb0c82d15d845129a84da  libcpp/makeucnid.cc
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
  41062cc2160022988a21f2594a674c19  libcpp/mkdeps.cc
--- 132243,132263 ----
  154834f1a6c5c86f0234b15fb1935611  libcpp/directives.cc
  e6648c5f8f4e111883be81dc9e8dd630  libcpp/errors.cc
  37523565269ad97ff6a5145be04df661  libcpp/expr.cc
! 492ac13a792a1dcf2f9c99dae6140d14  libcpp/files.cc
  d7530c9a36bef9a00a690083401e3c83  libcpp/generated_cpp_wcwidth.h
  bf0c57c21ee2aeaa654ee6781e41cad5  libcpp/identifiers.cc
! 139a1133efad4d026c278b52d6564aa9  libcpp/include/cpplib.h
  a5730f5ab9435bb5d8446830fe8f3706  libcpp/include/label-text.h
! 475c6ef3f91227b1431876de0297795a  libcpp/include/line-map.h
  6c27e4af6058e741469234cdf0f74c01  libcpp/include/mkdeps.h
  0c5086e2180aacc727c73843682f1fe9  libcpp/include/rich-location.h
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
  5a44adf11235c72de2f0c0e89db76903  libcpp/init.cc
! ca76f744b252e5faf236d92d56037649  libcpp/internal.h
! cda6f5ee4a4fce0e35c8343e245f515d  libcpp/lex.cc
! 6ebf32a89523ee7be621fc42417f913f  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! e7aac78ea4aceda46419845a92c76995  libcpp/macro.cc
  d26583cbbddfb0c82d15d845129a84da  libcpp/makeucnid.cc
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
  41062cc2160022988a21f2594a674c19  libcpp/mkdeps.cc
*************** f0fd7a6ac5418ba892e202413e7023f5  libcpp
*** 131962,131973 ****
  23984f1c939c855d527f2c76d3fb6fc4  libcpp/printable-chars.inc
  70005a507a1d4afc4da48e0d4e7a6675  libcpp/symtab.cc
  93c0e66f48d684fddd186b6f6d090f54  libcpp/system.h
! 7dfd1093b14aa6e5f7429eccd3369d46  libcpp/traditional.cc
  906573e05b3938750e0f4d7289046f52  libcpp/ucnid.h
  7f7e98fbd0a3dd7aaefc862f98359a5f  libcpp/ucnid.tab
  4c4a084d9e4e25c5098afa512a140c32  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 862778e1ff58b9c108cfdd1e25d51f30  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  e345b19739c78030bddaa4fa39f1c071  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
--- 132290,132301 ----
  23984f1c939c855d527f2c76d3fb6fc4  libcpp/printable-chars.inc
  70005a507a1d4afc4da48e0d4e7a6675  libcpp/symtab.cc
  93c0e66f48d684fddd186b6f6d090f54  libcpp/system.h
! 89498390c9f54d7259b2c3b23059a98c  libcpp/traditional.cc
  906573e05b3938750e0f4d7289046f52  libcpp/ucnid.h
  7f7e98fbd0a3dd7aaefc862f98359a5f  libcpp/ucnid.tab
  4c4a084d9e4e25c5098afa512a140c32  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 98691b12c7a7832cb468b2fad7a023e2  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  e345b19739c78030bddaa4fa39f1c071  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
*************** cf493fac55a19739e5da17b8040d80b8  libdec
*** 131991,132000 ****
  bebbf39cc146f4e202f630499f490974  libdecnumber/configure
  e05bd72f50ea318b425e0ecb97f0217e  libdecnumber/configure.ac
  7a658463fb58bdb8ac6c171adf51d5d9  libdecnumber/dconfig.h
! 34fbbdc4a5bb47719f976a24690c502b  libdecnumber/decBasic.c
! 14d3a5005eeac470e7f8bde3b623407d  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 6ec2756ff396c1489712a0d7f8863f19  libdecnumber/decContext.c
  cc5b3a4e4091901639f2757e6fbbd391  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
  da0a423a0efb5ba7f1e97d393a05a2c0  libdecnumber/decDPD.h
--- 132319,132328 ----
  bebbf39cc146f4e202f630499f490974  libdecnumber/configure
  e05bd72f50ea318b425e0ecb97f0217e  libdecnumber/configure.ac
  7a658463fb58bdb8ac6c171adf51d5d9  libdecnumber/dconfig.h
! 40c27da417aaf81f278aae1d5ac3efa2  libdecnumber/decBasic.c
! 209dda81edb81fc3954982c10dcb5e98  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 10495343bd6b20995ccccfb2d2817651  libdecnumber/decContext.c
  cc5b3a4e4091901639f2757e6fbbd391  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
  da0a423a0efb5ba7f1e97d393a05a2c0  libdecnumber/decDPD.h
*************** da0a423a0efb5ba7f1e97d393a05a2c0  libdec
*** 132005,132013 ****
  973bd7cd0b90d0b280644fe6a1482aef  libdecnumber/decExcept.c
  00f349edf8e8da229e3a8da90aa1aa47  libdecnumber/decExcept.h
  cd8b97f66df963f03f514a9d717c7abd  libdecnumber/decLibrary.c
! 39ddd1de8884a67f60be72bc0a862aa9  libdecnumber/decNumber.c
  8169a1ac3bbad617ae9cf54f58cde6c2  libdecnumber/decNumber.h
! b76511626f87d807e4a5683ce8254929  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
  1c85d212467a564194444f20bfe5620e  libdecnumber/decPacked.c
  2042e1c81f4419417aa1fa019119742f  libdecnumber/decPacked.h
--- 132333,132341 ----
  973bd7cd0b90d0b280644fe6a1482aef  libdecnumber/decExcept.c
  00f349edf8e8da229e3a8da90aa1aa47  libdecnumber/decExcept.h
  cd8b97f66df963f03f514a9d717c7abd  libdecnumber/decLibrary.c
! 304c79f45fc366206b522298bcafa57d  libdecnumber/decNumber.c
  8169a1ac3bbad617ae9cf54f58cde6c2  libdecnumber/decNumber.h
! 69d33eda10c9bb11cfc0f7985498ba12  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
  1c85d212467a564194444f20bfe5620e  libdecnumber/decPacked.c
  2042e1c81f4419417aa1fa019119742f  libdecnumber/decPacked.h
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 132031,132037 ****
  d4974701aea29eb07237c3fe5699033a  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! e5ffd9885442b1f742a3bcf9b31c4865  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 132359,132365 ----
  d4974701aea29eb07237c3fe5699033a  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! 94e13a16da0226a6b0bd9c3afe598111  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** dce80ba7e038ca18591aabc6d3d2582c  libffi
*** 132227,132233 ****
  e45c1fda03f045bc2dc2e96a48664f5f  libffi/testsuite/emscripten/node-tests.sh
  5bbe5076002911577cdf421ea8f595a5  libffi/testsuite/emscripten/test.html
  00ebe746e96e11e16b20192e55800b94  libffi/testsuite/emscripten/test_libffi.py
! bbd8a1375a77ff51b8436d56af6d51c1  libffi/testsuite/lib/libffi.exp
  554fbd4b8e0ec7aad17b2c2fad7f3b2e  libffi/testsuite/lib/target-libpath.exp
  68db067550882b3b091a82df87310fff  libffi/testsuite/lib/wrapper.exp
  38c126f0fb1a075c0bd7591eca1e0385  libffi/testsuite/libffi.bhaible/Makefile
--- 132555,132561 ----
  e45c1fda03f045bc2dc2e96a48664f5f  libffi/testsuite/emscripten/node-tests.sh
  5bbe5076002911577cdf421ea8f595a5  libffi/testsuite/emscripten/test.html
  00ebe746e96e11e16b20192e55800b94  libffi/testsuite/emscripten/test_libffi.py
! f8f9eaab858cd61d8b5b0a05b920d7af  libffi/testsuite/lib/libffi.exp
  554fbd4b8e0ec7aad17b2c2fad7f3b2e  libffi/testsuite/lib/target-libpath.exp
  68db067550882b3b091a82df87310fff  libffi/testsuite/lib/wrapper.exp
  38c126f0fb1a075c0bd7591eca1e0385  libffi/testsuite/libffi.bhaible/Makefile
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 132463,132469 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.threads/ffitest.h
  47823fb622c1b9c674f97230b0a76e49  libffi/testsuite/libffi.threads/threads.exp
  654a797b8bac51161e578c052ad36145  libffi/testsuite/libffi.threads/tsan.c
! ef053e556d1ac5f1c356d944c23061d7  libga68/ChangeLog
  e53a0cec9bb8b49f90bb24ae600d40c2  libga68/Makefile.am
  c277867afd267be068d94edc9f7362f5  libga68/Makefile.in
  e582170826a5049ebe5f76ccb66fe5f2  libga68/README
--- 132791,132797 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.threads/ffitest.h
  47823fb622c1b9c674f97230b0a76e49  libffi/testsuite/libffi.threads/threads.exp
  654a797b8bac51161e578c052ad36145  libffi/testsuite/libffi.threads/tsan.c
! c5c6b49dfbfa520f420c3316d5fc72c2  libga68/ChangeLog
  e53a0cec9bb8b49f90bb24ae600d40c2  libga68/Makefile.am
  c277867afd267be068d94edc9f7362f5  libga68/Makefile.in
  e582170826a5049ebe5f76ccb66fe5f2  libga68/README
*************** dc1f3fea48488f244035378b9acf395f  libga6
*** 132474,132484 ****
  9afd89b8b78404a336be6bf07afc2d77  libga68/configure.ac
  4195f62f6a0f023662ec3388dcd397dc  libga68/floor.c
  7caddd973773320b8d4520f3e575b2b1  libga68/ga68-alloc.c
! ab4bfff29b367495b338f951fb77ffd9  libga68/ga68-error.c
  67cd7aeea0aa28f2dfa7d11f4c5380a3  libga68/ga68-math.c
  432cfa7a4d9e1f17f6161ac30835ee60  libga68/ga68-posix.c
  12f59efc2c02c8e22bec45f9a718e690  libga68/ga68-standenv.c
! 7aca1e001fafa5f4c00e9f7b50aca002  libga68/ga68-unistr.c
  e0b2ba9a0bf41fccbcbd614e5674ef00  libga68/ga68.h
  1e4f8c0bbb032cb590ceb9097061e959  libga68/ga68.map
  93e37daf5a03d1329323ba4894247de0  libga68/libga68.c
--- 132802,132812 ----
  9afd89b8b78404a336be6bf07afc2d77  libga68/configure.ac
  4195f62f6a0f023662ec3388dcd397dc  libga68/floor.c
  7caddd973773320b8d4520f3e575b2b1  libga68/ga68-alloc.c
! 822a8543ecfd305a8d178e44d91a02c2  libga68/ga68-error.c
  67cd7aeea0aa28f2dfa7d11f4c5380a3  libga68/ga68-math.c
  432cfa7a4d9e1f17f6161ac30835ee60  libga68/ga68-posix.c
  12f59efc2c02c8e22bec45f9a718e690  libga68/ga68-standenv.c
! e0d4d1b93e97d3061fae262a44b1535b  libga68/ga68-unistr.c
  e0b2ba9a0bf41fccbcbd614e5674ef00  libga68/ga68.h
  1e4f8c0bbb032cb590ceb9097061e959  libga68/ga68.map
  93e37daf5a03d1329323ba4894247de0  libga68/libga68.c
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 132488,132496 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 5742146e1134572baed8f8af4973317c  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! ba1ecf5f6e509462d341532b3bf23177  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  aee2000eefb98b188a6cd051fd4e1e72  libgcc/config/aarch64/__arm_get_current_vg.S
--- 132816,132824 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 31d08a245f7e71b7cc0287e2c5524f9e  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! 9bebe7e0d6cbbeda9b0b588a1ab371eb  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  aee2000eefb98b188a6cd051fd4e1e72  libgcc/config/aarch64/__arm_get_current_vg.S
*************** d1bc698652ed847a9a315e51f8dfecc1  libgcc
*** 132635,132641 ****
  f55306289bae5967429b6d421c1be6dd  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
! c01476abe456556d2a2e48eb9b52431d  libgcc/config/avr/libf7/ChangeLog
  5189f35739cd9793235e4b49d740e6ed  libgcc/config/avr/libf7/asm-defs.h
  bd9ea3adc1ea81e3d0d05dc1b9999851  libgcc/config/avr/libf7/f7-renames.h
  92bbb0397c760b4e93af191f49964ad4  libgcc/config/avr/libf7/f7-wraps.h
--- 132963,132969 ----
  f55306289bae5967429b6d421c1be6dd  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
! 7e5ab1aae3899b9a3bdf26f190b8e46f  libgcc/config/avr/libf7/ChangeLog
  5189f35739cd9793235e4b49d740e6ed  libgcc/config/avr/libf7/asm-defs.h
  bd9ea3adc1ea81e3d0d05dc1b9999851  libgcc/config/avr/libf7/f7-renames.h
  92bbb0397c760b4e93af191f49964ad4  libgcc/config/avr/libf7/f7-wraps.h
*************** d250706c46cb1217dd828894cbba2d45  libgcc
*** 132648,132655 ****
  021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  92d858f8a00be9163a745497796e81c2  libgcc/config/avr/libf7/libf7-const.def
  b73226e862ca01a6b2bdefee583d73ab  libgcc/config/avr/libf7/libf7-constdef.h
! e0d52767ffbd916d11a487e542c9da0a  libgcc/config/avr/libf7/libf7.c
! 9ed79405aa0e7f22874c229eda84b03e  libgcc/config/avr/libf7/libf7.h
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
--- 132976,132983 ----
  021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  92d858f8a00be9163a745497796e81c2  libgcc/config/avr/libf7/libf7-const.def
  b73226e862ca01a6b2bdefee583d73ab  libgcc/config/avr/libf7/libf7-constdef.h
! 8f9f8695465924a6102dbabfd3d960b7  libgcc/config/avr/libf7/libf7.c
! a631984074d18baaf999605a235fd8d7  libgcc/config/avr/libf7/libf7.h
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
*************** c34db7eb4a99862947c349878e2c2cd6  libgcc
*** 132846,132852 ****
  398f7a22c3634540f747f1e53afefe9b  libgcc/config/i386/gthr-win32.c
  282d793208fef5cb75b797e4dad023ea  libgcc/config/i386/gthr-win32.h
  74b4d2fb578bea1c8304a4d83dd1bac4  libgcc/config/i386/heap-trampoline.c
! 70f006cce2a22568166d0a3d379d4a87  libgcc/config/i386/i386-asm.h
  43034a3293124235dd63794fee5aa16a  libgcc/config/i386/libgcc-bsd.ver
  400722e833d6ddbea9be5b79d578ba4d  libgcc/config/i386/libgcc-cygming.ver
  d270985c9bb872cf2afff7378b5497d8  libgcc/config/i386/libgcc-darwin.ver
--- 133174,133180 ----
  398f7a22c3634540f747f1e53afefe9b  libgcc/config/i386/gthr-win32.c
  282d793208fef5cb75b797e4dad023ea  libgcc/config/i386/gthr-win32.h
  74b4d2fb578bea1c8304a4d83dd1bac4  libgcc/config/i386/heap-trampoline.c
! 6d508997f74a9bb8f2863372b006e5a8  libgcc/config/i386/i386-asm.h
  43034a3293124235dd63794fee5aa16a  libgcc/config/i386/libgcc-bsd.ver
  400722e833d6ddbea9be5b79d578ba4d  libgcc/config/i386/libgcc-cygming.ver
  d270985c9bb872cf2afff7378b5497d8  libgcc/config/i386/libgcc-darwin.ver
*************** acd4d6f2d984919bb89853010a174e84  libgcc
*** 132855,132866 ****
  992a775f9c03e095afae95c1faba961c  libgcc/config/i386/libgcc-sol2.ver
  177c1ddb45f689a78031cc06f0aabe36  libgcc/config/i386/linux-unwind.h
  08e2520f3b2b5d526a466453d9a7da0e  libgcc/config/i386/morestack.S
! 2387ad8069c812112168d584e9871538  libgcc/config/i386/resms64.h
! 2dd7e7c10f2b6ab696cde150b4aa7fcf  libgcc/config/i386/resms64f.h
! 58906d8ccd58081286eb8b654a86b02c  libgcc/config/i386/resms64fx.h
! 201e6a5885769d81d19d05b3605af200  libgcc/config/i386/resms64x.h
! daed15be8060b16511519521eea7e62d  libgcc/config/i386/savms64.h
! 367d259a6480340d5f496c76737c7a40  libgcc/config/i386/savms64f.h
  0145278af87a9ec1450b44496fcf8010  libgcc/config/i386/sfp-exceptions.c
  d15ae0137ca61a07b6d128c923e73d53  libgcc/config/i386/sfp-machine.h
  67d172abb33bb417c218ded0ba896609  libgcc/config/i386/shadow-stack-unwind.h
--- 133183,133194 ----
  992a775f9c03e095afae95c1faba961c  libgcc/config/i386/libgcc-sol2.ver
  177c1ddb45f689a78031cc06f0aabe36  libgcc/config/i386/linux-unwind.h
  08e2520f3b2b5d526a466453d9a7da0e  libgcc/config/i386/morestack.S
! 63d0a232f76bc37d0ccef1decf0ca79d  libgcc/config/i386/resms64.h
! 9721136aaed5bb95001c65d349b0d267  libgcc/config/i386/resms64f.h
! 09d29133d8dcf61d4d691314a050e76a  libgcc/config/i386/resms64fx.h
! 5eeba6b7dd33bbf2f69e1108ea30a0ea  libgcc/config/i386/resms64x.h
! 9063155187dcf69cf01aff682169349c  libgcc/config/i386/savms64.h
! 2163134215e76e284dba7486fffe5e70  libgcc/config/i386/savms64f.h
  0145278af87a9ec1450b44496fcf8010  libgcc/config/i386/sfp-exceptions.c
  d15ae0137ca61a07b6d128c923e73d53  libgcc/config/i386/sfp-machine.h
  67d172abb33bb417c218ded0ba896609  libgcc/config/i386/shadow-stack-unwind.h
*************** a5267c42def0d7d222389e49a1f25937  libgcc
*** 133846,133852 ****
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
  4762bbd641d834d1364ffcb248184290  libgcc/enable-execute-stack-mprotect.c
  f3533de28e3f4c8585bd12b22e5df388  libgcc/find-symver.awk
! 18c81b6bbf6ae39bf3ba28625f2ff1b8  libgcc/fixed-bit.c
  56e4dd27a7bf3d78cc22fc3b2a5bdb67  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
--- 134174,134180 ----
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
  4762bbd641d834d1364ffcb248184290  libgcc/enable-execute-stack-mprotect.c
  f3533de28e3f4c8585bd12b22e5df388  libgcc/find-symver.awk
! fd841ed744399a2ce56630d7a97d2239  libgcc/fixed-bit.c
  56e4dd27a7bf3d78cc22fc3b2a5bdb67  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
*************** a48e808f88a857eaaf81c5369440734b  libgcc
*** 133871,133880 ****
  94234dd733df732fee839ea9d5afa16a  libgcc/libgcc2.h
  15c4e8a5de5b58107916b1afa5fae1ff  libgcc/libgcov-driver-system.c
  e87d4eb1a1969a7eb370af0aaf4f6d5c  libgcc/libgcov-driver.c
! 9a873ac12562d1f10ccdd749e145a26b  libgcc/libgcov-interface.c
  30a48161deffce5a9c3ba086eddd299b  libgcc/libgcov-merge.c
  be426a13cb3cf2fe05c093350c1e3d2e  libgcc/libgcov-profiler.c
! 46b7300ec018e93d9e64c321fcb4efd7  libgcc/libgcov-util.c
  68fba7574e237f620268317070f43e76  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
--- 134199,134208 ----
  94234dd733df732fee839ea9d5afa16a  libgcc/libgcc2.h
  15c4e8a5de5b58107916b1afa5fae1ff  libgcc/libgcov-driver-system.c
  e87d4eb1a1969a7eb370af0aaf4f6d5c  libgcc/libgcov-driver.c
! 329c51413960f82175d25224e88ac481  libgcc/libgcov-interface.c
  30a48161deffce5a9c3ba086eddd299b  libgcc/libgcov-merge.c
  be426a13cb3cf2fe05c093350c1e3d2e  libgcc/libgcov-profiler.c
! 7493467ba8c4d8935cc8130583136b54  libgcc/libgcov-util.c
  68fba7574e237f620268317070f43e76  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
*************** a8ccda6effc550431bf1d008bbc3cf08  libgcc
*** 134052,134062 ****
  cc837ef06612bef8803e98c6da269c76  libgcc/unwind-dw2-fde-dip.c
  29555e09ade7810fa0e64be543fbbce9  libgcc/unwind-dw2-fde.c
  f593995a2d6ec63a2f32fdb0ba74184e  libgcc/unwind-dw2-fde.h
! 823dd73d134cc1abc68b88f894b94621  libgcc/unwind-dw2.c
  921ab7d96aaa431408b118ae62027e37  libgcc/unwind-dw2.h
  0e37dd2c3a78e45de246e2f40d78c94e  libgcc/unwind-generic.h
  18cf8bd23d03ef253ef7f92990747659  libgcc/unwind-pe.h
! 4247fd9156e04521bac0f1285e5c4cb7  libgcc/unwind-seh.c
  0e9296843da29067e034251cd1738366  libgcc/unwind-sjlj.c
  3b45a52dbf28e70dfd63a4a6bd72bf06  libgcc/unwind.inc
  7d0fcd9b29826f52ef8c86e12092af8b  libgcc/vtv_end.c
--- 134380,134390 ----
  cc837ef06612bef8803e98c6da269c76  libgcc/unwind-dw2-fde-dip.c
  29555e09ade7810fa0e64be543fbbce9  libgcc/unwind-dw2-fde.c
  f593995a2d6ec63a2f32fdb0ba74184e  libgcc/unwind-dw2-fde.h
! e1e67f16cce16539d1724d40bc78bb7c  libgcc/unwind-dw2.c
  921ab7d96aaa431408b118ae62027e37  libgcc/unwind-dw2.h
  0e37dd2c3a78e45de246e2f40d78c94e  libgcc/unwind-generic.h
  18cf8bd23d03ef253ef7f92990747659  libgcc/unwind-pe.h
! 6837f08c6fdc254b92a386c5137e31ed  libgcc/unwind-seh.c
  0e9296843da29067e034251cd1738366  libgcc/unwind-sjlj.c
  3b45a52dbf28e70dfd63a4a6bd72bf06  libgcc/unwind.inc
  7d0fcd9b29826f52ef8c86e12092af8b  libgcc/vtv_end.c
*************** b7bdc64c03d62f87f61d3d8a61a75d2d  libgcc
*** 134064,134147 ****
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 9fb91cc2dbbc22a810110dae50e65082  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
! 2b9a0eb22401937836af2167cf0d5250  libgcobol/Makefile.am
! 2f7b3f483bbf4e5b4e472e3a381cecd1  libgcobol/Makefile.in
! ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  a69c3f28d1be90eb0b0287fa450c3684  libgcobol/acinclude.m4
! edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
! bc35eb1a51484849b97f6fdb7c63051e  libgcobol/charmaps.cc
! de778fe75c8450ce8efcd576e5775ccf  libgcobol/charmaps.h
! 1dcf42fc9d7c561272acfb97737b49bf  libgcobol/common-defs.h
! 6f92fa32eabcfff6e25b59104fbd9a6a  libgcobol/compat/README.md
! 9724ffdf971bebe59c8b2e8708a371b3  libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl
! 848d2a16eb4e04f66947f0a4f3388039  libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl
! 99d695f529024b68583602d0dd126e38  libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl
! 6c02bd6dd638631136b344cff89cefb8  libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl
! f49bdd3b2cc069db17d0b4f9a6a02655  libgcobol/compat/gnu/udf/stored-char-length.cbl
! 79fab4a17bf7e71b69ea829387984111  libgcobol/compat/t/Makefile
! b293e5545f3c614e2e8d23f125a576b6  libgcobol/compat/t/smoke.cbl
  6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
! 3711ddfe829126de8ec66a46ed781cef  libgcobol/configure
! afed6df976e368f05886dbdd674f6f4f  libgcobol/configure.ac
! f9612f96c50ee0e25fbb1a07e6cf0047  libgcobol/configure.tgt
  ee9716a45633fbc51fcf882ae2a28ae7  libgcobol/constants.cc
! f2c3cff1bc18796f966af4f4144b8a45  libgcobol/ec.h
! ccd6b9ba0e615b569343d61602258dad  libgcobol/encodings.h
! b3961d8aa907be49adced89cb2a1f63f  libgcobol/exceptl.h
! 31a521e05ab21b32438d903f9b38fcad  libgcobol/gcobolio.h
! 25cd066424f46a0ff417b69c75f02c0d  libgcobol/gfileio.cc
  0ae92e32a618fa39e3ff18a50cbfff17  libgcobol/gfileio.h
! 00897430ea1b64e97f25b81f45fcb4d4  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
! 6331c900d11c339fd8bc0267cdf20771  libgcobol/inspect.cc
! d3ffa07ef9e8948e09339580b89f1e9c  libgcobol/intrinsic.cc
! 2b355d9cab0ba548b859425b4149b157  libgcobol/io.cc
! e56dd1238c5d2a7eb655018f1b536b0a  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 9993e9aa1f9cd10320d7b3545bc39d20  libgcobol/libgcobol.cc
! afb8e9e7c276f9360fc31ed2e57cbbc9  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  96b721e88c5f79776cedad463373ad78  libgcobol/posix/README.md
  6c13b507d443d1aa5c60a6b8939dd068  libgcobol/posix/bin/Makefile
  de91f2c442f5429dd57a380d4e77abd4  libgcobol/posix/bin/headers
  684a25ba570455c35402148c3b528c13  libgcobol/posix/bin/scrape.awk
  807e38148d3d302d10877fa78d259600  libgcobol/posix/bin/sizeofs.c
! df27d0831414ed4ff9aa6640fe95d3f7  libgcobol/posix/bin/udf-gen
! d33a3081c7c2f2ff39cf646a35ec62a8  libgcobol/posix/cpy/posix-errno.cbl
! c89d8daf75b2fb1290c281d696f1bf34  libgcobol/posix/cpy/psx-lseek.cpy
! df954afb031169710b0fcef1d2c63141  libgcobol/posix/cpy/psx-open.cpy
! 89c4c2d899376a5caefdc9ee44531f91  libgcobol/posix/cpy/statbuf.cpy
! 3d39925c2d07caf265c66370d2845166  libgcobol/posix/cpy/tm.cpy
  c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/shim/errno.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
! 516b62aedf667ea90257b00719f2b3bb  libgcobol/posix/shim/lseek.cc
! b982ac79d78280ab53706df59f360d36  libgcobol/posix/shim/open.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
  0627b6b8874b55669b3c13b6a52ef590  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
  db2b66c495eb88a1d722067a5aa3c98b  libgcobol/posix/t/Makefile
! 7462812a55d7c4eeb70bf0b480bcf193  libgcobol/posix/t/errno.cbl
! 2e0537c5b8b0cf68972040d3829a3cbb  libgcobol/posix/t/exit.cbl
! c185f49b81cdf8493183fa80bac2a3a7  libgcobol/posix/t/localtime.cbl
! 30c9799508c129fb6190e083a7a7837a  libgcobol/posix/t/stat.cbl
! 7eb31de3bb34e7725a6cc8285ec9c00e  libgcobol/posix/udf/posix-exit.cbl
! 6d038b619df8d01dc250a119fd55a4d2  libgcobol/posix/udf/posix-ftruncate.cbl
! 63471924bc915602fcc79a08d2844cd0  libgcobol/posix/udf/posix-localtime.cbl
! b19197a360b91a408994e0794c230d8c  libgcobol/posix/udf/posix-lseek.cbl
! 9905637f1731df63655b7c69bee2138d  libgcobol/posix/udf/posix-mkdir.cbl
! 39eb8784fa631ebdc03ed7471c26b5d7  libgcobol/posix/udf/posix-open.cbl
! 4e9e80c272a960785feb1d043c4c9f47  libgcobol/posix/udf/posix-read.cbl
! b596ffc38045755f7ef0c54f1d5555a1  libgcobol/posix/udf/posix-stat.cbl
! d5f038474fd5faad3f79701cbb81bf30  libgcobol/posix/udf/posix-unlink.cbl
! 22033717613b11dd6cb636ed41f4a1ad  libgcobol/posix/udf/posix-write.cbl
  df0869fbdcd7a132ac266d2b365bf481  libgcobol/stringbin.cc
  89dfd764956cfbc2affbf93a401839c9  libgcobol/stringbin.h
! 9486776ee88dd841ac94aa73290a74bf  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
! db95b8e503515d7615559adc1be6164a  libgcobol/xmlparse.cc
! e7dfc760bc2e917a5d6d2996513a3d69  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 134392,134512 ----
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! adffbffe7d4e00957642004c213ed6ec  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
! ff8cbc257c674fdf2a319a0a98b878c4  libgcobol/Makefile.am
! c11a88f618d7ae717508c9b114374beb  libgcobol/Makefile.in
! b0657c8d818882b87c44a17db46300df  libgcobol/README
  a69c3f28d1be90eb0b0287fa450c3684  libgcobol/acinclude.m4
! 916ce15e68376e661a41f183252a74ec  libgcobol/aclocal.m4
! 1087a9f3e738d3decac9f6b01d71bc9b  libgcobol/charmaps.cc
! 0cb43a94ed27462e331ab6c781721373  libgcobol/charmaps.h
! dab6b6b02f1bbd9b62ac7bbadef38b95  libgcobol/common-defs.h
! fba8f609927b913d1ca3d30a27d0febc  libgcobol/compat/README.md
! 69fc231dbe0ada7d183b3b115faee461  libgcobol/compat/gnu/cpy/cblproto.cpy
! cd939f69cddc5b160139ea6907d79ef4  libgcobol/compat/gnu/cpy/cbltypes.cpy
! b9fd1af86267d7a59f7f29e28f6dd6a7  libgcobol/compat/gnu/cpy/stored-char-length.cpy
! 9aeae341cf65d7bbd79b4a5d224ef955  libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl
! cc30c6fcde30bf18921b1dc8fee4f23f  libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl
! bee369061a46d0c93ab0ee51e3bbdf73  libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl
! 142dc43cc05bf3df6c1149127f277e50  libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl
! 1bbcb8ea83d9ecaa7e7d01b95ffc6e31  libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl
! 58c7c22e6a52a860ee9b9b58d0e917e0  libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl
! c8fab41d1f0fa21b15b7fa7c3d134f4e  libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl
! e604f934e29ce5d9aa4ff12dc7aa87f6  libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl
! 9287b180f69b142832bf1019f04fa581  libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl
! baa24be97c750be96aad0d144793e86c  libgcobol/compat/gnu/lib/cbl_alloc_mem.3
! 1fabcc2348ed4131f8163d1e15f5c6e4  libgcobol/compat/gnu/lib/cbl_alloc_mem.cbl3
! 3242ef9aeaa6311bed81c62718a3ee99  libgcobol/compat/gnu/lib/cbl_check_file_exist.3
! 643e3dfd42a6767c767567995d470454  libgcobol/compat/gnu/lib/cbl_close_file.3
! 717401759cb30a3de1e21dde6f8085bb  libgcobol/compat/gnu/lib/cbl_create_file.3
! 637523063701413a0cb413995d5ead9f  libgcobol/compat/gnu/lib/cbl_delete_file.3
! 667080554de7bd540e8614e88ef045e4  libgcobol/compat/gnu/lib/cbl_free_mem.3
! e6a83413ab36e525f8c7ade9a2e027d7  libgcobol/compat/gnu/lib/cbl_open_file.3
! 8d141c3e4fd4011ddbc687da2a7217fe  libgcobol/compat/gnu/lib/cbl_read_file.3
! 1d1c74a984f5720e6183a23b0b00b2bb  libgcobol/compat/gnu/lib/cbl_write_file.3
! e955e51adb28f6f8f2ceb23595ea5465  libgcobol/compat/gnu/udf/cobrt-file-status.cbl
! fa09d031b2dd58cf363bbc9ef88e3638  libgcobol/compat/gnu/udf/stored-char-length.cbl
! adf499647094ed626e7326c18d45e37b  libgcobol/compat/t/Makefile
! 3f8e6d3c64398522d23c8f4d909b15ab  libgcobol/compat/t/smoke.cbl
  6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
! 1e78d66aae2ef682c74a6a4a0bb60fdd  libgcobol/configure
! ede045a132a5720d5dd585db12f8c221  libgcobol/configure.ac
! 491cba1b87576f84add391975992c7ce  libgcobol/configure.tgt
  ee9716a45633fbc51fcf882ae2a28ae7  libgcobol/constants.cc
! a5821ed24abf64b452f15f29da418d17  libgcobol/ec.h
! 20b3ffc0454e6b54c8c8c7a6e9213d2b  libgcobol/encodings.h
! 44aa23a1baad26222e629bf8cf03a357  libgcobol/exceptl.h
! 649e793ce5ae15bd0f3dd1fe2ecfbea9  libgcobol/gcobolio.h
! 882856d895b686fc355b61771cada120  libgcobol/gfileio.cc
  0ae92e32a618fa39e3ff18a50cbfff17  libgcobol/gfileio.h
! 52ddae301eb6ab2f0f4944d7f404ad54  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
! c8404659b04d33ae6f2fbfbe89c15080  libgcobol/inspect.cc
! d6c53f1064ef820bec3b692109f8504e  libgcobol/intrinsic.cc
! 16dfd5dc1d9f83d11546c8d442151225  libgcobol/io.cc
! fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 4eee3c969eafee9ac35c7db51f5e91aa  libgcobol/libgcobol.cc
! b484db78f4117c923c0753a07ea73ea0  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
  807e38148d3d302d10877fa78d259600  libgcobol/posix/bin/sizeofs.c
! 418451a4d1d8ae358a5cbd36a5fc56a5  libgcobol/posix/bin/udf-gen
! ff40615fa93a900210fb9d88df6a4547  libgcobol/posix/cpy/posix-close.cpy
! 207c226ba6d014c48769bc8ebe6cbe2d  libgcobol/posix/cpy/posix-errno.cbl
! 80977463b34559df1adf635069b85394  libgcobol/posix/cpy/posix-errno.cpy
! 83efa763d23d43f6a6286f8f062ac93c  libgcobol/posix/cpy/posix-exit.cpy
! 7e01b648cad85b0f29ca818354c1f4c6  libgcobol/posix/cpy/posix-fstat.cpy
! 6a2063831fed78dec6fed65c82e4c18b  libgcobol/posix/cpy/posix-ftruncate.cpy
! 287f8f8550c7f6c72fb9cba55c4ce762  libgcobol/posix/cpy/posix-localtime.cpy
! d4fccb1d670af5c946fce64219fd2d81  libgcobol/posix/cpy/posix-lseek.cpy
! fd7236198cf30cf77eeb232942467115  libgcobol/posix/cpy/posix-mkdir.cpy
! d286555a6251f2766424411f0054481f  libgcobol/posix/cpy/posix-open.cpy
! 2fec09f4934086b95667e817e939cdd7  libgcobol/posix/cpy/posix-read.cpy
! 07c8b078f2a8bf8f36c6e5af5ba8fb86  libgcobol/posix/cpy/posix-stat.cpy
! 0ab2c4d88d8b7d9e1236ca910a5c8feb  libgcobol/posix/cpy/posix-unlink.cpy
! fa3323c3876649df2c0080ac28af1210  libgcobol/posix/cpy/posix-write.cpy
! 97fe0be4cdb18084e72193a51bb46d82  libgcobol/posix/cpy/psx-lseek.cpy
! 6ec4167fc3eba845adb8297e2be35813  libgcobol/posix/cpy/psx-open.cpy
! 20772faeaa628adfe4b2a5530e6e431c  libgcobol/posix/cpy/statbuf.cpy
! 6a0500e9934f0ad6f5a0221d9c936156  libgcobol/posix/cpy/tm.cpy
  c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/shim/errno.cc
+ 53ea3400302d55a6ef7d425b543e4646  libgcobol/posix/shim/fstat.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
! cd58336ef952882f226b59a93565ff3a  libgcobol/posix/shim/lseek.cc
! 06d9e593735ac52f13d5e144f70d92ee  libgcobol/posix/shim/open.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
  0627b6b8874b55669b3c13b6a52ef590  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
  db2b66c495eb88a1d722067a5aa3c98b  libgcobol/posix/t/Makefile
! 6e273b3673772e943f24d90d3784c273  libgcobol/posix/t/errno.cbl
! 8bfee3612eaf20902f089aebc84f9973  libgcobol/posix/t/exit.cbl
! ce70141055814e8008f9de5fedca94d2  libgcobol/posix/t/localtime.cbl
! c82c4f7973748895a6354f59a2039565  libgcobol/posix/t/stat.cbl
! 95488c08f40e0bda3b069baea4a5c9b2  libgcobol/posix/udf/posix-close.cbl
! 0e42acb0fbb1ca40cfc23e5e2bb017cb  libgcobol/posix/udf/posix-errno.cbl
! 109b10ad107b1ec84a0616dcdc04226e  libgcobol/posix/udf/posix-exit.cbl
! fb8408ecd9017190a7734de601bb588e  libgcobol/posix/udf/posix-fstat.cbl
! 493d387fb331aca711be809f67473708  libgcobol/posix/udf/posix-ftruncate.cbl
! fa11a6e56c666d0f6aed79e8a76ee830  libgcobol/posix/udf/posix-localtime.cbl
! 6bdbfa55f3622650f5b688e5fbcc7b2c  libgcobol/posix/udf/posix-lseek.cbl
! 472266df71b0121972cdc93f8e9666a8  libgcobol/posix/udf/posix-mkdir.cbl
! 7713bcbe56453b95f4bf24fdd9f7ee46  libgcobol/posix/udf/posix-open.cbl
! 320d3940c45c2b195aed1443e5a49118  libgcobol/posix/udf/posix-read.cbl
! 859336a5b2670d1679e68d9e00bec381  libgcobol/posix/udf/posix-stat.cbl
! 9c2b0ac9c647bc3a9b65244797bb88d7  libgcobol/posix/udf/posix-unlink.cbl
! f7f3ede57639856878087542116a625d  libgcobol/posix/udf/posix-write.cbl
  df0869fbdcd7a132ac266d2b365bf481  libgcobol/stringbin.cc
  89dfd764956cfbc2affbf93a401839c9  libgcobol/stringbin.h
! d77d00934ab6b213d8c526ae0673969c  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
! 8485adf73f6988a83d317bb42594aa15  libgcobol/xmlparse.cc
! 8e53da947506961bbf6dfc5402ed113a  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** f3cb49cb5b312a743f63d5d262c262c1  libgfo
*** 134173,134184 ****
  d6bbf0d0b277cee1255f31f38d6cd5fb  libgfortran/aclocal.m4
  6d4f5918ea5082a0bc3b9bbe3455b876  libgfortran/c99_protos.h
  f19a2f7e21d9c27c667b2b50004edf9b  libgfortran/caf/caf_error.c
! e184137391bc3069808e32155144d2ae  libgfortran/caf/caf_error.h
! 6fff77d7036cbcb654bf998e6f610948  libgfortran/caf/libcaf.h
! a65e659c6604a4a7282acf69f4785519  libgfortran/caf/mpi.c
! 8c8cb9b2119ac512c1404c6a863e710f  libgfortran/caf/shmem.c
  8996a74bd946e72fa4a2088b1431661b  libgfortran/caf/shmem/alloc.c
! 6f37f0a018efce4051dc559dee63e2db  libgfortran/caf/shmem/alloc.h
  3a3e2211031c2d5d1fa19a718153e14d  libgfortran/caf/shmem/allocator.c
  03432639a5e3f3cfc13e0b4b3b16062f  libgfortran/caf/shmem/allocator.h
  3437aaede8b931b11b7b9ac7116b77ba  libgfortran/caf/shmem/collective_subroutine.c
--- 134538,134549 ----
  d6bbf0d0b277cee1255f31f38d6cd5fb  libgfortran/aclocal.m4
  6d4f5918ea5082a0bc3b9bbe3455b876  libgfortran/c99_protos.h
  f19a2f7e21d9c27c667b2b50004edf9b  libgfortran/caf/caf_error.c
! b3b035d2a9a20c08dfd709fab2c4ad0e  libgfortran/caf/caf_error.h
! 93dc4f4fb91356e2833e1fbb3a5bf550  libgfortran/caf/libcaf.h
! d1dc616269a97d0e85db9cfa43aefeb2  libgfortran/caf/mpi.c
! 45d8a61f2f93c831b4bbd6e3ab66b542  libgfortran/caf/shmem.c
  8996a74bd946e72fa4a2088b1431661b  libgfortran/caf/shmem/alloc.c
! 0f8fbecc8ab0a6cc686ade9a30c63c69  libgfortran/caf/shmem/alloc.h
  3a3e2211031c2d5d1fa19a718153e14d  libgfortran/caf/shmem/allocator.c
  03432639a5e3f3cfc13e0b4b3b16062f  libgfortran/caf/shmem/allocator.h
  3437aaede8b931b11b7b9ac7116b77ba  libgfortran/caf/shmem/collective_subroutine.c
*************** c76fc917a72eed37e3dd2fbc54ccd383  libgfo
*** 134187,134203 ****
  feff24e5582b1f94959aafc712f637d4  libgfortran/caf/shmem/counter_barrier.h
  ac03c96ad4b3cbfce74b31610170e681  libgfortran/caf/shmem/hashmap.c
  70d12fdb2bcca3123d701486eff4406d  libgfortran/caf/shmem/hashmap.h
! 46fc71594dc8953cc2fd6851a062ad2a  libgfortran/caf/shmem/shared_memory.c
  80716674e0dee09007ec088dc9b8bc75  libgfortran/caf/shmem/shared_memory.h
  e9be1397d0da3e3f08e6d83986128990  libgfortran/caf/shmem/supervisor.c
! db01f2637ed2e41d8d6ed00948dec908  libgfortran/caf/shmem/supervisor.h
  c39aaa0900c27c5e6d92245f822c0dbb  libgfortran/caf/shmem/sync.c
  04d5d6e61d96dd8fc313400fb0c72bb8  libgfortran/caf/shmem/sync.h
  5bc507eff4211dcfd30e8c5b39b9bb89  libgfortran/caf/shmem/teams_mgmt.c
! 16d5016bdd691a4b23799faf247786e1  libgfortran/caf/shmem/teams_mgmt.h
  eda47643efe7014bcad84596ff05688c  libgfortran/caf/shmem/thread_support.c
  afca2bdd1b8b95cb70ca56c5cb073edb  libgfortran/caf/shmem/thread_support.h
! 1e516cc9226f1e63c9fb8039a798a31e  libgfortran/caf/single.c
  7a6ec8aeacc22a6626157daea7f1fbfd  libgfortran/config.h.in
  c3cb798c6d9f19a5c854b16c133da31d  libgfortran/config/fpu-387.h
  887929d7578664b9442e4bee95f386f7  libgfortran/config/fpu-aarch64.h
--- 134552,134568 ----
  feff24e5582b1f94959aafc712f637d4  libgfortran/caf/shmem/counter_barrier.h
  ac03c96ad4b3cbfce74b31610170e681  libgfortran/caf/shmem/hashmap.c
  70d12fdb2bcca3123d701486eff4406d  libgfortran/caf/shmem/hashmap.h
! eec1672fbad8b2b7691baac33ac02bda  libgfortran/caf/shmem/shared_memory.c
  80716674e0dee09007ec088dc9b8bc75  libgfortran/caf/shmem/shared_memory.h
  e9be1397d0da3e3f08e6d83986128990  libgfortran/caf/shmem/supervisor.c
! e272dfa2acae6860d0a8465891f67cc6  libgfortran/caf/shmem/supervisor.h
  c39aaa0900c27c5e6d92245f822c0dbb  libgfortran/caf/shmem/sync.c
  04d5d6e61d96dd8fc313400fb0c72bb8  libgfortran/caf/shmem/sync.h
  5bc507eff4211dcfd30e8c5b39b9bb89  libgfortran/caf/shmem/teams_mgmt.c
! ec86dc736471e675d520c1368b304393  libgfortran/caf/shmem/teams_mgmt.h
  eda47643efe7014bcad84596ff05688c  libgfortran/caf/shmem/thread_support.c
  afca2bdd1b8b95cb70ca56c5cb073edb  libgfortran/caf/shmem/thread_support.h
! a65884d0f414d4bbd7f062bebb164563  libgfortran/caf/single.c
  7a6ec8aeacc22a6626157daea7f1fbfd  libgfortran/config.h.in
  c3cb798c6d9f19a5c854b16c133da31d  libgfortran/config/fpu-387.h
  887929d7578664b9442e4bee95f386f7  libgfortran/config/fpu-aarch64.h
*************** caba33bea39fbaa4b7bef6cc969ae10f  libgfo
*** 135007,135017 ****
  3bac97159271496238df4c930b6e28c5  libgfortran/ieee/ieee_helper.c
  ac6842cd69183cba9a35bf92a55ca557  libgfortran/intrinsics/abort.c
  dabe1ddbbe87f521ccf0a2e035308393  libgfortran/intrinsics/access.c
! 4aca9230918701241ea394346ec40bf9  libgfortran/intrinsics/args.c
  bce84b029bab5e34ab9b45e84a6c756c  libgfortran/intrinsics/associated.c
  8bf05957a4efbaad15b9b4c8f63167da  libgfortran/intrinsics/c99_functions.c
  e72de8757600623f728838c9e25561f6  libgfortran/intrinsics/chdir.c
! dc4208e552dac37414581f3651e8f6d6  libgfortran/intrinsics/chmod.c
  1d54f053f0d439e751cd2f245b7ad918  libgfortran/intrinsics/clock.c
  a3addbc8456da9fc3b9e910e54da4647  libgfortran/intrinsics/cpu_time.c
  c67c725a2d332fa03b449c877c3ac0fb  libgfortran/intrinsics/cshift0.c
--- 135372,135382 ----
  3bac97159271496238df4c930b6e28c5  libgfortran/ieee/ieee_helper.c
  ac6842cd69183cba9a35bf92a55ca557  libgfortran/intrinsics/abort.c
  dabe1ddbbe87f521ccf0a2e035308393  libgfortran/intrinsics/access.c
! 48c7d51b98756130c757058bed301255  libgfortran/intrinsics/args.c
  bce84b029bab5e34ab9b45e84a6c756c  libgfortran/intrinsics/associated.c
  8bf05957a4efbaad15b9b4c8f63167da  libgfortran/intrinsics/c99_functions.c
  e72de8757600623f728838c9e25561f6  libgfortran/intrinsics/chdir.c
! 7990be77dd8276994894528f543ec63e  libgfortran/intrinsics/chmod.c
  1d54f053f0d439e751cd2f245b7ad918  libgfortran/intrinsics/clock.c
  a3addbc8456da9fc3b9e910e54da4647  libgfortran/intrinsics/cpu_time.c
  c67c725a2d332fa03b449c877c3ac0fb  libgfortran/intrinsics/cshift0.c
*************** c67c725a2d332fa03b449c877c3ac0fb  libgfo
*** 135019,135025 ****
  e7eda0fad1c5ab8ce60e853a9499b725  libgfortran/intrinsics/date_and_time.c
  09ea8e7c7209061cf9403fcddeff06e1  libgfortran/intrinsics/dprod_r8.f90
  33cb99b1858a45ffb34bd1c28ee58b55  libgfortran/intrinsics/dtime.c
! 6dc496f8673b56abbf4e2a183cd5828d  libgfortran/intrinsics/env.c
  b038fe461bccab20357753a327938235  libgfortran/intrinsics/eoshift0.c
  e9f37a7c09ee71312c75fc63b9da4679  libgfortran/intrinsics/eoshift2.c
  a4b1da6094342f6318ba18771d3daaac  libgfortran/intrinsics/erfc_scaled.c
--- 135384,135390 ----
  e7eda0fad1c5ab8ce60e853a9499b725  libgfortran/intrinsics/date_and_time.c
  09ea8e7c7209061cf9403fcddeff06e1  libgfortran/intrinsics/dprod_r8.f90
  33cb99b1858a45ffb34bd1c28ee58b55  libgfortran/intrinsics/dtime.c
! 9c5a7ef525ef7016e3264e86fddc3a2e  libgfortran/intrinsics/env.c
  b038fe461bccab20357753a327938235  libgfortran/intrinsics/eoshift0.c
  e9f37a7c09ee71312c75fc63b9da4679  libgfortran/intrinsics/eoshift2.c
  a4b1da6094342f6318ba18771d3daaac  libgfortran/intrinsics/erfc_scaled.c
*************** a1c61999c9b91803f586503559199a42  libgfo
*** 135066,135100 ****
  6bc45f16989556c23e41efda38877053  libgfortran/intrinsics/system_clock.c
  454b747595c4a1e7f5b71dc6a5539f81  libgfortran/intrinsics/time.c
  792ff23bf0808d756fb43518182dd0c3  libgfortran/intrinsics/time_1.h
! e1757561475222a4c847b82c6813ae07  libgfortran/intrinsics/trigd.c
  299e8e94cf833be84eb71d93a7b02c69  libgfortran/intrinsics/trigd.inc
  04c94be9f886e1e44ea2ea2184d5968a  libgfortran/intrinsics/trigd_lib.inc
  42db9c3421a25a78d54f2a058f4917e1  libgfortran/intrinsics/umask.c
  4681a0cf5cfd7e0f18fbc29a4e82b1db  libgfortran/intrinsics/unlink.c
  cec32999db8b4e87719bd32022b37c61  libgfortran/intrinsics/unpack_generic.c
! 44217a880c0fce372e54592d1de325e8  libgfortran/io/async.c
  970abd6f6b01d720c21cfa82ba5aa40a  libgfortran/io/async.h
  c62b817e6f400a567db7dccd71d76f33  libgfortran/io/close.c
  0686754907b94e015f02e5417b8ecb03  libgfortran/io/fbuf.c
  2a512bb8d96b461dcb82470c5dd52121  libgfortran/io/fbuf.h
! 12c0228bb34d93f8553a3810004881eb  libgfortran/io/file_pos.c
! 1db12b19e84068763a3dfa1249568b52  libgfortran/io/format.c
  73d01474fc7e12ff7cd21c2c920a6638  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
  44d847baa8fb2279e10d8b6c68984a54  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
! a5048d41737161954ead03f98865a018  libgfortran/io/open.c
  15fa25bbc2ea09df80ad7037e0c28b75  libgfortran/io/read.c
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
! b94de02fd60dc6a23f23fdbb73351b86  libgfortran/io/transfer.c
! 61d9fcffebe964f0be67a134abea6d15  libgfortran/io/transfer128.c
  6cf3fdea6474d249cc6fe641cb6a7629  libgfortran/io/unit.c
! 054d43551f43e42d19a3ca81456c9a34  libgfortran/io/unix.c
  f460ce66bb06770e24fc348ce57dcea7  libgfortran/io/unix.h
! 9e44115b64997d8b564db596373c239d  libgfortran/io/write.c
! 63dc1e7847872ead7c41b96130ad6023  libgfortran/io/write_float.def
  4d4402eb782c9c4ba1fafd5b3ca5b80b  libgfortran/kinds-override.h
  782dd75d67502253d6f5915fe7acf119  libgfortran/libgfortran.h
  387b6182fc5961d2910eba8861402578  libgfortran/libgfortran.spec.in
--- 135431,135465 ----
  6bc45f16989556c23e41efda38877053  libgfortran/intrinsics/system_clock.c
  454b747595c4a1e7f5b71dc6a5539f81  libgfortran/intrinsics/time.c
  792ff23bf0808d756fb43518182dd0c3  libgfortran/intrinsics/time_1.h
! cdd10b2f69a82610444a2522ebd110e0  libgfortran/intrinsics/trigd.c
  299e8e94cf833be84eb71d93a7b02c69  libgfortran/intrinsics/trigd.inc
  04c94be9f886e1e44ea2ea2184d5968a  libgfortran/intrinsics/trigd_lib.inc
  42db9c3421a25a78d54f2a058f4917e1  libgfortran/intrinsics/umask.c
  4681a0cf5cfd7e0f18fbc29a4e82b1db  libgfortran/intrinsics/unlink.c
  cec32999db8b4e87719bd32022b37c61  libgfortran/intrinsics/unpack_generic.c
! 2ee3cb2960e221ea3d25039c89805878  libgfortran/io/async.c
  970abd6f6b01d720c21cfa82ba5aa40a  libgfortran/io/async.h
  c62b817e6f400a567db7dccd71d76f33  libgfortran/io/close.c
  0686754907b94e015f02e5417b8ecb03  libgfortran/io/fbuf.c
  2a512bb8d96b461dcb82470c5dd52121  libgfortran/io/fbuf.h
! dd12c9337c5b8da315083627d633c703  libgfortran/io/file_pos.c
! 3e6e07cd0b374e658d1f25a5afe82e63  libgfortran/io/format.c
  73d01474fc7e12ff7cd21c2c920a6638  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
  44d847baa8fb2279e10d8b6c68984a54  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
! 601d86fd12148a4342e1ca9c4905714d  libgfortran/io/open.c
  15fa25bbc2ea09df80ad7037e0c28b75  libgfortran/io/read.c
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
! b10b38c0dd2774074481be3e901c589f  libgfortran/io/transfer.c
! be377468666649cbd953626596944272  libgfortran/io/transfer128.c
  6cf3fdea6474d249cc6fe641cb6a7629  libgfortran/io/unit.c
! f10c0db103b5f89684041aff43553d3d  libgfortran/io/unix.c
  f460ce66bb06770e24fc348ce57dcea7  libgfortran/io/unix.h
! 4092613d079ce7160a7ce3e52722bf1e  libgfortran/io/write.c
! 1251ac6c18ee26563b355b078e011358  libgfortran/io/write_float.def
  4d4402eb782c9c4ba1fafd5b3ca5b80b  libgfortran/kinds-override.h
  782dd75d67502253d6f5915fe7acf119  libgfortran/libgfortran.h
  387b6182fc5961d2910eba8861402578  libgfortran/libgfortran.spec.in
*************** e48358eba67d0145681e10d845284b01  libgfo
*** 135189,135205 ****
  0107954ae674063d432e961b885b7dce  libgfortran/runtime/minimal.c
  9addea351b8bccd4e8ac632b7bf593ad  libgfortran/runtime/pause.c
  c04e4e4d264af0c1d4e39e88a93d6258  libgfortran/runtime/select.c
! 29a2c23fb19e11e91079af9b734780d7  libgfortran/runtime/select_inc.c
  fdc5bc5ac9f0f6c3348f4f076be6db95  libgfortran/runtime/stop.c
  48bdb4b17463d0fcaca2653d6e84ddaf  libgfortran/runtime/string.c
! 1b32a39d6ca0ceca4d22535f30edbcde  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  f26132364738756eeee0acf44fb5aadf  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
  d4629d8a3f44bc8f1060e37d381418f6  libgm2/aclocal.m4
  ec51f8ac3552cbacd95bf08e21a6568a  libgm2/config.h.in
  ce287bde44fa2f73687149a623dbb9b0  libgm2/configure
! e0fe07832564d76c66fdae524e26ecb4  libgm2/configure.ac
  b52a0b00feee9e93f7dc34a66027a39f  libgm2/configure.host
  2a25928a1abd3989edcf11c8def19d00  libgm2/libm2cor/KeyBoardLEDs.cc
  f25de03fc822c5eebf7118fcf5283ebc  libgm2/libm2cor/Makefile.am
--- 135554,135570 ----
  0107954ae674063d432e961b885b7dce  libgfortran/runtime/minimal.c
  9addea351b8bccd4e8ac632b7bf593ad  libgfortran/runtime/pause.c
  c04e4e4d264af0c1d4e39e88a93d6258  libgfortran/runtime/select.c
! ac9900506f66729b67b81e0404c39eb1  libgfortran/runtime/select_inc.c
  fdc5bc5ac9f0f6c3348f4f076be6db95  libgfortran/runtime/stop.c
  48bdb4b17463d0fcaca2653d6e84ddaf  libgfortran/runtime/string.c
! 9438d8584268fd531747e8b5bc89910d  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  f26132364738756eeee0acf44fb5aadf  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
  d4629d8a3f44bc8f1060e37d381418f6  libgm2/aclocal.m4
  ec51f8ac3552cbacd95bf08e21a6568a  libgm2/config.h.in
  ce287bde44fa2f73687149a623dbb9b0  libgm2/configure
! 4bed77912b0aeaafa4693cfab829153b  libgm2/configure.ac
  b52a0b00feee9e93f7dc34a66027a39f  libgm2/configure.host
  2a25928a1abd3989edcf11c8def19d00  libgm2/libm2cor/KeyBoardLEDs.cc
  f25de03fc822c5eebf7118fcf5283ebc  libgm2/libm2cor/Makefile.am
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 140729,140746 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! a4901b0f145b5a3fb31e44b0b8ecfbb5  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3d8bbdea66244a10e715c52717f8a88a  libgomp/Makefile.in
  7f1d00b196788c5e20ac3392affbc699  libgomp/acc_prof.h
! 9adf546d5cd3a253e19fed2c0f7fa783  libgomp/acinclude.m4
  5a46efd6e18e24c37640f51369238fe4  libgomp/aclocal.m4
  a518e5f5538c5ff629ba3a8f88128480  libgomp/affinity-fmt.c
  06478025336afe5fce9b998b4c7710b1  libgomp/affinity.c
  44e82ee5e47677da6205a78497c6a566  libgomp/alloc.c
  0c08d5aa3b537038621b9e3d7c3f28df  libgomp/alloc_cache.h
! 12ab55336a2acd6f64e98c5b5cab7084  libgomp/allocator.c
  9be4323f25d5a03ee903e8e5a5aa76bd  libgomp/atomic.c
  57adabf6519fd5d55b63b9989528fd44  libgomp/barrier.c
  817a188fa4d37e0fffa03364d2f1507d  libgomp/basic-allocator.c
--- 141094,141111 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 7b3fd8ee83997785d6ee01516c237144  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3d8bbdea66244a10e715c52717f8a88a  libgomp/Makefile.in
  7f1d00b196788c5e20ac3392affbc699  libgomp/acc_prof.h
! 5e63b3cd1246f4c73a49880cad1844ee  libgomp/acinclude.m4
  5a46efd6e18e24c37640f51369238fe4  libgomp/aclocal.m4
  a518e5f5538c5ff629ba3a8f88128480  libgomp/affinity-fmt.c
  06478025336afe5fce9b998b4c7710b1  libgomp/affinity.c
  44e82ee5e47677da6205a78497c6a566  libgomp/alloc.c
  0c08d5aa3b537038621b9e3d7c3f28df  libgomp/alloc_cache.h
! 4eb87fef655de54484eccb7b204e5916  libgomp/allocator.c
  9be4323f25d5a03ee903e8e5a5aa76bd  libgomp/atomic.c
  57adabf6519fd5d55b63b9989528fd44  libgomp/barrier.c
  817a188fa4d37e0fffa03364d2f1507d  libgomp/basic-allocator.c
*************** f3cf1a56a2c0bdc1d3163a84be663e4e  libgom
*** 140856,140866 ****
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  14ca4af6299649b5ee50274d7dc740ce  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! 60f14350000eb70c02da9aae93ae09c4  libgomp/configure
  907661a423c189b9a0caa0cf988acbce  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  32ee987623cb1d4e924d40431df6168d  libgomp/critical.c
! 7fb84aa53b1800305cbb26a16fdc6a32  libgomp/env.c
  93acc4d17ce91729e01212d518bafca0  libgomp/error.c
  1a8ce2ac98b5113a23ab57a7ccdd9e32  libgomp/fortran.c
  46849b5af1169f593c12afeebfac9940  libgomp/hashtab.h
--- 141221,141231 ----
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  14ca4af6299649b5ee50274d7dc740ce  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! e24fbe0295408a451cb420526533051f  libgomp/configure
  907661a423c189b9a0caa0cf988acbce  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  32ee987623cb1d4e924d40431df6168d  libgomp/critical.c
! 58467d214066591e724f1370bfeb505a  libgomp/env.c
  93acc4d17ce91729e01212d518bafca0  libgomp/error.c
  1a8ce2ac98b5113a23ab57a7ccdd9e32  libgomp/fortran.c
  46849b5af1169f593c12afeebfac9940  libgomp/hashtab.h
*************** e40f7f1dbaf7de3643dec21493aed6b5  libgom
*** 140870,140879 ****
  6d019b48c2311268a20cabe9f65f73ad  libgomp/iter_ull.c
  e59f9d9c4947a5f7d4bdd011da890930  libgomp/libgomp-plugin.c
  d766cc495352ae2f48d322e276741b80  libgomp/libgomp-plugin.h
! b2aca0a9ddcb7f277bb3b49a277b30af  libgomp/libgomp.h
  43269ed7f389c468d89e33445e5d1e0f  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! e8fcea77f06abd1d972facab70494b03  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  ff283838501e7dccd0306ec2feeb4452  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
--- 141235,141244 ----
  6d019b48c2311268a20cabe9f65f73ad  libgomp/iter_ull.c
  e59f9d9c4947a5f7d4bdd011da890930  libgomp/libgomp-plugin.c
  d766cc495352ae2f48d322e276741b80  libgomp/libgomp-plugin.h
! 2e0ab05b3ed5589f5dc7e54700c231ad  libgomp/libgomp.h
  43269ed7f389c468d89e33445e5d1e0f  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! e8c6da4786f07a9ca1975943c21f836a  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  ff283838501e7dccd0306ec2feeb4452  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
*************** ccc59a273af5bb87bc4287e838131e91  libgom
*** 140899,140910 ****
  da2ae01cd3ee1b82927ed89b489413c4  libgomp/ordered.c
  9175c3aaac7a44bd118f7fb462894ff7  libgomp/parallel.c
  b5ab0a7e2cd4752de8579e6704a905f9  libgomp/plugin/Makefrag.am
! a62dffa247a816d54bad922ce4d47aa0  libgomp/plugin/build-target-indirect-htab.h
  fab10af27c836c7b90303245f3965cb8  libgomp/plugin/configfrag.ac
  64303d9a5e264784832990b27405c4aa  libgomp/plugin/cuda-lib.def
  d024ec56acbc3411cedc7899b8bbdd02  libgomp/plugin/mutex.c
! 6ff74ca26db9780ff90c583924b28d74  libgomp/plugin/plugin-gcn.c
! c48f5698d6513fa80e32b3b410f3a9d9  libgomp/plugin/plugin-nvptx.c
  575940d2b8e2a941f78af850aac28928  libgomp/priority_queue.c
  c88620bad36f9c420348d0508bd4b346  libgomp/priority_queue.h
  20aaa72861afa50254f90e9a0839d451  libgomp/scope.c
--- 141264,141275 ----
  da2ae01cd3ee1b82927ed89b489413c4  libgomp/ordered.c
  9175c3aaac7a44bd118f7fb462894ff7  libgomp/parallel.c
  b5ab0a7e2cd4752de8579e6704a905f9  libgomp/plugin/Makefrag.am
! 1b94d027e28b8b7e6f38e326d8412459  libgomp/plugin/build-target-indirect-htab.h
  fab10af27c836c7b90303245f3965cb8  libgomp/plugin/configfrag.ac
  64303d9a5e264784832990b27405c4aa  libgomp/plugin/cuda-lib.def
  d024ec56acbc3411cedc7899b8bbdd02  libgomp/plugin/mutex.c
! fa4d204249b8906dd4ffd76dbf457c79  libgomp/plugin/plugin-gcn.c
! 0c2a179dd2a160ddb0861a0e9d970c1e  libgomp/plugin/plugin-nvptx.c
  575940d2b8e2a941f78af850aac28928  libgomp/priority_queue.c
  c88620bad36f9c420348d0508bd4b346  libgomp/priority_queue.h
  20aaa72861afa50254f90e9a0839d451  libgomp/scope.c
*************** ed195dc04ac3e252f89029dee0bc9c05  libgom
*** 140916,140922 ****
  bbb8b404de421c08a4468a7c149897e3  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  30bc692f400225cbdf51ebfdb41b44c5  libgomp/target-indirect.c
! 884d1916dff2476e510ae6f0f834a780  libgomp/target.c
  61cd7db4cfc942c460e94493b86d69e2  libgomp/task.c
  7f9c7ebe470f1e58806b1136258bd786  libgomp/taskloop.c
  abb5e2202aa84d67c967b7dc176fc937  libgomp/team.c
--- 141281,141287 ----
  bbb8b404de421c08a4468a7c149897e3  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  30bc692f400225cbdf51ebfdb41b44c5  libgomp/target-indirect.c
! d64ba6538873b6a124321647b9d9c63b  libgomp/target.c
  61cd7db4cfc942c460e94493b86d69e2  libgomp/task.c
  7f9c7ebe470f1e58806b1136258bd786  libgomp/taskloop.c
  abb5e2202aa84d67c967b7dc176fc937  libgomp/team.c
*************** cad3ba808079842bfb8fef54eb0840df  libgom
*** 141785,141791 ****
  b568fd245f44f7f9bc3a6e38b724bd00  libgomp/testsuite/libgomp.c/allocator-5.c
  3a12b14ddf962d07ae2dec95832c6b5c  libgomp/testsuite/libgomp.c/allocator-6.c
  70c52e61b3d634d0539af8b6652609bd  libgomp/testsuite/libgomp.c/append-args-fr-1.c
! e286db53a176fba18c337c3fb068bdbc  libgomp/testsuite/libgomp.c/append-args-fr.h
  1f6a1f1c31286073320fc1d55660da23  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
  e93a3e74972b33d2a0caef52cf757ee4  libgomp/testsuite/libgomp.c/appendix-a/a.18.1.c
--- 142150,142156 ----
  b568fd245f44f7f9bc3a6e38b724bd00  libgomp/testsuite/libgomp.c/allocator-5.c
  3a12b14ddf962d07ae2dec95832c6b5c  libgomp/testsuite/libgomp.c/allocator-6.c
  70c52e61b3d634d0539af8b6652609bd  libgomp/testsuite/libgomp.c/append-args-fr-1.c
! 93e971cc7dc015a8fe7164ad28335a09  libgomp/testsuite/libgomp.c/append-args-fr.h
  1f6a1f1c31286073320fc1d55660da23  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
  e93a3e74972b33d2a0caef52cf757ee4  libgomp/testsuite/libgomp.c/appendix-a/a.18.1.c
*************** ae4ee25a98b96a2f6bbcd9bc817b5b90  libgom
*** 141951,141965 ****
  6619bda92e7a29f372b1a0bc19ef2c79  libgomp/testsuite/libgomp.c/icv-2.c
  ab8fb6b2dba448c76952c99dc073b531  libgomp/testsuite/libgomp.c/interop-cublas-full.c
  ee19f42594a2dbadbc455736a8e69944  libgomp/testsuite/libgomp.c/interop-cublas-libonly.c
! c62e07c17fc715e8074d127b1c0571a5  libgomp/testsuite/libgomp.c/interop-cuda-full.c
  7206b8cf6705a23f6948b4c9b0c48a82  libgomp/testsuite/libgomp.c/interop-cuda-libonly.c
! ee1bca91c6e853556cd65170329412cb  libgomp/testsuite/libgomp.c/interop-fr-1.c
  070843f3ae770b12906ee280061629b8  libgomp/testsuite/libgomp.c/interop-hip-amd-full.c
  0ca95c8bb659450d929a3e0afc99536c  libgomp/testsuite/libgomp.c/interop-hip-amd-no-hip-header.c
  9e5bec1c71f6fe561293ae3c8f778c72  libgomp/testsuite/libgomp.c/interop-hip-nvidia-full.c
  813823249e0addca7d4dc1fe119c127e  libgomp/testsuite/libgomp.c/interop-hip-nvidia-no-headers.c
  9c26fe02cd8d0d7c0f5985037fc37ded  libgomp/testsuite/libgomp.c/interop-hip-nvidia-no-hip-header.c
! 25c99e27bb2ee18183687ba2fd6a9060  libgomp/testsuite/libgomp.c/interop-hip.h
  95e6215f7e92437a942ec58e5dd545bf  libgomp/testsuite/libgomp.c/interop-hipblas-amd-full.c
  4445da243b1fcd63d8ec2a6af1f99e15  libgomp/testsuite/libgomp.c/interop-hipblas-amd-no-hip-header.c
  10bd9c0ce20313ae836a09504811f547  libgomp/testsuite/libgomp.c/interop-hipblas-nvidia-full.c
--- 142316,142330 ----
  6619bda92e7a29f372b1a0bc19ef2c79  libgomp/testsuite/libgomp.c/icv-2.c
  ab8fb6b2dba448c76952c99dc073b531  libgomp/testsuite/libgomp.c/interop-cublas-full.c
  ee19f42594a2dbadbc455736a8e69944  libgomp/testsuite/libgomp.c/interop-cublas-libonly.c
! 510cde00e8a058f5691ac6f44ee08ca6  libgomp/testsuite/libgomp.c/interop-cuda-full.c
  7206b8cf6705a23f6948b4c9b0c48a82  libgomp/testsuite/libgomp.c/interop-cuda-libonly.c
! 350f5500e138c05d1d10b8a5b6183e90  libgomp/testsuite/libgomp.c/interop-fr-1.c
  070843f3ae770b12906ee280061629b8  libgomp/testsuite/libgomp.c/interop-hip-amd-full.c
  0ca95c8bb659450d929a3e0afc99536c  libgomp/testsuite/libgomp.c/interop-hip-amd-no-hip-header.c
  9e5bec1c71f6fe561293ae3c8f778c72  libgomp/testsuite/libgomp.c/interop-hip-nvidia-full.c
  813823249e0addca7d4dc1fe119c127e  libgomp/testsuite/libgomp.c/interop-hip-nvidia-no-headers.c
  9c26fe02cd8d0d7c0f5985037fc37ded  libgomp/testsuite/libgomp.c/interop-hip-nvidia-no-hip-header.c
! 3bc025a4108c93646a16469d804be516  libgomp/testsuite/libgomp.c/interop-hip.h
  95e6215f7e92437a942ec58e5dd545bf  libgomp/testsuite/libgomp.c/interop-hipblas-amd-full.c
  4445da243b1fcd63d8ec2a6af1f99e15  libgomp/testsuite/libgomp.c/interop-hipblas-amd-no-hip-header.c
  10bd9c0ce20313ae836a09504811f547  libgomp/testsuite/libgomp.c/interop-hipblas-nvidia-full.c
*************** a38a422e315bd08e01ae56187b2d4580  libgom
*** 142529,142535 ****
  fd7083d48f6704610b027165b5e1a28d  libgomp/testsuite/libgomp.fortran/interop-hip-amd-no-module.F90
  c6b6960279848b26c0bd46292fbf4dc9  libgomp/testsuite/libgomp.fortran/interop-hip-nvidia-full.F90
  a4c46d78e0663318d6aeee652e093864  libgomp/testsuite/libgomp.fortran/interop-hip-nvidia-no-module.F90
! e1956151e0a1b58e3b37a0ee0654547f  libgomp/testsuite/libgomp.fortran/interop-hip.h
  90c092c2be0665ce5d2321dde75daca3  libgomp/testsuite/libgomp.fortran/interop-routines-1.F90
  4870363962ab0a448c018370ffd79024  libgomp/testsuite/libgomp.fortran/interop-routines-2.F90
  8e05d631995537a54328f3667c310bd6  libgomp/testsuite/libgomp.fortran/interop-routines-3.F
--- 142894,142900 ----
  fd7083d48f6704610b027165b5e1a28d  libgomp/testsuite/libgomp.fortran/interop-hip-amd-no-module.F90
  c6b6960279848b26c0bd46292fbf4dc9  libgomp/testsuite/libgomp.fortran/interop-hip-nvidia-full.F90
  a4c46d78e0663318d6aeee652e093864  libgomp/testsuite/libgomp.fortran/interop-hip-nvidia-no-module.F90
! a68ba7050ac15c49af5fec17a35ae5da  libgomp/testsuite/libgomp.fortran/interop-hip.h
  90c092c2be0665ce5d2321dde75daca3  libgomp/testsuite/libgomp.fortran/interop-routines-1.F90
  4870363962ab0a448c018370ffd79024  libgomp/testsuite/libgomp.fortran/interop-routines-2.F90
  8e05d631995537a54328f3667c310bd6  libgomp/testsuite/libgomp.fortran/interop-routines-3.F
*************** d1c33a8b5e0f3d9a19ffe583f8e72f56  libgru
*** 144371,144377 ****
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 1def024f9aca76c2faf15e9774271943  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 144736,144742 ----
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 0addd3659065e4ae006531f6ea5c7969  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** a16ea056b95fd70c21333db132da14ff  libibe
*** 144385,144393 ****
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
  17a1f1d7f5acf01ce922d98210067542  libiberty/bcmp.c
! a707d2e5daa09d204d4441e8713048ca  libiberty/bcopy.c
! 12b384d6fbe8db3b1da132f566043423  libiberty/bsearch.c
! 0ce04768d60b33d4951e6542d1bcbdac  libiberty/bsearch_r.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  4334ddc8cd0c2303bd7b4d61a8dd0e62  libiberty/calloc.c
  2bade331990022caf106c23350b7748a  libiberty/choose-temp.c
--- 144750,144758 ----
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
  17a1f1d7f5acf01ce922d98210067542  libiberty/bcmp.c
! 092d0d68cf8cfa6953e3ee09c815ba67  libiberty/bcopy.c
! cf7666cd48050cc145174b761837c31f  libiberty/bsearch.c
! f1ad889d69cb28e21645d766bacd2df3  libiberty/bsearch_r.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
  4334ddc8cd0c2303bd7b4d61a8dd0e62  libiberty/calloc.c
  2bade331990022caf106c23350b7748a  libiberty/choose-temp.c
*************** fe207e3e1c9a646419aca7d44b89eeba  libibe
*** 144401,144418 ****
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
  a08719d6c4a4d3d8fa74cb913c55211f  libiberty/configure
! 1d7f800450530d9dc9d466cd67204867  libiberty/configure.ac
  193826e77c2cb5ea7289dc272ec23d5d  libiberty/configure.com
  95bcfe50b43ca9b1fd315a368b837401  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 044856947b53027a16187abd8623c859  libiberty/cp-demangle.c
  3f778bba8cac0dc0b2ba7e95e6b6cba7  libiberty/cp-demangle.h
  9d8c6d653bfa24871a73c565b6d3e33b  libiberty/cp-demint.c
  03321912732b6b330b17b4be2c45e80e  libiberty/cplus-dem.c
  b1cdc43b57b846afbdbdd5332834afe5  libiberty/crc32.c
! 77b3987d9d6fcba885daf42e0517af36  libiberty/d-demangle.c
  776e349d1d76b57cc7ff0354e2269e2d  libiberty/dwarfnames.c
! 96467bd93842264aa1493d0ce9addef4  libiberty/dyn-string.c
  b2e026fd40cb11fe7ffa3797cd8bc457  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
  e467e97273c9410f33b9fb57fcfce5b6  libiberty/fibheap.c
--- 144766,144783 ----
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
  a08719d6c4a4d3d8fa74cb913c55211f  libiberty/configure
! 47e63e11ce9abb0cf59f7362df7256e2  libiberty/configure.ac
  193826e77c2cb5ea7289dc272ec23d5d  libiberty/configure.com
  95bcfe50b43ca9b1fd315a368b837401  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 50f1d82156729462705650020792ea99  libiberty/cp-demangle.c
  3f778bba8cac0dc0b2ba7e95e6b6cba7  libiberty/cp-demangle.h
  9d8c6d653bfa24871a73c565b6d3e33b  libiberty/cp-demint.c
  03321912732b6b330b17b4be2c45e80e  libiberty/cplus-dem.c
  b1cdc43b57b846afbdbdd5332834afe5  libiberty/crc32.c
! 118a21fe63a6ba0aee8f906bde67d170  libiberty/d-demangle.c
  776e349d1d76b57cc7ff0354e2269e2d  libiberty/dwarfnames.c
! ef663107c94affe2a1bcd8b1832e9b04  libiberty/dyn-string.c
  b2e026fd40cb11fe7ffa3797cd8bc457  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
  e467e97273c9410f33b9fb57fcfce5b6  libiberty/fibheap.c
*************** da40767f7fa1629df649609127a366c2  libibe
*** 144436,144446 ****
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
  94402be16aa3026a9b8ab90a38e5643d  libiberty/lbasename.c
! 3b9075ac120a24965513fe5505f84d57  libiberty/ldirname.c
  1025e0d0a708c85892aeea3b5e153571  libiberty/libiberty.texi
  a3bf7aa700296597c2ad49b21dd922fd  libiberty/lrealpath.c
  50ec922e44ceb13d87da9d5dc3490c4f  libiberty/maint-tool
! b8a4fa787e41edf9a5b1e642824291a4  libiberty/make-relative-prefix.c
  4506574402c96dfca6f0cceec3a8e511  libiberty/make-temp-file.c
  2296f9992eccea8d2e0fb632a7c16629  libiberty/makefile.vms
  57437114dca487a0b19728047c0c53f8  libiberty/md5.c
--- 144801,144811 ----
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
  94402be16aa3026a9b8ab90a38e5643d  libiberty/lbasename.c
! 596dc73e812e5c6695ba07b683523b98  libiberty/ldirname.c
  1025e0d0a708c85892aeea3b5e153571  libiberty/libiberty.texi
  a3bf7aa700296597c2ad49b21dd922fd  libiberty/lrealpath.c
  50ec922e44ceb13d87da9d5dc3490c4f  libiberty/maint-tool
! 0e265c3db338c9fce9da2fe117db964c  libiberty/make-relative-prefix.c
  4506574402c96dfca6f0cceec3a8e511  libiberty/make-temp-file.c
  2296f9992eccea8d2e0fb632a7c16629  libiberty/makefile.vms
  57437114dca487a0b19728047c0c53f8  libiberty/md5.c
*************** d2f8420243d7223cc896b7a6308fd19a  libibe
*** 144456,144462 ****
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
  c2f3de4d053cc63c57e672c972866db7  libiberty/objalloc.c
  e34765e40f64a3f6763e5f33501d0622  libiberty/obstack.c
! 60e853e97e156d94dfb6374f701b99ab  libiberty/obstacks.texi
  77492cc9bc9b6bb783538e0ef02450ad  libiberty/partition.c
  a42e20331e0fa40db951bf3e558e40d9  libiberty/pex-common.c
  7fc83070cbf61cb596fc70bcc708140f  libiberty/pex-common.h
--- 144821,144827 ----
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
  c2f3de4d053cc63c57e672c972866db7  libiberty/objalloc.c
  e34765e40f64a3f6763e5f33501d0622  libiberty/obstack.c
! 7a966726b9decc3e5437b2d18afe965f  libiberty/obstacks.texi
  77492cc9bc9b6bb783538e0ef02450ad  libiberty/partition.c
  a42e20331e0fa40db951bf3e558e40d9  libiberty/pex-common.c
  7fc83070cbf61cb596fc70bcc708140f  libiberty/pex-common.h
*************** aed5f7f1f4e4cda5161f00bccd1e2639  libibe
*** 144464,144476 ****
  a5e6757fab8f7d9fe824f9703906e83f  libiberty/pex-msdos.c
  3c24c81fbdc72666311850bff4ee9782  libiberty/pex-one.c
  f91f17a01a7fbb12988a547a4564950e  libiberty/pex-unix.c
! dd7e669a66177322a0babe40774057ca  libiberty/pex-win32.c
  4dcdad7ddb6c6f95bd0f26ad7d75e878  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
  dfe475c49d0777e4c10f308425744082  libiberty/physmem.c
  b16da3cafc1141c8548d5f17ed282181  libiberty/putenv.c
! e0e831dfd1e39695597e9f5c6951be8e  libiberty/random.c
! 1aca40005140f680c39f223fd14423ed  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
  a79b53a4509df76eed91f2b385434167  libiberty/rust-demangle.c
--- 144829,144841 ----
  a5e6757fab8f7d9fe824f9703906e83f  libiberty/pex-msdos.c
  3c24c81fbdc72666311850bff4ee9782  libiberty/pex-one.c
  f91f17a01a7fbb12988a547a4564950e  libiberty/pex-unix.c
! b801b92ff5f45a56601b6470d61d05b7  libiberty/pex-win32.c
  4dcdad7ddb6c6f95bd0f26ad7d75e878  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
  dfe475c49d0777e4c10f308425744082  libiberty/physmem.c
  b16da3cafc1141c8548d5f17ed282181  libiberty/putenv.c
! 4180f6273db91cf0cd1be6fb53c616b9  libiberty/random.c
! 45b5c79e36bd6427ead261f4143ba639  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
  a79b53a4509df76eed91f2b385434167  libiberty/rust-demangle.c
*************** a79b53a4509df76eed91f2b385434167  libibe
*** 144478,144488 ****
  882b928512e5529bfc1ed9f0bb4e02a3  libiberty/setenv.c
  58e2729d90d34d1dcc7d994d8ddc8a8f  libiberty/setproctitle.c
  4cc14d92cce151659481f163788eb37e  libiberty/sha1.c
! 284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
  fd7b0f956a27a9c003becee0f7127dc9  libiberty/simple-object-coff.c
  7d1dc7e843b27598f270728a44698f7e  libiberty/simple-object-common.h
! 0f48244c3d903b42615870ec6763e7dd  libiberty/simple-object-elf.c
! 5eea7a0264697812cc1cb751094bb348  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
  d83b0f719987de9d9cc6ea43bd6441b7  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
--- 144843,144853 ----
  882b928512e5529bfc1ed9f0bb4e02a3  libiberty/setenv.c
  58e2729d90d34d1dcc7d994d8ddc8a8f  libiberty/setproctitle.c
  4cc14d92cce151659481f163788eb37e  libiberty/sha1.c
! f98c61cdc58945808e3b2007815a4a1e  libiberty/sigsetmask.c
  fd7b0f956a27a9c003becee0f7127dc9  libiberty/simple-object-coff.c
  7d1dc7e843b27598f270728a44698f7e  libiberty/simple-object-common.h
! be88ad62ac87a7cdb78b07fc63c13374  libiberty/simple-object-elf.c
! 3144f1480a3d2029e537825992b54bf9  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
  d83b0f719987de9d9cc6ea43bd6441b7  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
*************** cc534c2ea00ea0b5e49ba8f61c6e467d  libibe
*** 144502,144508 ****
  923ac965e4d1672dd06fdde898a49bd1  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
! 35b19177b9109e894fcfae29a3a52778  libiberty/strsignal.c
  118932d11e6b27c7319a4397c2b933f7  libiberty/strstr.c
  7cdec698bb769c0ef1194806ac18b094  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
--- 144867,144873 ----
  923ac965e4d1672dd06fdde898a49bd1  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
! f55a8dcc3eb37ccf4728de824a70df04  libiberty/strsignal.c
  118932d11e6b27c7319a4397c2b933f7  libiberty/strstr.c
  7cdec698bb769c0ef1194806ac18b094  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
*************** e52d95644dc6f186070f349a5903ca72  libibe
*** 144541,144552 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  82039c5e76badca485d7ec27bf160ba4  libiberty/xstrndup.c
  2052196fd1de9a9efa8722031398f544  libiberty/xvasprintf.c
! b8e8fe78dfa2dd2073b4ac6b0afa7431  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  4fb260790809cc0a691787692a7d2d92  libitm/Makefile.in
  86465895a9d654faded88bc3fa075117  libitm/aatree.cc
  95728dd37e8694d4ccdcdb365595d1f4  libitm/aatree.h
! e6dfcfcc8881bee11fb716a6a32cfd61  libitm/acinclude.m4
  c057faa22b091382c3fe2dc7fcc66132  libitm/aclocal.m4
  c698cef271968e273f64e6524284df79  libitm/alloc.cc
  8d808238ba54cd7fea551d4e70b4855a  libitm/alloc_c.cc
--- 144906,144917 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  82039c5e76badca485d7ec27bf160ba4  libiberty/xstrndup.c
  2052196fd1de9a9efa8722031398f544  libiberty/xvasprintf.c
! 79077fb87b09a7c69962b23eb7002874  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  4fb260790809cc0a691787692a7d2d92  libitm/Makefile.in
  86465895a9d654faded88bc3fa075117  libitm/aatree.cc
  95728dd37e8694d4ccdcdb365595d1f4  libitm/aatree.h
! b4fe1884c3777b97fb937aba66e840eb  libitm/acinclude.m4
  c057faa22b091382c3fe2dc7fcc66132  libitm/aclocal.m4
  c698cef271968e273f64e6524284df79  libitm/alloc.cc
  8d808238ba54cd7fea551d4e70b4855a  libitm/alloc_c.cc
*************** aa8f2630a2936b0e0a9b41f87cb03fc7  libitm
*** 144598,144608 ****
  2f9bf1eed596a3f6837b544b05c2b8cb  libitm/config/x86/target.h
  d3a1591c1c6369e67ec11caecea31c4a  libitm/config/x86/x86_avx.cc
  484d4b9ccacf3bf7f6ecb13aae8b1baa  libitm/config/x86/x86_sse.cc
! 60f41aa0651b727affdae3cdd8c25ca9  libitm/configure
  bf279302b1746f89596e54fb64658210  libitm/configure.ac
  fbac9861d92da62020d608222ecf20a4  libitm/configure.tgt
  03a80c7dc2652bcaa734264355b95fd7  libitm/containers.h
! a99c56d6764d4283dd8d9bba416711a2  libitm/dispatch.h
  b61ab3456ae4675b1c1958500d1679dc  libitm/eh_cpp.cc
  b23223f9d83d1b1902bb2bb34de8f894  libitm/libitm.h
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
--- 144963,144973 ----
  2f9bf1eed596a3f6837b544b05c2b8cb  libitm/config/x86/target.h
  d3a1591c1c6369e67ec11caecea31c4a  libitm/config/x86/x86_avx.cc
  484d4b9ccacf3bf7f6ecb13aae8b1baa  libitm/config/x86/x86_sse.cc
! 5d6600af898b3834e2b634ed18c7bd65  libitm/configure
  bf279302b1746f89596e54fb64658210  libitm/configure.ac
  fbac9861d92da62020d608222ecf20a4  libitm/configure.tgt
  03a80c7dc2652bcaa734264355b95fd7  libitm/containers.h
! 34471bd45c09fa5856a961fce894883e  libitm/dispatch.h
  b61ab3456ae4675b1c1958500d1679dc  libitm/eh_cpp.cc
  b23223f9d83d1b1902bb2bb34de8f894  libitm/libitm.h
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
*************** ea467d7117853d139bb288ab75261139  libitm
*** 144611,144619 ****
  759763656263de1ced201389eb6845c8  libitm/libitm_i.h
  57b6c575494b671c890995787790b8aa  libitm/local.cc
  e15ca5fea1fc328695442dd6616fa3cb  libitm/local_atomic
! 6868c22bcd268793363e80e25f84a9f6  libitm/method-gl.cc
! 0712e3a7abd4d1ec3a37e190c9f2c97a  libitm/method-ml.cc
! 56fbf0eaeca6343ef2cfcc9d97301a30  libitm/method-serial.cc
  0751feb708d524709be89d7a0e48514e  libitm/query.cc
  6bd2dd6d388299de9a5016803ac6ab0f  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
--- 144976,144984 ----
  759763656263de1ced201389eb6845c8  libitm/libitm_i.h
  57b6c575494b671c890995787790b8aa  libitm/local.cc
  e15ca5fea1fc328695442dd6616fa3cb  libitm/local_atomic
! d566cb93d1ffb4978a924c3a4bc67a69  libitm/method-gl.cc
! e5b2b6a43aaf311749048e1262aa992c  libitm/method-ml.cc
! 35a1a5db269c0981d2423e7f658bd821  libitm/method-serial.cc
  0751feb708d524709be89d7a0e48514e  libitm/query.cc
  6bd2dd6d388299de9a5016803ac6ab0f  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
*************** b394cf23a598d3271d7bd5c679c7febd  libpho
*** 145712,145718 ****
  0342110002aef9526eb42753cd0cfac9  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! be04851508693a11f8f8685d3a40d2fd  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  8b9db4fd541847f61d62cd2525d1554f  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
--- 146077,146083 ----
  0342110002aef9526eb42753cd0cfac9  libphobos/testsuite/libphobos.unittest/unittest.exp
  a8de1f183b347afc269d237f3fd14b61  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! b9296bf4f61a04786f15d0c6886fdb13  libquadmath/ChangeLog
  d981cb45023d55b1fe9629d54c616528  libquadmath/Makefile.am
  8b9db4fd541847f61d62cd2525d1554f  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
*************** dd20868b7096de9f158426017a8283a2  libqua
*** 145795,145802 ****
  caa0f5194a02fc46bd2f56a89ba84098  libquadmath/math/nanq.c
  80bfb7e895ee0c1093e776de09f69f8d  libquadmath/math/nearbyintq.c
  3e7006e8ade7147ffb505eeb33b5fb1a  libquadmath/math/nextafterq.c
! 06390c63062913d075126b3491d191e7  libquadmath/math/powq.c
! 9423b550dce7656978d000dbe660492d  libquadmath/math/rem_pio2q.c
  65e271267699e065503fa967171e20d0  libquadmath/math/remainderq.c
  51dd81a94872e7f6e5e3d0f3994e8ffe  libquadmath/math/remquoq.c
  a8de29af4e666b27941652fc8c267e33  libquadmath/math/rintq.c
--- 146160,146167 ----
  caa0f5194a02fc46bd2f56a89ba84098  libquadmath/math/nanq.c
  80bfb7e895ee0c1093e776de09f69f8d  libquadmath/math/nearbyintq.c
  3e7006e8ade7147ffb505eeb33b5fb1a  libquadmath/math/nextafterq.c
! 6ddd049ad4946718325c197c4e15a82e  libquadmath/math/powq.c
! 7f1a4df3ed3ca690e20356b8313390de  libquadmath/math/rem_pio2q.c
  65e271267699e065503fa967171e20d0  libquadmath/math/remainderq.c
  51dd81a94872e7f6e5e3d0f3994e8ffe  libquadmath/math/remquoq.c
  a8de29af4e666b27941652fc8c267e33  libquadmath/math/rintq.c
*************** f82ab3e76785fdb6583fcc500defddc5  libqua
*** 145833,145839 ****
  dccfb932e7a4ec8c89731a6c7a7a9b82  libquadmath/printf/mul.c
  00ace3262180f7a3f9351c1d0988ff1c  libquadmath/printf/mul_1.c
  f387f032d813cca837e7cf5477e2f6d5  libquadmath/printf/mul_n.c
! 8f689c2eecdac18dd2ba0d5492bfcd5d  libquadmath/printf/printf_fp.c
  9bc3ff4862b4fe31d0be46abc64a8bc4  libquadmath/printf/printf_fphex.c
  e1960c6cccb78a5a2d60bdfe428c9d1b  libquadmath/printf/quadmath-printf.c
  793f681760a8266fc2adf2810355df6a  libquadmath/printf/quadmath-printf.h
--- 146198,146204 ----
  dccfb932e7a4ec8c89731a6c7a7a9b82  libquadmath/printf/mul.c
  00ace3262180f7a3f9351c1d0988ff1c  libquadmath/printf/mul_1.c
  f387f032d813cca837e7cf5477e2f6d5  libquadmath/printf/mul_n.c
! a52d7db5b003b49b8fb353ec1438f5e0  libquadmath/printf/printf_fp.c
  9bc3ff4862b4fe31d0be46abc64a8bc4  libquadmath/printf/printf_fphex.c
  e1960c6cccb78a5a2d60bdfe428c9d1b  libquadmath/printf/quadmath-printf.c
  793f681760a8266fc2adf2810355df6a  libquadmath/printf/quadmath-printf.h
*************** a73fdec6746eaad8ccdc8e8403aac562  libqua
*** 145851,145857 ****
  63b21fffce1e264f1d67357ee6457944  libquadmath/strtod/strtod_l.c
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! 12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
  709bc5bc8048bacdbfc2ace03e9161ab  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
--- 146216,146222 ----
  63b21fffce1e264f1d67357ee6457944  libquadmath/strtod/strtod_l.c
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! c302c3214d8b4d35988d1d26698e9cff  libquadmath/update-quadmath.py
  709bc5bc8048bacdbfc2ace03e9161ab  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 146378,146384 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 7f184126d5fb85e3a9d1ecb0e3f9938b  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 146743,146749 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 474f44fce94924f7aeb5b3dc3f0ac867  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a94321c8d0dbbc71741ebf0f1cc9828c  libstd
*** 146410,146416 ****
  9161085c79a8bf8d60641b5525f28bd7  libstdc++-v3/Makefile.am
  dbe6646c8cac125dd885d66a4fd4ce40  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 6bf7eb4b22c3585541b19f34d787f4a2  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  2345fca717fc01f8c1494241d6a88e94  libstdc++-v3/config/abi/compatibility.h
--- 146775,146781 ----
  9161085c79a8bf8d60641b5525f28bd7  libstdc++-v3/Makefile.am
  dbe6646c8cac125dd885d66a4fd4ce40  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! b9cbca9b4cd0db9842cfeee922aa2c51  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  2345fca717fc01f8c1494241d6a88e94  libstdc++-v3/config/abi/compatibility.h
*************** e5c9f2a9960340c0422d63c3b06cf961  libstd
*** 146473,146479 ****
  823bcb2e884ac9de9ee7bfac8ae64c0c  libstdc++-v3/config/cpu/sparc/atomic_word.h
  bd336399832b3114a111d7a494b53f7a  libstdc++-v3/config/cpu/sparc/atomicity.h
  cc25897137f72615c0028216d8d0d3f2  libstdc++-v3/config/io/basic_file_stdio.cc
! 00af1762d61ddebc612a4c0f7f6dc8b0  libstdc++-v3/config/io/basic_file_stdio.h
  d3d299c1d7348829b079ab4d59b5c603  libstdc++-v3/config/io/c_io_stdio.h
  ef4e42d65c502b4a71721a210d6a6cb9  libstdc++-v3/config/locale/darwin/ctype_members.cc
  23e0a978e4380ce48167a2af43e7c589  libstdc++-v3/config/locale/dragonfly/c_locale.cc
--- 146838,146844 ----
  823bcb2e884ac9de9ee7bfac8ae64c0c  libstdc++-v3/config/cpu/sparc/atomic_word.h
  bd336399832b3114a111d7a494b53f7a  libstdc++-v3/config/cpu/sparc/atomicity.h
  cc25897137f72615c0028216d8d0d3f2  libstdc++-v3/config/io/basic_file_stdio.cc
! 2468acdba97df6f215a8e1681b0448a0  libstdc++-v3/config/io/basic_file_stdio.h
  d3d299c1d7348829b079ab4d59b5c603  libstdc++-v3/config/io/c_io_stdio.h
  ef4e42d65c502b4a71721a210d6a6cb9  libstdc++-v3/config/locale/darwin/ctype_members.cc
  23e0a978e4380ce48167a2af43e7c589  libstdc++-v3/config/locale/dragonfly/c_locale.cc
*************** a144795bdde388f89eb6222f0c2e4932  libstd
*** 146604,146619 ****
  53df82982400fd3d426f3fd0e0c37b54  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  a3f907fa7f71dc9eb08755c9c438accc  libstdc++-v3/config/os/vxworks/ctype_inline.h
  309bdcfd61ec9ca44671057524c081f1  libstdc++-v3/config/os/vxworks/os_defines.h
! c007399a4bc5377817f8ba58875445f7  libstdc++-v3/configure
! ef7d4ee8dfc656b2511fdab05020e10d  libstdc++-v3/configure.ac
  ac3c5c4c31f1e2c1f6e793bafb5f3931  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  21e660b6ad1acb38a925de8aee375f12  libstdc++-v3/doc/Makefile.am
  015a7bc96be2528c79352941cf0f8da0  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! 01fb2b0a0286e9788188d21c40eee93c  libstdc++-v3/doc/doxygen/doxygroups.cc
  0afaede288e1533644cb1445cf4ff813  libstdc++-v3/doc/doxygen/mainpage.html
! 9e50e6ed5219a6fa4058265ed4809638  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  23205b4c12f958aeda8f0336cd90ce85  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
--- 146969,146984 ----
  53df82982400fd3d426f3fd0e0c37b54  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  a3f907fa7f71dc9eb08755c9c438accc  libstdc++-v3/config/os/vxworks/ctype_inline.h
  309bdcfd61ec9ca44671057524c081f1  libstdc++-v3/config/os/vxworks/os_defines.h
! 697b9ccb3dac2fc9458b082cfcd68e0c  libstdc++-v3/configure
! 3d4afabfe754da548766585878942937  libstdc++-v3/configure.ac
  ac3c5c4c31f1e2c1f6e793bafb5f3931  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  21e660b6ad1acb38a925de8aee375f12  libstdc++-v3/doc/Makefile.am
  015a7bc96be2528c79352941cf0f8da0  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! f39d837ddbb7187c256a4f3a33ec580d  libstdc++-v3/doc/doxygen/doxygroups.cc
  0afaede288e1533644cb1445cf4ff813  libstdc++-v3/doc/doxygen/mainpage.html
! 9a607c1f658face231aa4f4d3d617510  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  23205b4c12f958aeda8f0336cd90ce85  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
*************** bc0412a9556e7ed39afe5103b73f1f26  libstd
*** 147040,147047 ****
  7b70f0f77a50b976605aef6dbeb1e282  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 9bd664124f8ebbe5b8da437d12adf39b  libstdc++-v3/include/Makefile.am
! 596f06f15415d9f5b3edc5442efcebd2  libstdc++-v3/include/Makefile.in
  c43a95ade3f229bbf11e4df12e566d23  libstdc++-v3/include/backward/auto_ptr.h
  a5311733ecd17a8f51066f4a2a351abd  libstdc++-v3/include/backward/backward_warning.h
  5c3fe230b3089d4b9c58b4a86af57005  libstdc++-v3/include/backward/binders.h
--- 147405,147412 ----
  7b70f0f77a50b976605aef6dbeb1e282  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! eec02ccdebd1149367f7bc78f5915644  libstdc++-v3/include/Makefile.am
! 619249ce9d71a5415f413a80166ab33b  libstdc++-v3/include/Makefile.in
  c43a95ade3f229bbf11e4df12e566d23  libstdc++-v3/include/backward/auto_ptr.h
  a5311733ecd17a8f51066f4a2a351abd  libstdc++-v3/include/backward/backward_warning.h
  5c3fe230b3089d4b9c58b4a86af57005  libstdc++-v3/include/backward/binders.h
*************** a7d1ee943a62851fe350ec2bafff68be  libstd
*** 147055,147067 ****
  8b861e997049da913d847c1c3386de8b  libstdc++-v3/include/bits/alloc_traits.h
  54d70975b96f74e9dab06dcfdeb88658  libstdc++-v3/include/bits/allocated_ptr.h
  057f2ba9795770f94d269ec61c0c9cf7  libstdc++-v3/include/bits/allocator.h
! 90474cfdc599d84d37f90551a24dfb7c  libstdc++-v3/include/bits/atomic_base.h
  504ddf67fe31254fb67815770ee690ba  libstdc++-v3/include/bits/atomic_futex.h
  e901edfc8eef441d1adabd54be25b807  libstdc++-v3/include/bits/atomic_timed_wait.h
  f67bb8f4c8c8e2352479c2540b62543f  libstdc++-v3/include/bits/atomic_wait.h
  65e262c95ca2a5021497a947a07b5d48  libstdc++-v3/include/bits/basic_ios.h
  e0d25c8ddeac5ee95a7b60861849f304  libstdc++-v3/include/bits/basic_ios.tcc
! 3703f6fc16e78a5989dfe0921b1e2197  libstdc++-v3/include/bits/basic_string.h
  2f7562208df92df6d82751520c3e1881  libstdc++-v3/include/bits/basic_string.tcc
  abf1c74de0fb52f696034bd48432d075  libstdc++-v3/include/bits/binders.h
  3bc144622d471efab1aef4ec705459d0  libstdc++-v3/include/bits/boost_concept_check.h
--- 147420,147432 ----
  8b861e997049da913d847c1c3386de8b  libstdc++-v3/include/bits/alloc_traits.h
  54d70975b96f74e9dab06dcfdeb88658  libstdc++-v3/include/bits/allocated_ptr.h
  057f2ba9795770f94d269ec61c0c9cf7  libstdc++-v3/include/bits/allocator.h
! b150985fe0890b1fd56c8ecb8d3f07fe  libstdc++-v3/include/bits/atomic_base.h
  504ddf67fe31254fb67815770ee690ba  libstdc++-v3/include/bits/atomic_futex.h
  e901edfc8eef441d1adabd54be25b807  libstdc++-v3/include/bits/atomic_timed_wait.h
  f67bb8f4c8c8e2352479c2540b62543f  libstdc++-v3/include/bits/atomic_wait.h
  65e262c95ca2a5021497a947a07b5d48  libstdc++-v3/include/bits/basic_ios.h
  e0d25c8ddeac5ee95a7b60861849f304  libstdc++-v3/include/bits/basic_ios.tcc
! 116a86ee2458749af6159438ffd2f6b0  libstdc++-v3/include/bits/basic_string.h
  2f7562208df92df6d82751520c3e1881  libstdc++-v3/include/bits/basic_string.tcc
  abf1c74de0fb52f696034bd48432d075  libstdc++-v3/include/bits/binders.h
  3bc144622d471efab1aef4ec705459d0  libstdc++-v3/include/bits/boost_concept_check.h
*************** abf1c74de0fb52f696034bd48432d075  libstd
*** 147069,147081 ****
  34446381e4c4746a62681665aebf236a  libstdc++-v3/include/bits/c++config
  5cbbd0fafb904f86c9ddce3fc54380f1  libstdc++-v3/include/bits/char_traits.h
  9a3227d14b324832ae22b4c7ec6979e2  libstdc++-v3/include/bits/charconv.h
! 6fe2f7b46dbc6b4127ad2e546061bfaf  libstdc++-v3/include/bits/chrono.h
! 9c32c72531ca78037c316602cefb201b  libstdc++-v3/include/bits/chrono_io.h
  1f26067336c4957237db887ab1ce6b55  libstdc++-v3/include/bits/codecvt.h
  53f7e45e350f1bb99b3d67e27f914b61  libstdc++-v3/include/bits/concept_check.h
  3000c6dba4f53a32aed26e5c5cbccffc  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
! ec94afe2ff1b88aa1786d2dbcb5da9cc  libstdc++-v3/include/bits/cpyfunc_impl.h
  a00599dc44159a6b255d87ddbb7e237c  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
--- 147434,147446 ----
  34446381e4c4746a62681665aebf236a  libstdc++-v3/include/bits/c++config
  5cbbd0fafb904f86c9ddce3fc54380f1  libstdc++-v3/include/bits/char_traits.h
  9a3227d14b324832ae22b4c7ec6979e2  libstdc++-v3/include/bits/charconv.h
! ef5da941e610aa07597222bbacff9975  libstdc++-v3/include/bits/chrono.h
! d0d10dddbd3971b63c4733b04e1bc69a  libstdc++-v3/include/bits/chrono_io.h
  1f26067336c4957237db887ab1ce6b55  libstdc++-v3/include/bits/codecvt.h
  53f7e45e350f1bb99b3d67e27f914b61  libstdc++-v3/include/bits/concept_check.h
  3000c6dba4f53a32aed26e5c5cbccffc  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
! 8890a18d951d6a850abe7666583a1d50  libstdc++-v3/include/bits/cpyfunc_impl.h
  a00599dc44159a6b255d87ddbb7e237c  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
*************** f053b22f5819f7ed1f6ed5ffe14dc5a3  libstd
*** 147086,147094 ****
  6f26512074a75529ba29871026bd71d5  libstdc++-v3/include/bits/fs_dir.h
  2a39eb878ffd3fb88661d1eeaab059dd  libstdc++-v3/include/bits/fs_fwd.h
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
! 7fe100acd8acdc1ac9bb10e1dadb50b8  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
! 492d987032a590d93530a850365509bf  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
  31bdc727f2eaf8eda1ab45fb88577c00  libstdc++-v3/include/bits/functional_hash.h
  fb24aa3b5d33965592a556830bf0d6e4  libstdc++-v3/include/bits/funcwrap.h
--- 147451,147459 ----
  6f26512074a75529ba29871026bd71d5  libstdc++-v3/include/bits/fs_dir.h
  2a39eb878ffd3fb88661d1eeaab059dd  libstdc++-v3/include/bits/fs_fwd.h
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
! a0221f9202c840356e908408b2c64720  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
! 3d80acb5d40b43f9035ce9f9ca085920  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
  31bdc727f2eaf8eda1ab45fb88577c00  libstdc++-v3/include/bits/functional_hash.h
  fb24aa3b5d33965592a556830bf0d6e4  libstdc++-v3/include/bits/funcwrap.h
*************** b06aeb018bc3d30652ee07af66a6a664  libstd
*** 147101,147131 ****
  02fc060959019f916137494b7725ead3  libstdc++-v3/include/bits/intcmp.h
  06b4263267a102d1ab00cc2f9647964c  libstdc++-v3/include/bits/invoke.h
  4150f8a8b9f1d62d09bec752e3f3476a  libstdc++-v3/include/bits/ios_base.h
  1fc82914e7574979e75201ce425f67ef  libstdc++-v3/include/bits/istream.tcc
  675990bcb7251fa8ae5aa34ac346d80c  libstdc++-v3/include/bits/iterator_concepts.h
  dbb38e51004a447016e1e173b48b4e27  libstdc++-v3/include/bits/list.tcc
  4c22a893ca8a2b9ff88b689b6d5bb1ca  libstdc++-v3/include/bits/locale_classes.h
  a24ec2cbb7ec61510b16ffcdecba54dd  libstdc++-v3/include/bits/locale_classes.tcc
! 4194ec945d55a6f0fac152eb05b43305  libstdc++-v3/include/bits/locale_conv.h
! f9ae524f3c66bcff759d2dc5fb7a4409  libstdc++-v3/include/bits/locale_facets.h
  f69aa477afbbb88f2ee81c3b9aa8d777  libstdc++-v3/include/bits/locale_facets.tcc
  90a6211880ca4e245491a7aa1d8e37c0  libstdc++-v3/include/bits/locale_facets_nonio.h
  5e10fa4819349005d341e0d826c26645  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! ba88833f52a0518e73f3f865cd474fcd  libstdc++-v3/include/bits/localefwd.h
  7d421045a2c29aed04d8138049f30a0f  libstdc++-v3/include/bits/mask_array.h
  3b8fde32379284f35ba1b16a4a8e5b75  libstdc++-v3/include/bits/max_size_type.h
  c2a37a4d261aa6aa543de47ce2a11603  libstdc++-v3/include/bits/memory_resource.h
  d8251691b710967c63f24ecf3e8cad75  libstdc++-v3/include/bits/memoryfwd.h
! 2708f802c8da11c10d875a4645e4940f  libstdc++-v3/include/bits/mofunc_impl.h
  4169d644c2ef24f0668b2a257a0a5e54  libstdc++-v3/include/bits/monostate.h
  3cfa2a35a7a2c4659303ecaa81de7f29  libstdc++-v3/include/bits/move.h
! 969ff45921e9018219c351e49f98e77d  libstdc++-v3/include/bits/new_allocator.h
  1b9f1c577b18d8325e7de09b66b12c27  libstdc++-v3/include/bits/new_except.h
  30068e814005895587eb706ab7c5c00c  libstdc++-v3/include/bits/new_throw.h
  ab1a2667b1fb6a0843b439656cb56a71  libstdc++-v3/include/bits/node_handle.h
! 2cf34f1c708dc8a68a59f26be37aa2b2  libstdc++-v3/include/bits/ostream.h
  ad86ba065860cc280af4d463bd5ac78e  libstdc++-v3/include/bits/ostream.tcc
! 4960be4248870cda60d2fbc53fc26da1  libstdc++-v3/include/bits/ostream_insert.h
  64d102a93753ab03d804450e77aceec5  libstdc++-v3/include/bits/ostream_print.h
  fa05c4e39f6430965ffaf3e65ed36b7b  libstdc++-v3/include/bits/out_ptr.h
  70fb2f8fab4692fafd8fa11d91d01edd  libstdc++-v3/include/bits/parse_numbers.h
--- 147466,147501 ----
  02fc060959019f916137494b7725ead3  libstdc++-v3/include/bits/intcmp.h
  06b4263267a102d1ab00cc2f9647964c  libstdc++-v3/include/bits/invoke.h
  4150f8a8b9f1d62d09bec752e3f3476a  libstdc++-v3/include/bits/ios_base.h
+ 2c4936a0ab249d4113f113f8eaf89867  libstdc++-v3/include/bits/iosfwd.h
+ 4870bfbba88d56269c3844e852332313  libstdc++-v3/include/bits/iosfwd_file.h
+ b5a8a282ad6c81ca254093e6194c6a83  libstdc++-v3/include/bits/iosfwd_span.h
+ 33c6cd7f10105ccfd8cdd9150c5b4f7c  libstdc++-v3/include/bits/iosfwd_string.h
+ d19a65c06d97be01bb5bd0c03de0a8a7  libstdc++-v3/include/bits/iosfwd_sync.h
  1fc82914e7574979e75201ce425f67ef  libstdc++-v3/include/bits/istream.tcc
  675990bcb7251fa8ae5aa34ac346d80c  libstdc++-v3/include/bits/iterator_concepts.h
  dbb38e51004a447016e1e173b48b4e27  libstdc++-v3/include/bits/list.tcc
  4c22a893ca8a2b9ff88b689b6d5bb1ca  libstdc++-v3/include/bits/locale_classes.h
  a24ec2cbb7ec61510b16ffcdecba54dd  libstdc++-v3/include/bits/locale_classes.tcc
! 61bb97dd4dddc6c318e48c003205bccc  libstdc++-v3/include/bits/locale_conv.h
! e5ac50142b92478734a236d4243cd9a4  libstdc++-v3/include/bits/locale_facets.h
  f69aa477afbbb88f2ee81c3b9aa8d777  libstdc++-v3/include/bits/locale_facets.tcc
  90a6211880ca4e245491a7aa1d8e37c0  libstdc++-v3/include/bits/locale_facets_nonio.h
  5e10fa4819349005d341e0d826c26645  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! 716c8efa6fcde62f7fadd4778790d518  libstdc++-v3/include/bits/localefwd.h
  7d421045a2c29aed04d8138049f30a0f  libstdc++-v3/include/bits/mask_array.h
  3b8fde32379284f35ba1b16a4a8e5b75  libstdc++-v3/include/bits/max_size_type.h
  c2a37a4d261aa6aa543de47ce2a11603  libstdc++-v3/include/bits/memory_resource.h
  d8251691b710967c63f24ecf3e8cad75  libstdc++-v3/include/bits/memoryfwd.h
! e088e7321950878babb11f672f90e1f1  libstdc++-v3/include/bits/mofunc_impl.h
  4169d644c2ef24f0668b2a257a0a5e54  libstdc++-v3/include/bits/monostate.h
  3cfa2a35a7a2c4659303ecaa81de7f29  libstdc++-v3/include/bits/move.h
! 43e1eeae38d36a0b7ec60d2dd1785bb6  libstdc++-v3/include/bits/new_allocator.h
  1b9f1c577b18d8325e7de09b66b12c27  libstdc++-v3/include/bits/new_except.h
  30068e814005895587eb706ab7c5c00c  libstdc++-v3/include/bits/new_throw.h
  ab1a2667b1fb6a0843b439656cb56a71  libstdc++-v3/include/bits/node_handle.h
! bce8ebbac6a08181f4a55b16ebfc95bc  libstdc++-v3/include/bits/ostream.h
  ad86ba065860cc280af4d463bd5ac78e  libstdc++-v3/include/bits/ostream.tcc
! 333ebec6c7c2e0bb4d74617fba1dc835  libstdc++-v3/include/bits/ostream_insert.h
  64d102a93753ab03d804450e77aceec5  libstdc++-v3/include/bits/ostream_print.h
  fa05c4e39f6430965ffaf3e65ed36b7b  libstdc++-v3/include/bits/out_ptr.h
  70fb2f8fab4692fafd8fa11d91d01edd  libstdc++-v3/include/bits/parse_numbers.h
*************** fa05c4e39f6430965ffaf3e65ed36b7b  libstd
*** 147134,147145 ****
  b07bdc6c6cec90e9cf7a74c52af0e9fc  libstdc++-v3/include/bits/print.h
  097b3f6fff8834167e5a5eb29dc9a79c  libstdc++-v3/include/bits/ptr_traits.h
  e9057d3a64660954bf7134e2fb721b51  libstdc++-v3/include/bits/quoted_string.h
! 1212e8ec1e592e1298a3e4b209282cbe  libstdc++-v3/include/bits/random.h
! 9cf24bfc0529d75ef0e80efe6b8a49a9  libstdc++-v3/include/bits/random.tcc
! 6bece5966bf565303831f4ab2d03e64f  libstdc++-v3/include/bits/range_access.h
  91a3a127b4d8b0d05094dd720c6074ae  libstdc++-v3/include/bits/ranges_algo.h
  2376637350495a1dbd9c27901ed68027  libstdc++-v3/include/bits/ranges_algobase.h
! be4d83717ac91b3baa833f61b2456293  libstdc++-v3/include/bits/ranges_base.h
  c04d8e83343df391a348af7cf384e792  libstdc++-v3/include/bits/ranges_cmp.h
  01f0b1bd6742b4a2e642b03e16e87ca0  libstdc++-v3/include/bits/ranges_uninitialized.h
  1e16e9219782b5cd7f75c9d3e4611b1b  libstdc++-v3/include/bits/ranges_util.h
--- 147504,147515 ----
  b07bdc6c6cec90e9cf7a74c52af0e9fc  libstdc++-v3/include/bits/print.h
  097b3f6fff8834167e5a5eb29dc9a79c  libstdc++-v3/include/bits/ptr_traits.h
  e9057d3a64660954bf7134e2fb721b51  libstdc++-v3/include/bits/quoted_string.h
! f6d9607f054b18dce56140f14575cd7d  libstdc++-v3/include/bits/random.h
! 45e4367da758ae11781fb78d5fc9b455  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
! 0161842d905e6c0a2ecb43b2833ee850  libstdc++-v3/include/bits/ranges_base.h
  c04d8e83343df391a348af7cf384e792  libstdc++-v3/include/bits/ranges_cmp.h
  01f0b1bd6742b4a2e642b03e16e87ca0  libstdc++-v3/include/bits/ranges_uninitialized.h
  1e16e9219782b5cd7f75c9d3e4611b1b  libstdc++-v3/include/bits/ranges_util.h
*************** cbd44f9447b308b0901004443db53e93  libstd
*** 147159,147176 ****
  22a9676313472917eaaccc27ddfb10f4  libstdc++-v3/include/bits/requires_hosted.h
  0a8f60f26dfea4bfea0ec71fe4a45ee8  libstdc++-v3/include/bits/sat_arith.h
  39e2988a6581d891172e27c28e87c62f  libstdc++-v3/include/bits/semaphore_base.h
! b7a12ec2370990cc1497acc595d1d860  libstdc++-v3/include/bits/shared_ptr.h
  3464ab6bcb3ccff1cae5bcff7a6eb9ca  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 1cc9b97ad3b4daebc9ebe312f1406415  libstdc++-v3/include/bits/shared_ptr_base.h
  a3287036233bd3e6387160d82f75e7dd  libstdc++-v3/include/bits/simd_alg.h
! f8b1a070b2932ca8805b08178cbccf75  libstdc++-v3/include/bits/simd_details.h
  3173beedaa41588474c5481ec450cd20  libstdc++-v3/include/bits/simd_flags.h
  707046d01f2d965e0a84ca6c656e2046  libstdc++-v3/include/bits/simd_iterator.h
! b136a78972f27620821fe613b75e98f4  libstdc++-v3/include/bits/simd_loadstore.h
  76bfdd0a03cc20268cdb760ed633e53a  libstdc++-v3/include/bits/simd_mask.h
  55677796a9d03b2fcab6c8eb9866efcb  libstdc++-v3/include/bits/simd_mask_reductions.h
  fce0564b07dd0ef981a64c683bfadc5a  libstdc++-v3/include/bits/simd_reductions.h
! 0b323a7c4344eeb0723e3ae0a9fbeef1  libstdc++-v3/include/bits/simd_vec.h
  86eb307e0886ccc75570d22c33f78b3a  libstdc++-v3/include/bits/simd_x86.h
  c7864edd44ec162778d0cb89b0129937  libstdc++-v3/include/bits/slice_array.h
  78e195bd62ca638897505b698c3193de  libstdc++-v3/include/bits/specfun.h
--- 147529,147546 ----
  22a9676313472917eaaccc27ddfb10f4  libstdc++-v3/include/bits/requires_hosted.h
  0a8f60f26dfea4bfea0ec71fe4a45ee8  libstdc++-v3/include/bits/sat_arith.h
  39e2988a6581d891172e27c28e87c62f  libstdc++-v3/include/bits/semaphore_base.h
! 83ffdab4b50f31e7bb34b9c38dbe5fd0  libstdc++-v3/include/bits/shared_ptr.h
  3464ab6bcb3ccff1cae5bcff7a6eb9ca  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 36ef52638647251fcb35fa7716ff6856  libstdc++-v3/include/bits/shared_ptr_base.h
  a3287036233bd3e6387160d82f75e7dd  libstdc++-v3/include/bits/simd_alg.h
! 0befd3e7c5db787884829dec54e9a943  libstdc++-v3/include/bits/simd_details.h
  3173beedaa41588474c5481ec450cd20  libstdc++-v3/include/bits/simd_flags.h
  707046d01f2d965e0a84ca6c656e2046  libstdc++-v3/include/bits/simd_iterator.h
! 8e42eeccd6ced90cd4f50cececf358c9  libstdc++-v3/include/bits/simd_loadstore.h
  76bfdd0a03cc20268cdb760ed633e53a  libstdc++-v3/include/bits/simd_mask.h
  55677796a9d03b2fcab6c8eb9866efcb  libstdc++-v3/include/bits/simd_mask_reductions.h
  fce0564b07dd0ef981a64c683bfadc5a  libstdc++-v3/include/bits/simd_reductions.h
! 8ed5567f3889cfbc232623327c0d3b72  libstdc++-v3/include/bits/simd_vec.h
  86eb307e0886ccc75570d22c33f78b3a  libstdc++-v3/include/bits/simd_x86.h
  c7864edd44ec162778d0cb89b0129937  libstdc++-v3/include/bits/slice_array.h
  78e195bd62ca638897505b698c3193de  libstdc++-v3/include/bits/specfun.h
*************** c7864edd44ec162778d0cb89b0129937  libstd
*** 147178,147214 ****
  5a28c1e493e9869d8b5de7ea2bf1b811  libstdc++-v3/include/bits/std_abs.h
  098007aa808e7047822ed48cd00a5504  libstdc++-v3/include/bits/std_function.h
  55fe955c120e90af44fe73d6c1c48734  libstdc++-v3/include/bits/std_mutex.h
! 5b50c655c6d844633810805cb884e7f9  libstdc++-v3/include/bits/std_thread.h
  a9b017ab9e6eb2ad8847aa0ec2b12cff  libstdc++-v3/include/bits/stdexcept_except.h
  f9e306b8cee74f13390d2c91f994d69f  libstdc++-v3/include/bits/stdexcept_throw.h
  4ebc2f0739aa489c68b54dccba9f2290  libstdc++-v3/include/bits/stdexcept_throwdef.h
  9414705c520a817ae3b22dec29912b18  libstdc++-v3/include/bits/stdexcept_throwfwd.h
! 17332362c7ba0c7b2b3d14f656324b1b  libstdc++-v3/include/bits/stl_algo.h
  bb3f76482179ec4ebe183284d0d69874  libstdc++-v3/include/bits/stl_algobase.h
  4e5a06e505381e0b1af562ff59670f89  libstdc++-v3/include/bits/stl_bvector.h
  c53878727e94c56c0b362d17dfe0fca2  libstdc++-v3/include/bits/stl_construct.h
! 7ff5badcdf0331f820bb5c635a0c2352  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  4af65d6cfcd3e9943b1da341c9fa26ad  libstdc++-v3/include/bits/stl_heap.h
! b8e750935e87990624f0987f01d9ed7c  libstdc++-v3/include/bits/stl_iterator.h
  e4fadcd5fca526cd53e83c472d606b4f  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  9ca5002544e6d43a87c20d3052b7348a  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
! 54cd5ee7e2d1a538e5e89495c33a3fe9  libstdc++-v3/include/bits/stl_map.h
! ffa344f61cf489be8d6b4b4c50bf5043  libstdc++-v3/include/bits/stl_multimap.h
! 0c8e2dae6126ed4fad55da6b9aa553bc  libstdc++-v3/include/bits/stl_multiset.h
  092fe17b6b3890e4eb295f8e06093a51  libstdc++-v3/include/bits/stl_numeric.h
  f2b2f381cae0b54e8fdd0103b44ef7f0  libstdc++-v3/include/bits/stl_pair.h
  ecab53d31c72576e23a3a0e171171543  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
! c70bbf877307a51d2c70e9955edf27f6  libstdc++-v3/include/bits/stl_set.h
  2e947ba181d169443bd32dfa77c0e138  libstdc++-v3/include/bits/stl_stack.h
  1c29bd2c226486c0b4016828fd21d761  libstdc++-v3/include/bits/stl_tempbuf.h
  5a7ae738df1c65c40473cbd89974f3fd  libstdc++-v3/include/bits/stl_tree.h
  6b5ebf261762096423606222edf5246e  libstdc++-v3/include/bits/stl_uninitialized.h
! 7d9ed7479273bdd2f66b5f3b4065f829  libstdc++-v3/include/bits/stl_vector.h
! 96570e9668a903cd69d5febdf0595994  libstdc++-v3/include/bits/stream_iterator.h
  5d9b3cc499e4ec992ba0bb9a3de1d791  libstdc++-v3/include/bits/streambuf.tcc
  6343ef1e67538a9623d0775ee71895cb  libstdc++-v3/include/bits/streambuf_iterator.h
  16c1b7fd1686282fe8921246a80255d1  libstdc++-v3/include/bits/string_view.tcc
--- 147548,147584 ----
  5a28c1e493e9869d8b5de7ea2bf1b811  libstdc++-v3/include/bits/std_abs.h
  098007aa808e7047822ed48cd00a5504  libstdc++-v3/include/bits/std_function.h
  55fe955c120e90af44fe73d6c1c48734  libstdc++-v3/include/bits/std_mutex.h
! 3989913120eb6924a27c3a07763292c7  libstdc++-v3/include/bits/std_thread.h
  a9b017ab9e6eb2ad8847aa0ec2b12cff  libstdc++-v3/include/bits/stdexcept_except.h
  f9e306b8cee74f13390d2c91f994d69f  libstdc++-v3/include/bits/stdexcept_throw.h
  4ebc2f0739aa489c68b54dccba9f2290  libstdc++-v3/include/bits/stdexcept_throwdef.h
  9414705c520a817ae3b22dec29912b18  libstdc++-v3/include/bits/stdexcept_throwfwd.h
! ac8c75ff38bcadb8aebb2f0148bff370  libstdc++-v3/include/bits/stl_algo.h
  bb3f76482179ec4ebe183284d0d69874  libstdc++-v3/include/bits/stl_algobase.h
  4e5a06e505381e0b1af562ff59670f89  libstdc++-v3/include/bits/stl_bvector.h
  c53878727e94c56c0b362d17dfe0fca2  libstdc++-v3/include/bits/stl_construct.h
! 3e4f6e814111cf95a66ca90d92f7cee6  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  4af65d6cfcd3e9943b1da341c9fa26ad  libstdc++-v3/include/bits/stl_heap.h
! e3d170c870b27f010b65121977deb05f  libstdc++-v3/include/bits/stl_iterator.h
  e4fadcd5fca526cd53e83c472d606b4f  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  9ca5002544e6d43a87c20d3052b7348a  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
! fc37d0e099f85ad87857bb0e58413e4e  libstdc++-v3/include/bits/stl_map.h
! 134a1d79c1c13a5012ac629bdf40005d  libstdc++-v3/include/bits/stl_multimap.h
! cf92a268e86eb61962fdbf10086b2236  libstdc++-v3/include/bits/stl_multiset.h
  092fe17b6b3890e4eb295f8e06093a51  libstdc++-v3/include/bits/stl_numeric.h
  f2b2f381cae0b54e8fdd0103b44ef7f0  libstdc++-v3/include/bits/stl_pair.h
  ecab53d31c72576e23a3a0e171171543  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
  5a7ae738df1c65c40473cbd89974f3fd  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
  6343ef1e67538a9623d0775ee71895cb  libstdc++-v3/include/bits/streambuf_iterator.h
  16c1b7fd1686282fe8921246a80255d1  libstdc++-v3/include/bits/string_view.tcc
*************** ed462c96f62bdf1b74863ce869094491  libstd
*** 147216,147225 ****
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
  e068a6cceadc0aec8d8e47311cac3f91  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! 8d7b0008119045f5029e61c141c3c2ff  libstdc++-v3/include/bits/unicode.h
  cca61b6eab779ef500cceeed96c678a8  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
! 722fac3b4af50bc63abc72f7120b80c6  libstdc++-v3/include/bits/unique_ptr.h
  b1052f564f9839906c0d1f1f7a3296ea  libstdc++-v3/include/bits/unordered_map.h
  3e95bc3dafd1a579438226ba448f80e4  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
--- 147586,147595 ----
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
  e068a6cceadc0aec8d8e47311cac3f91  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! ecc54f6137b3f08a59ee70d3db88a39d  libstdc++-v3/include/bits/unicode.h
  cca61b6eab779ef500cceeed96c678a8  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
! 856754bda39b0a544d21edb5cd2ae880  libstdc++-v3/include/bits/unique_ptr.h
  b1052f564f9839906c0d1f1f7a3296ea  libstdc++-v3/include/bits/unordered_map.h
  3e95bc3dafd1a579438226ba448f80e4  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
*************** ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstd
*** 147231,147238 ****
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  682dec8d9b388681bc1f171ba0c5590e  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! ae1e85f3adbba68624784dcdc24add83  libstdc++-v3/include/bits/version.def
! 6531f407cc29e442f9192eef7f513307  libstdc++-v3/include/bits/version.h
  f92789aa59d1ed5207e13c936667059d  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
--- 147601,147608 ----
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  682dec8d9b388681bc1f171ba0c5590e  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! ab46dab04837c3c0d80d49f578071d1f  libstdc++-v3/include/bits/version.def
! 1b457553d2cb96301e457c90e3f212da  libstdc++-v3/include/bits/version.h
  f92789aa59d1ed5207e13c936667059d  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
*************** c3fb87a4b760678f4c4ed98bd1be1a4d  libstd
*** 147267,147273 ****
  c77dc30670dabe5b153a1ec91a3d9060  libstdc++-v3/include/c_compatibility/setjmp.h
  a443277949254779744969a5bf96432d  libstdc++-v3/include/c_compatibility/signal.h
  a507b3dc4634a3bd5d51343052e1ebe6  libstdc++-v3/include/c_compatibility/stdarg.h
! e8f0a5b02e79903187f6f348af2a2914  libstdc++-v3/include/c_compatibility/stdatomic.h
  c2f557a28c1227cff940c6918cba6832  libstdc++-v3/include/c_compatibility/stdbit.h
  99516ad099034ac6c4ec580f5408359f  libstdc++-v3/include/c_compatibility/stdbool.h
  3613efbca3078025a0b386df3f22536a  libstdc++-v3/include/c_compatibility/stdckdint.h
--- 147637,147643 ----
  c77dc30670dabe5b153a1ec91a3d9060  libstdc++-v3/include/c_compatibility/setjmp.h
  a443277949254779744969a5bf96432d  libstdc++-v3/include/c_compatibility/signal.h
  a507b3dc4634a3bd5d51343052e1ebe6  libstdc++-v3/include/c_compatibility/stdarg.h
! d9c16cde97a4a6745857d28f85028c9b  libstdc++-v3/include/c_compatibility/stdatomic.h
  c2f557a28c1227cff940c6918cba6832  libstdc++-v3/include/c_compatibility/stdbit.h
  99516ad099034ac6c4ec580f5408359f  libstdc++-v3/include/c_compatibility/stdbool.h
  3613efbca3078025a0b386df3f22536a  libstdc++-v3/include/c_compatibility/stdckdint.h
*************** ddcad2ef48c62d7053209fd20d56de52  libstd
*** 147330,147336 ****
  5b540e2bfb811c882e519b52ea6b37f0  libstdc++-v3/include/debug/assertions.h
  43bc24df168bf241336cb295616ecab5  libstdc++-v3/include/debug/bitset
  5a5120ba442619a34f6f6aba86d39daf  libstdc++-v3/include/debug/debug.h
! 7fdb7557490d0ace3e8a0ba82440b63b  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
--- 147700,147706 ----
  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
*************** b922ccf9b7c37515224ce52d1fb1d177  libstd
*** 147359,147365 ****
  d9cb6ff2b57e6cc2ac9c8f14382b7007  libstdc++-v3/include/debug/string
  b493a4998a52a7ca9c12ee6a68a93611  libstdc++-v3/include/debug/unordered_map
  4774bf209805ae454bdffc2ab5328851  libstdc++-v3/include/debug/unordered_set
! 6623cb54a3a91bb96aee3df30de2b717  libstdc++-v3/include/debug/vector
  bd768b905048126ba3c8ccfc9f5d7c30  libstdc++-v3/include/decimal/decimal
  cb86182d3c0277ef7f96801aaf93d5b0  libstdc++-v3/include/decimal/decimal.h
  4d35e36ff37f40f2332e6343d7f91d1c  libstdc++-v3/include/experimental/algorithm
--- 147729,147735 ----
  d9cb6ff2b57e6cc2ac9c8f14382b7007  libstdc++-v3/include/debug/string
  b493a4998a52a7ca9c12ee6a68a93611  libstdc++-v3/include/debug/unordered_map
  4774bf209805ae454bdffc2ab5328851  libstdc++-v3/include/debug/unordered_set
! 246509aa844786facb4c1e9fc9c899a2  libstdc++-v3/include/debug/vector
  bd768b905048126ba3c8ccfc9f5d7c30  libstdc++-v3/include/decimal/decimal
  cb86182d3c0277ef7f96801aaf93d5b0  libstdc++-v3/include/decimal/decimal.h
  4d35e36ff37f40f2332e6343d7f91d1c  libstdc++-v3/include/experimental/algorithm
*************** d3e2058b40263b2287f46d84e583b69f  libstd
*** 147373,147390 ****
  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
! 00b7edc4035c70953604c6aa105b2dd9  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
! f5ec9e780d88dd9a3c3b849f9af53d21  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
  15970ebad8bfa9d18acff6c589c325e6  libstdc++-v3/include/experimental/bits/simd_x86.h
! 307d08fcd366e3e25a81cdceecb3375c  libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
  60c94b172174d97035d0f922981ceaf2  libstdc++-v3/include/experimental/bits/string_view.tcc
  bb1f9ef706b721a2de289747165208b1  libstdc++-v3/include/experimental/buffer
  d048e5b70f22e59dfeef185737f94eec  libstdc++-v3/include/experimental/chrono
--- 147743,147760 ----
  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
  15970ebad8bfa9d18acff6c589c325e6  libstdc++-v3/include/experimental/bits/simd_x86.h
! 1397e378253a85043bb64d60b2b216ec  libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
  60c94b172174d97035d0f922981ceaf2  libstdc++-v3/include/experimental/bits/string_view.tcc
  bb1f9ef706b721a2de289747165208b1  libstdc++-v3/include/experimental/buffer
  d048e5b70f22e59dfeef185737f94eec  libstdc++-v3/include/experimental/chrono
*************** b2409d8a524bb194bd5dce319c6a9a7a  libstd
*** 147432,147438 ****
  b63cbb9fd8363685fe56ec9d7efb11d6  libstdc++-v3/include/ext/cast.h
  603f77b25e053743878d1a28398562ba  libstdc++-v3/include/ext/cmath
  9940fb82706547fcb8e372cd5ae1c993  libstdc++-v3/include/ext/codecvt_specializations.h
! 3bb2ee0e94aa68e4afab3fe5e380b79f  libstdc++-v3/include/ext/concurrence.h
  ba24717cb0fcb4568ee52801de77d729  libstdc++-v3/include/ext/debug_allocator.h
  ecfa234661c82a56f0274db52470183f  libstdc++-v3/include/ext/enc_filebuf.h
  416fbb99cff5c27462154a758d97b251  libstdc++-v3/include/ext/extptr_allocator.h
--- 147802,147808 ----
  b63cbb9fd8363685fe56ec9d7efb11d6  libstdc++-v3/include/ext/cast.h
  603f77b25e053743878d1a28398562ba  libstdc++-v3/include/ext/cmath
  9940fb82706547fcb8e372cd5ae1c993  libstdc++-v3/include/ext/codecvt_specializations.h
! 3f4d93a1bb832e533328b191443a646d  libstdc++-v3/include/ext/concurrence.h
  ba24717cb0fcb4568ee52801de77d729  libstdc++-v3/include/ext/debug_allocator.h
  ecfa234661c82a56f0274db52470183f  libstdc++-v3/include/ext/enc_filebuf.h
  416fbb99cff5c27462154a758d97b251  libstdc++-v3/include/ext/extptr_allocator.h
*************** fb81d3b8642ba3c647355dd05e8473d4  libstd
*** 147516,147522 ****
  d50689eadbad8543377051c4cfd25586  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
  3abb9e5f2a507d9c9a7dcc154376de84  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
  6febc759de4a08db048cb72d777f3032  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 0b915d6c1f39e700b68143fcbe0172c5  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
  e6f447190a90673c3a0e3845b439ecef  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
  5db6507398e500606dbd38e68700f950  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
  62c409566718dd661f5d3dbc4b520e08  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
--- 147886,147892 ----
  d50689eadbad8543377051c4cfd25586  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
  3abb9e5f2a507d9c9a7dcc154376de84  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
  6febc759de4a08db048cb72d777f3032  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 565e0fe7485cc12c21efa864f5de4489  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
  e6f447190a90673c3a0e3845b439ecef  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
  5db6507398e500606dbd38e68700f950  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
  62c409566718dd661f5d3dbc4b520e08  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
*************** feaeb2d6893552b233333c74b43b57ae  libstd
*** 147579,147585 ****
  4a2f1cab9ecdeb1683d9271c0db3f734  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
  d9b06d389bec0534c3261ca83ae1a454  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
  cf6fe723f48885db29a174849d7a1896  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! 5a210ee547826b3db595418875017139  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
  e2bfd814ae4c3c39fd8e3c1a267e5969  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
  d5847c0c4f091da307436616a2b2d84d  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
  0975e9826cead0bcac7672bfe8f6b9bf  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
--- 147949,147955 ----
  4a2f1cab9ecdeb1683d9271c0db3f734  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
  d9b06d389bec0534c3261ca83ae1a454  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
  cf6fe723f48885db29a174849d7a1896  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! f4fb0643865e4af0c030daa45ab1d0ee  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
  e2bfd814ae4c3c39fd8e3c1a267e5969  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
  d5847c0c4f091da307436616a2b2d84d  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
  0975e9826cead0bcac7672bfe8f6b9bf  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
*************** c477165012c1ad6fab157e9b76425a81  libstd
*** 147665,147677 ****
  b35267b1ddd9ce3aa5085a71beec368e  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
  85dc6effa9958cbfa97531f660403c2d  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
  c7c59b584c8516239fa8cf6be65816a4  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 61c46b683dfb858885572194a0129321  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
  b5ba55374106c65972e3375329d9d2db  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
  7e9ceb27da01d5ac16eef6bb7e350f74  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
  aee4afdc06bc1bea59d1a8fe47fb3c13  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
  ec9adec14638fc7769c0082d78b92224  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
  049d21927094cf8b6300accb0051813b  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! 8b24049a3b420b6226495a610090a11a  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
  1caab9db4b5c7930cc6c347df15105c0  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
  d19d07f4bae3d19931ac22046167aa9f  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
  f92923abd965f246b2f15705f0c772d2  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
--- 148035,148047 ----
  b35267b1ddd9ce3aa5085a71beec368e  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
  85dc6effa9958cbfa97531f660403c2d  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
  c7c59b584c8516239fa8cf6be65816a4  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 749b6c86ffd80a5862d3f3f95772e820  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
  b5ba55374106c65972e3375329d9d2db  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
  7e9ceb27da01d5ac16eef6bb7e350f74  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
  aee4afdc06bc1bea59d1a8fe47fb3c13  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
  ec9adec14638fc7769c0082d78b92224  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
  049d21927094cf8b6300accb0051813b  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! a3c1324c8fe506151fe352b5ce577573  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
  1caab9db4b5c7930cc6c347df15105c0  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
  d19d07f4bae3d19931ac22046167aa9f  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
  f92923abd965f246b2f15705f0c772d2  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
*************** b0f9a5a66cc31ad154a6dd17e6743ffd  libstd
*** 147685,147692 ****
  25f4e600c750927d1ca3b138d571bc8f  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
  7c25ea4c66788a355d35c2d019f690d2  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
  b2ede2236cb8af2f48d64f5435412ab0  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! 21977a4b9f4ba82ae7cd645ec1d845c9  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 3c5558f1be44d8d8b2c2892d5873049f  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  002362e78226abcdc3c6ecb92c3adf0b  libstdc++-v3/include/ext/pod_char_traits.h
  f68e098d20358e1fd95c04b6888d4d4d  libstdc++-v3/include/ext/pointer.h
  f62baf23de3925cf4e5dbc9e4360ea97  libstdc++-v3/include/ext/pool_allocator.h
--- 148055,148062 ----
  25f4e600c750927d1ca3b138d571bc8f  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
  7c25ea4c66788a355d35c2d019f690d2  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
  b2ede2236cb8af2f48d64f5435412ab0  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! 47fb744090bf69b7cccf5b334aa8da8a  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 9c4319c5b8e9cb2ad175ee5b16fbfd28  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  002362e78226abcdc3c6ecb92c3adf0b  libstdc++-v3/include/ext/pod_char_traits.h
  f68e098d20358e1fd95c04b6888d4d4d  libstdc++-v3/include/ext/pointer.h
  f62baf23de3925cf4e5dbc9e4360ea97  libstdc++-v3/include/ext/pool_allocator.h
*************** f0e2e902cf04b0e3ece9e753707471cd  libstd
*** 147729,147735 ****
  68c5363049740361abc50023616217a7  libstdc++-v3/include/parallel/losertree.h
  5ef820e96948f0cba6ec79ba9831fa4b  libstdc++-v3/include/parallel/merge.h
  88680f9284d0cf4d52e6dc221dea03f4  libstdc++-v3/include/parallel/multiseq_selection.h
! fe828c8c2b151c99dc17c98354135db6  libstdc++-v3/include/parallel/multiway_merge.h
  c8310c813131811c44cc387b207e27ce  libstdc++-v3/include/parallel/multiway_mergesort.h
  e60dccc138da199813d0be7794ca8674  libstdc++-v3/include/parallel/numeric
  b728cd11dbb9086fdfc0ba44861ed215  libstdc++-v3/include/parallel/numericfwd.h
--- 148099,148105 ----
  68c5363049740361abc50023616217a7  libstdc++-v3/include/parallel/losertree.h
  5ef820e96948f0cba6ec79ba9831fa4b  libstdc++-v3/include/parallel/merge.h
  88680f9284d0cf4d52e6dc221dea03f4  libstdc++-v3/include/parallel/multiseq_selection.h
! 8e677f2f7e87e40ca8a294bccd682003  libstdc++-v3/include/parallel/multiway_merge.h
  c8310c813131811c44cc387b207e27ce  libstdc++-v3/include/parallel/multiway_mergesort.h
  e60dccc138da199813d0be7794ca8674  libstdc++-v3/include/parallel/numeric
  b728cd11dbb9086fdfc0ba44861ed215  libstdc++-v3/include/parallel/numericfwd.h
*************** e52031cf939ea27e56877705f57f1bd6  libstd
*** 147771,147777 ****
  cdf493ace328837031dc6cd01975e318  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! e7017931c30ac7c644b653a1a29fbd0a  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
--- 148141,148147 ----
  cdf493ace328837031dc6cd01975e318  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 73d77fe820fd6d0c6e08bf0d94080ca0  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
*************** f945d16289e71c13744e7d9177de9ccc  libstd
*** 147798,147817 ****
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
  a8e79cb6c591611cd6113eed355c3de6  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
! 2e6e28dfb5edb1fef43bb61a7cfa4f6d  libstdc++-v3/include/std/flat_map
! b384f6e8eb77f0d5747534b3ed9a89cb  libstdc++-v3/include/std/flat_set
  a5851608f400f6bf608e45d480108434  libstdc++-v3/include/std/format
  7e1c7765d1205d0a0571065e7e1f111d  libstdc++-v3/include/std/forward_list
! c85826e5073be733076e4825a96a991c  libstdc++-v3/include/std/fstream
  5907213253b81e40fd9101e5d092fc82  libstdc++-v3/include/std/functional
  6fc93cafeb2ebce1111afdc9b6cf84c5  libstdc++-v3/include/std/future
  f07a74eecab3055929d3af3c5ea38bed  libstdc++-v3/include/std/generator
! 09e388caae4d74909f62208d8c04e541  libstdc++-v3/include/std/inplace_vector
! 9faf9f4caa2dcbfe374113d6cf2380ad  libstdc++-v3/include/std/iomanip
! 48bf9080e650b3c09a288f25a49455d5  libstdc++-v3/include/std/ios
! df4362bdba64b8e857e22cfffc178349  libstdc++-v3/include/std/iosfwd
! f16c882692ac65bc0c0b5dd8549e9ee0  libstdc++-v3/include/std/iostream
! 8a6f8748d19565f2448fe4e00285ffb9  libstdc++-v3/include/std/istream
  b33d9f7d5e6dae4596b350ebc5fd6b8f  libstdc++-v3/include/std/iterator
  44697b5c0f957dae546124db0f196f5f  libstdc++-v3/include/std/latch
  57d926bff59fb37eabbd9524d6a53c6d  libstdc++-v3/include/std/limits
--- 148168,148187 ----
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
  a8e79cb6c591611cd6113eed355c3de6  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
! 5f6d1d543aa97204300a7a76284f8775  libstdc++-v3/include/std/flat_map
! c3b66598ccd8ea2009de9b04433b7dcf  libstdc++-v3/include/std/flat_set
  a5851608f400f6bf608e45d480108434  libstdc++-v3/include/std/format
  7e1c7765d1205d0a0571065e7e1f111d  libstdc++-v3/include/std/forward_list
! 10ba06a4268328778f0feab5e3778f91  libstdc++-v3/include/std/fstream
  5907213253b81e40fd9101e5d092fc82  libstdc++-v3/include/std/functional
  6fc93cafeb2ebce1111afdc9b6cf84c5  libstdc++-v3/include/std/future
  f07a74eecab3055929d3af3c5ea38bed  libstdc++-v3/include/std/generator
! c31cd4fbc943e12d391a2739a5ee7e8a  libstdc++-v3/include/std/inplace_vector
! 1c55d0a56e95a92d4869875b32fb966a  libstdc++-v3/include/std/iomanip
! 4def558fc37b3c6d78642dc4f86d2785  libstdc++-v3/include/std/ios
! cd03c7a97eb0db3f618710ef28e40fc3  libstdc++-v3/include/std/iosfwd
! ca0b85731f9c9d61a813d97c3286740e  libstdc++-v3/include/std/iostream
! 22e9396150e64d747537779f3e7972cf  libstdc++-v3/include/std/istream
  b33d9f7d5e6dae4596b350ebc5fd6b8f  libstdc++-v3/include/std/iterator
  44697b5c0f957dae546124db0f196f5f  libstdc++-v3/include/std/latch
  57d926bff59fb37eabbd9524d6a53c6d  libstdc++-v3/include/std/limits
*************** b9368104d884bddd988db2b9e69ab485  libstd
*** 147821,147835 ****
  14c31197c9d818ad9850b16d875d6fba  libstdc++-v3/include/std/mdspan
  5439ce157f7c11ab4eddd8c04799fea4  libstdc++-v3/include/std/memory
  ea0d67f29f1a73f1ccdade0115646a1c  libstdc++-v3/include/std/memory_resource
! 567571e5d45a92d724eb13976d8d825d  libstdc++-v3/include/std/meta
  6042ceb95043702de02a8354f2507317  libstdc++-v3/include/std/mutex
  98a3e25011c5fb2383b3824b1c349d43  libstdc++-v3/include/std/numbers
  6a44514a47e24df75405dc1d397afc69  libstdc++-v3/include/std/numeric
! dade5ac9bf7612aceeff9e47aec2ce60  libstdc++-v3/include/std/optional
  bcf1c0b79e2efd9cd34763d368f40966  libstdc++-v3/include/std/ostream
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
  879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
! e21a300c90cd953e16f037708f0e242a  libstdc++-v3/include/std/random
  0762e6a0809baa73a4d2a98d2a6bd009  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
--- 148191,148205 ----
  14c31197c9d818ad9850b16d875d6fba  libstdc++-v3/include/std/mdspan
  5439ce157f7c11ab4eddd8c04799fea4  libstdc++-v3/include/std/memory
  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
! bfeefcae8a0cfa452f1422fd55541ae2  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
  0762e6a0809baa73a4d2a98d2a6bd009  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
*************** d9b30ac9f13a2d342a56ff319aca749e  libstd
*** 147840,147857 ****
  b6acc193775e3cf38850b9d166d46caf  libstdc++-v3/include/std/simd
  b3171714703fcfc5d8fe69ffe22d9cc8  libstdc++-v3/include/std/source_location
  42154b8746c12a6b7dd06a8efcce1ec9  libstdc++-v3/include/std/span
! efdde6d8d883a91854d4ae616b627e53  libstdc++-v3/include/std/spanstream
! f00ff992c96a4a6422d964aad9315664  libstdc++-v3/include/std/sstream
  f5a5ebc7b6133572f8f361cde93ec52f  libstdc++-v3/include/std/stack
  abc871e0e4ec8d271568e8ed15436075  libstdc++-v3/include/std/stacktrace
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
  8000144a02174c1b4e859b4cc4af6301  libstdc++-v3/include/std/stop_token
! 3773b676d041cd3a500431ae737f5859  libstdc++-v3/include/std/streambuf
  76bd18b5fc744472aa3988d57a5928c5  libstdc++-v3/include/std/string
! 509491e5cac8a7013e5627d8f49eb580  libstdc++-v3/include/std/string_view
! 2357e8bc64ed236c453da02aa0eab3ea  libstdc++-v3/include/std/syncstream
! 0574b134b5132494e9294186a6a4511c  libstdc++-v3/include/std/system_error
  3de44f0df6167a88cbfda331087cb3e8  libstdc++-v3/include/std/text_encoding
  0e55da688cfae6ed254c1328fad9c8ad  libstdc++-v3/include/std/thread
  8ef30587757a1234aab215609f1a2e45  libstdc++-v3/include/std/tuple
--- 148210,148227 ----
  b6acc193775e3cf38850b9d166d46caf  libstdc++-v3/include/std/simd
  b3171714703fcfc5d8fe69ffe22d9cc8  libstdc++-v3/include/std/source_location
  42154b8746c12a6b7dd06a8efcce1ec9  libstdc++-v3/include/std/span
! 34a41e551417785f45d2afdd48b7470b  libstdc++-v3/include/std/spanstream
! 622e32cb4f822b51d4c1c6a9a6e5dc31  libstdc++-v3/include/std/sstream
  f5a5ebc7b6133572f8f361cde93ec52f  libstdc++-v3/include/std/stack
  abc871e0e4ec8d271568e8ed15436075  libstdc++-v3/include/std/stacktrace
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
  8000144a02174c1b4e859b4cc4af6301  libstdc++-v3/include/std/stop_token
! 9682b018302a44f27a3ea9c265f230b3  libstdc++-v3/include/std/streambuf
  76bd18b5fc744472aa3988d57a5928c5  libstdc++-v3/include/std/string
! 065182350163eb0482da80ad1200465d  libstdc++-v3/include/std/string_view
! 660d440756fde466818e0d1cbb2dc70e  libstdc++-v3/include/std/syncstream
! 58d29af751d81a16b6d3bea89311eec1  libstdc++-v3/include/std/system_error
  3de44f0df6167a88cbfda331087cb3e8  libstdc++-v3/include/std/text_encoding
  0e55da688cfae6ed254c1328fad9c8ad  libstdc++-v3/include/std/thread
  8ef30587757a1234aab215609f1a2e45  libstdc++-v3/include/std/tuple
*************** b99e4c8ad37dc8e679d2d265354d549b  libstd
*** 147860,147866 ****
  994522acd96f1b6084469da322d17c19  libstdc++-v3/include/std/unordered_map
  5393bc9d8b494917b25afd3714e8014a  libstdc++-v3/include/std/unordered_set
  3dafc052e829f49f947b61291c35680f  libstdc++-v3/include/std/utility
! 5cb829e90da37cd599d0c543e420a83f  libstdc++-v3/include/std/valarray
  f4935a7b92bee0179976443347292535  libstdc++-v3/include/std/variant
  df7e0b14ef429fc02b9968616de62de0  libstdc++-v3/include/std/vector
  ecd0f316fc872dc19b88a6c834438315  libstdc++-v3/include/std/version
--- 148230,148236 ----
  994522acd96f1b6084469da322d17c19  libstdc++-v3/include/std/unordered_map
  5393bc9d8b494917b25afd3714e8014a  libstdc++-v3/include/std/unordered_set
  3dafc052e829f49f947b61291c35680f  libstdc++-v3/include/std/utility
! ccaa7c807c22f09d3a0af4bac58a2110  libstdc++-v3/include/std/valarray
  f4935a7b92bee0179976443347292535  libstdc++-v3/include/std/variant
  df7e0b14ef429fc02b9968616de62de0  libstdc++-v3/include/std/vector
  ecd0f316fc872dc19b88a6c834438315  libstdc++-v3/include/std/version
*************** f4133c0fcd126b5470b4fcbc83e97d49  libstd
*** 147909,147915 ****
  3b4747c7032fa43ae55f9ea4731c8240  libstdc++-v3/include/tr1/random.tcc
  22c923767f6d874b59de17f02ea6a5d9  libstdc++-v3/include/tr1/regex
  640eb8bb87f77ee0d1ce9669f99c18be  libstdc++-v3/include/tr1/riemann_zeta.tcc
! 91221fac588c30678689b533907c0686  libstdc++-v3/include/tr1/shared_ptr.h
  80deeedc6c2e47dc50116f5f6de0316e  libstdc++-v3/include/tr1/special_function_util.h
  307a1468c3883fb6b914776f2e57e44c  libstdc++-v3/include/tr1/stdarg.h
  fd53343d2b56adeb4c3fe33b24106c6c  libstdc++-v3/include/tr1/stdbool.h
--- 148279,148285 ----
  3b4747c7032fa43ae55f9ea4731c8240  libstdc++-v3/include/tr1/random.tcc
  22c923767f6d874b59de17f02ea6a5d9  libstdc++-v3/include/tr1/regex
  640eb8bb87f77ee0d1ce9669f99c18be  libstdc++-v3/include/tr1/riemann_zeta.tcc
! 005bfeef8410b60efe4045b7b055ae31  libstdc++-v3/include/tr1/shared_ptr.h
  80deeedc6c2e47dc50116f5f6de0316e  libstdc++-v3/include/tr1/special_function_util.h
  307a1468c3883fb6b914776f2e57e44c  libstdc++-v3/include/tr1/stdarg.h
  fd53343d2b56adeb4c3fe33b24106c6c  libstdc++-v3/include/tr1/stdbool.h
*************** c98ff3b1b5a17a05cc9cfb0e20e31151  libstd
*** 147987,147995 ****
  63a5e00b4953860d1a28c000823a1ece  libstdc++-v3/libsupc++/fundamental_type_info.cc
  8fa42469ba3fe7cf4ef3113d46c2ec67  libstdc++-v3/libsupc++/guard.cc
  83350c6154826468cf97f28bc525e8c8  libstdc++-v3/libsupc++/guard_error.cc
! 4ca58ce1d8b24bf41df468a70060d0d3  libstdc++-v3/libsupc++/hash_bytes.cc
  7a587bda8840ccc345aef5611a09b7f8  libstdc++-v3/libsupc++/hash_bytes.h
! 409b3cdf6ed09f3bee9423f1a7607a97  libstdc++-v3/libsupc++/initializer_list
  f9116aa4c4bed4851885a02b53f02e27  libstdc++-v3/libsupc++/nested_exception.cc
  e5db4a72b6902bfe4cb4081024a1c117  libstdc++-v3/libsupc++/nested_exception.h
  5e4372a4f135f0192513785086d0d049  libstdc++-v3/libsupc++/new
--- 148357,148365 ----
  63a5e00b4953860d1a28c000823a1ece  libstdc++-v3/libsupc++/fundamental_type_info.cc
  8fa42469ba3fe7cf4ef3113d46c2ec67  libstdc++-v3/libsupc++/guard.cc
  83350c6154826468cf97f28bc525e8c8  libstdc++-v3/libsupc++/guard_error.cc
! 55e1b7c2a43dc09aeff8eeacd720aea5  libstdc++-v3/libsupc++/hash_bytes.cc
  7a587bda8840ccc345aef5611a09b7f8  libstdc++-v3/libsupc++/hash_bytes.h
! 61e6bb1e8612b32522503b8b702c98e8  libstdc++-v3/libsupc++/initializer_list
  f9116aa4c4bed4851885a02b53f02e27  libstdc++-v3/libsupc++/nested_exception.cc
  e5db4a72b6902bfe4cb4081024a1c117  libstdc++-v3/libsupc++/nested_exception.h
  5e4372a4f135f0192513785086d0d049  libstdc++-v3/libsupc++/new
*************** f932aed28fdf04e8d95452c5110ea722  libstd
*** 148013,148019 ****
  d89b183dcf7e8a8bc7e18284d790b5cd  libstdc++-v3/libsupc++/typeinfo
  42ba44cebfa26c04ddc72d6dee36b515  libstdc++-v3/libsupc++/unwind-cxx.h
  bc14d87c108d5fa9b39e85c939e01550  libstdc++-v3/libsupc++/vec.cc
! 75dd77c7009585127c39538b4a7387eb  libstdc++-v3/libsupc++/vmi_class_type_info.cc
  6713dd603339580d0691802ad0b1ed36  libstdc++-v3/libsupc++/vterminate.cc
  b9118cf900271d7d58361c1295e1945d  libstdc++-v3/libsupc++/vtv_stubs.cc
  e88dc2fa68ea978011d41472f6dab4fa  libstdc++-v3/linkage.m4
--- 148383,148389 ----
  d89b183dcf7e8a8bc7e18284d790b5cd  libstdc++-v3/libsupc++/typeinfo
  42ba44cebfa26c04ddc72d6dee36b515  libstdc++-v3/libsupc++/unwind-cxx.h
  bc14d87c108d5fa9b39e85c939e01550  libstdc++-v3/libsupc++/vec.cc
! 9fb9720f94d0ef5c04cca94f7eee162f  libstdc++-v3/libsupc++/vmi_class_type_info.cc
  6713dd603339580d0691802ad0b1ed36  libstdc++-v3/libsupc++/vterminate.cc
  b9118cf900271d7d58361c1295e1945d  libstdc++-v3/libsupc++/vtv_stubs.cc
  e88dc2fa68ea978011d41472f6dab4fa  libstdc++-v3/linkage.m4
*************** fb5f51cf7be2c1cd676a44d8d92fb7c1  libstd
*** 148128,148134 ****
  bc3131d6bdec9830589c59816ed6fc9f  libstdc++-v3/src/c++17/fast_float/LOCAL_PATCHES
  cdf9c54ab7ea85aa42bbf32b2e749913  libstdc++-v3/src/c++17/fast_float/MERGE
  88af13a4cebd3e9f44449b09304147d9  libstdc++-v3/src/c++17/fast_float/README.md
! c9dcdd9b0b5c806e787dc702505f57e1  libstdc++-v3/src/c++17/fast_float/fast_float.h
  8fccfe420c4b99cdf08023a4fc8ab137  libstdc++-v3/src/c++17/floating_from_chars.cc
  66709d03438eb17097ae45fa2a7b4d0b  libstdc++-v3/src/c++17/floating_to_chars.cc
  ab713104bd5f979c12c01a7037584aa9  libstdc++-v3/src/c++17/fs_dir.cc
--- 148498,148504 ----
  bc3131d6bdec9830589c59816ed6fc9f  libstdc++-v3/src/c++17/fast_float/LOCAL_PATCHES
  cdf9c54ab7ea85aa42bbf32b2e749913  libstdc++-v3/src/c++17/fast_float/MERGE
  88af13a4cebd3e9f44449b09304147d9  libstdc++-v3/src/c++17/fast_float/README.md
! 862971e9a9f177ca73d3d3ecbe57128f  libstdc++-v3/src/c++17/fast_float/fast_float.h
  8fccfe420c4b99cdf08023a4fc8ab137  libstdc++-v3/src/c++17/floating_from_chars.cc
  66709d03438eb17097ae45fa2a7b4d0b  libstdc++-v3/src/c++17/floating_to_chars.cc
  ab713104bd5f979c12c01a7037584aa9  libstdc++-v3/src/c++17/fs_dir.cc
*************** e046d1f2dd83948c2f1bebd6854307d2  libstd
*** 148375,148381 ****
  56c678c03eddb4bbccd925274d8212d9  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
  47475fceea2197a5daff17e8d0a33bf8  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
  6915eca4df41499048a3c281e26933af  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 901fdda01ce8d9680ee8b86cf8d2a442  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
  44833f4f441f1f0f4e1dab32fd1c5d35  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
  be1a6880d3ca8366fc770fd8383296aa  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
  9fa3ae164da5dc79cb4898b7e588fc62  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
--- 148745,148757 ----
  56c678c03eddb4bbccd925274d8212d9  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
  47475fceea2197a5daff17e8d0a33bf8  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
  6915eca4df41499048a3c281e26933af  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! ea65fae762291c15f9d3c42f626d3be6  libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc
! dd0427bebc8956669c42676fdf63feda  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! 0d2c424345d1f3e9d091d6846b86ec1b  libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc
! 4b9dac7a959a26d9b7075f3a68433fa4  libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc
! 993b949f3949fbfdcbc556b942c52b98  libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc
! b646d8a20fb3d068d1a64da87cf82b31  libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc
! d5f1f3ba9951aa960a6067eac76ef5ad  libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc
  44833f4f441f1f0f4e1dab32fd1c5d35  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
  be1a6880d3ca8366fc770fd8383296aa  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
  9fa3ae164da5dc79cb4898b7e588fc62  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
*************** ae49058091ac2f31814de6246e958d6a  libstd
*** 148561,148566 ****
--- 148937,148943 ----
  3d6fd2416cfe20b40727679190a1acd5  libstdc++-v3/testsuite/20_util/allocator/8230.cc
  304feeda4411dd976033b709ad4dc9ed  libstdc++-v3/testsuite/20_util/allocator/89510.cc
  c00426efc55c8078b60f6b9281f6fb69  libstdc++-v3/testsuite/20_util/allocator/allocate_at_least.cc
+ d55f539d63dcb12122252b549d678eb2  libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc
  efd50eb210f11e05083d51d5f197edce  libstdc++-v3/testsuite/20_util/allocator/allocate_at_least_neg.cc
  aee95679e97e16985af49532fadbba5c  libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
  af5ed7a07c56e8d2e5f768f47c861ba1  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
*************** fe270ad1cd1ae86d6eb66bdc20372250  libstd
*** 149098,149104 ****
  e1295404f434adbd6f3a12cc77250d5c  libstdc++-v3/testsuite/20_util/is_constructible/94003.cc
  9bfb0b5b8cbf3da95e2119294856c703  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
  2ac2e8af849f9310540d2067b46c5341  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 3816747f00890ec22ea8dabc23838d3b  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
  ee318011536809591f3414aa0b10e3a6  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
  09d897b8e5e8f52ce748db0bdf75aa0e  libstdc++-v3/testsuite/20_util/is_convertible/requirements/access.cc
  ae08243c56d33b07d8ed85600de96926  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
--- 149475,149481 ----
  e1295404f434adbd6f3a12cc77250d5c  libstdc++-v3/testsuite/20_util/is_constructible/94003.cc
  9bfb0b5b8cbf3da95e2119294856c703  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
  2ac2e8af849f9310540d2067b46c5341  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 5c492f6160df6560ac613c3ccc137edb  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
  ee318011536809591f3414aa0b10e3a6  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
  09d897b8e5e8f52ce748db0bdf75aa0e  libstdc++-v3/testsuite/20_util/is_convertible/requirements/access.cc
  ae08243c56d33b07d8ed85600de96926  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
*************** d3337e44ac494141c882e843ae1982f2  libstd
*** 149115,149121 ****
  db27189b00d7f33d722f3bd600effb51  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
  b02057db3ef974528249b675fa3f39b0  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
  1a9a21d2a5d27ac6123fb446ee9164ed  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! 19ea76f7143a9a436f0eac44f23020d2  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
  c6d6bf7cfec923b0dfb5e782864e9fb5  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
  a1301d2cabb55b89b4ce6ed003c31ac6  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
  b1a592c3ccf768f5406b07bc902ab97e  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
--- 149492,149498 ----
  db27189b00d7f33d722f3bd600effb51  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
  b02057db3ef974528249b675fa3f39b0  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
  1a9a21d2a5d27ac6123fb446ee9164ed  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! fa02a432a5437a0934b288264136168c  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
  c6d6bf7cfec923b0dfb5e782864e9fb5  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
  a1301d2cabb55b89b4ce6ed003c31ac6  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
  b1a592c3ccf768f5406b07bc902ab97e  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
*************** fd0d8be5bb0967756e9e8f6d63bcc91e  libstd
*** 149207,149213 ****
  9fafa136eb7204f5cf0a0bfc9af49d7a  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
  3639a82ca9dcbaf6c08bcc1865a04c0a  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
  fe8ad93d98da4c45ecffd9dbe6af6e22  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 0a711010720d0ff6d5d9f294046efe4d  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
  55b5030a1f74cd6022c78d6be85c345a  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
  f1a16b2893df2d774fa3b6ef71678976  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/91456.cc
  fa6a0020d9c74265d1790ad54ed4a0c0  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc
--- 149584,149590 ----
  9fafa136eb7204f5cf0a0bfc9af49d7a  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
  3639a82ca9dcbaf6c08bcc1865a04c0a  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
  fe8ad93d98da4c45ecffd9dbe6af6e22  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 4f044561906a27bd5f585a4272a3d2bf  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
  55b5030a1f74cd6022c78d6be85c345a  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
  f1a16b2893df2d774fa3b6ef71678976  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/91456.cc
  fa6a0020d9c74265d1790ad54ed4a0c0  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc
*************** bf4f554d46ee074d2c3de2a43e436bc7  libstd
*** 151365,151370 ****
--- 151742,151748 ----
  98c2cff86a0bf47ca50f632a7c579fc0  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
  c144b94569be31602dcad4cc29f44ac8  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
  06512f6a7ebca576d310c905332b0d48  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
+ e0b231e5efb21d299051e34d9fc98e8c  libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc
  9ed639434b2083e9c8709427c62875c5  libstdc++-v3/testsuite/23_containers/deque/cons/from_range.cc
  3dc02e3e066c455fe3d9f2f36cad998d  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
  a203f94952bfbe9bf6732a7360d841bc  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
*************** f0b8e57260744dc4dd54e9310150e92b  libstd
*** 151444,151453 ****
  f5b48dae8a0117e334adb810656e5c1e  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  f18a580ead7e972f0c090a4027e9a983  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! e310ae393b8fe01de804bcfc323ce95f  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! 999168abb39b43b26234e06cd590acc2  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
! 086ebf6be41c0011120859c1081060d2  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
! 10bd36e295161b7839fff585fcf825af  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  476152c1b55bed61d5784f2c55391c4c  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
  3a54e4ee9401f36ed66b31e6ef6c97f1  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
  9a8ee3f804c017bdd7aec68a68f7b593  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
--- 151822,151831 ----
  f5b48dae8a0117e334adb810656e5c1e  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  f18a580ead7e972f0c090a4027e9a983  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! 1ebeb8568128761ada01c23ebe2b9869  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! fb1b6d0f20a7a6b74b6d18a6660462d6  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
! 19d9c8a3fa76dd5b1015a8df7423ca56  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
! d2d74a097abd54938674a6cfa63fe0d7  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  476152c1b55bed61d5784f2c55391c4c  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
  3a54e4ee9401f36ed66b31e6ef6c97f1  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
  9a8ee3f804c017bdd7aec68a68f7b593  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
*************** d403a77f650ef09907df123254dd36ab  libstd
*** 151591,151597 ****
--- 151969,151977 ----
  ba30ee3573256e9c79323edeab55f45e  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem.cc
  30ab64df2eb33c78da29eab2cf8935d7  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem_neg.cc
  bc234ad58ff4608f222dc9066aef5bcc  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc
+ 16c8b7bd3aa6d760b93c2a8946d1fce7  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
  51d721241c463de8068e928fa7fdecee  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
+ 687ebf1e0d088504b8f10bba0ff85448  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
  38e5f39346a05e51ec2a0e4cdf2586e4  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/throws.cc
  c3a1a3526de292cb363617372f081457  libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
  c87eb94f57dafc64e6cdeeab93e4ea86  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc
*************** be9b8f7362cc69b8d5c25f6316039da3  libstd
*** 152886,152891 ****
--- 153266,153272 ----
  3021f67dddb34d5afe143cf5fdc80b6e  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
  61e8da4cd434fb8870df8cc065622ac8  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  20602f9d75abc2fccfcd81e83836dddc  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
+ fdc0d19887a76a0679d95d73b7c79cb3  libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
  25ac2f636e462c7404566e2a578354b1  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
  f252380e23160ed12ecdc009d048b553  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
*************** cb0b7921070e1b4abd7e04b68eccfe49  libstd
*** 152973,152979 ****
  8644f187a6704f67509958ffc731be05  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
  d62da1f1e000cf57a3797b218a6faf6f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  67ef62bd451b5084210a72e9dc9e3a30  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
! 8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
  6918a31bae7d38579496520f65562419  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  8ed736847052dbdd8573c5f109871264  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  5514ab655b624b5996f8b95c10605ea7  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
--- 153354,153360 ----
  8644f187a6704f67509958ffc731be05  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
  d62da1f1e000cf57a3797b218a6faf6f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  67ef62bd451b5084210a72e9dc9e3a30  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
! 797388e60ce2dc5e09cfd0d5adf6ab37  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
  6918a31bae7d38579496520f65562419  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  8ed736847052dbdd8573c5f109871264  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  5514ab655b624b5996f8b95c10605ea7  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
*************** f6c2b36fecacfa2276753fc24e4144f1  libstd
*** 154407,154412 ****
--- 154788,154794 ----
  ef5f5d1b895894921233f9e3cfa90cce  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
  cdbf0d0142e6cc9bb51bf7ecc1445b0b  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
  541635bb5d05f2f0c7bd21ebdc094207  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
+ 25a4749120756ecd8da437e955d75185  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc
  f2c872e24f8164354f8bff8c6c3af918  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
  36f30b4c9fae68677fb2d6a08e58a181  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
  c6b9a866c77dbfde316664357479e98d  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
*************** c0eaaac68e38d63aa1bbee1838a3f166  libstd
*** 154419,154424 ****
--- 154801,154807 ----
  9e23ce0cfe6be702a574ad1cbc36eea7  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
  b4ef50df6dea01750543f8888be44431  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
  e7dd5d5ad979d1eaa1f9786411d95b9a  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
+ badcc6d3d62c9c6bd7420d49a31b9fdd  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc
  c5f129a93ca3c75a086bc82e6374b986  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
  e0947c62fa030b9b28e9e931ce6992e0  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
  54d93e8fe86b8cf61a01b7d129cfdd3f  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
*************** a52596c2f4c5076c6574d0ddc1397033  libstd
*** 154572,154577 ****
--- 154955,154961 ----
  4bbebed52a6ae9fc40eaf3b0b0281c34  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
  26f7156df4c3c246167419138ee3a831  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
  c68b9dcccd1e3ba0008c0e69f5ecb300  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
+ 75cf82ae747b0ed26c082956ad34b6e4  libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc
  c8108dd3ed10641a6c1f6c44722f8109  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
  e3f9b4adcdc87e58f6c367d48ecdcb93  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
  3953b777693e352f27d1c03cbd2f6e26  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
*************** fddbdcbbce075f32df711c576529e940  libstd
*** 155957,155963 ****
  ea6d3e75eefb33e70680fbf897d2ea83  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
  06526e15cc171bf743b814bdb4e55d6b  libstdc++-v3/testsuite/29_atomics/atomic/pointer_fetch_minmax.cc
  356c3af6a6b91d27b1d00bd6d1ba0715  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 2eea91a6cef257255e1d66208fc3623a  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
  e8fbf1bb05649946ef19b53b2a8892f0  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
  8a061d3f6c61832aef35f15eb624ff0b  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
  8df9d510c4fdaeb2eb7a064f22dfc95e  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
--- 156341,156347 ----
  ea6d3e75eefb33e70680fbf897d2ea83  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
  06526e15cc171bf743b814bdb4e55d6b  libstdc++-v3/testsuite/29_atomics/atomic/pointer_fetch_minmax.cc
  356c3af6a6b91d27b1d00bd6d1ba0715  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 3d01631a3c39a243209b1705f0501dc2  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
  e8fbf1bb05649946ef19b53b2a8892f0  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
  8a061d3f6c61832aef35f15eb624ff0b  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
  8df9d510c4fdaeb2eb7a064f22dfc95e  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
*************** de76e3720e4b6c54a46b00b44137957e  libstd
*** 155980,155986 ****
  58c7d5493769afa4fb2bc5ac2eb155ce  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
  1998a3cb822062daf1640adf7b0ae767  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/explicit.cc
  5a9af0277ed1d8eecd123070ba6140b1  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/implicit.cc
! 7b6381196163397f564a011e5c901fc4  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
  9c301151d91972ef0efb8d4301e26b51  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
  9c301151d91972ef0efb8d4301e26b51  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
  a2edc235165d656f0611e1422876c7b4  libstdc++-v3/testsuite/29_atomics/atomic_flag/wait_notify/1.cc
--- 156364,156370 ----
  58c7d5493769afa4fb2bc5ac2eb155ce  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
  1998a3cb822062daf1640adf7b0ae767  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/explicit.cc
  5a9af0277ed1d8eecd123070ba6140b1  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/implicit.cc
! adf70c887e31d35ac57fdd25afe0fac2  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
  9c301151d91972ef0efb8d4301e26b51  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
  9c301151d91972ef0efb8d4301e26b51  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
  a2edc235165d656f0611e1422876c7b4  libstdc++-v3/testsuite/29_atomics/atomic_flag/wait_notify/1.cc
*************** de5a5e022da3a4c2ae1ea6e048a7e6f4  libstd
*** 156037,156047 ****
  5df3828564e4fcf271b2e2fe95522c1a  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
  fa6faa9b9a68e22b822390b629091efd  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
  75be78195d58beee455dae2731b56a52  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! af2a8e3ab4569190270413230c0a945f  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
  248b5df56169f6a56a3d130cf1516f6e  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
  80495a66dfe62bdd7951e4876d6adfe1  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
  a1f6f6e1e31959c1455d2b3f17e75885  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/115807.cc
! a99cb8b3fa386993e78051b226f5f4eb  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
  61e63e87eb2d4980c6d3d715327574a3  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.cc
  94ba8a23b5b0d9459ea5daebd6c365de  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
  5b1af9fe172aee7236f683fc11c916e0  libstdc++-v3/testsuite/30_threads/async/106695.cc
--- 156421,156431 ----
  5df3828564e4fcf271b2e2fe95522c1a  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
  fa6faa9b9a68e22b822390b629091efd  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
  75be78195d58beee455dae2731b56a52  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! 1a17604a3f674213cd6bafb35d9cf818  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
  248b5df56169f6a56a3d130cf1516f6e  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
  80495a66dfe62bdd7951e4876d6adfe1  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
  a1f6f6e1e31959c1455d2b3f17e75885  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/115807.cc
! 58cec4663e14176dcbaae45049916236  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
  61e63e87eb2d4980c6d3d715327574a3  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/macros.cc
  94ba8a23b5b0d9459ea5daebd6c365de  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
  5b1af9fe172aee7236f683fc11c916e0  libstdc++-v3/testsuite/30_threads/async/106695.cc
*************** e2493aaebd9a1a286017264515b56ba5  libstd
*** 157833,157839 ****
  d020ffeed3a700de700dcd8ab75dcc70  libstdc++-v3/testsuite/std/simd/stores_expensive.cc
  9555f30a8004fbe5c183c3d458dbe0c7  libstdc++-v3/testsuite/std/simd/test_setup.h
  6fc3af6248205b9756a89ab36e7d57c7  libstdc++-v3/testsuite/std/simd/traits_common.cc
! b84a0808b894f7b84d1a868efcaa1b15  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
--- 158217,158223 ----
  d020ffeed3a700de700dcd8ab75dcc70  libstdc++-v3/testsuite/std/simd/stores_expensive.cc
  9555f30a8004fbe5c183c3d458dbe0c7  libstdc++-v3/testsuite/std/simd/test_setup.h
  6fc3af6248205b9756a89ab36e7d57c7  libstdc++-v3/testsuite/std/simd/traits_common.cc
! 0ffabdc07e746d3063781ca77f8c03f8  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
*************** d46265f9ed949404e1c5119354b95ac4  libstd
*** 158640,158646 ****
  54f2a8dfb9fbcdb569726ffbe6370f23  libstdc++-v3/testsuite/util/testsuite_abi.h
  db5d5717075b7e1c4eb267257b1ee418  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  aac284c59df58716bba32e67d322c2a8  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 02981415ca52138ed575018759411526  libstdc++-v3/testsuite/util/testsuite_allocator.h
  b249d2a4baf04ea5ab1e5432b395b85f  libstdc++-v3/testsuite/util/testsuite_api.h
  ac38738c6b7dd4541f086659557cfcc8  libstdc++-v3/testsuite/util/testsuite_character.cc
  9cbcfd8517660335b43ca0586ca3b309  libstdc++-v3/testsuite/util/testsuite_character.h
--- 159024,159030 ----
  54f2a8dfb9fbcdb569726ffbe6370f23  libstdc++-v3/testsuite/util/testsuite_abi.h
  db5d5717075b7e1c4eb267257b1ee418  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  aac284c59df58716bba32e67d322c2a8  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 7dd1282ae92054837b1b275f1b660dd7  libstdc++-v3/testsuite/util/testsuite_allocator.h
  b249d2a4baf04ea5ab1e5432b395b85f  libstdc++-v3/testsuite/util/testsuite_api.h
  ac38738c6b7dd4541f086659557cfcc8  libstdc++-v3/testsuite/util/testsuite_character.cc
  9cbcfd8517660335b43ca0586ca3b309  libstdc++-v3/testsuite/util/testsuite_character.h
*************** e0c9e50df8d41d05918efe7e86898b10  libstd
*** 158668,158674 ****
  c23461854edd139c3540b67fb3115386  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  6374ef1e93ad5c2e7bf0d958dedc541d  libtool.m4
! 718746dc9b911a681f0e346548c41242  libvtv/ChangeLog
  5d7582cbb1b5b11fd2786f785fabb3db  libvtv/Makefile.am
  1f8c57ab70163566fc7c8ce5eb9ee70d  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
--- 159052,159058 ----
  c23461854edd139c3540b67fb3115386  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  6374ef1e93ad5c2e7bf0d958dedc541d  libtool.m4
! f1cb7f26b13d9714b7e7daffe6f6b49a  libvtv/ChangeLog
  5d7582cbb1b5b11fd2786f785fabb3db  libvtv/Makefile.am
  1f8c57ab70163566fc7c8ce5eb9ee70d  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
*************** a39c1926ca0a1bac2ffa3e5389fe2eb2  libvtv
*** 158739,158764 ****
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! b9b8f3185eb5f001d99b4e49f1f94874  libvtv/vtv_fail.cc
  4fcda59807763684634a5e86bb293242  libvtv/vtv_fail.h
! 246fa8cd21c2beb8e0196f3dc31ea57f  libvtv/vtv_malloc.cc
  44ec3dc45592dcd37f5c7b6bd4968ac4  libvtv/vtv_malloc.h
! 90fc161aeb84383a4f324c93eeeeafd9  libvtv/vtv_map.h
! 2289964a41ed28a57ecf059231f2068c  libvtv/vtv_rts.cc
  1eff763a6dc25a5ca06a25b28c93cb14  libvtv/vtv_rts.h
  7b9037c02362df12dae5848fa499656e  libvtv/vtv_set.h
! f0dc1a91e6683829fe64913f5ff806b8  libvtv/vtv_utils.cc
  534c98ba47a56c08d77208f4c40a69fc  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! fcf3e1881fc0cd0db5e564d4b37129a0  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  92f6f16bc389d92c31885942b6b0f390  lto-plugin/Makefile.in
  79b337b8e2e684d93cd124b348d1261a  lto-plugin/aclocal.m4
  26e3d7e6d62bd000d0ad9db3b610e91c  lto-plugin/config.h.in
  b386dde9241d1c015a642d8ab491fa30  lto-plugin/configure
  40efd97088318d4823aab5e72c85acd0  lto-plugin/configure.ac
! ed38c9195aacdc6bf822aae8efb3767b  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
--- 159123,159148 ----
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! 09594b9cb94637b45590175823ddb350  libvtv/vtv_fail.cc
  4fcda59807763684634a5e86bb293242  libvtv/vtv_fail.h
! 538e32a22158bfedd5d1313981656166  libvtv/vtv_malloc.cc
  44ec3dc45592dcd37f5c7b6bd4968ac4  libvtv/vtv_malloc.h
! 67c5fc2395f7d45651ad1bf05fa19c56  libvtv/vtv_map.h
! 150ae05b6b87f46c6c4ff784be66a9e9  libvtv/vtv_rts.cc
  1eff763a6dc25a5ca06a25b28c93cb14  libvtv/vtv_rts.h
  7b9037c02362df12dae5848fa499656e  libvtv/vtv_set.h
! 06828e0a8c7a4c7262e5733c72d7acfd  libvtv/vtv_utils.cc
  534c98ba47a56c08d77208f4c40a69fc  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 09c1875240e8cf41e7aabd656a140138  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  92f6f16bc389d92c31885942b6b0f390  lto-plugin/Makefile.in
  79b337b8e2e684d93cd124b348d1261a  lto-plugin/aclocal.m4
  26e3d7e6d62bd000d0ad9db3b610e91c  lto-plugin/config.h.in
  b386dde9241d1c015a642d8ab491fa30  lto-plugin/configure
  40efd97088318d4823aab5e72c85acd0  lto-plugin/configure.ac
! 27954cafeeb70e514aa6a2634a046f41  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
diff -Nrcpad gcc-17-20260524/Makefile.def gcc-17-20260531/Makefile.def
*** gcc-17-20260524/Makefile.def	Sun May 24 22:32:04 2026
--- gcc-17-20260531/Makefile.def	Sun May 31 22:32:04 2026
*************** host_modules= { module= gprofng; };
*** 77,83 ****
  host_modules= { module= gettext; bootstrap=true; no_install=true;
                  module_srcdir= "gettext/gettext-runtime";
  		// We always build gettext with pic, because some packages (e.g. gdbserver)
! 		// need it in some configuratons, which is determined via nontrivial tests.
  		// Always enabling pic seems to make sense for something tied to
  		// user-facing output.
  		extra_configure_flags='--disable-shared --disable-threads --disable-java --disable-csharp --with-pic --disable-libasprintf';
--- 77,83 ----
  host_modules= { module= gettext; bootstrap=true; no_install=true;
                  module_srcdir= "gettext/gettext-runtime";
  		// We always build gettext with pic, because some packages (e.g. gdbserver)
! 		// need it in some configurations, which is determined via nontrivial tests.
  		// Always enabling pic seems to make sense for something tied to
  		// user-facing output.
  		extra_configure_flags='--disable-shared --disable-threads --disable-java --disable-csharp --with-pic --disable-libasprintf';
diff -Nrcpad gcc-17-20260524/Makefile.in gcc-17-20260531/Makefile.in
*** gcc-17-20260524/Makefile.in	Sun May 24 22:32:04 2026
--- gcc-17-20260531/Makefile.in	Sun May 31 22:32:04 2026
*************** AR_FOR_TARGET=@AR_FOR_TARGET@ @AR_PLUGIN
*** 711,717 ****
  AS_FOR_TARGET=@AS_FOR_TARGET@
  CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@
  
! # If GCC_FOR_TARGET is not overriden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
  # overridden on the command line.
--- 711,717 ----
  AS_FOR_TARGET=@AS_FOR_TARGET@
  CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@
  
! # If GCC_FOR_TARGET is not overridden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
  # overridden on the command line.
*************** CXX_FOR_TARGET_FLAG_TO_PASS = \
*** 873,879 ****
  
  # Flags to pass down to all sub-makes. STAGE*FLAGS,
  # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
! # overrideable (for a bootstrap build stage1 also builds gcc.info).
  BASE_FLAGS_TO_PASS = \
  	"DESTDIR=$(DESTDIR)" \
  	"RPATH_ENVVAR=$(RPATH_ENVVAR)" \
--- 873,879 ----
  
  # Flags to pass down to all sub-makes. STAGE*FLAGS,
  # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
! # overridable (for a bootstrap build stage1 also builds gcc.info).
  BASE_FLAGS_TO_PASS = \
  	"DESTDIR=$(DESTDIR)" \
  	"RPATH_ENVVAR=$(RPATH_ENVVAR)" \
diff -Nrcpad gcc-17-20260524/Makefile.tpl gcc-17-20260531/Makefile.tpl
*** gcc-17-20260524/Makefile.tpl	Sun May 24 22:32:04 2026
--- gcc-17-20260531/Makefile.tpl	Sun May 31 22:32:04 2026
*************** AR_FOR_TARGET=@AR_FOR_TARGET@ @AR_PLUGIN
*** 618,624 ****
  AS_FOR_TARGET=@AS_FOR_TARGET@
  CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@
  
! # If GCC_FOR_TARGET is not overriden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
  # overridden on the command line.
--- 618,624 ----
  AS_FOR_TARGET=@AS_FOR_TARGET@
  CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@
  
! # If GCC_FOR_TARGET is not overridden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
  # overridden on the command line.
*************** CXX_FOR_TARGET_FLAG_TO_PASS = \
*** 734,740 ****
  
  # Flags to pass down to all sub-makes. STAGE*FLAGS,
  # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
! # overrideable (for a bootstrap build stage1 also builds gcc.info).
  BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \
  	"`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \
  	"[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \
--- 734,740 ----
  
  # Flags to pass down to all sub-makes. STAGE*FLAGS,
  # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
! # overridable (for a bootstrap build stage1 also builds gcc.info).
  BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \
  	"`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \
  	"[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \
diff -Nrcpad gcc-17-20260524/contrib/ChangeLog gcc-17-20260531/contrib/ChangeLog
*** gcc-17-20260524/contrib/ChangeLog	Sun May 24 22:32:04 2026
--- gcc-17-20260531/contrib/ChangeLog	Sun May 31 22:32:04 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-05-29  Kevin Buettner  <kevinb@redhat.com>
+ 
+ 	* dg-extract-results.py: Show warnings instead of erroring out
+ 	when encountering an unparseable file.
+ 
+ 2026-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* check-MAINTAINERS.py (get_surname): Rename to ...
+ 	(get_name_for_sort): ... this.  Add the forenames after the
+ 	surname.
+ 	(check_group): match against regexs and support additional
+ 	fields for secondary sorting.
+ 	(sections): Rework to use regexs, add rules for the other
+ 	sections in the MAINTAINERS file.
+ 
  2026-05-12  Léo Hardt  <leom.hardt@inf.ufrgs.br>
  
  	* texi2pod.pl: Remove rule to parse the defunct @gol macro.
diff -Nrcpad gcc-17-20260524/contrib/check-MAINTAINERS.py gcc-17-20260531/contrib/check-MAINTAINERS.py
*** gcc-17-20260524/contrib/check-MAINTAINERS.py	Sun May 24 22:32:04 2026
--- gcc-17-20260531/contrib/check-MAINTAINERS.py	Sun May 31 22:32:04 2026
***************
*** 24,32 ****
  
  import locale
  import sys
! from difflib import ndiff
  from itertools import groupby
! 
  import unidecode
  
  locale.setlocale(locale.LC_ALL, 'en_US.utf8')
--- 24,33 ----
  
  import locale
  import sys
! import re
  from itertools import groupby
! from operator import itemgetter
! from difflib import ndiff
  import unidecode
  
  locale.setlocale(locale.LC_ALL, 'en_US.utf8')
*************** if len(sys.argv) != 2:
*** 38,63 ****
      sys.exit(1)
  
  
! def get_surname(name):
      parts = name.split()
!     surname = parts[-1]
  
      # Special-case some names
!     if name == 'Stefan Schulze Frielinghaus':
!         surname = parts[1]
!     elif name == 'Kris Van Hees':
!         surname = parts[1]
!     elif surname == "d'Humieres":
!         surname = 'Humieres'
  
      # Remove accents
      return unidecode.unidecode(surname)
  
  
! def check_group(name, lines, columns):
      global exit_code
- 
      named_lines = []
      for line in lines:
          if line.startswith(' '):
              print(f'Line should not start with space: "{line}"')
--- 39,63 ----
      sys.exit(1)
  
  
! def get_name_for_sort(name):
      parts = name.split()
!     surname = parts[-1] + ", " + " ".join(parts[:-1])
  
      # Special-case some names
!     if (name == 'Stefan Schulze Frielinghaus'
!         or name == 'Kris Van Hees'):
!         surname = " ".join(parts[1:]) + ", " + parts[0]
!     if surname.startswith("d'"):
!         surname = surname[2:]
  
      # Remove accents
      return unidecode.unidecode(surname)
  
  
! def check_group(name, lines, columns, matcher, sort_by):
      global exit_code
      named_lines = []
+     rex = re.compile (matcher)
      for line in lines:
          if line.startswith(' '):
              print(f'Line should not start with space: "{line}"')
*************** def check_group(name, lines, columns):
*** 71,114 ****
  
          # Special-case some names
          if line == 'James Norris':
!             named_lines.append((get_surname(line), line + "\n"))
              continue
  
!         pieces = []
!         for i, column in enumerate(columns):
!             piece = ""
!             if len(line) <= column:
!                 print(f'Line too short: "{line}"')
!                 exit_code = 4
!             elif column > 0 and line[column - 1] != ' ':
!                 print(f'Column {column - 1} should be empty: "{line}"')
!                 exit_code = 5
!             elif line[column] == ' ':
!                 print(f'Column {column} should be nonempty: "{line}"')
!                 exit_code = 6
!             elif i == len(columns) - 1:
!                 piece = line[column:].rstrip()
!             else:
!                 piece = line[column:columns[i + 1]].rstrip()
! 
!             if "  " in piece:
!                 print(f'Malformed field at column {column}: "{line}"')
!                 exit_code = 7
  
!             pieces.append(piece)
  
!         named_lines.append((get_surname(pieces[0]), line + "\n"))
  
!         email = pieces[-1]
!         if email and (not email.startswith('<') or not email.endswith('>')):
!             print(f'Malformed email address: "{line}"')
!             exit_code = 8
  
      lines = [line + "\n" for line in lines]
!     sorted_lines = [line for _, line in sorted(named_lines)]
      if lines != sorted_lines:
          exit_code = 1
!         diff = ndiff(lines, sorted_lines)
          print(f'Wrong order for {name}:\n')
          print(''.join(diff))
      else:
--- 71,149 ----
  
          # Special-case some names
          if line == 'James Norris':
!             named_lines.append((get_name_for_sort(line), "", "", line))
              continue
  
!         fields = rex.match(line)
!         if not fields:
!             print(f'Could not parse line: "{line}"')
!             exit_code = 3
!             continue
  
!         matched_keys = [
!             name for name, idx in sorted (rex.groupindex.items(),
!                                         key=lambda x: x[1])
!             if fields.group(idx) is not None]
  
!         pos = 0
!         for i, k in enumerate (matched_keys):
!             if i >= len (columns):
!                 break
!             if pos < columns[i]:
!                 pos = columns[i]
!             start = fields.start(k)
!             if k == 'email':
!                 start -= 1  # Account for the leading '<'
!             if start == pos:
!                 True
!             elif (start > pos
!                   and pos > 2
!                   and k == 'email'
!                   and line[start-1] == " "
!                   and line[start-2] != " "):
!                 True
!             elif (start > pos
!                   and k != 'email'
!                   and pos > 3
!                   and line[start-2:start] == "  "
!                   and line[start-3] != " "):
!                 True
!             else:
!                 exit_code = 3
!                 print (line)
!                 print (f"{k} starts in the wrong column: expected: {pos}, actual {start}")
!             pos += 1 + len (fields[k].rstrip())
  
!         fields = fields.groupdict()
!         if 'Team' in fields and fields['Team']:
!             fields['User'] = fields['Team']
!             fields['email'] = ""
!         pieces = []
!         for i, f in enumerate (sort_by):
!             if f not in fields:
!                 print('Internal error: re mismatch')
!                 sys.exit(10)
!             if f == 'User':
!                 pieces.append(get_name_for_sort(fields[f].rstrip()))
!             elif f == 'component':
!                 pieces.append(fields[f].rstrip().lower())
!             else:
!                 pieces.append(fields[f].rstrip())
!         pieces.append (line)
!         named_lines.append(pieces)
  
+     order = []
+     for i, _ in enumerate (sort_by):
+         order.append(i)
+     order = tuple(order)
      lines = [line + "\n" for line in lines]
!     sorted_lines = [line[-1] + "\n"
!                     for line in sorted(named_lines,
!                                        key = itemgetter(*order))]
      if lines != sorted_lines:
          exit_code = 1
!         diff = [line for line in ndiff(lines, sorted_lines)
!                 if not line.startswith('? ')]
          print(f'Wrong order for {name}:\n')
          print(''.join(diff))
      else:
*************** if '\t' in text:
*** 121,131 ****
      exit_code = 9
  
  sections = [
!     # heading, paragraph index, column numbers
!     ('Global Reviewers', 1, [0, 48]),
!     ('Write After Approval', 2, [0, 32, 48]),
!     ('Bug database only accounts', 1, [0, 48]),
!     ('Contributing under the DCO', 2, [0, 48])
  ]
  
  i = 0
--- 156,210 ----
      exit_code = 9
  
  sections = [
!     # heading, paragraph index, column numbers, regex, sort order
!     ('Global Reviewers',
!      1,
!      [0, 48],
!      r'^(?P<User>.{47}) <(?P<email>.*)>$',
!      ['User', 'email']),
!     ('CPU Port Maintainers    (CPU alphabetical order)',
!      1,
!      [0, 24, 48],
!      r'^(?P<component>.{23}) (?P<User>.*) <(?P<email>[^<>]*)>$',
!      ['component', 'User', 'email']),
!     ('OS Port Maintainers     (OS alphabetical order)',
!      1,
!      [0, 24, 48],
!      r'^(?P<component>.{23}) (?P<User>.*) <(?P<email>[^<>]*)>$',
!      ['component', 'User', 'email']),
!     ('Language Front Ends Maintainer',
!      1,
!      [0, 24, 48],
!      r'^(?P<component>.{23}) (?P<User>.*) <(?P<email>[^<>]*)>$',
!      ['component', 'User', 'email']),
!     ('Various Maintainers',
!      1,
!      [0, 24, 48],
!      r'''(?x)
!          ^(?P<component>(?:(?!\s\s).)*)\s\s+
!          (?:(?P<Team>All.*maintainers)
!           |(?P<User>[^\s].*)\s+<(?P<email>[^<>]*)>)$''',
!      ['component', 'User', 'email']),
!     ('Reviewers',
!      1,
!      [0, 24, 48],
!      r'^(?P<component>(?:(?!  ).)*)  +(?P<User>[^\s].*) <(?P<email>[^<>]*)>$',
!      ['component', 'User', 'email']),
!     ('Write After Approval',
!      2,
!      [0, 32, 48],
!      r'^(?P<User>.{31}) (?P<account>.{15}) <(?P<email>[^<>]*)>$',
!      ['User', 'email', 'account']),
!     ('Bug database only accounts',
!      1,
!      [0, 48],
!      r'^(?P<User>.{47}) <(?P<email>[^<>]*)>$',
!      ['User', 'email']),
!     ('Contributing under the DCO',
!      2,
!      [0, 48],
!      r'^(?P<User>.{47}) <(?P<email>[^<>]*)>$',
!      ['User', 'email'])
  ]
  
  i = 0
*************** for is_empty, lines in groupby(text.spli
*** 137,143 ****
      if count > 0:
          count -= 1
          if count == 0:
!             check_group(sections[i][0], lines, sections[i][2])
              i += 1
      elif len(lines) == 1 and i < len(sections) and sections[i][0] in lines[0]:
          count = sections[i][1]
--- 216,223 ----
      if count > 0:
          count -= 1
          if count == 0:
!             check_group(sections[i][0], lines, sections[i][2], sections[i][3],
!                         sections[i][4])
              i += 1
      elif len(lines) == 1 and i < len(sections) and sections[i][0] in lines[0]:
          count = sections[i][1]
diff -Nrcpad gcc-17-20260524/contrib/dg-extract-results.py gcc-17-20260531/contrib/dg-extract-results.py
*** gcc-17-20260524/contrib/dg-extract-results.py	Sun May 24 22:32:04 2026
--- gcc-17-20260531/contrib/dg-extract-results.py	Sun May 31 22:32:04 2026
*************** if sys.version_info >= (3, 0):
*** 34,39 ****
--- 34,49 ----
      sys.stdout = io.TextIOWrapper (sys.stdout.buffer,
                                     errors = 'surrogateescape')
  
+ # Exception raised to skip a file that cannot be parsed.  Used when
+ # a summary or log file is malformed (e.g. due to a DejaGnu EILSEQ
+ # crash).  We will warn about the file and continue processing the
+ # rest.
+ class ParseError (Exception):
+     def __init__ (self, filename, message):
+         Exception.__init__ (self, filename + ': ' + message)
+         self.filename = filename
+         self.message = message
+ 
  class Named:
      def __init__ (self, name):
          self.name = name
*************** class Prog:
*** 205,211 ****
          try:
              return int (value)
          except ValueError:
!             self.fatal (filename, 'expected an integer, got: ' + value)
  
      # Return a list that represents no test results.
      def zero_counts (self):
--- 215,221 ----
          try:
              return int (value)
          except ValueError:
!             raise ParseError (filename, 'expected an integer, got: ' + value)
  
      # Return a list that represents no test results.
      def zero_counts (self):
*************** class Prog:
*** 229,235 ****
          while True:
              line = file.readline()
              if line == '':
!                 self.fatal (filename, 'could not parse variation list')
              if line == '\n':
                  break
              self.known_variations.add (line.strip())
--- 239,245 ----
          while True:
              line = file.readline()
              if line == '':
!                 raise ParseError (filename, 'could not parse variation list')
              if line == '\n':
                  break
              self.known_variations.add (line.strip())
*************** class Prog:
*** 264,270 ****
          while True:
              line = file.readline()
              if line == '':
!                 self.fatal (filename, 'no recognised summary line')
              if line == end:
                  break
  
--- 274,280 ----
          while True:
              line = file.readline()
              if line == '':
!                 raise ParseError (filename, 'no recognised summary line')
              if line == end:
                  break
  
*************** class Prog:
*** 292,298 ****
              match = self.result_re.match (line)
              if match and (harness or not line.startswith ('WARNING:')):
                  if not harness:
!                     self.fatal (filename, 'saw test result before harness name')
                  name = match.group (2)
                  # Ugly hack to get the right order for gfortran.
                  if name.startswith ('gfortran.dg/g77/'):
--- 302,308 ----
              match = self.result_re.match (line)
              if match and (harness or not line.startswith ('WARNING:')):
                  if not harness:
!                     raise ParseError (filename, 'saw test result before harness name')
                  name = match.group (2)
                  # Ugly hack to get the right order for gfortran.
                  if name.startswith ('gfortran.dg/g77/'):
*************** class Prog:
*** 354,360 ****
                      found = True
                      break
              if not found:
!                 self.fatal (filename, 'unknown test result: ' + line[:-1])
  
      # Parse an acats run, which uses a different format from dejagnu.
      # We have just skipped over '=== acats configuration ==='.
--- 364,370 ----
                      found = True
                      break
              if not found:
!                 raise ParseError (filename, 'unknown test result: ' + line[:-1])
  
      # Parse an acats run, which uses a different format from dejagnu.
      # We have just skipped over '=== acats configuration ==='.
*************** class Prog:
*** 367,373 ****
          while True:
              line = file.readline()
              if line == '':
!                 self.fatal (filename, 'could not parse acats preamble')
              if line == '\t\t=== acats tests ===\n':
                  break
              if record:
--- 377,383 ----
          while True:
              line = file.readline()
              if line == '':
!                 raise ParseError (filename, 'could not parse acats preamble')
              if line == '\t\t=== acats tests ===\n':
                  break
              if record:
*************** class Prog:
*** 423,431 ****
              if line.startswith ('Running target '):
                  name = line[len ('Running target '):-1]
                  if not tool:
!                     self.fatal (filename, 'could not parse tool name')
                  if name not in self.known_variations:
!                     self.fatal (filename, 'unknown target: ' + name)
                  self.parse_run (filename, file, tool,
                                  tool.get_variation (name),
                                  num_variations)
--- 433,441 ----
              if line.startswith ('Running target '):
                  name = line[len ('Running target '):-1]
                  if not tool:
!                     raise ParseError (filename, 'could not parse tool name')
                  if name not in self.known_variations:
!                     raise ParseError (filename, 'unknown target: ' + name)
                  self.parse_run (filename, file, tool,
                                  tool.get_variation (name),
                                  num_variations)
*************** class Prog:
*** 474,480 ****
              # individual runs) and parse the version output.
              if tool and line == '\t\t=== ' + tool.name + ' Summary ===\n':
                  if file.readline() != '\n':
!                     self.fatal (filename, 'expected blank line after summary')
                  self.parse_final_summary (filename, file)
                  continue
  
--- 484,490 ----
              # individual runs) and parse the version output.
              if tool and line == '\t\t=== ' + tool.name + ' Summary ===\n':
                  if file.readline() != '\n':
!                     raise ParseError (filename, 'expected blank line after summary')
                  self.parse_final_summary (filename, file)
                  continue
  
*************** class Prog:
*** 490,496 ****
              # Sanity check to make sure that important text doesn't get
              # dropped accidentally.
              if strict and line.strip() != '':
!                 self.fatal (filename, 'unrecognised line: ' + line[:-1])
  
      # Output a segment of text.
      def output_segment (self, segment):
--- 500,506 ----
              # Sanity check to make sure that important text doesn't get
              # dropped accidentally.
              if strict and line.strip() != '':
!                 raise ParseError (filename, 'unrecognised line: ' + line[:-1])
  
      # Output a segment of text.
      def output_segment (self, segment):
*************** class Prog:
*** 569,576 ****
          try:
              # Parse the input files.
              for filename in self.files:
!                 with safe_open (filename) as file:
!                     self.parse_file (filename, file)
  
              # Decide what to output.
              if len (self.variations) == 0:
--- 579,596 ----
          try:
              # Parse the input files.
              for filename in self.files:
!                 try:
!                     with safe_open (filename) as file:
!                         self.parse_file (filename, file)
!                 except ParseError as e:
!                     # Partial state from this file is intentionally retained.
!                     # This preserves any valid results and diagnostic ERROR
!                     # lines that were parsed before the error, which is
!                     # important for diagnosing problems like DejaGnu crashes.
!                     # The unprocessed remainder of the file is lost.
!                     sys.stderr.write ('warning: skipping ' + e.filename + ': '
!                                       + e.message
!                                       + '; results may be incomplete\n')
  
              # Decide what to output.
              if len (self.variations) == 0:
diff -Nrcpad gcc-17-20260524/fixincludes/ChangeLog gcc-17-20260531/fixincludes/ChangeLog
*** gcc-17-20260524/fixincludes/ChangeLog	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/ChangeLog	Sun May 31 22:32:04 2026
***************
*** 1,3 ****
--- 1,11 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* README: Fix typos.
+ 	* fixinc.in: Likewise.
+ 	* fixincl.c (quoted_file_exists): Likewise.
+ 	* fixlib.c (fix_path_separators): Likewise.
+ 	* inclhack.def: Likewise.
+ 
  2026-02-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	PR libstdc++/113450
diff -Nrcpad gcc-17-20260524/fixincludes/README gcc-17-20260531/fixincludes/README
*** gcc-17-20260524/fixincludes/README	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/README	Sun May 31 22:32:04 2026
*************** MAKING CHANGES TO INCLHACK.DEF
*** 225,231 ****
  	be inserted.
  
      v) format - Replaces text selected with a regular expression with
!         a specialized formating string.  The formatting works as follows:
          The format text is copied to the output until a '%' character
          is found.  If the character after the '%' is another '%', then
          one '%' is output and processing continues.  If the following
--- 225,231 ----
  	be inserted.
  
      v) format - Replaces text selected with a regular expression with
!         a specialized formatting string.  The formatting works as follows:
          The format text is copied to the output until a '%' character
          is found.  If the character after the '%' is another '%', then
          one '%' is output and processing continues.  If the following
diff -Nrcpad gcc-17-20260524/fixincludes/fixinc.in gcc-17-20260531/fixincludes/fixinc.in
*** gcc-17-20260524/fixincludes/fixinc.in	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/fixinc.in	Sun May 31 22:32:04 2026
*************** esac
*** 146,152 ****
  #
  #  In the file macro_list are listed all the predefined
  #  macros that are not in the C89 reserved namespace (the reserved
! #  namespace is all identifiers beginnning with two underscores or one
  #  underscore followed by a capital letter).  A regular expression to find
  #  any of those macros in a header file is written to MN_NAME_PAT.
  #
--- 146,152 ----
  #
  #  In the file macro_list are listed all the predefined
  #  macros that are not in the C89 reserved namespace (the reserved
! #  namespace is all identifiers beginning with two underscores or one
  #  underscore followed by a capital letter).  A regular expression to find
  #  any of those macros in a header file is written to MN_NAME_PAT.
  #
diff -Nrcpad gcc-17-20260524/fixincludes/fixincl.c gcc-17-20260531/fixincludes/fixincl.c
*** gcc-17-20260524/fixincludes/fixincl.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/fixincl.c	Sun May 31 22:32:04 2026
*************** quoted_file_exists (const char* pz_src_p
*** 730,736 ****
     emits a triple of:
  
      1.  source directory of the original file
!     2.  the relative path file name of the #includ-ed file
      3.  the full destination path for this file
  
     Input:  the text of the file, the file name and a pointer to the
--- 730,736 ----
     emits a triple of:
  
      1.  source directory of the original file
!     2.  the relative path file name of the #include-d file
      3.  the full destination path for this file
  
     Input:  the text of the file, the file name and a pointer to the
diff -Nrcpad gcc-17-20260524/fixincludes/fixlib.c gcc-17-20260531/fixincludes/fixlib.c
*** gcc-17-20260524/fixincludes/fixlib.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/fixlib.c	Sun May 31 22:32:04 2026
*************** fix_path_separators (char* p)
*** 294,300 ****
        }
  }
  
! /* Count number of needle character ocurrences in str */
  static int
  count_occurrences_of_char (char* str, char needle)
  {
--- 294,300 ----
        }
  }
  
! /* Count number of needle character occurrences in str */
  static int
  count_occurrences_of_char (char* str, char needle)
  {
diff -Nrcpad gcc-17-20260524/fixincludes/inclhack.def gcc-17-20260531/fixincludes/inclhack.def
*** gcc-17-20260524/fixincludes/inclhack.def	Sun May 24 22:32:04 2026
--- gcc-17-20260531/fixincludes/inclhack.def	Sun May 31 22:32:04 2026
*************** fix = {
*** 720,726 ****
  };
  
  /*
!  *  pthread.h on AIX 4.3.3 tries to define a macro without whitspace
   *  which violates a requirement of ISO C.
   */
  fix = {
--- 720,726 ----
  };
  
  /*
!  *  pthread.h on AIX 4.3.3 tries to define a macro without whitespace
   *  which violates a requirement of ISO C.
   */
  fix = {
*************** fix = {
*** 2644,2650 ****
  
  /*
   *  The definitions for PTHREAD_MUTEX_INITIALIZER and similar initializers
!  *  in pthread.h need to be constant expressions to be standard complient.
   *  As a result, we need to remove the void * casts in the initializers
   *  (see hpux11_pthread_const) and to change the __(M|C|RW)POINTER defines
   *  to use the long type.
--- 2644,2650 ----
  
  /*
   *  The definitions for PTHREAD_MUTEX_INITIALIZER and similar initializers
!  *  in pthread.h need to be constant expressions to be standard compliant.
   *  As a result, we need to remove the void * casts in the initializers
   *  (see hpux11_pthread_const) and to change the __(M|C|RW)POINTER defines
   *  to use the long type.
*************** fix = {
*** 4009,4015 ****
      files    = stdio.h;
      bypass   = "include.*(stdarg\.h|machine/ansi\.h|_stdio\.h)";
      /*
!      * On Solaris 10+, this fix is unncessary; <stdio.h> includes
       * <iso/stdio_iso.h>, which includes <sys/va_list.h>.
        */
      mach     = '*-*-solaris2*';
--- 4009,4015 ----
      files    = stdio.h;
      bypass   = "include.*(stdarg\.h|machine/ansi\.h|_stdio\.h)";
      /*
!      * On Solaris 10+, this fix is unnecessary; <stdio.h> includes
       * <iso/stdio_iso.h>, which includes <sys/va_list.h>.
        */
      mach     = '*-*-solaris2*';
diff -Nrcpad gcc-17-20260524/gcc/ChangeLog gcc-17-20260531/gcc/ChangeLog
*** gcc-17-20260524/gcc/ChangeLog	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ChangeLog	Sun May 31 22:32:04 2026
***************
*** 1,3 ****
--- 1,1665 ----
+ 2026-05-30  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Avoid
+ 	constant-logical diagnostic.
+ 
+ 2026-05-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (insvsi_intermal):
+ 	Rename from 'insvsi'.
+ 	(insvsi): New expansion pattern that also addresses situations
+ 	where the DEPBITS machine instruction is unavailable.
+ 
+ 2026-05-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*splice_bits):
+ 	Remove.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* builtins.def: Reflow long line.
+ 	* graphite-isl-ast-to-gimple.cc (graphite_copy_stmts_from_block): Likewise.
+ 	* lto-streamer.h: Likewise.
+ 	* prime-paths.cc (struct xpair): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Fix typos.
+ 	(vect_preserves_scalar_order_p): Likewise.
+ 	(vect_slp_analyze_instance_dependence): Likewise.
+ 	(vect_enhance_data_refs_alignment): Likewise.
+ 	(vect_check_gather_scatter): Likewise.
+ 	(vect_grouped_store_supported): Likewise.
+ 	* tree-vect-generic.cc (type_for_widest_vector_mode): Likewise.
+ 	* tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors_avx512): Likewise.
+ 	(get_live_virtual_operand_on_edge): Likewise.
+ 	(vect_can_peel_nonlinear_iv_p): Likewise.
+ 	(vect_do_peeling): Likewise.
+ 	* tree-vect-loop.cc (vec_init_loop_exit_info): Likewise.
+ 	(vect_verify_full_masking_avx512): Likewise.
+ 	(vect_verify_loop_lens): Likewise.
+ 	(vect_analyze_loop_costing): Likewise.
+ 	(vect_analyze_loop_2): Likewise.
+ 	(vect_analyze_loop): Likewise.
+ 	(vect_is_simple_reduction): Likewise.
+ 	(vect_create_epilog_for_reduction): Likewise.
+ 	(vectorizable_lane_reducing): Likewise.
+ 	(vectorizable_reduction): Likewise.
+ 	(vectorizable_live_operation): Likewise.
+ 	(vect_record_loop_len): Likewise.
+ 	(scale_profile_for_vect_loop): Likewise.
+ 	(vect_update_ivs_after_vectorizer_for_early_breaks): Likewise.
+ 	* tree-vect-patterns.cc (vect_recog_bit_insert_pattern): Likewise.
+ 	(vect_recog_build_binary_gimple_stmt): Likewise.
+ 	(vect_recog_sat_sub_pattern_transform): Likewise.
+ 	(vect_recog_sat_sub_pattern): Likewise.
+ 	(add_code_for_floorceilround_divmod): Likewise.
+ 	(vect_recog_bool_pattern): Likewise.
+ 	(struct vect_recog_func): Likewise.
+ 	* tree-vect-slp-patterns.cc (class complex_pattern): Likewise.
+ 	(compatible_complex_nodes_p): Likewise.
+ 	* tree-vect-slp.cc (vect_slp_tree_uniform_p): Likewise.
+ 	(vect_def_types_match): Likewise.
+ 	(vect_record_max_nunits): Likewise.
+ 	(vect_analyze_slp_instance): Likewise.
+ 	(vect_lower_load_permutations): Likewise.
+ 	(vect_optimize_slp_pass::is_compatible_layout): Likewise.
+ 	* tree-vect-stmts.cc (vect_get_strided_load_store_ops): Likewise.
+ 	(vectorizable_simd_clone_call): Likewise.
+ 	(vectorizable_store): Likewise.
+ 	(vectorizable_load): Likewise.
+ 	(vectorizable_condition): Likewise.
+ 	(vectorizable_early_exit): Likewise.
+ 	* tree-vectorizer.cc (vector_costs::compare_inside_loop_cost): Likewise.
+ 	* tree-vectorizer.h (enum vect_reduction_type): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* tree-ssa-alias-compare.h: Fix typos.
+ 	* tree-ssa-alias.cc (ptr_deref_may_alias_decl_p): Likewise.
+ 	(ao_ref_alignment): Likewise.
+ 	(component_ref_to_zero_sized_trailing_array_p): Likewise.
+ 	(access_path_may_continue_p): Likewise.
+ 	(nonoverlapping_component_refs_p_1): Likewise.
+ 	(nonoverlapping_array_refs_p): Likewise.
+ 	(refs_may_alias_p_2): Likewise.
+ 	(ref_maybe_used_by_call_p_1): Likewise.
+ 	(stmt_kills_ref_p): Likewise.
+ 	* tree-ssa-ccp.cc: Likewise.
+ 	* tree-ssa-dce.cc (mark_all_reaching_defs_necessary_1): Likewise.
+ 	(propagate_necessity): Likewise.
+ 	(propagate_counts): Likewise.
+ 	(eliminate_unnecessary_stmts): Likewise.
+ 	* tree-ssa-dom.cc (pass_dominator::execute): Likewise.
+ 	* tree-ssa-dse.cc: Likewise.
+ 	* tree-ssa-forwprop.cc (new_src_based_on_copy): Likewise.
+ 	(optimize_agr_copyprop_1): Likewise.
+ 	(pass_forwprop::execute): Likewise.
+ 	* tree-ssa-ifcombine.cc (tree_ssa_ifcombine_bb_1): Likewise.
+ 	(pass_tree_ifcombine::execute): Likewise.
+ 	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
+ 	* tree-ssa-loop-ch.cc (loop_combined_static_and_iv_p): Likewise.
+ 	(should_duplicate_loop_header_p): Likewise.
+ 	* tree-ssa-loop-im.cc (get_coldest_out_loop): Likewise.
+ 	(determine_max_movement): Likewise.
+ 	(execute_sm_exit): Likewise.
+ 	(hoist_memory_references): Likewise.
+ 	* tree-ssa-loop-ivcanon.cc (constant_after_peeling): Likewise.
+ 	(loop_edge_to_cancel): Likewise.
+ 	(unloop_loops): Likewise.
+ 	(try_unroll_loop_completely): Likewise.
+ 	(adjust_loop_info_after_peeling): Likewise.
+ 	(tree_unroll_loops_completely_1): Likewise.
+ 	* tree-ssa-loop-ivopts.cc (struct iv_inv_expr_ent): Likewise.
+ 	(dump_cand): Likewise.
+ 	(group_compare_offset): Likewise.
+ 	(split_address_groups): Likewise.
+ 	(get_computation_aff_1): Likewise.
+ 	(iv_ca_dump): Likewise.
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Likewise.
+ 	(number_of_iterations_popcount): Likewise.
+ 	(idx_infer_loop_bounds): Likewise.
+ 	(infer_loop_bounds_from_signedness): Likewise.
+ 	(discover_iteration_bound_by_body_walk): Likewise.
+ 	(loop_exits_before_overflow): Likewise.
+ 	* tree-ssa-loop-niter.h: Likewise.
+ 	* tree-ssa-loop-prefetch.cc (should_issue_prefetch_p): Likewise.
+ 	(schedule_prefetches): Likewise.
+ 	* tree-ssa-loop-split.cc (split_loop): Likewise.
+ 	(find_vdef_in_loop): Likewise.
+ 	(get_cond_branch_to_split_loop): Likewise.
+ 	* tree-ssa-math-opts.cc (powi_as_mults): Likewise.
+ 	(expand_pow_as_sqrts): Likewise.
+ 	(gimple_expand_builtin_pow): Likewise.
+ 	(convert_mult_to_widen): Likewise.
+ 	(convert_plusminus_to_widen): Likewise.
+ 	* tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Likewise.
+ 	(factor_out_conditional_operation): Likewise.
+ 	(cond_if_else_store_replacement_1): Likewise.
+ 	(execute_over_cond_phis): Likewise.
+ 	* tree-ssa-phiprop.cc (can_handle_load): Likewise.
+ 	(propagate_with_phi): Likewise.
+ 	* tree-ssa-pre.cc (get_or_alloc_expr_for_nary): Likewise.
+ 	(sorted_array_from_bitmap_set): Likewise.
+ 	(value_dies_in_block_x): Likewise.
+ 	(compute_antic_aux): Likewise.
+ 	* tree-ssa-propagate.cc (substitute_and_fold_engine::substitute_and_fold): Likewise.
+ 	* tree-ssa-reassoc.cc (get_rank): Likewise.
+ 	(remove_visited_stmt_chain): Likewise.
+ 	* tree-ssa-sccvn.cc (vn_reference_eq): Likewise.
+ 	(vn_reference_lookup_call): Likewise.
+ 	(vn_nary_op_eq): Likewise.
+ 	(vn_nary_op_insert_into): Likewise.
+ 	(visit_reference_op_call): Likewise.
+ 	(visit_phi): Likewise.
+ 	(eliminate_dom_walker::eliminate_stmt): Likewise.
+ 	(eliminate_dom_walker::eliminate_cleanup): Likewise.
+ 	(process_bb): Likewise.
+ 	* tree-ssa-scopedtables.cc (hashable_expr_equal_p): Likewise.
+ 	* tree-ssa-structalias.cc (determine_global_memory_access): Likewise.
+ 	(clear_dependence_clique): Likewise.
+ 	* tree-ssa-threadbackward.cc (back_threader_profitability::profitable_path_p): Likewise.
+ 	* tree-ssa-threadedge.cc (propagate_threaded_block_debug_into): Likewise.
+ 	* tree-ssa-uninit.cc (warn_uninit): Likewise.
+ 	(execute_late_warn_uninitialized): Likewise.
+ 	* tree-ssanames.cc (range_info_get_range): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* tree-assume.cc (assume_query::calculate_phi): Fix typos.
+ 	* tree-cfg.cc (assign_discriminators): Likewise.
+ 	(stmt_starts_bb_p): Likewise.
+ 	(move_stmt_op): Likewise.
+ 	(ifconvertable_edge): Likewise.
+ 	* tree-cfgcleanup.cc (maybe_remove_forwarder_block): Likewise.
+ 	(cleanup_tree_cfg_noloop): Likewise.
+ 	* tree-chrec.cc (scev_is_linear_expression): Likewise.
+ 	* tree-complex.cc (expand_complex_div_wide): Likewise.
+ 	* tree-core.h (enum built_in_class): Likewise.
+ 	* tree-data-ref.cc (dump_alias_pair): Likewise.
+ 	(create_ifn_alias_checks): Likewise.
+ 	* tree-data-ref.h (struct data_dependence_relation): Likewise.
+ 	* tree-eh.cc (lower_try_finally_fallthru_label): Likewise.
+ 	(lower_eh_dispatch): Likewise.
+ 	* tree-if-conv.cc (idx_within_array_bound): Likewise.
+ 	(base_object_writable): Likewise.
+ 	(ifcvt_memrefs_wont_trap): Likewise.
+ 	(get_loop_body_in_if_conv_order): Likewise.
+ 	(predicate_scalar_phi): Likewise.
+ 	* tree-inline.cc (remap_type_1): Likewise.
+ 	(declare_return_variable): Likewise.
+ 	(inline_forbidden_p): Likewise.
+ 	(estimate_num_insns): Likewise.
+ 	(copy_decl_for_dup_finish): Likewise.
+ 	* tree-into-ssa.cc (get_ssa_name_ann): Likewise.
+ 	(clear_ssa_name_info): Likewise.
+ 	(insert_updated_phi_nodes_compare_uids): Likewise.
+ 	(update_ssa): Likewise.
+ 	* tree-loop-distribution.cc (enum partition_kind): Likewise.
+ 	(struct partition): Likewise.
+ 	(class loop_distribution): Likewise.
+ 	(loop_distribution::classify_partition): Likewise.
+ 	(loop_distribution::pg_add_dependence_edges): Likewise.
+ 	(add_partition_graph_edge): Likewise.
+ 	(free_partition_graph_vdata): Likewise.
+ 	(pg_unmark_merged_alias_ddrs): Likewise.
+ 	(version_loop_by_alias_check): Likewise.
+ 	* tree-object-size.cc (gimplify_size_expressions): Likewise.
+ 	(object_sizes_execute): Likewise.
+ 	* tree-parloops.cc (parloops_is_simple_reduction): Likewise.
+ 	(transform_to_exit_first_loop_alt): Likewise.
+ 	* tree-predcom.cc (pcom_worker::suitable_component_p): Likewise.
+ 	(pcom_worker::determine_roots_comp): Likewise.
+ 	(prepare_initializers_chain_store_elim): Likewise.
+ 	(pcom_worker::tree_predictive_commoning_loop): Likewise.
+ 	* tree-profile.cc (condition_uid): Likewise.
+ 	(cov_length): Likewise.
+ 	(tree_profiling): Likewise.
+ 	* tree-scalar-evolution.cc (scev_dfs::add_to_evolution_1): Likewise.
+ 	(scev_reset): Likewise.
+ 	(expression_expensive_p): Likewise.
+ 	* tree-sra.cc (struct access): Likewise.
+ 	(build_access_from_call_arg): Likewise.
+ 	(path_comparable_for_same_access): Likewise.
+ 	(child_would_conflict_in_acc): Likewise.
+ 	(sra_modify_call_arg): Likewise.
+ 	* tree-switch-conversion.cc (can_log2): Likewise.
+ 	(switch_conversion::exp_index_transform): Likewise.
+ 	* tree-switch-conversion.h (enum cluster_type): Likewise.
+ 	* tree-vrp.cc (remove_unreachable::handle_early): Likewise.
+ 	* tree.cc (build5): Likewise.
+ 	(get_file_function_name): Likewise.
+ 	(build_opaque_vector_type): Likewise.
+ 	(array_ref_flexible_size_p): Likewise.
+ 	(verify_type_variant): Likewise.
+ 	(gimple_canonical_types_compatible_p): Likewise.
+ 	* tree.h (decl_debug_args_insert): Likewise.
+ 	(strip_pointer_types): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* rtl-ssa/access-utils.h (drop_memory_access): Fix typos.
+ 	* rtl-ssa/accesses.cc (clobber_info::recompute_group): Likewise.
+ 	* rtl-ssa/accesses.h: Likewise.
+ 	* rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Likewise.
+ 	* rtl-ssa/functions.h: Likewise.
+ 	* rtl-ssa/insns.cc (function_info::record_use): Likewise.
+ 	* rtl-ssa/insns.h: Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* lto-cgraph.cc (get_alias_symbol): Fix typos.
+ 	(input_node): Likewise.
+ 	(input_varpool_node): Likewise.
+ 	* lto-ltrans-cache.cc: Likewise.
+ 	* lto-streamer-in.cc (lto_location_cache::revert_location_cache): Likewise.
+ 	(lto_location_cache::input_location_and_block): Likewise.
+ 	(lto_location_cache::input_location): Likewise.
+ 	(lto_input_location): Likewise.
+ 	* lto-streamer-out.cc (lto_variably_modified_type_p): Likewise.
+ 	(lto_is_streamable): Likewise.
+ 	(DFS::DFS): Likewise.
+ 	(cmp_symbol_files): Likewise.
+ 	(lto_output): Likewise.
+ 	* lto-streamer.h (enum LTO_tags): Likewise.
+ 	* lto-wrapper.cc (merge_flto_options): Likewise.
+ 	(run_gcc): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* ipa-comdats.cc: Fix typos.
+ 	* ipa-cp.cc (good_cloning_opportunity_p): Likewise.
+ 	(dump_profile_updates): Likewise.
+ 	(update_counts_for_self_gen_clones): Likewise.
+ 	(update_profiling_info): Likewise.
+ 	(adjust_refs_in_act_callers): Likewise.
+ 	(struct cloning_opportunity_ranking): Likewise.
+ 	* ipa-fnsummary.cc (evaluate_conditions_for_known_args): Likewise.
+ 	(unmodified_parm_or_parm_agg_item): Likewise.
+ 	(guards_builtin_unreachable): Likewise.
+ 	(analyze_function_body): Likewise.
+ 	(estimate_edge_devirt_benefit): Likewise.
+ 	* ipa-fnsummary.h (cross_module_call_p): Likewise.
+ 	* ipa-free-lang-data.cc (fld_simplified_type_name): Likewise.
+ 	(free_lang_data_in_decl): Likewise.
+ 	* ipa-icf-gimple.cc (func_checker::compare_decl): Likewise.
+ 	(func_checker::compatible_types_p): Likewise.
+ 	(func_checker::compare_gimple_asm): Likewise.
+ 	* ipa-icf.cc (sem_function::hash_stmt): Likewise.
+ 	(sem_item_optimizer::subdivide_classes_by_equality): Likewise.
+ 	(sem_item_optimizer::traverse_congruence_split): Likewise.
+ 	(sem_item_optimizer::process_cong_reduction): Likewise.
+ 	* ipa-inline-transform.cc (mark_all_inlined_calls_cdtor): Likewise.
+ 	(preserve_function_body_p): Likewise.
+ 	* ipa-inline.cc (enum can_inline_edge_by_limits_flags): Likewise.
+ 	(can_early_inline_edge_p): Likewise.
+ 	(early_inliner): Likewise.
+ 	* ipa-locality-cloning.cc (edge_redirectable_p): Likewise.
+ 	(clone_node_as_needed): Likewise.
+ 	(partition_callchain): Likewise.
+ 	* ipa-modref.cc (modref_eaf_analysis::merge_with_ssa_name): Likewise.
+ 	* ipa-param-manipulation.cc (ipa_param_adjustments::get_surviving_params): Likewise.
+ 	(purge_all_uses): Likewise.
+ 	(ipa_param_body_adjustments::mark_dead_statements): Likewise.
+ 	(replace_with_mapped_expr): Likewise.
+ 	(ipa_param_body_adjustments::get_new_param_chain): Likewise.
+ 	(record_argument_state): Likewise.
+ 	(ipa_param_body_adjustments::perform_cfun_body_modifications): Likewise.
+ 	* ipa-param-manipulation.h (struct ipa_replace_map): Likewise.
+ 	* ipa-polymorphic-call.cc (ipa_polymorphic_call_context::combine_with): Likewise.
+ 	* ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Likewise.
+ 	(noted_fnptr_hasher::equal): Likewise.
+ 	(ipa_set_ancestor_jf): Likewise.
+ 	(check_stmt_for_type_change): Likewise.
+ 	(param_type_may_change_p): Likewise.
+ 	(find_dominating_aa_status): Likewise.
+ 	(parm_ref_data_pass_through_p): Likewise.
+ 	(build_agg_jump_func_from_list): Likewise.
+ 	(analyze_agg_content_value): Likewise.
+ 	(ipa_single_noted_fnptr_in_record): Likewise.
+ 	(ipa_make_edge_direct_to_target): Likewise.
+ 	(combine_controlled_uses_counters): Likewise.
+ 	(ipa_duplicate_jump_function): Likewise.
+ 	(ipa_write_jump_function): Likewise.
+ 	(useful_ipcp_transformation_info_p): Likewise.
+ 	* ipa-prop.h (struct GTY): Likewise.
+ 	* ipa-reference.cc (ipa_reference_var_uid): Likewise.
+ 	(ipa_reference_get_written_global): Likewise.
+ 	(union_static_var_sets): Likewise.
+ 	* ipa-split.cc (split_function): Likewise.
+ 	* ipa-sra.cc (isra_track_scalar_value_uses): Likewise.
+ 	(process_scan_results): Likewise.
+ 	(flip_all_hints_pessimistic): Likewise.
+ 	(flip_all_param_hints_pessimistic): Likewise.
+ 	* ipa-strub.cc (get_strub_mode_attr_parm): Likewise.
+ 	(compute_strub_mode): Likewise.
+ 	* ipa-utils.cc (ipa_merge_profiles): Likewise.
+ 	(recursive_call_p): Likewise.
+ 	(stmt_may_terminate_function_p): Likewise.
+ 	(find_always_executed_bbs): Likewise.
+ 	* ipa-utils.h (type_with_linkage_p): Likewise.
+ 	(lto_streaming_expected_p): Likewise.
+ 	* ipa-visibility.cc (varpool_node::externally_visible_p): Likewise.
+ 	* ipa.cc (update_inlined_to_pointer): Likewise.
+ 	(enqueue_node): Likewise.
+ 	(process_references): Likewise.
+ 	(set_readonly_bit): Likewise.
+ 	(clear_addressable_bit): Likewise.
+ 	(BOTTOM): Likewise.
+ 	(propagate_single_user): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* gimple-array-bounds.cc (trailing_array): Fix typos.
+ 	* gimple-crc-optimization.cc (crc_optimization::set_defs): Likewise.
+ 	* gimple-fold.cc (get_range_strlen): Likewise.
+ 	(can_refer_decl_in_current_unit_p): Likewise.
+ 	(gimple_fold_builtin_bcopy): Likewise.
+ 	(get_range_strlen_tree): Likewise.
+ 	(gimple_fold_builtin_stpcpy): Likewise.
+ 	(fold_stmt_1): Likewise.
+ 	(fold_truth_andor_for_ifcombine): Likewise.
+ 	(gimple_fold_stmt_to_constant): Likewise.
+ 	(fold_const_aggregate_ref): Likewise.
+ 	(gimple_get_virt_method_for_vtable): Likewise.
+ 	(rewrite_to_defined_unconditional): Likewise.
+ 	(gimple_build): Likewise.
+ 	(gimple_convert): Likewise.
+ 	* gimple-harden-control-flow.cc (pass_harden_control_flow_redundancy::execute): Likewise.
+ 	* gimple-loop-interchange.cc (loop_cand::can_interchange_p): Likewise.
+ 	(loop_cand::analyze_lcssa_phis): Likewise.
+ 	(should_interchange_loops): Likewise.
+ 	* gimple-loop-jam.cc (tree_loop_unroll_and_jam): Likewise.
+ 	* gimple-low.cc (find_assumption_locals_r): Likewise.
+ 	* gimple-match-exports.cc (try_conditional_simplification): Likewise.
+ 	* gimple-predicate-analysis.cc (find_matching_predicate_in_rest_chains): Likewise.
+ 	(uninit_analysis::func_t::phi_arg_set): Likewise.
+ 	(predicate::dump): Likewise.
+ 	* gimple-predicate-analysis.h (class uninit_analysis): Likewise.
+ 	* gimple-range-cache.cc (sbr_vector::bb_range_p): Likewise.
+ 	(block_range_cache::set_bb_range): Likewise.
+ 	* gimple-range-gori.cc (gori_compute::compute_operand_range): Likewise.
+ 	(gori_stmt_info::gori_stmt_info): Likewise.
+ 	(gori_calc_operands): Likewise.
+ 	(gori_on_edge): Likewise.
+ 	(gori_name_helper): Likewise.
+ 	* gimple-range-infer.h: Likewise.
+ 	* gimple-range-phi.cc (phi_group::phi_group): Likewise.
+ 	(phi_group::calculate_using_modifier): Likewise.
+ 	(phi_analyzer::operator[]): Likewise.
+ 	* gimple-range-phi.h: Likewise.
+ 	* gimple-range.cc (dom_ranger::range_of_stmt): Likewise.
+ 	* gimple-ssa-isolate-paths.cc (is_addr_local): Likewise.
+ 	(warn_return_addr_local): Likewise.
+ 	* gimple-ssa-pta-constraints.cc (get_constraint_for_ssa_var): Likewise.
+ 	(find_func_clobbers): Likewise.
+ 	(create_variable_info_for): Likewise.
+ 	(associate_varinfo_to_alias): Likewise.
+ 	* gimple-ssa-sccopy.cc: Likewise.
+ 	* gimple-ssa-split-paths.cc (count_stmts_in_block): Likewise.
+ 	(poor_ifcvt_pred): Likewise.
+ 	(is_feasible_trace): Likewise.
+ 	* gimple-ssa-sprintf.cc (get_int_range): Likewise.
+ 	(handle_printf_call): Likewise.
+ 	* gimple-ssa-store-merging.cc (get_location_for_stmts): Likewise.
+ 	* gimple-ssa-strength-reduction.cc: Likewise.
+ 	* gimple-ssa-warn-access.cc (call_arg): Likewise.
+ 	* gimple-ssa-warn-restrict.cc (builtin_memref::offset_out_of_bounds): Likewise.
+ 	(builtin_access::overlap_size): Likewise.
+ 	(maybe_diag_access_bounds): Likewise.
+ 	* gimple.def (GIMPLE_PHI): Likewise.
+ 	* gimple.h (gimple_goto_dest): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* genattrtab.cc (min_fn): Fix typos.
+ 	(get_attr_order): Likewise.
+ 	(optimize_attrs): Likewise.
+ 	* genautomata.cc (struct unit_usage): Likewise.
+ 	* gengtype-state.cc (s_expr_writer::write_any_indent): Likewise.
+ 	(write_state): Likewise.
+ 	* gengtype.cc (struct file_rule_st): Likewise.
+ 	(walk_type): Likewise.
+ 	(write_roots): Likewise.
+ 	* genmatch.cc (expr::gen_transform): Likewise.
+ 	(usage): Likewise.
+ 	* genopinit.cc (open_outfile): Likewise.
+ 	(handle_overloaded_code_for): Likewise.
+ 	(main): Likewise.
+ 	* genoutput.cc (operand_data_hasher::equal): Likewise.
+ 	* genpreds.cc (FOR_ALL_CONSTRAINTS): Likewise.
+ 	* genrecog.cc (prune_invalid_results): Likewise.
+ 	(split_out_patterns): Likewise.
+ 	* gensupport.cc (parse_section): Likewise.
+ 	(convert_syntax): Likewise.
+ 	(mark_operands_from_match_dup): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* sanopt.cc: Fix typos.
+ 	* sched-deps.cc (sched_analyze_2): Likewise.
+ 	* sel-sched-ir.cc (alloc_target_context): Likewise.
+ 	(av_set_union_and_live): Likewise.
+ 	(make_regions_from_loop_nest): Likewise.
+ 	* sel-sched-ir.h (struct _list_iterator): Likewise.
+ 	(struct succs_info): Likewise.
+ 	(SUCCS_ALL): Likewise.
+ 	* sel-sched.cc (moveup_expr): Likewise.
+ 	(moveup_expr_cached): Likewise.
+ 	(get_spec_check_type_for_insn): Likewise.
+ 	(get_expr_cost): Likewise.
+ 	(find_place_for_bookkeeping): Likewise.
+ 	(update_and_record_unavailable_insns): Likewise.
+ 	(move_op_at_first_insn): Likewise.
+ 	(calculate_new_fences): Likewise.
+ 	* shrink-wrap.cc (live_edge_for_reg): Likewise.
+ 	(try_shrink_wrapping): Likewise.
+ 	* simplify-rtx.cc
+ 	(simplify_context::simplify_logical_relational_operation): Likewise.
+ 	(simplify_const_vector_subreg): Likewise.
+ 	* spellcheck.cc (assert_not_suggested_for): Likewise.
+ 	* stringpool.h: Likewise.
+ 	* sym-exec/sym-exec-state.cc (state::do_shift_right): Likewise.
+ 	(state::get_parent_with_const_child): Likewise.
+ 	(state::add_numbers): Likewise.
+ 	(state::add_equal_cond): Likewise.
+ 	(state::add_not_equal_cond): Likewise.
+ 	* sym-exec/sym-exec-state.h (class state): Likewise.
+ 	* symbol-summary.h: Likewise.
+ 	* symtab.cc (symtab_node::noninterposable_alias): Likewise.
+ 	(symtab_node::equal_address_to): Likewise.
+ 	* system.h (gcc_stablesort_r): Likewise.
+ 	* target-hooks-macros.h: Likewise.
+ 	* target.def: Likewise.
+ 	* targhooks.cc (default_floatn_mode): Likewise.
+ 	(default_floatn_builtin_p): Likewise.
+ 	(default_builtin_vector_alignment_reachable): Likewise.
+ 	(default_addr_space_for_artificial_rodata): Likewise.
+ 	* text-art/ruler.cc (x_ruler::update_layout): Likewise.
+ 	* text-art/ruler.h (class x_ruler): Likewise.
+ 	* timevar.def (TV_ISOLATE_ERRONEOUS_PATHS): Likewise.
+ 	* trans-mem.cc (ipa_tm_scan_irr_block): Likewise.
+ 	(ipa_tm_execute): Likewise.
+ 	* typed-splay-tree.h (class typed_splay_tree): Likewise.
+ 	* ubsan.cc (instrument_bool_enum_load): Likewise.
+ 	* value-prof.cc: Likewise.
+ 	* value-range.cc (irange::union_append): Likewise.
+ 	(irange::snap): Likewise.
+ 	(irange::snap_subranges): Likewise.
+ 	(irange::get_bitmask): Likewise.
+ 	* value-range.h (irange_bitmask::get_precision): Likewise.
+ 	* value-relation.cc (dom_oracle::next_relation): Likewise.
+ 	(block_relation_iterator::block_relation_iterator): Likewise.
+ 	* var-tracking.cc (shared_hash_find): Likewise.
+ 	(emit_note_insn_var_location): Likewise.
+ 	* varasm.cc (mergeable_constant_section): Likewise.
+ 	(finish_tm_clone_pairs): Likewise.
+ 	(default_binds_local_p_3): Likewise.
+ 	* vr-values.cc (simplify_using_ranges::simplify): Likewise.
+ 	* vtable-verify.cc: Likewise.
+ 	* warning-control.cc (has_warning_spec): Likewise.
+ 	* wide-int.cc (wi::from_mpz): Likewise.
+ 	(wi::force_to_size): Likewise.
+ 	(wi::divmod_internal): Likewise.
+ 	* wide-int.h (wi::bitreverse): Likewise.
+ 	(wi::umin): Likewise.
+ 	(wi::mul_high): Likewise.
+ 	(wi::div_trunc): Likewise.
+ 	(wi::sdiv_trunc): Likewise.
+ 	(wi::udiv_trunc): Likewise.
+ 	(wi::div_floor): Likewise.
+ 	(wi::sdiv_floor): Likewise.
+ 	(wi::udiv_floor): Likewise.
+ 	(wi::div_ceil): Likewise.
+ 	(wi::udiv_ceil): Likewise.
+ 	(wi::div_round): Likewise.
+ 	(wi::gcd): Likewise.
+ 	(wi::mod_trunc): Likewise.
+ 	(wi::smod_trunc): Likewise.
+ 	(wi::umod_trunc): Likewise.
+ 	(wi::mod_floor): Likewise.
+ 	(wi::umod_floor): Likewise.
+ 	(wi::mod_ceil): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* omp-expand.cc (expand_oacc_collapse_vars): Likewise.
+ 	(expand_omp_for_init_vars): Likewise.
+ 	(expand_omp_for): Likewise.
+ 	(expand_omp_atomic_fetch_op): Likewise.
+ 	(build_omp_regions_1): Likewise.
+ 	* omp-general.cc (omp_is_allocatable_or_ptr): Likewise.
+ 	* omp-low.cc (lower_rec_input_clauses): Likewise.
+ 	(lower_omp): Likewise.
+ 	* omp-offload.cc (oacc_validate_dims): Likewise.
+ 	(oacc_loop_process): Likewise.
+ 	(oacc_loop_fixed_partitions): Likewise.
+ 	(oacc_loop_auto_partitions): Likewise.
+ 	(execute_oacc_device_lower): Likewise.
+ 	* omp-simd-clone.cc (simd_clone_clauses_extract): Likewise.
+ 	(ipa_simd_modify_stmt_ops): Likewise.
+ 	* optabs-query.cc (lshift_cheap_p): Likewise.
+ 	* optabs-query.h (trapv_binoptab_p): Likewise.
+ 	(get_vec_cmp_icode): Likewise.
+ 	* optabs.cc (expand_binop): Likewise.
+ 	(expand_vec_perm_var): Likewise.
+ 	(expand_compare_and_swap_loop): Likewise.
+ 	(expand_atomic_load): Likewise.
+ 	(maybe_optimize_fetch_op): Likewise.
+ 	(can_reuse_operands_p): Likewise.
+ 	* opts-global.cc (init_options_once): Likewise.
+ 	* opts.h (struct cl_option): Likewise.
+ 	* pair-fusion.cc (pair_fusion_bb_info::try_fuse_pair): Likewise.
+ 	* pair-fusion.h (enum class): Likewise.
+ 	* passes.cc (account_profile_1): Likewise.
+ 	* path-coverage.cc (instrument_prime_paths): Likewise.
+ 	* plugin.cc (get_event_last): Likewise.
+ 	* pointer-query.cc (handle_min_max_size): Likewise.
+ 	(handle_array_ref): Likewise.
+ 	(handle_ssa_name): Likewise.
+ 	* poly-int.h (struct if_lossless): Likewise.
+ 	(POLY_POLY_COEFF): Likewise.
+ 	* postreload-gcse.cc (gcse_after_reload_main): Likewise.
+ 	* predict.cc (expr_expected_value_1): Likewise.
+ 	(is_exit_with_zero_arg): Likewise.
+ 	(predict_paths_for_bb): Likewise.
+ 	(estimate_bb_frequencies): Likewise.
+ 	(rebuild_frequencies): Likewise.
+ 	(make_pass_rebuild_frequencies): Likewise.
+ 	* pretty-print-format-impl.h: Likewise.
+ 	* pretty-print.h: Likewise.
+ 	* prime-paths.cc (struct xpair): Likewise.
+ 	(edge_matrix): Likewise.
+ 	(test_build_ccfg): Likewise.
+ 	* print-rtl.cc (rtx_writer::print_rtx_operand_code_r): Likewise.
+ 	* profile-count.h (class profile_probability): Likewise.
+ 	* pta-andersen.cc (merge_node_constraints): Likewise.
+ 	(add_graph_edge): Likewise.
+ 	* range-op.cc (bool): Likewise.
+ 	(operator_cast::op1_range): Likewise.
+ 	(operator_bitwise_and::wi_fold): Likewise.
+ 	(operator_bitwise_and::op1_range): Likewise.
+ 	* range-op.h: Likewise.
+ 	* read-md.h (class md_reader): Likewise.
+ 	* read-rtl-function.cc (lookup_reg_by_dump_name): Likewise.
+ 	* real.cc: Likewise.
+ 	* recog.h: Likewise.
+ 	* ree.cc (find_and_remove_re): Likewise.
+ 	* reg-notes.def (REG_CFA_NOTE): Likewise.
+ 	* reginfo.cc (reg_allocno_class): Likewise.
+ 	* reload1.cc (will_delete_init_insn_p): Likewise.
+ 	(emit_reload_insns): Likewise.
+ 	* resource.cc (mark_referenced_resources): Likewise.
+ 	(mark_target_live_regs): Likewise.
+ 	* rtl.def (DEFINE_SPECIAL_PREDICATE): Likewise.
+ 	(COND): Likewise.
+ 	(DEFINE_SUBST): Likewise.
+ 	* rtl.h (const_vec_series_p_1): Likewise.
+ 	(const_vec_series_p): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* emit-rtl.h (struct rtl_data): Fix typos.
+ 	(struct address_reload_context): Likewise.
+ 	* explow.cc (anti_adjust_stack_and_probe): Likewise.
+ 	* explow.h (anti_adjust_stack_and_probe_stack_clash): Likewise.
+ 	* expmed.cc (store_bit_field_using_insv): Likewise.
+ 	(expand_mult): Likewise.
+ 	(emit_store_flag_force): Likewise.
+ 	(equivalent_cmp_code): Likewise.
+ 	* expr.cc (class op_by_pieces_d): Likewise.
+ 	(op_by_pieces_d::run): Likewise.
+ 	(use_group_regs): Likewise.
+ 	(get_def_for_expr): Likewise.
+ 	(emit_move_insn): Likewise.
+ 	(expand_expr_real): Likewise.
+ 	(expand_expr_real_gassign): Likewise.
+ 	* ext-dce.cc (ext_dce_process_uses): Likewise.
+ 	(ext_dce_process_bb): Likewise.
+ 	(ext_dce_rd_confluence_n): Likewise.
+ 	* fibonacci_heap.h (fibonacci_heap::cut): Likewise.
+ 	* fold-const.cc (combine_comparisons): Likewise.
+ 	(operand_compare::operand_equal_p): Likewise.
+ 	(fold_view_convert_vector_encoding): Likewise.
+ 	(fold_truth_andor): Likewise.
+ 	* fold-const.h: Likewise.
+ 	* function.cc (temp_address_hasher::equal): Likewise.
+ 	(gen_call_used_regs_seq): Likewise.
+ 	* gcc-diagnostic-spec.cc (GTY): Likewise.
+ 	(warning_suppressed_at): Likewise.
+ 	* gcc.cc (driver::maybe_run_linker): Likewise.
+ 	* gcov.cc (print_usage): Likewise.
+ 	(strip_extention): Likewise.
+ 	* gdbhooks.py: Likewise.
+ 	* gimplify.cc (gimplify_decl_expr): Likewise.
+ 	(gimplify_modify_expr): Likewise.
+ 	(oacc_default_clause): Likewise.
+ 	(omp_notice_variable): Likewise.
+ 	* graph.cc (draw_cfg_nodes): Likewise.
+ 	* graphite-dependences.cc (scop_get_reads_and_writes): Likewise.
+ 	* graphite-isl-ast-to-gimple.cc (graphite_copy_stmts_from_block): Likewise.
+ 	* haifa-sched.cc (model_set_excess_costs): Likewise.
+ 	(analyze_set_insn_for_autopref): Likewise.
+ 	(autopref_multipass_dfa_lookahead_guard): Likewise.
+ 	* hash-map-traits.h (HASH_MAP_TRAITS_H): Likewise.
+ 	* hosthooks.h (struct host_hooks): Likewise.
+ 	* ifcvt.cc (noce_try_sign_bit_splat): Likewise.
+ 	* input.cc (line_table_test::line_table_test): Likewise.
+ 	* internal-fn.def (PHI): Likewise.
+ 	* internal-fn.h (enum ifn_goacc_loop_kind): Likewise.
+ 	* ira-build.cc (create_insn_allocnos): Likewise.
+ 	* ira-color.cc (ira_mark_new_stack_slot): Likewise.
+ 	* ira-int.h: Likewise.
+ 	* ira.cc (struct sloc): Likewise.
+ 	* json-parsing.cc (parser::require_one_of): Likewise.
+ 	* langhooks.h (struct lang_hooks_for_decls): Likewise.
+ 	* libgdiagnostics.cc: Likewise.
+ 	* libgdiagnostics.h (diagnostic_manager_write_patch): Likewise.
+ 	* loop-invariant.cc (MAX_CANON_ADDR_PARTS): Likewise.
+ 	* lra-assigns.cc (reload_pseudo_compare_func): Likewise.
+ 	* lra-constraints.cc (match_reload): Likewise.
+ 	(process_alt_operands): Likewise.
+ 	(process_address_1): Likewise.
+ 	(lra_constraints): Likewise.
+ 	(inherit_in_ebb): Likewise.
+ 	* lra-eliminations.cc (init_elim_table): Likewise.
+ 	* lra-remat.cc: Likewise.
+ 	* machmode.h (struct int_n_data_t): Likewise.
+ 	* mem-stats.h (mem_alloc_description::register_descriptor): Likewise.
+ 	(mem_alloc_description::unregister_descriptor): Likewise.
+ 	* mode-switching.cc (optimize_mode_switching): Likewise.
+ 	* modulo-sched.cc (schedule_reg_moves): Likewise.
+ 	(optimize_sc): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* adjust-alignment.cc (pass_adjust_alignment::execute): Fix typos.
+ 	* alias.cc (alias_set_subset_of): Likewise.
+ 	(alias_ptr_types_compatible_p): Likewise.
+ 	(get_alias_set): Likewise.
+ 	(record_component_aliases): Likewise.
+ 	(base_alias_check): Likewise.
+ 	* alloc-pool.h: Likewise.
+ 	* asan.cc (insert_if_then_before_iter): Likewise.
+ 	(asan_expand_check_ifn): Likewise.
+ 	(hwasan_expand_check_ifn): Likewise.
+ 	* asan.h (sanitize_flags_p): Likewise.
+ 	* asm-toplevel.cc (analyze_toplevel_extended_asm): Likewise.
+ 	* attr-fnspec.h: Likewise.
+ 	* attribs.cc (decl_attributes): Likewise.
+ 	* auto-profile.cc (function_instance::match): Likewise.
+ 	(function_instance::remove_icall_target): Likewise.
+ 	(autofdo_source_profile::offline_external_functions): Likewise.
+ 	(afdo_set_bb_count): Likewise.
+ 	(scale_bbs): Likewise.
+ 	(afdo_adjust_guessed_profile): Likewise.
+ 	* basic-block.h (find_fallthru_edge): Likewise.
+ 	* bbitmap.h: Likewise.
+ 	* bitmap.cc (bitmap_list_find_element): Likewise.
+ 	* bitmap.h: Likewise.
+ 	* btfout.cc (BTF_INFO_SECTION_FLAGS): Likewise.
+ 	(btf_asm_type): Likewise.
+ 	(output_btf_vars): Likewise.
+ 	(btf_add_used_type_1): Likewise.
+ 	* builtins.cc (string_length): Likewise.
+ 	(expand_builtin_setjmp_setup): Likewise.
+ 	(inline_expand_builtin_bytecmp): Likewise.
+ 	* builtins.def: Likewise.
+ 	* ccmp.cc (get_compare_parts): Likewise.
+ 	(expand_ccmp_next): Likewise.
+ 	* ccmp.h: Likewise.
+ 	* cfg.cc (update_bb_profile_for_threading): Likewise.
+ 	* cfganal.cc (post_order_compute): Likewise.
+ 	* cfgbuild.cc (find_many_sub_basic_blocks): Likewise.
+ 	* cfgexpand.cc (vars_ssa_cache::dump): Likewise.
+ 	(add_scope_conflicts_1): Likewise.
+ 	(set_parm_rtl): Likewise.
+ 	(expand_one_ssa_partition): Likewise.
+ 	(expand_one_var): Likewise.
+ 	(discover_nonconstant_array_refs_r): Likewise.
+ 	(pass_expand::execute): Likewise.
+ 	* cfgloop.cc (get_estimated_loop_iterations): Likewise.
+ 	* cfgloopanal.cc (loop_count_in): Likewise.
+ 	* cfgloopmanip.cc (loop_exit_for_scaling): Likewise.
+ 	(update_loop_exit_probability_scale_dom_bbs): Likewise.
+ 	* cgraph.cc (add_detected_attribute_1): Likewise.
+ 	(cgraph_edge::maybe_hot_p): Likewise.
+ 	* cgraph.h (struct cgraph_node): Likewise.
+ 	* cif-code.def (ORIGINALLY_INDIRECT_CALL): Likewise.
+ 	* collect2.cc (main): Likewise.
+ 	* combine.cc (simplify_comparison): Likewise.
+ 	(distribute_notes): Likewise.
+ 	* configure.ac: Likewise.
+ 	* coretypes.h (enum pad_direction): Likewise.
+ 	* coroutine-passes.cc (make_pass_coroutine_lower_builtins): Likewise.
+ 	* coverage.cc (coverage_compute_profile_id): Likewise.
+ 	* cse.cc (struct set): Likewise.
+ 	(try_back_substitute_reg): Likewise.
+ 	(count_stores): Likewise.
+ 	* cselib.cc (struct cselib_hasher): Likewise.
+ 	* ctfc.cc (ctfc_get_num_ctf_vars): Likewise.
+ 	(ctf_add_string): Likewise.
+ 	(ctf_add_function_arg): Likewise.
+ 	* ctfc.h (GTY): Likewise.
+ 	(CTF_AUX_STRTAB): Likewise.
+ 	(ctfc_get_num_ctf_vars): Likewise.
+ 	* ctfout.cc (ctf_asm_sou_lmember): Likewise.
+ 	(output_ctf_header): Likewise.
+ 	* debug.h: Likewise.
+ 	* defaults.h: Likewise.
+ 	* df-problems.cc (df_simulate_fixup_sets): Likewise.
+ 	(df_simulate_finalize_backwards): Likewise.
+ 	* diagnostic-context-rich-location.cc
+ 	(lazy_diagnostic_context_path::make_inner_path): Likewise.
+ 	* diagnostics/color.cc (auto_enable_urls): Likewise.
+ 	* diagnostics/context.h: Likewise.
+ 	* diagnostics/sarif-sink.cc (get_message_from_result): Likewise.
+ 	* double-int.cc (double_int::lrotate): Likewise.
+ 	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
+ 	* dwarf2cfi.cc (dwarf2out_frame_debug_expr): Likewise.
+ 	* dwarf2ctf.cc (ctf_get_AT_data_member_location): Likewise.
+ 	(handle_ctf_type_tags): Likewise.
+ 	* dwarf2out.cc (cst_pool_loc_descr): Likewise.
+ 	(loc_list_for_address_of_addr_expr_of_indirect_ref): Likewise.
+ 	(resolve_args_picking_1): Likewise.
+ 	(typed_binop_from_tree): Likewise.
+ 	(gen_array_type_die): Likewise.
+ 	* dwarf2out.h (struct dw_val_node): Likewise.
+ 	(dw_loc_dtprel): Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* doc/analyzer.texi: Fix typos.
+ 	* doc/cpp.texi: Likewise.
+ 	* doc/extend.texi: Likewise.
+ 	* doc/gcov.texi: Likewise.
+ 	* doc/gm2.texi: Likewise.
+ 	* doc/gty.texi: Likewise.
+ 	* doc/install.texi: Likewise.
+ 	* doc/invoke.texi: Likewise.
+ 	* doc/libgdiagnostics/topics/compatibility.rst: Likewise.
+ 	* doc/libgdiagnostics/topics/physical-locations.rst: Likewise.
+ 	* doc/libgdiagnostics/tutorial/07-execution-paths.rst: Likewise.
+ 	* doc/libgdiagnostics/tutorial/08-message-buffers.rst: Likewise.
+ 	* doc/match-and-simplify.texi: Likewise.
+ 	* doc/md.texi: Likewise.
+ 	* doc/optinfo.texi: Likewise.
+ 	* doc/params.texi: Likewise.
+ 	* doc/poly-int.texi: Likewise.
+ 	* doc/riscv-ext.texi: Likewise.
+ 	* doc/rtl.texi: Likewise.
+ 	* doc/sourcebuild.texi: Likewise.
+ 	* doc/tm.texi: Likewise.
+ 	* doc/tm.texi.in: Likewise.
+ 	* doc/tree-ssa.texi: Likewise.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* Makefile.in: Fix typos.
+ 
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.h (BITINT_TYPE_P): Return true also for ENUMERAL_TYPE with
+ 	BITINT_TYPE as underlying type.
+ 	* stor-layout.cc (finish_bitfield_representative): Use BITINT_TYPE_P
+ 	macro.
+ 	(layout_type): Likewise.  Lay out ENUMERAL_TYPEs with BITINT_TYPE as
+ 	underlying type the same as BITINT_TYPEs.
+ 	* gimple-lower-bitint.cc (maybe_cast_middle_bitint): Use BITINT_TYPE_P
+ 	macro.
+ 	(mergeable_op, optimizable_arith_overflow, comparison_op,
+ 	bitint_large_huge::handle_cast, bitint_large_huge::lower_shift_stmt,
+ 	bitint_large_huge::lower_muldiv_stmt,
+ 	bitint_large_huge::lower_mul_overflow,
+ 	bitint_large_huge::lower_bit_query,
+ 	bitint_large_huge::lower_call, bitint_large_huge::lower_asm,
+ 	bitint_large_huge::lower_stmt, build_bitint_stmt_ssa_conflicts,
+ 	arith_overflow_arg_kind, gimple_lower_bitint): Likewise.
+ 	* gimple-expr.cc (useless_type_conversion_p): Likewise.
+ 	* fold-const.cc (make_range_step): Likewise.
+ 	(range_check_type): For ENUMERAL_TYPEs with BITINT_TYPE as underlying
+ 	type use the underlying type.
+ 	(extract_muldiv_1): Use BITINT_TYPE_P macro.
+ 	(native_encode_wide_int): Likewise.
+ 	(native_interpret_int): Likewise.
+ 	* vr-values.cc
+ 	(simplify_using_ranges::simplify_float_conversion_using_ranges):
+ 	Likewise.
+ 	* cfgexpand.cc (expand_debug_expr): Likewise.
+ 	* convert.cc (convert_to_integer_1): Add special case for ENUMERAL_TYPE
+ 	with underlying BITINT_TYPE.
+ 	* tree-ssa-sccvn.cc (vn_walk_cb_data::push_partial_def): Use
+ 	BITINT_TYPE_P macro.
+ 	(vn_reference_lookup_3): Likewise.
+ 	(eliminate_dom_walker::eliminate_stmt): Likewise.
+ 	* match.pd (ctz(ext(X)) == ctz(X), popcount(zext(X)) == popcount(X),
+ 	parity(zext(X)) == parity(X), a != 0 ? CLZ(a) : CST -> .CLZ(a),
+ 	a != 0 ? CTZ(a) : CST -> .CTZ(a), ffs(ext(X)) == ffs(X)): Likewise.
+ 	* builtins.cc (fold_builtin_bit_query): Likewise.
+ 	* explow.cc (promote_function_mode): Handle ENUMERAL_TYPE with
+ 	BITINT_TYPE as underlying type like BITINT_TYPE.
+ 	(promote_mode): Likewise.
+ 	* expr.cc (EXTEND_BITINT): Use BITINT_TYPE_P macro.
+ 	(expand_expr_real_1): Likewise.
+ 	* fold-const-call.cc (fold_const_call_ss): Likewise.
+ 	* gimple-fold.cc (gimple_fold_builtin_memset): Likewise.
+ 	(clear_padding_type_may_have_padding_p): Handle ENUMERAL_TYPE
+ 	with BITINT_TYPE as underlying type like BITINT_TYPE.
+ 	(type_has_padding_at_level_p): Likewise.
+ 	(clear_padding_type): Likewise.
+ 	* gimple-match-exports.cc (build_call_internal): Use BITINT_TYPE_P
+ 	macro.
+ 	* internal-fn.cc (expand_ubsan_result_store): Likewise.
+ 	* tree-sra.cc (create_access): Likewise.
+ 	(analyze_access_subtree): Likewise.
+ 	* tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Likewise.
+ 	* tree-ssa.cc (maybe_optimize_var): Likewise.
+ 	* tree-switch-conversion.cc (switch_conversion::array_value_type):
+ 	Likewise.
+ 	(switch_conversion::build_arrays): Likewise.
+ 	(jump_table_cluster::emit): Likewise.
+ 	* ubsan.cc (ubsan_encode_value): Likewise.
+ 	(ubsan_type_descriptor): Handle ENUMERAL_TYPE with BITINT_TYPE as
+ 	underlying type like BITINT_TYPE.
+ 	(instrument_si_overflow): Use BITINT_TYPE_P macro.
+ 	* varasm.cc (output_constant): Handle ENUMERAL_TYPE with BITINT_TYPE
+ 	as underlying type like BITINT_TYPE.
+ 	* config/aarch64/aarch64.cc (aarch64_return_in_memory_1): Use
+ 	BITINT_TYPE_P macro.
+ 	(bitint_or_aggr_of_bitint_p): Likewise.
+ 	(aarch64_composite_type_p): Likewise.
+ 	* config/arm/arm.cc (arm_return_in_memory): Likewise.
+ 	(arm_needs_doubleword_align): Likewise.
+ 	* config/i386/i386.cc (classify_argument): Handle ENUMERAL_TYPE with
+ 	BITINT_TYPE as underlying type like BITINT_TYPE.
+ 	* config/loongarch/loongarch.h: Use BITINT_TYPE_P macro.
+ 
+ 2026-05-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-switch-conversion.cc (case_bit_test::cmp): Stability
+ 	based on the index of the target bb instead.
+ 	(bit_test_cluster::emit): Remove setting of the label field
+ 	of case_bit_test.
+ 	* tree-switch-conversion.h (case_bit_test): Remove the label
+ 	field.
+ 
+ 2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125475
+ 	* gimple-range-fold.cc (fold_using_range::fold_stmt): Don't call
+ 	gimple_stmt_nonnegative_p. Instead set the varying range to
+ 	`[type_min, type_max]` if not the same as the precision.
+ 
+ 2026-05-29  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121343
+ 	* config/avr/avr.md (FMUL): New int iterator.
+ 	(fmul, fmul_X, fmul_1, fmul_2): New int attributes.
+ 	(fmul, fmuls, fmulsu): Turn from expander to insn_and_split.
+ 	(fmul_insn, fmuls_insn, fmulsu_insn): Remove.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* gimplify.cc (gimplify_scan_omp_clauses): Update for removed
+ 	plural -S in GOMP_OMP_PREDEF_ALLOC_THREAD.
+ 
+ 2026-05-29  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* config/riscv/sync.md: Move & rename atomic unspec enums to unspecv
+ 	enum. Use renamed UNSPECV_$NAME enums.
+ 	* config/riscv/sync-rvwmo.md: Use renamed UNSPECV_$NAME enums.
+ 	* config/riscv/sync-ztso.md: Use renamed UNSPECV_$NAME enums.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):
+ 	Emit definitions for __ARM_FEATURE_{SVE,SME}2p2.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svmul): Define new
+ 	SVE function variant.
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_sve_<optab><mode>): New
+ 	instruction pattern.
+ 	(@aarch64_sve_<optab><mode>_single): Likewise.
+ 	* config/aarch64/aarch64.h (TARGET_STREAMING_SME2p2): New macro.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (class svexpand_impl):
+ 	Define new SVE function base.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svcompact): Allow
+ 	execution in streaming mode when SME2p2 is enabled.
+ 	* config/aarch64/aarch64-sve-builtins-base.h (svexpand): Declare
+ 	new SVE function base.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svcompact): Define
+ 	new SVE function.
+ 	(svexpand): Likewise.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_compact<mode>):
+ 	Enable 32- and 64-bit element variants under SME2p2.  New
+ 	insn pattern for 8- and 16-bit elements.
+ 	(@aarch64_sve_expand<mode>): New insn pattern.
+ 	* config/aarch64/aarch64.h (TARGET_SVE_OR_SME2p2): New macro.
+ 	* config/aarch64/aarch64.md (UNSPEC_SVE_EXPAND): New UNSPEC.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc
+ 	(class svfirst_lastp_impl): Define new SVE function base class.
+ 	(svfirstp): Define new SVE function base.
+ 	(svlastp): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svfirstp): Define
+ 	new SVE function.
+ 	(svlastp): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h (svfirstp): Declare
+ 	new SVE function base.
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_pred_firstp<mode>): New
+ 	insn pattern.
+ 	(@aarch64_pred_lastp<mode>): Likewise.
+ 	* config/aarch64/iterators.md (UNSPEC_FIRSTP): New UNSPEC.
+ 	(UNSPEC_LASTP): Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc (svrint32x): Define
+ 	new function base.
+ 	(svrint32z): Likewise.
+ 	(svrint64x): Likewise.
+ 	(svrint64z): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svrint32x):
+ 	Define new SVE function.
+ 	(svrint32z): Likewise.
+ 	(svrint64x): Likewise.
+ 	(svrint64z): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h (svrint32x): Declare
+ 	new function base.
+ 	(svrint32z): Likewise.
+ 	(svrint64x): Likewise.
+ 	(svrint32z): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc (TYPES_sd_float): New
+ 	type set.
+ 	(sd_float): New SVE type array.
+ 	* config/aarch64/aarch64-sve2.md (@cond_<frintnzs_op><mode>): New
+ 	insn pattern.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (class svcvtnt_impl):
+ 	Remove.
+ 	(svcvtnt): Redefine using narrowing_top_convert.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h
+ 	(class narrowing_top_convert): New SVE function base class.
+ 	(NARROWING_TOP_CONVERT0): New function-like macro for specializing
+ 	narrowing_top_convert.
+ 	(NARROWING_TOP_CONVERT1): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc (class svcvtxnt_impl):
+ 	Remove.
+ 	(svcvtxnt): Redefine using narrowing_top_convert.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svcvtlt): Allow
+ 	zeroing predication.
+ 	(svcvtnt): Likewise.
+ 	(svcvtxnt): Likewise.
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_cvtnt<mode>):
+ 	Convert to compact syntax. Add operand 4 for values of
+ 	inactive lanes.  New alternative for zeroing predication.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(*cond_<sve_fp_op><mode>_relaxed): Convert to compact syntax.
+ 	New alternative for zeroing predication.
+ 	(*cond_<sve_fp_op><mode>_strict): Likewise.
+ 	(@aarch64_sve_cvtnt<mode>): Convert to compact syntax. Add
+ 	operand 4 for values of inactive lanes.  New alternative for
+ 	zeroing predication.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md
+ 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	(*cond_<optab>_nonextend<SVE_HSDI:mode><SVE_PARTIAL_F:mode>_relaxed):
+ 	Likewise.
+ 	(*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict):
+ 	Likewise.
+ 	(*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_trunc<SVE_SDF:mode><SVE_PARTIAL_HSF:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_nontrunc<SVE_PARTIAL_HSF:mode><SVE_SDF:mode>_relaxed):
+ 	Likewise.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(*cond_<sve_fp_op><mode>_any_relaxed): Likewise.
+ 	(*cond_<sve_fp_op><mode>_any_strict): Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md
+ 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	(*cond_<optab>_nontrunc<SVE_PARTIAL_F:mode><SVE_HSDI:mode>_relaxed):
+ 	Likewise.
+ 	(*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict):
+ 	Likewise.
+ 	(*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>):
+ 	Likewise.
+ 	(*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx2SI_ONLY:mode>_relaxed):
+ 	Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_any_relaxed):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	(*cond_<optab><mode>_any_strict): Likewise.
+ 	* config/aarch64/aarch64-sve2.md (*cond_<sve_fp_op><mode>):
+ 	Likewise.
+ 	(*cond_<sve_fp_op><mode>_strict): Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (@cond_<optab><mode>):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_pred_<optab><mode>):
+ 	Use zeroing predication variant for PRED_X.
+ 	(@cond_<optab><mode>): Accept constant zero as operand 3.  New
+ 	alternative for zeroing predication.  Add `arch` attribute to
+ 	every alternative.
+ 	* config/aarch64/predicates.md (aarch64_simd_reg_or_direct_zero):
+ 	New predicate.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md
+ 	(@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	(*cond_uxt<mode>_any): Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_any):
+ 	New alternative for zeroing predication.  Add `arch` attribute
+ 	to every alternative.
+ 	(*cond_cnot<mode>_any): Likewise.
+ 	* config/aarch64/aarch64-sve2.md: (*cond_<sve_int_op><mode>):
+ 	Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_SVE2p2): New macro.
+ 	(TARGET_SME2p2): Likewise.
+ 	(TARGET_SVE2p2_OR_SME2p2): Likewise.
+ 	* config/aarch64/aarch64.md (arches): Add sve2p2_or_sme2p2 enum
+ 	constant.
+ 	(arch): Add test for sve2p2_or_sme2p2.
+ 	* doc/invoke.texi: Document sve2p2 and sme2p2 extensions.
+ 
+ 2026-05-29  LIU Hao  <lh_mouse@126.com>
+ 
+ 	* config/i386/i386.cc (ix86_decompose_address): Add a special case where
+ 	there's no base, there's an index, and the scale is 1.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* tree-ssa-loop-im.cc (ref_always_accessed_p): Rename to...
+ 	(ref_always_stored_p): New function specialized to determine if
+ 	REF is a store that is always executed in LOOP.
+ 	(execute_sm): Use ref_always_stored_p instead of
+ 	ref_always_accessed_p.
+ 	(class ref_always_accessed): Rename to..
+ 	(class ref_always_stored): Remove (always true) stored_p field.
+ 	(ref_always_stored::operator ()): Always check for a store.
+ 	Move hash table lookup, get_lim_data, after store test.
+ 	(can_sm_ref_p): Use ref_always_stored_p insead of
+ 	ref_always_accessed_p.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc (compute_convert_gain): Tweak
+ 	the cost of a 128-bit rotation to be 4 (or 5) instructions.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-features.cc (scalar_chain::add_insn): Don't
+ 	call analyze_register_chain if the USE is a SUBREG.
+ 	(scalar_chain::convert_op): Call gen_lowpart to convert
+ 	scalar (TImode) SUBREGs to vector (V1TImode) SUBREGs.
+ 	(convertible_comparison_p): We can now handle all general_operands
+ 	of *cmp<dwi>_doubleword.
+ 	(timode_remove_non_convertible_regs): We only need to check TImode
+ 	uses that aren't TImode SUBREGs of registers in other modes.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (inv_insn): New define_code_attr.
+ 	* config/i386/sse.md (<plusminus><mode>3): Accept a CONST_VECTOR
+ 	as the second operand.  If the second operand is CONST1_RTX,
+ 	canonicalize to use CONSTM1_RTX instead.
+ 	(*add<mode>3_one): New define_insn_and_split to convert padd +1
+ 	to psub -1.
+ 	(*sub<mode>3_one): Likewise, a new define_insn_and_split to
+ 	convert psub +1 to padd -1.
+ 
+ 2026-05-28  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_regno_to_class): Use the minimal
+ 	class containing each FP hard register: FP_REGS for f0-f7 and
+ 	f16-f31, RVC_FP_REGS for f8-f15.
+ 	(riscv_secondary_memory_needed): Use reg_class_subset_p to
+ 	detect FP classes.
+ 
+ 2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+ 
+ 	* config/riscv/riscv-vector-costs.cc (get_lmul_cost_scaling):
+ 	Enable scaling for all vector modes (VLA and VLS).
+ 
+ 2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.opt.urls (-masm-len-notes, -Wasm-len-notes): Add.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md
+ 	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>):
+ 	New pattern.
+ 	* config/aarch64/iterators.md (VCONSV): New mode attribute.
+ 	(vconsv): Likewise.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_combine_internal<mode>):
+ 	New insn pattern.
+ 	(*aarch64_combine_internal_be<mode>): Likewise.
+ 	(*aarch64_combinez<mode>): Likewise.
+ 	(*aarch64_combinez_be<mode>): Likewise.
+ 	(@aarch64_vec_concat<mode>): Support smaller vector and scalar modes.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback):
+ 	Handle the case of two scalar elements.
+ 	* config/aarch64/iterators.md (SSUB64): New mode iterator.
+ 	(VSSUB64): Likewise.
+ 	(VSSUB32_I) : Likewise.
+ 	(VSSUB64_F): Likewise.
+ 	(VS32_I_SUB64_F): Likewise.
+ 	(single_wx): Define attribute for sub-64-bit vector and scalar modes.
+ 	(bitsize): Likewise.
+ 	(VDBL): Likewise.
+ 	(single_dwx): New mode attribute.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_dup_subvector<vconq><mode>):
+ 	New insn pattern.
+ 	(*aarch64_simd_dup_subvector<vcond><mode>): Likewise.
+ 	(@aarch64_simd_vec_set<mode>): Likewise.
+ 	(vec_set<mode>): Handle 16- and 32-bit vector modes in the expander.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Add
+ 	logic to initialize vector from starting subsequence.  Make static.
+ 	(scalar_move_insn_p): Consider sub-64-bit vector moves scalar.
+ 	* config/aarch64/iterators.md (VDDUP): New iterator.
+ 	(VQDUP): Likewise.
+ 	(elem_bits): Define attribute for sub-64-bit vector modes.
+ 	(Vetype): Likewise.
+ 	(VEL): Likewise.
+ 	(single_wx): Define attribute for sub-64-bit vector and scalar modes.
+ 	(single_type): Likewise.
+ 	(VCOND): Likewise.
+ 	(VCONQ): Likewise.
+ 	(Vqduptype): New mode attribute.
+ 	(Vdduptype): Likewise.
+ 	(vcond): Likewise.
+ 	(vconq): Likewise.
+ 	(vstype): Define attribute for 64-bit vector and sub-128-bit scalar
+ 	modes.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* config/aarch64/aarch64-modes.def (VECTOR_MODE): Remove V2HF.
+ 	(VECTOR_MODES): Define V2QI, V4QI, V2HI, V2HF, V2BF.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_advsimd_sub_dword_mode_p): Declare new predicate.
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): New
+ 	define_insn_and_split pattern.
+ 	(mov<mode>): Add sub-64-bit vector modes to the VALL_F16 expander.
+ 	Forego const vector expansion for those modes.
+ 	* config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
+ 	Handle 16- and 32-bit vector modes.
+ 	(aarch64_advsimd_sub_dword_mode_p): Define new predicate.
+ 	(aarch64_vectorize_vec_perm_const): Refuse for partial vector modes.
+ 	* config/aarch64/constraints.md (Da): New constraint.
+ 	* config/aarch64/iterators.md (VSUB64): New iterator.
+ 	(VALL_F16_SUB64): Likewise.
+ 	(size): Define attribute for sub-64-bit vector modes.
+ 	(VSC): New mode attribute.
+ 	(vstype): Likewise.
+ 
+ 2026-05-28  Kewen Lin  <linkewen@hygon.cn>
+ 	    Xin Liu  <liulxx@hygon.cn>
+ 
+ 	* config/i386/c86-4g-m7.md (c86_4g_m7_fpu): Remove automaton.
+ 	(c86_4g_m7_fpu02): New automaton.
+ 	(c86_4g_m7_fpu13): Ditto.
+ 	(c86-4g-m7-fpu0): Move to c86_4g_m7_fpu02 automaton.
+ 	(c86-4g-m7-fpu1): Move to c86_4g_m7_fpu13 automaton.
+ 	(c86-4g-m7-fpu2): Move to c86_4g_m7_fpu02 automaton.
+ 	(c86-4g-m7-fpu3): Move to c86_4g_m7_fpu13 automaton.
+ 	(c86-4g-m7-fdiv): Remove cpu unit.
+ 	(c86-4g-m7-fdiv1): New cpu unit.
+ 	(c86-4g-m7-fdiv3): Ditto.
+ 	(c86-4g-m7-fpu_0_3): New reservation.
+ 	(c86-4g-m7-fpu_1_3x2): Ditto.
+ 	(c86-4g-m7-fpu_1_3x3): Ditto.
+ 	(c86-4g-m7-fpu_1_3x6): Ditto.
+ 	(c86-4g-m7-fpux2): Ditto.
+ 	(c86-4g-m7-fpux4): Ditto.
+ 	(c86-4g-m7-fpux6): Ditto.
+ 	(c86-4g-m7-fpux8): Ditto.
+ 	(c86-4g-m7-fpux16): Ditto.
+ 	(c86-4g-m7-fp1fdiv1x4): Ditto.
+ 	(c86-4g-m7-fp3fdiv3x4): Ditto.
+ 	(c86-4g-m7-fdiv13): Ditto.
+ 	(c86-4g-m7-fp13div13): Ditto.
+ 	(c86-4g-m7-fp13div13x4): Ditto.
+ 	(c86-4g-m7-fp1div1_fp3div3_x4x8): Ditto.
+ 	(c86-4g-m7-fp1div1_fp3div3_x4x9): Ditto.
+ 	(c86-4g-m7-fp1div1_fp3div3_x4x11): Ditto.
+ 	(c86-4g-m7-fp1div1_fp3div3_x4x15): Ditto.
+ 	(c86-4g-m7-fp1div1_fp3div3_x4x18): Ditto.
+ 	(c86_4g_m7_idiv): New reservation.
+ 	(c86_4g_m7_idiv_QI): Adjust reservation latency and unit occupancy.
+ 	(c86_4g_m7_idiv_load): New reservation.
+ 	(c86_4g_m7_idiv_QI_load): Adjust reservation latency and unit
+ 	occupancy.
+ 	(c86_4g_m7_idiv_DI): Remove reservation.
+ 	(c86_4g_m7_idiv_SI): Ditto.
+ 	(c86_4g_m7_idiv_HI): Ditto.
+ 	(c86_4g_m7_idiv_DI_load): Ditto.
+ 	(c86_4g_m7_idiv_SI_load): Ditto.
+ 	(c86_4g_m7_idiv_HI_load): Ditto.
+ 	(c86_4g_m7_sse_insertimm): Adjust reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_sse_insert): Ditto.
+ 	(c86_4g_m7_fp_sqrt): Adjust reservation.
+ 	(c86_4g_m7_fp_div): Ditto.
+ 	(c86_4g_m7_fp_div_load): Ditto.
+ 	(c86_4g_m7_fp_idiv_load): Ditto.
+ 	(c86_4g_m7_sse_pinsr_reg): Adjust reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_sse_pinsr_reg_load): Ditto.
+ 	(c86_4g_m7_avx_vpinsr_reg): Ditto.
+ 	(c86_4g_m7_avx_vpinsr_reg_load): Ditto.
+ 	(c86_4g_m7_avx512_perm_xmm): Delete the prefix condition.
+ 	(c86_4g_m7_avx512_perm_xmm_opload): Ditto.
+ 	(c86_4g_m7_avx512_permi2_ymm): Adjust reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_permi2_zmm): Ditto.
+ 	(c86_4g_m7_avx512_permi2_ymm_load): Ditto.
+ 	(c86_4g_m7_avx512_permi2_zmm_load): Ditto.
+ 	(c86_4g_m7_avx512_perm_zmm_imm): Ditto.
+ 	(c86_4g_m7_avx512_perm_zmm_imm_load): Ditto.
+ 	(c86_4g_m7_avx512_perm_zmm_noimm): Ditto.
+ 	(c86_4g_m7_sse_perm_zmm_noimm_load): Ditto.
+ 	(c86_4g_m7_avx_perm_ymm): Remove.
+ 	(c86_4g_m7_avx_perm_ymem): Ditto.
+ 	(c86_4g_m7_avx512_shuf_zmm): Adjust reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_shuf_zmem): Ditto.
+ 	(c86_4g_m7_avx512_cmpestr): Ditto.
+ 	(c86_4g_m7_avx512_cmpestr_load): Ditto.
+ 	(c86_4g_m7_avx512_vdbpsadbw_zmm): Ditto.
+ 	(c86_4g_m7_avx512_vdbpsadbw_zmem): Ditto.
+ 	(c86_4g_m7_avx_ssecomi_comi): Ditto.
+ 	(c86_4g_m7_avx_ssecomi_comi_load): Ditto.
+ 	(c86_4g_m7_avx512_expand): Ditto.
+ 	(c86_4g_m7_avx512_expand_load): Ditto.
+ 	(c86_4g_m7_avx512_expand_z): Ditto.
+ 	(c86_4g_m7_avx512_expand_z_load): Ditto.
+ 	(c86_4g_m7_sse_movnt_xy): Rename to c86_4g_m7_sse_movnt.
+ 	(c86_4g_m7_avx512_sseadd_xy): Adjust reservation units.
+ 	(c86_4g_m7_avx512_sseadd_xy_load): Ditto.
+ 	(c86_4g_m7_sse_sseiadd_hplus): Adjust reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_sse_sseiadd_hplus_load): Ditto.
+ 	(c86_4g_m7_avx512_ssemul): Adjust reservation units.
+ 	(c86_4g_m7_avx512_ssemul_load): Ditto.
+ 	(c86_4g_m7_avx512_ssediv): Remove.
+ 	(c86_4g_m7_avx512_ssediv_mem): Remove.
+ 	(c86_4g_m7_avx512_ssediv_x): New.
+ 	(c86_4g_m7_avx512_ssediv_xmem): New.
+ 	(c86_4g_m7_avx512_ssediv_y): New.
+ 	(c86_4g_m7_avx512_ssediv_ymem): New.
+ 	(c86_4g_m7_avx512_ssediv_z): Adjust reservation units.
+ 	(c86_4g_m7_avx512_ssediv_zmem): Ditto.
+ 	(c86_4g_m7_avx512_ssecmp_z): Add reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_ssecmp_z_load): Ditto.
+ 	(c86_4g_m7_avx512_ssecmp_vp_z): New reservation.
+ 	(c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto.
+ 	(c86_4g_m7_avx512_ssecmp_test_z): Remove reservation.
+ 	(c86_4g_m7_avx512_ssecmp_test_z_load): Ditto.
+ 	(c86_4g_m7_avx512_muladd): Broaden matching condition.
+ 	(c86_4g_m7_avx512_muladd_load): Ditto.
+ 	(c86_4g_m7_fma_muladd): Remove reservation.
+ 	(c86_4g_m7_fma_muladd_load): Ditto.
+ 	(c86_4g_m7_avx512_sse_conflict_x): Add reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_sse_conflict_x_load): Ditto.
+ 	(c86_4g_m7_avx512_sse_conflict_y): Ditto.
+ 	(c86_4g_m7_avx512_sse_conflict_y_load): Ditto.
+ 	(c86_4g_m7_avx512_sse_conflict_z): Ditto.
+ 	(c86_4g_m7_avx512_sse_conflict_z_load): Ditto.
+ 	(c86_4g_m7_avx512_sse_class_z): Add reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_sse_class_z_load): Ditto.
+ 	(c86_4g_m7_avx512_sse_sqrt): Remove.
+ 	(c86_4g_m7_avx512_sse_sqrt_load): Remove.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_x): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_xload): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_y): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_yload): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_z): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_sf_zload): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_x): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_xload): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_y): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_yload): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_z): New.
+ 	(c86_4g_m7_avx512_sse_sqrt_df_zload): New.
+ 	(c86_4g_m7_avx512_msklog_vector): Add reservation units and unit
+ 	occupancy.
+ 	(c86_4g_m7_avx512_mskmov_z_k): Ditto.
+ 	(c86_4g_m7_avx512_mskmov_k_reg): Ditto.
+ 	* config/i386/c86-4g.md (c86_4g_fp): Remove automaton.
+ 	(c86_4g_fp024): New automaton.
+ 	(c86_4g_fp1): Ditto.
+ 	(c86-4g-fp0): Move to c86_4g_fp024 automaton.
+ 	(c86-4g-fp1): Move to c86_4g_fp1 automaton.
+ 	(c86-4g-fp2): Move to c86_4g_fp024 automaton.
+ 	(c86-4g-fp3): Ditto.
+ 	(c86-4g-fp1fdivx4): New reservation.
+ 	(c86_4g_fp_sqrt): Adjust reservation.
+ 	(c86_4g_sse_sqrt_sf): Ditto.
+ 	(c86_4g_sse_sqrt_sf_mem): Ditto.
+ 	(c86_4g_sse_sqrt_df): Ditto.
+ 	(c86_4g_sse_sqrt_df_mem): Ditto.
+ 	(c86_4g_fp_op_div): Ditto.
+ 	(c86_4g_fp_op_div_load): Ditto.
+ 	(c86_4g_fp_op_idiv_load): Adjust reservation latency.
+ 	(c86_4g_ssediv_ss_ps): Adjust reservation.
+ 	(c86_4g_ssediv_ss_ps_load): Ditto.
+ 	(c86_4g_ssediv_sd_pd): Ditto.
+ 	(c86_4g_ssediv_sd_pd_load): Ditto.
+ 	(c86_4g_ssediv_avx256_ps): Ditto.
+ 	(c86_4g_ssediv_avx256_ps_load): Ditto.
+ 	(c86_4g_ssediv_avx256_pd): Ditto.
+ 	(c86_4g_ssediv_avx256_pd_load): Ditto.
+ 
+ 2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+ 
+ 	* config/riscv/riscv-vector-costs.cc
+ 	(estimated_loop_iters): New function.
+ 	(compare_loop_overhead): New function.
+ 	(costs::better_main_loop_than_p): Compare RVV loop overhead after
+ 	inside-loop cost.
+ 
+ 2026-05-28  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_strip_extend): Replace
+ 	(unsigned HOST_WIDE_INT) INVAL (x) with UINTVAL (x).
+ 	* config/aarch64/predicates.md (aarch64_shift_imm_si): Likewise.
+ 	(aarch64_shift_imm_di): Likewise.
+ 	(aarch64_shift_imm64_di): Likewise.
+ 	(aarch64_imm3): Likewise.
+ 
+ 2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc (avr_read_number, avr_length_of_asm)
+ 	(avr_maybe_length_of_asm): New static functions.
+ 	(avr_adjust_insn_length): Call avr_maybe_length_of_asm on
+ 	unrecognized insns.
+ 	* config/avr/avr.opt (-masm-len-notes, -Wasm-len-notes): New
+ 	options.
+ 	* doc/invoke.texi (AVR Options): Add -masm-len-notes,
+ 	-Wasm-len-notes.
+ 	* doc/extend.texi (Size of an asm): Add @subsubheading
+ 	"Specifying the size of an asm on AVR".
+ 
+ 2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121343
+ 	* config/avr/avr.md (divmod<mode>4, udivmod<mode>4): Use
+ 	hard-reg constraints instead of explicit hard-regs.
+ 	(*divmodqi4_call_split, *udivmodqi4_call_split): Remove.
+ 	(*divmodhi4_call_split, *udivmodhi4_call_split): Remove.
+ 	(*divmodpsi4_call_split, *udivmodpsi4_call_split): Remove.
+ 	(*divmodsi4_call_split, *udivmodsi4_call_split): Remove.
+ 
+ 2026-05-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/125469
+ 	* config/i386/i386.md (*add<mode>_1<nf_name>): Don't return "#" for
+ 	the lea non-TARGET_APX_NDD case, instead emit a lea directly.
+ 
+ 2026-05-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 	    Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	* ext-dce.cc (ext_dce_try_optimize_extension): Handle
+ 	SIGN_EXTEND of MEM by replacing with ZERO_EXTEND of MEM
+ 	when upper bits are dead.
+ 
+ 2026-05-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 	    Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	* ext-dce.cc (ext_dce_process_uses): Fix off-by-one: use
+ 	size > 32 instead of size >= 32 for group 3 liveness.
+ 
+ 2026-05-27  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (movdi_aarch64): Use aarch64_output_move_imm
+ 	to select w-regs.
+ 	* config/aarch64/aarch64.cc (aarch64_output_move_imm): New function.
+ 	* config/aarch64/aarch64-protos.h (aarch64_output_move_imm): Add
+ 	declaration.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120164
+ 	* tree-if-conv.cc (if_convertible_stmt_p): Detect prefetches.
+ 	(predicate_statements): Drop them during predication.
+ 
+ 2026-05-27  oltolm  <oleg.tolmatcev@gmail.com>
+ 
+ 	PR target/54412
+ 	* target.def (overaligned_stack_slot_required): New calls hook.
+ 	* calls.cc (allocate_call_dynamic_stack_space): New helper.
+ 	(initialize_argument_information): Use
+ 	targetm.calls.overaligned_stack_slot_required for over-aligned
+ 	by-reference argument copies.
+ 	(expand_call): Use
+ 	targetm.calls.overaligned_stack_slot_required for over-aligned
+ 	hidden return slots.
+ 	* function.cc (assign_stack_local_aligned): New helper.
+ 	(assign_parm_setup_block): Use
+ 	targetm.calls.overaligned_stack_slot_required for over-aligned
+ 	stack parm slots.
+ 	(assign_parm_setup_reg): Likewise.
+ 	* config/i386/i386.cc (ix86_overaligned_stack_slot_required): New.
+ 	(TARGET_OVERALIGNED_STACK_SLOT_REQUIRED): Define for i386.
+ 	* doc/tm.texi.in: Add hook placement.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2026-05-27  oltolm  <oleg.tolmatcev@gmail.com>
+ 
+ 	PR target/89597
+ 	* config/i386/i386.cc (function_value_ms_64): Handle 32-byte and
+ 	64-byte vector returns in registers when supported.
+ 	(ix86_return_in_memory): Do not force 32-byte/64-byte eligible
+ 	vector returns to memory for MS ABI.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120352
+ 	* tree-vectorizer.h (LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG): New.
+ 	(class _loop_vec_info): Add early_break_needs_epilogue.
+ 	* tree-vect-data-refs.cc (vect_analyze_early_break_dependences): Detect
+ 	usage of stores.
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Use them.
+ 	* tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Likewise.
+ 	(vect_create_loop_vinfo): Likewise.
+ 	(vect_update_ivs_after_vectorizer_for_early_breaks): Likewise.
+ 	* tree-vect-stmts.cc (vect_stmt_relevant_p): Likewise.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120352
+ 	* tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Add
+ 	redirect_exits.
+ 	(vect_do_peeling): Use it.
+ 	* tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Update
+ 	prototype.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/125148
+ 	* config/aarch64/aarch64-sve.md
+ 	(*aarch64_vec_shl_insert_into_zero_<mode>,
+ 	*aarch64_vec_shl_insert_into_zero_vnx16qi,
+ 	*aarch64_vec_shl_insert_from_load_<mode>): New.
+ 	* config/aarch64/aarch64.cc (aarch64_emit_load_store_through_mode):
+ 	Replace paradoxical subreg with zero-extend.
+ 
+ 2026-05-27  Evgeny Karpov  <evgeny.karpov@arm.com>
+ 
+ 	* config/aarch64/aarch64-coff.h (SUPPORTS_INIT_PRIORITY):
+ 	Enable SUPPORTS_INIT_PRIORITY by default.
+ 
+ 2026-05-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Disable
+ 	for m_DIAMONDRAPIDS.
+ 	(X86_TUNE_USE_GATHER_4PARTS): Likewise.
+ 
+ 2026-05-26  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR bootstrap/125318
+ 	* tree-vect-stmts.cc (vectorizable_load): Explicitly
+ 	initialize stride_step to work around
+ 	-Werror=maybe-uninitialized build failure.
+ 
+ 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125396
+ 	* tree-cfgcleanup.cc (bb_phis_references_abnormal_uses): New function.
+ 	(maybe_remove_forwarder_block): Check to make sure the
+ 	forwarder block does not have a phi that references ssa name that has
+ 	abnormal uses.
+ 
+ 2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-fusion.cc (riscv_fusion_same_dest_p):
+ 	New function.
+ 	(riscv_set_is_add_p): Rename from riscv_set_is_add.
+ 	(riscv_set_is_addi_p): Rename from riscv_set_is_addi.
+ 	(riscv_set_is_adduw_p): Rename from riscv_set_is_adduw.
+ 	(riscv_set_is_shNadd_p): Rename from riscv_set_is_shNadd.
+ 	(riscv_set_is_shNadduw_p): Rename from riscv_set_is_shNadduw.
+ 	(riscv_fuse_zextws): New function.
+ 	(riscv_fuse_zexth): Likewise.
+ 	(riscv_fuse_ldindexed): Likewise.
+ 	(riscv_fuse_expanded_ld): Likewise.
+ 	(riscv_fuse_ldpreincrement): Likewise.
+ 	(riscv_fuse_lui_addi): Likewise.
+ 	(riscv_fuse_auipc_addi): Likewise.
+ 	(riscv_fuse_lui_ld): Likewise.
+ 	(riscv_fuse_auipc_ld): Likewise.
+ 	(riscv_fuse_cache_aligned_std): Likewise.
+ 	(riscv_fuse_aligned_std): Likewise.
+ 	(riscv_fuse_bfext): Likewise.
+ 	(riscv_fuse_b_alui): Likewise.
+ 	(struct riscv_fusion_entry): New struct.
+ 	(riscv_fusion_table): New table.
+ 	(riscv_macro_fusion_pair_p): Refactor to use table-driven
+ 	dispatch loop with simplified checker interface.
+ 
+ 2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-fusion.cc (riscv_macro_fusion_pair_p):
+ 	Fix XINT to access SET_SRC (prev_set) in AUIPC_LD case.
+ 	Fix base register comparison from != to == in
+ 	CACHE_ALIGNED_STD case.  Remove redundant CONST_INT_P
+ 	check in B_ALUI sub+smax case.  Remove duplicate REG_P
+ 	check in LDINDEXED case.  Fix typo in comment.  Fix dump
+ 	output name for CACHE_ALIGNED_STD.
+ 
+ 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125453
+ 	* match.pd (`(smaller)a ==/!= (smaller) b`): Reject
+ 	non integral types.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125409
+ 	* config/avr/avr-fixed.md (FIXED_A, FIXED_B): Add PSI to iterators.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121343
+ 	* config/avr/avr.md (load_<mode>_libgcc): Rewrite to use
+ 	a hard-reg constraint for operand 0.
+ 	(gen_load<mode>_libgcc): Remove expander.
+ 	(mov<mode>): No more special handling needed for sources that
+ 	satisfy avr_load_libgcc_p.
+ 
+ 2026-05-25  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/125377
+ 	* omp-general.cc (omp_check_for_duplicate_variant): Fix used
+ 	tree for 'inform' part of the error message.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (fstack-usage): Document new second field.
+ 	* toplev.cc (output_stack_usage_1): Revert latest changes and add
+ 	the mangled name as the second field.
+ 
+ 2026-05-25  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.cc (bitmap_last_set_bit): Fix handling of index 0.
+ 
+ 2026-05-25  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR middle-end/124630
+ 	* match.pd (popcount (x ^ (x - 1))): Fold to ctz (x) + 1 when
+ 	x is nonzero and CTZ is directly supported.
+ 
+ 2026-05-24  Raven Hallsby  <karl@hallsby.com>
+ 
+ 	PR tree-optimization/125104
+ 	* match.pd (`(~y & x) ^ y`): New Pattern.
+ 
+ 2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* toplev.cc (output_stack_usage_1): Print out the human readable
+ 	name in quotes.
+ 
+ 2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125419
+ 	* tree-if-conv.cc (factor_out_operators): Change
+ 	asserts about abnormals into a conditional to reject
+ 	it.
+ 
  2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
  
  	* fold-const.cc (fold_overflow_warning): Removed.
diff -Nrcpad gcc-17-20260524/gcc/DATESTAMP gcc-17-20260531/gcc/DATESTAMP
*** gcc-17-20260524/gcc/DATESTAMP	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/DATESTAMP	Sun May 31 22:32:04 2026
***************
*** 1 ****
! 20260524
--- 1 ----
! 20260531
diff -Nrcpad gcc-17-20260524/gcc/Makefile.in gcc-17-20260531/gcc/Makefile.in
*** gcc-17-20260524/gcc/Makefile.in	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/Makefile.in	Sun May 31 22:32:04 2026
*************** doc/%.pdf: %.texi
*** 3902,3908 ****
  doc/gccinstall.pdf: $(TEXI_GCCINSTALL_FILES)
  	$(TEXI2PDF) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
  
! # List the directories or single hmtl files which are installed by
  # install-html. The lang.html file triggers language fragments to build
  # html documentation.
  HTMLS_INSTALL=$(build_htmldir)/cpp $(build_htmldir)/gcc \
--- 3902,3908 ----
  doc/gccinstall.pdf: $(TEXI_GCCINSTALL_FILES)
  	$(TEXI2PDF) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $<
  
! # List the directories or single html files which are installed by
  # install-html. The lang.html file triggers language fragments to build
  # html documentation.
  HTMLS_INSTALL=$(build_htmldir)/cpp $(build_htmldir)/gcc \
diff -Nrcpad gcc-17-20260524/gcc/ada/ChangeLog gcc-17-20260531/gcc/ada/ChangeLog
*** gcc-17-20260524/gcc/ada/ChangeLog	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/ChangeLog	Sun May 31 22:32:04 2026
***************
*** 1,3 ****
--- 1,1416 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* gnathtml.pl: Reflow long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* adaint.c (__gnat_set_OWNER_ACL): Fix typos.
+ 	* aux-io.c: Likewise.
+ 	* cio.c: Likewise.
+ 	* cstreams.c: Likewise.
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Likewise.
+ 	* doc/gnat_rm/implementation_defined_attributes.rst: Likewise.
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Likewise.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Likewise.
+ 	* doc/gnat_rm/interfacing_to_other_languages.rst: Likewise.
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Likewise.
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: Likewise.
+ 	* doc/gnat_rm/the_gnat_library.rst: Likewise.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Likewise.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Likewise.
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Likewise.
+ 	* doc/gnat_ugn/platform_specific_information.rst: Likewise.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Likewise.
+ 	* doc/share/conf.py: Likewise.
+ 	* gcc-interface/decl.cc (components_to_record): Likewise.
+ 	* gcc-interface/misc.cc (gnat_get_array_descr_info): Likewise.
+ 	(get_array_bit_stride): Likewise.
+ 	* gcc-interface/trans.cc (Loop_Statement_to_gnu): Likewise.
+ 	(gnat_to_gnu): Likewise.
+ 	* gcc-interface/utils.cc (gnat_pushdecl): Likewise.
+ 	(maybe_pad_type): Likewise.
+ 	(finish_record_type): Likewise.
+ 	(process_deferred_decl_context): Likewise.
+ 	* gnat_rm.texi: Likewise.
+ 	* gnat_ugn.texi: Likewise.
+ 	* gnathtml.pl: Likewise.
+ 	* gsocket.h: Likewise.
+ 	* init.c (__gnat_handle_vms_condition): Likewise.
+ 	(GNAT$STOP): Likewise.
+ 	* raise-gcc.c (db_phases): Likewise.
+ 	* rtinit.c (__gnat_runtime_initialize): Likewise.
+ 	* sigtramp-arm-qnx.c: Likewise.
+ 	* sigtramp-vxworks-target.h (defined): Likewise.
+ 	* sigtramp-vxworks.c: Likewise.
+ 	* sysdep.c: Likewise.
+ 	* terminals.c (defined): Likewise.
+ 	(__gnat_new_tty): Likewise.
+ 	(__gnat_close_tty): Likewise.
+ 	(__gnat_tty_name): Likewise.
+ 	* tracebak.c (PC_ADJUST): Likewise.
+ 
+ 2026-05-29  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sysdep.c (getc_immediate_common): Read character as unsigned
+ 	value.
+ 
+ 2026-05-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Delay_Aspect): Remove the side effect.
+ 	(Decorate): Rename to be Decorate_Aspect_Links.
+ 	Generalize.
+ 	(Insert_Aitem): Call Decorate_Aspect_Links.
+ 	* aspects.ads: Minor comment improvement: we don't need to worry;
+ 	we just need to do it.
+ 	* einfo.ads: Minor comment improvement.
+ 
+ 2026-05-29  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch6.adb (New_Overloaded_Entity): Add missing call to
+ 	Check_For_Primitive_Subprogram (Is_Primitive must be set).
+ 	* sem_ch13.ads (Check_Function_For_Indexing_Aspect): Move declaration
+ 	to package body.
+ 	* sem_ch13.adb (Check_Indexing_Functions): Remove early return for
+ 	derived types. Pass appropriate values for the new Boolean parameters
+ 	on existing calls to Check_Function_For_Indexing_Aspect. Perform a
+ 	second interpretation loop, calling Check_Function_For_Indexing_Aspect
+ 	and passing Indexing_Found for the Has_Eligible_Func parameter and True
+ 	for the Error_On_Ineligible parameter, and remove the existing call
+ 	to Error_Msg_NE that was flagging nonlocal entities (a similar error
+ 	is now reported inside procedure Check_Function_For_Indexing_Aspect).
+ 	Suppress call to Check_Inherited_Indexing in derived type cases.
+ 	(Check_Nonoverridable_Aspect_Subprograms): Remove early return when
+ 	the aspect spec does not come from source, so aspects of derived types
+ 	will also go through this procedure. Check restrictions of AI22-0159/01
+ 	for derived types and inheritance of aspects. Replace iteration over
+ 	overloaded interpretations with iteration over Aspect_Subprograms (and
+ 	only do that for indexing aspects). Condition Sloc for existing error
+ 	check for nonprimitive operations based on whether the aspect comes
+ 	from source, posting the error on the entity rather than the aspect
+ 	if the aspect is not given explicitly.
+ 	(Analyze_Aspects_At_Freeze_Point): Split off a new case alternative
+ 	for iterator aspects, and specialize treatment for indexing aspects
+ 	by forcing a search for new indexing functions. When none are found,
+ 	issue an error only in the case where the type has no inherited
+ 	indexing functions. Test that the version is at least Ada_2012 rather
+ 	than Ada_2022 for calling Check_Nonoverridable_Aspect_Subprograms.
+ 	(Check_Function_For_Indexing_Aspect): Move declaration from the package
+ 	spec to the body. Add Has_Eligible_Func and Error_On_Ineligible formals
+ 	and update spec comment.
+ 	Return early if the candidate subprogram was already inherited (present
+ 	in Aspect_Subprograms).
+ 	For a scope mismatch on Subp, report error only when Has_Eligible_Func
+ 	is False and Error_On_Ineligible is True (and never a warning).
+ 	Add "<<" in several calls to Report_Ineligible_Indexing_Function
+ 	(formerly Illegal_Indexing) to allow either warnings or errors.
+ 	Return without adding subprogram to Aspect_Subprograms when
+ 	Error_On_Ineligible is False.
+ 	(Report_Ineligible_Indexing_Function): Name changed from
+ 	Illegal_Indexing.
+ 	Return early when only a warning can be issued and the ineligible
+ 	subprogram is inherited, or if its first formal (if any) does not match
+ 	the aspect's associated type (to reduce false-positive warnings).
+ 	Set Error_Msg_Warn based on Error_On_Ineligible formal.
+ 	Report a continuation message identifying the ineligible entity.
+ 	Remove comment preceding body that has been obviated by AI22-0154.
+ 	* sem_util.adb (Inherit_Nonoverridable_Aspect): Remove the loop over
+ 	primitives that was checking and adding eligible primitives. That code
+ 	was incomplete, and collection of new indexing functions for derived
+ 	types is now handled by Check_Indexing_Functions. Also remove the
+ 	associated "???" comment.
+ 
+ 2026-05-29  Tonu Naks  <naks@adacore.com>
+ 
+ 	* doc/gnat_rm.rst: update toctree
+ 	* doc/gnat_rm/about_this_guide.rst: add reference
+ 	* doc/gnat_rm/gnat_implementation_mode.rst: new file
+ 	* opt.ads: remove redundant comment
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-29  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst (Destructors): fix
+ 	typo.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* argv.c: Remove unused include directive.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* erroutc.ads (Warnings_Suppressed): New Boolean overload.
+ 	* errout.adb (Error_Msg_Internal): Use Boolean Warnings_Suppressed.
+ 	* errutil.adb (Error_Msg): Likewise.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Is_Before): New helper function.
+ 	(Find_Msg_Insertion_Point): New procedure.
+ 	(Error_Msg_Internal): Use Find_Msg_Insertion_Point and Insert_Error_Msg.
+ 	(Finalize): Remove call to Set_Prev_Pointers.
+ 	(Set_Prev_Pointers): Removed.
+ 	* erroutc.adb (Insert_Error_Msg): New procedure.
+ 	* erroutc.ads (Insert_Error_Msg): New declaration.
+ 
+ 2026-05-29  Andres Toom  <toom@adacore.com>
+ 
+ 	* gnat1drv.adb (Adjust_Global_Switches): Do not set
+ 	Global_Discard_Names in GNATprove_Mode.
+ 
+ 2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* argv.c (__gnat_env_count) (__gnat_len_env) (__gnat_fill_env): Move
+ 	to...
+ 	* env.c (__gnat_env_count) (__gnat_len_env) (__gnat_fill_env):
+ 	...here. Tweak comment.
+ 
+ 2026-05-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb (Subprogram_Subtypes_Have_Same_Declaration):
+ 	Remove tests for In_Internal_Unit and GNAT_Mode.
+ 
+ 2026-05-29  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* vast.adb (Check_Enum)<Check_Entity_Chain>: Add.
+ 	(Status)<Check_Entity_Chain>: Set to Print_And_Continue.
+ 	(Check_Entity_Chain): New.
+ 	(Check_Scope): Call Check_Entity_Chain.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Delete_Warning_And_Continuations): use
+ 	Delete_Error_And_Continuation_Msgs.
+ 	(Output_Messages): Call new refactored subprograms.
+ 	(Delete_Specifically_Suppressed_Warnings): New
+ 	procedure.
+ 	* (Set_Prev_Pointers): New procedure.
+ 	* (Finalize): use Delete_Specifically_Suppressed_Warnigns and
+ 	Set_Prev_Pointers.
+ 	(Finalize): use Delete_Error_And_Continuation_Msgs.
+ 	* erroutc.adb (Delete_Error_And_Continuation_Msgs): New procedure.
+ 	(Remove_Duplicate_Errors): New_Function.
+ 	(Write_All_Errors_In_Brief_Format): New function.
+ 	(Write_All_Errors_In_Verbose_Format): New function.
+ 	(Write_Error_Summary): New function.
+ 	* erroutc.ads (Delete_Error_And_Continuation_Msgs): Likewise.
+ 	(Remove_Duplicate_Errors): Likewise.
+ 	(Write_All_Errors_In_Brief_Format): Likewise.
+ 	(Write_All_Errors_In_Verbose_Format): Likewise.
+ 	(Write_Error_Summary): Likewise.
+ 	* errutil.adb (Finalize): Call new refactored subprograms.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Remove_Warning_Messages): Use
+ 	Filter_And_Delete_Errors.
+ 	* errout.ads (Purge_Messages): Renamed to
+ 	Delete_Error_Msgs_In_Range.
+ 	* erroutc.adb (Filter_And_Delete_Errors): New procedure.
+ 	(Purge_Messages): Renamed to Delete_Error_Msgs_In_Range.
+ 	* erroutc.ads (Filter_And_Delete_Errors): New procedure.
+ 	(Purge_Messages): Renamed to Delete_Error_Msgs_In_Range.
+ 	* par-ch5.adb (Missing_Begin): call Delete_Error_Msgs_In_Range.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Finalize): use Warning_Is_Suppressed.
+ 	* erroutc.adb (Warning_Is_Suppressed): New subprogram.
+ 	* erroutc.ads (Warning_Is_Suppressed): Likewise.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb: Use Delete_Error_Msg.
+ 	* erroutc.adb (Delete_Error_Msg): New subprogram.
+ 	* erroutc.ads (Delete_Error_Msg): Likewise.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_unst.adb (Note_Uplevel_Bound_Trav): Do not register an uplevel
+ 	reference for a package.  Use a single if_statement in the body.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Function_Return): Remove obsolete code that
+ 	wraps the return in a block when the expression is an aggregate.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Error_Msg): Add new function
+ 	In_Loop_With_Suppressed_Warnings.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_N): Simplify code.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* erroutc-pretty_emitter.adb (To_String): Relocated to erroutc.
+ 	(To_File_Name): Likewise.
+ 	(Line_To_String): Likewise.
+ 	(Column_To_String): Likewise.
+ 	* erroutc.adb (dedit): New function for debugging edits.
+ 	(dfix): New function for debuging fixes.
+ 	(dloc): New function for debugging locations.
+ 	(dmsg): Print missing Error_Msg_Object attributes.
+ 	(To_String): New function for printing spans
+ 	(To_String): Relocated from erroutc-pretty_emitter.adb
+ 	(To_File_Name): Likewise.
+ 	* erroutc.ads: Likewise.
+ 
+ 2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* argv-lynxos178-raven-cert.c: Update comments.
+ 	* argv.c (gnat_envp): Add comment about it being unused.
+ 	(__gnat_env_count, __gnat_len_env, __gnat_fill_env): Use
+ 	__gnat_environ instead of gnat_envp.
+ 	* bindgen.adb (Command_Line_Used): Update comment.
+ 	(Gen_Main): Remove gnat_envp assignment generation. Remove generated
+ 	envp parameter.
+ 	(Gen_Output_File_Ada): Remove generated envp parameter.
+ 	* env.h: Make usable as C++.
+ 	* libgnat/a-colien.ads: Remove comment.
+ 	* libgnat/a-comlin.ads: Update comment.
+ 	* targparm.ads: Update comment.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch10.adb (P_Compilation_Unit): Require no indentation.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/93702
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not set the
+ 	Was_Expression_Function flag on the body.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Avoid freezing the
+ 	profile only for wrapper functions.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sprint.adb (Sprint_Node_Actual): Print filter in loop parameter
+ 	specification.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): If there is a filter,
+ 	then suppress the warning.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+ 	trivial conditions.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* inline.adb (Adjust_Node): Renamed from Adjust_Sloc and
+ 	additionally unset Comes_From_Source.
+ 
+ 2026-05-29  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* checks.adb (Apply_Scalar_Range_Check): When the type of the expression
+ 	is Universal Integer we cannot statically determine if the expression
+ 	is in the range of the target type.
+ 	* sem_eval.adb (In_Subrange_Of): Do not consider T2 in the range of
+ 	Universal Integer (since theoretically they are not).
+ 	(Test_In_Range): Do not consider Universal type expressions in range
+ 	of subtype Typ.
+ 
+ 2026-05-29  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* treepr.ads (pech, rpech): New.
+ 	(Print_Entity_Chain): Adjust signature and comment to handle
+ 	printing only header and doing the simple check.
+ 	* treepr.adb (pech, rpech): New.
+ 	(Print_Entity_Chain): Support for printing only headers and doing
+ 	simple check.
+ 
+ 2026-05-29  Claire Dross  <dross@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Iterable_Operation): Handle Previous and Last
+ 	like Next and First.
+ 
+ 2026-05-29  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/i-cstrin.ads: New C_Addresses volatile state to use as
+ 	input of the New_String and New_Char_Array.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Statically_Names_Object) <N_Selected_Component>:
+ 	Return False if the selector is neither component nor discriminant.
+ 
+ 2026-05-29  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Record type derivations
+ 	inherit Is_Unchecked_Union and Has_Unchecked_Union flags.
+ 	(Inherit_Component): Add discriminals to the associations list.
+ 	* exp_ch3.adb (Build_Record_Init_Proc): Derivations of Unchecked_Union
+ 	types don't need an initialization procedure; they reuse the init proc
+ 	of their parent type.
+ 
+ 2026-05-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Deal with initialization
+ 	expression of return object.
+ 	(Expand_N_If_Expression): Likewise.
+ 	(Insert_Conditional_Object_Declaration): Likewise.
+ 	* exp_util.adb (Is_Distributable_Declaration): Lift limitation for
+ 	return objects, including those with a class-wide type.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Set Return_Applies_To
+ 	on artificial return objects created from within a transient scope.
+ 	Remove test on Expander_Active for better error recovery.
+ 
+ 2026-05-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
+ 	markup.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-05-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Quantified_Expression): Suppress warning for
+ 	variables with junk names.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* inline.adb (Inline_Static_Function_Call): Reduce source code nesting.
+ 	* inline.ads (Inline_Static_Function_Call): Likewise.
+ 
+ 2026-05-29  Viljar Indus  <indus@adacore.com>
+ 
+ 	* inline.adb (Inline_Static_Function_Call): Add a Source File Index
+ 	entry for the call and apply the necessary sloc adjustment values
+ 	for all of the inlined nodes.
+ 
+ 2026-05-29  Tonu Naks  <naks@adacore.com>
+ 
+ 	* adaint.c (__gnat_copy_attribs): use GetFileAttributesEx to
+ 	to fetch attributes.
+ 
+ 2026-05-28  Sebastian Poeplau  <poeplau@adacore.com>
+ 
+ 	* init.c (__gnat_alternate_stack): add alignment attribute.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Also rewrite a choice list
+ 	with a single choice as an iterator specification when the choice's
+ 	type has the GNAT Iterable aspect specified.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Analyze the choice before
+ 	testing whether it is the name of a subtype with a predicate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (In_Package_Body): Update description.
+ 	(In_Private_Part): Likewise.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Compute In_Package_Body
+ 	along with In_Private_Part for the object if its scope is a package.
+ 	* sem_ch6.adb (Analyze_Expression_Function): Do not compute
+ 	In_Private_Part here.
+ 	(Enter_Overloaded_Entity): Compute In_Package_Body & In_Private_Part
+ 	for the entity if its scope is a package.
+ 	* sem_util.adb (Collect_Primitive_Operations): Skip the subprograms
+ 	declared in the body for types declared in a package specification.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Aspect_Aggregate.Resolve_Operation): Add
+ 	missing guard for the presence of Entity on the node.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst
+ 	(Generalized Finalization): Document the new restriction.
+ 	* sem_ch13.adb (Resolve_Finalizable_Argument): Adjust wording of
+ 	error message.
+ 	(Resolve_Finalization_Procedure.Is_Finalizable_Primitive): Require
+ 	the procedure to be a primitive operation.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/g-comlin.adb
+ 	(Command_Name): New routine to strip platform-specific suffix.
+ 	(Display_Help, Get_Opt): Use new routine.
+ 	(Try_Help): Remove hardcoded ".exe" suffix; use new routine.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Is_Access_To_Subprogram_Wrapper): Remove useless
+ 	call to Can_Have_Formals. Found by Dismukes.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Manually set the
+ 	Has_Controlling_Result flag on the wrappers.
+ 	* sem_disp.ads (Override_Dispatching_Operation): Move to...
+ 	* sem_disp.adb (Override_Dispatching_Operation): ...here.
+ 	(Find_Dispatching_Type): Return the (controlling) result type for a
+ 	controlling function wrapper.
+ 
+ 2026-05-28  Vadim Godunko  <godunko@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_of_ada_2022_features.rst: Fix casing.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Do not expand an array comparison
+ 	for validity checking purposes when the component type is covered
+ 	by the suppression of validity checks.
+ 
+ 2026-05-28  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* vast.adb (Do_Node_Pass_2): Only check aspect/pragma consistency for pragma nodes.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.ads (Is_Access_Subprogram_Wrapper): Renamed as
+ 	Is_Access_To_Subprogram_Wrapper.
+ 	* sem_util.adb (Is_Access_Subprogram_Wrapper): Ditto plus add
+ 	assertion.
+ 	* sem_disp.adb (Is_Access_To_Subprogram_Wrapper): Removed.
+ 	* sem_prag.adb (Find_Related_Declaration_Or_Body): Replace call to
+ 	Is_Access_Subprogram_Wrapper by call to Is_Access_To_Subprogram_Wrapper.
+ 	* exp_ch6.adb (Expand_Call): Ditto.
+ 	* sem_attr.adb (Analyze_Attribute [Attribute_Result]): For access to
+ 	subprogram wrappers, report that the expected prefix is the name of
+ 	the access type.
+ 
+ 2026-05-28  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_ch13.adb (Make_Pragma_From_Boolean_Aspect): Use Decorate.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications):
+ 	Major rewrite.
+ 	* sem_ch13.ads: Minor comment improvements.
+ 	* aspects.ads: Change some aspects to be Never_Delay.
+ 	Make Boolean_Aspects include Library_Unit_Aspects.
+ 	* exp_ch9.adb (Build_Corresponding_Record):
+ 	When copying aspects, set Aspect_Rep_Item to Empty,
+ 	so Asp_Copy looks like an unanalyzed tree.
+ 	* sem_ch12.adb (Analyze_Formal_Subprogram_Declaration):
+ 	Skip Analyze_Aspect_Specifications in case of error.
+ 	* sem_ch6.adb (Analyze_Expression_Function): Likewise.
+ 	* sinfo.ads: Minor comment improvement.
+ 
+ 2026-05-28  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch6.adb (Install_Entity): If the entity to be installed is
+ 	already installed, assert that an error has already been flagged
+ 	and then return without introducing a cycle in the entity's
+ 	Homonyms list.
+ 
+ 2026-05-28  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errout.adb (Output_Messages): use the source file name without
+ 	the directory path when constructing the name of the SARIF file.
+ 	* osint.adb (Strip_Directory): New method for extracting the file name
+ 	from a given path.
+ 	* osint.ads (Strip_Directory): Likewise.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Renamed_Entity): Protect call to First_Formal.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Do not create a
+ 	transient scope when expansion is disabled.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Do not create a
+ 	transient scope under GNATprove mode.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* vast.adb (Pass): Add a comment.
+ 
+ 2026-05-28  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* vast.adb (Do_Node_Pass_2): Adjust check for aspect consistency.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Constrained>: If the
+ 	prefix is a non-In formal parameter of an unchecked union type, give
+ 	a warning and insert a raise statement for Program_Error.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.ads (Is_Distributable_Declaration): New predicate.
+ 	* exp_util.adb (Is_Distributable_Declaration): New predicate coming
+ 	from Expand_N_Case_Expression and Expand_N_If_Expression.  Return
+ 	False for variables of an unconstrained definite nonlimited subtype.
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Replace calls to local
+ 	Is_Optimizable_Declaration by calls to Is_Distributable_Declaration.
+ 	(Expand_N_If_Expression): Likewise.
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Likewise.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Insert_Pragma):
+ 	Rename to be Insert_Aitem.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications):
+ 	Misc cleanup.
+ 
+ 2026-05-28  Claire Dross  <dross@adacore.com>
+ 
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode):
+ 	Do not inline subprograms with formals of an unchecked union type.
+ 
+ 2026-05-28  Marc Poulhiès  <poulhies@adacore.com>
+ 	    Eric Botcazou  <botcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Find_Type_Of_Object): Adjust freezing of the base
+ 	type of a discriminated type.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Full_View): Simplify test.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.adb
+ 	(Apply_Accessibility_Check_For_Class_Wide_Return): Do not test if
+ 	accessibility checks are suppressed here but...
+ 	(Apply_Accessibility_Check_For_Return): ...here instead.
+ 
+ 2026-05-28  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_For_Primitive_Subprogram): add the
+ 	check for ghost equality functions for all branches handling
+ 	primitive subprograms.
+ 
+ 2026-05-28  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_aux.ads (Is_Immutably_Limited_Type, Is_Inherently_Limited_Type):
+ 	Improve documentation comments.
+ 	* sem_aux.adb (Is_Inherently_Limited_Type): Replace inline code with
+ 	call to Is_Immutably_Limited_Type.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* aspects.ads (Aspect_Initialize):
+ 	Add to Implementation_Defined_Aspect.
+ 	* einfo.ads (Alignment_Clause): Minor comment fix.
+ 	* sem.adb: Remove useless null statements.
+ 	* sem_ch13.ads (Rep_Item_Too_Late):
+ 	Minor comment fix (this IS Sem_Ch13).
+ 	* sem_prag.adb (Fix_Error):
+ 	Minor comment fix (aspects are not "abnormal").
+ 	* sinfo.ads: Minor comment fix.
+ 
+ 2026-05-28  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* gen_il-fields.ads (Scope_Link): New field.
+ 	* gen_il-gen-gen_nodes.adb (N_Expression_With_Actions): Added Scope_Link.
+ 	* sinfo.ads (N_Expression_With_Actions): Add field Scope_Link.
+ 	* sem_ch4.adb (Analyze_Expression_With_Actions): Set field Scope_Link
+ 	* sem_ch5.ads (Has_Sec_Stack_Call): Declaration moved to the package spec.
+ 	* sem_ch5.adb (Has_Sec_Stack_Call): ditto.
+ 	* sem_res.adb (Resolve_Declare_Expression): Push/Pop internally created
+ 	scope to provide proper visibility of the declare_items.
+ 
+ 2026-05-28  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_prag.adb (Check_References): Don't call Class_Wide_Type if the
+ 	subprogram is a non-primitive procedure as the dispatching type may be
+ 	empty.
+ 
+ 2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Is_Pure_Barrier): Handle unexpanded attribute Count.
+ 
+ 2026-05-28  Bob Duff  <duff@adacore.com>
+ 
+ 	* vast.adb (Check_Corresponding_Aspect):
+ 	New checks for aspect/pragma consistency.
+ 	(Check_Enum): Add documentation of the checks.
+ 
+ 2026-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.ads (Build_Master_Declaration): Minor tweaks in comment.
+ 	(Build_Master_Entity): Likewise.
+ 	(Build_Master_Renaming): Likewise.
+ 	(Build_Master_Renaming_Declaration): New function declaration.
+ 	* exp_ch9.adb (Build_Master_Declaration): Move around.
+ 	(Build_Master_Renaming_Declaration): New function.
+ 	(Build_Master_Renaming): Call Build_Master_Renaming_Declaration
+ 	to build the renaming declaration.
+ 	* sem_ch6.adb (Check_Anonymous_Access_Return_With_Tasks): Remove
+ 	useless guard on Declarations (N).  Create a renaming declaration
+ 	for the current _Master variable and set is as the Master_Id of
+ 	the access result type.
+ 
+ 2026-05-28  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_N_Delta_Aggregate): Special case for
+ 	"others" clause.
+ 
+ 2026-05-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* xsintnam.sed: Posix-ify the a, c and i commands.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* xsintnam.sed: Disable style checks.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* xsintnam.sed: Handle special case.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in ($(RTSDIR)/s-intnam.ads): Change recipe
+ 	to use a basic invocation of 'sed'.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* xsintnam.sed: Do not filter out comments.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnarl/s-interr__sigaction.adb: Add with clause for
+ 	System.OS_Interface.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.adb (Apply_Accessibility_Check_For_Anonymous):
+ 	Rename into...
+ 	(Apply_Accessibility_Check_For_Anonymous_Return): ...this.
+ 	(Apply_Accessibility_Check_For_Class_Wide): Rename into...
+ 	(Apply_Accessibility_Check_For_Class_Wide_Return): ...this.
+ 	(Apply_Accessibility_Check_For_Discriminant): Rename into...
+ 	(Apply_Accessibility_Check_For_Discriminated_Return): ...this.
+ 	(Apply_Accessibility_Check_For_Return): Adjust to above renamings.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.ads (Apply_Accessibility_Check): Rename into...
+ 	(Apply_Accessibility_Check_For_Parameter): ...this.
+ 	(Apply_Accessibility_Check_For_Return): New procedure.
+ 	(Effective_Extra_Accessibility): Minor tweak in description.
+ 	* accessibility.adb (Function_Call_Or_Allocator_Level): Apply the
+ 	specific treatment for returns to anonymous allocators as well.
+ 	(Accessibility_Level): Deal with literal null and Deref attribute.
+ 	(Apply_Accessibility_Check): Rename into...
+ 	(Apply_Accessibility_Check_For_Anonymous): New procedure extracted
+ 	from the old Apply_Access_Discrims_Accessibility_Check.
+ 	(Apply_Accessibility_Check_For_Class_Wide): New procedure taken
+ 	from Exp_Ch6.
+ 	(Apply_Accessibility_Check_For_Discriminant): Likewise.
+ 	(Apply_Accessibility_Check_For_Parameter): ...this.
+ 	(Apply_Accessibility_Check_For_Return): New procedure.
+ 	(Static_Accessibility_Level): Minor reformatting.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Adjust to renaming.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Generate accessibility
+ 	checks for returns by calling Apply_Accessibility_Check_For_Return.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Adjust to renaming.
+ 	* exp_ch6.ads (Apply_Access_Discrims_Accessibility_Check): Delete.
+ 	(Apply_CW_Accessibility_Check): Likewise.
+ 	* exp_ch6.adb: Remove clauses for Exp_Atag.
+ 	(Apply_Access_Discrims_Accessibility_Check): Move to Accessibility.
+ 	(Apply_CW_Accessibility_Check): Likewise.
+ 	(Expand_Actuals): Adjust to renaming.
+ 	(Expand_Simple_Function_Return): Generate accessibility checks by
+ 	calling Apply_Accessibility_Check_For_Return.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Tidy up and make
+ 	the computation of minimum accessibility levels more uniform.
+ 	(Create_Extra_Formals): Minor reformatting.
+ 
+ 2026-05-26  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Derive_Subprogram): Do not replace the type when
+ 	Derived_Type inherits the first controlling parameter aspect and
+ 	it is not the first formal of this operation.
+ 	* sem_disp.adb (Check_Controlling_Formals): For overriding
+ 	primitives of types with the first controlling parameter aspect
+ 	inherit controlling formals of the overridden parent primitive.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Equality_Op): Supply the type of the
+ 	operation as an argument.
+ 	* ghost.ads (Check_Ghost_Equality_Op): Likewise.
+ 	* sem_ch6.adb (Valid_Operator_Definition): Remove call to
+ 	Check_Ghost_Equality_Op.
+ 	(Check_For_Primitive_Subprogram): Call Check_Ghost_Equality_Op.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-inttyp.ads: New file.
+ 	* libgnarl/a-interr.ads (Interrupt_ID): Derive from
+ 	Preelab_Interrupt_ID.
+ 	* libgnarl/s-interr.ads (Interrupt_ID): Derive from
+ 	Preelab_Interrupt_ID.
+ 	(Ada_Interrupt_ID): Remove.
+ 	* libgnarl/s-interr__vxworks.ads (Ada_Interrupt_ID): Remove.
+ 	* xsintnam.sed: New file.
+ 	* Makefile.rtl: Register new runtime files.
+ 	* libgnarl/a-interr.adb: Adjust with clauses.
+ 	* rtsfind.ads (RE_Interrupt_Names, RE_Preelab_Interrupt_ID): New
+ 	variants.
+ 	* sem_prag.adb: Use entities from new preelaborate packages.
+ 	* gcc-interface/Makefile.in: Generate System.Interrupt_Names.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (Unprotected_Exchange_Handler): Improve
+ 	comment and formatting.
+ 	(Server_Task): Fix task state.
+ 	* rtsfind.adb (RTE): Remove incorrect comment.
+ 
+ 2026-05-26  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): When the operand is a
+ 	qualified expression of an aggregate, force its evaluation by
+ 	capturing its value in a constant (to ensure full initialization
+ 	of the tagged object).
+ 
+ 2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/platform_specific_information.rst
+ 	(Using gnatdll): Document switch -m.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Valid_Ghost_Declaration): Relocate the procedure.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Equality_Op): New function for the
+ 	implementation of the rule.
+ 	* ghost.ads (Check_Ghost_Equality_Op): Likewise.
+ 	* sem_ch6.adb (Valid_Operator_Definition): Add check for rule 23.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Qualified_Expression): For a class-wide type,
+ 	check for an exact match modulo the Non_Limited_View attribute.
+ 
+ 2026-05-26  Steve Baird  <baird@adacore.com>
+ 
+ 	* aspects.adb (Has_Aspect): In the call to Find_Aspect, pass in
+ 	True for the Or_Rep_Item parameter instead of letting it default
+ 	to False.
+ 
+ 2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* tempdir.ads, tempdir.adb: Remove.
+ 	* gcc-interface/Makefile.in (GNATMAKE_OBJS): Remove dependency on Tempdir.
+ 
+ 2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gnatname.adb: Use System.OS_Lib routine.
+ 
+ 2026-05-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* make.adb: Use System.OS_Lib routine.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/89609
+ 	* sem_res.adb (Resolve_Call): Do not override the Etype of the Name
+ 	entity when it denotes a function that returns the limited view of a
+ 	type coming from a limited_with clause.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Get_Function_Entity): New function.
+ 	(Make_Build_In_Place_Call_In_Allocator): Call it, turn some local
+ 	variables into constants and rename Function_Id as Func_Id.
+ 	(Make_Build_In_Place_Call_In_Anonymous_Context): Likewise.
+ 	(Make_Build_In_Place_Call_In_Assignment): Likewise.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
+ 
+ 2026-05-26  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* contracts.adb (Expand_Subprogram_Contract): Don't call
+ 	Build_Subprogram_Contract_Wrapper for a No_Return subprogram,
+ 	but include any prologue declarations (such as for preconditions).
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* errid-diagnostic_repository.ads: Add new diagnostics to the
+ 	repository. Map diagnostics to restrictions.
+ 	* errid-restriction_repository.ads: New pacakges for mapping
+ 	restricitions to diagnostics.
+ 	* errid.adb (heck_Diagnostic_To_Restriction_Consistency): New
+ 	method for repository consistency.
+ 	(Check_Diagnostic_To_Restriction_Consistency): New method for
+ 	repository consistency.
+ 	(Add_All_Restriction_Rules): New method for adding all of the
+ 	restrictions.
+ 	* errid.ads: Add new Diagnostic_Id-s.
+ 	* errout.adb (Add_Unique_Diagnostics_And_Switches): Add
+ 	restrictions to the SARIF_Printer.
+ 	* erroutc.ads: Add restrictions to the Error_Msg_Object.
+ 	* erroutc-sarif_emitter.adb (Print_Rule): Add method for printing
+ 	rules for restrictions.
+ 	* erroutc-sarif_emitter.ads: add restrictions as part of the
+ 	printer.
+ 	* errutil.adb (Error_Msg): Update diagnostic element creation.
+ 	* restrict.adb (Restriction_Msg): Add diagnostic id based on the
+ 	restriction id.
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Add
+ 	new files.
+ 	* gcc-interface/Makefile.in (GNATMAKE_OBJS): Likewise.
+ 
+ 2026-05-26  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Propagate actuals in
+ 	recursion calls, unless this is a known side-effect free
+ 	attribute whose expressions are also side-effect free.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Depends_On_Level): Fix condition for Runtime
+ 	level.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Policy_In_Effect): Normalize the policy names.
+ 
+ 2026-05-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* gen_il-fields.ads (Is_Boolean_Aspect): Remove.
+ 	* gen_il-gen-gen_nodes.adb: Likewise.
+ 	* sinfo.ads: Likewise.
+ 	* sem_ch13.adb: Likewise. Minor comment fix.
+ 	* aspects.ads: Clean up comments, including removing
+ 	some redundancy.
+ 	* freeze.adb: Fix comment typo.
+ 	* sem_eval.ads: Fix comment typo.
+ 	* tbuild.ads: Fix comment; there's no reason to mention the
+ 	number, especially when it's wrong.
+ 
+ 2026-05-26  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Policy): Add check for assertion levels
+ 	inside aspect specifications.
+ 
+ 2026-05-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* aspects.ads (Aspect_Unimplemented): Remove.
+ 	* sem_ch13.adb (Aspect_Unimplemented): Remove.
+ 
+ 2026-05-26  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): Remove the exception
+ 	declaration, raises, and handler. Inline the code in
+ 	Check_Expr_Is_OK_Static_Expression, which was called only once.
+ 
+ 2026-05-26  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_unst.adb (Unnest_Subprogram): Push/Pop scope around Analyze
+ 	call.
+ 
+ 2026-05-26  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_unst.adb (Maybe_Subp_Index): New non throwing version of
+ 	Subp_Index.
+ 	(Nullify_Renamings, Move_Pending_Renamings): New.
+ 	(Register_Subprogram): Record subp renamings. Call
+ 	Nullify_Renamings when a subp is dropped.
+ 	(with Elist): Moved to...
+ 	* exp_unst.ads (with Elist): ... here.
+ 	(Subp_Entry): Add Renamings component.
+ 	(Pending_Renamings): New list.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr__vxworks.adb (Unprotected_Exchange_Handler): Fix
+ 	exception message.
+ 
+ 2026-05-26  Sebastian Poeplau  <poeplau@adacore.com>
+ 
+ 	* s-oscons-tmplt.c (PTY_Library): Define empty for Linux targets.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (Interrupt_Manager, Server_Task): Fix
+ 	comments.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (User_Handler): Improve comment.
+ 	(Unprotected_Exchange_Handler): Fix message string.
+ 
+ 2026-05-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Anonymous_Access_Return_With_Tasks): Declare
+ 	Scop as a constant and call the Might_Have_Tasks predicate instead
+ 	of using a custom implementation of it.
+ 
+ 2026-05-26  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Correct example
+ 	to avoid using a not-yet-implemented form of deep delta aggregate.
+ 	* exp_aggr.adb (Make_Delta_Choice_LHS): Call Core_Extensions_Allowed
+ 	instead of All_Extensions_Allowed.
+ 	* par-ch4.adb (P_Simple_Expression): Likewise.
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-26  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par.adb (P_Expression_If_OK): Add declare expression to spec comment.
+ 	* par-ch4.adb (P_Expression_If_OK): Add declare expression to comments.
+ 	* par-ch12.adb (P_Formal_Subprogram_Declaration): Call
+ 	P_Expression_If_OK rather than P_Expression.
+ 
+ 2026-05-26  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_One_Aspect): For Unsigned_Base_Range aspect,
+ 	skip generating its corresponding pragma when the aspect is set
+ 	to False.
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Fix initialization
+ 	of local variable Is_Unsigned_Base_Range_Type_Decl to handle
+ 	Unsigned_Base_Range aspect set to False.
+ 
+ 2026-05-26  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb (Unprotected_Exchange_Handler): Fix
+ 	exception message.
+ 
+ 2026-05-26  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* aspects.adb (Get_Aspect_Id): Enable aspect Unsigned_Base_Range
+ 	* debug.adb (Debug_Flag_Dot_U): Leave free this switch
+ 	* par-ch4.adb (Scan_Apostrophe): Enable attribute Unsigned_Base_Range
+ 	* sem_prag.adb (Analyze_Pragma): Enable pragma Unsigned_Base_Range
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Document unsigned base range.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Prefix_Is_Formal_Parameter): Rename into...
+ 	(Prefix_Is_Formal_Parameter_Of_EQ): ...this.  Return True only if
+ 	the formal parameter is that of an equality function built for an
+ 	unchecked union type.
+ 	(Has_Inferable_Discriminants): Adjust to above renaming.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_put_image.ads (Image_Should_Call_Put_Image): Rename into...
+ 	(Image_Must_Call_Put_Image): ...this.
+ 	* exp_put_image.adb (Image_Should_Call_Put_Image): Rename into...
+ 	(Image_Must_Call_Put_Image): ...this.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Adjust to above renaming.
+ 	(Expand_Wide_Image_Attribute): Likewise.
+ 	(Expand_Wide_Wide_Image_Attribute): Likewise.
+ 	* sem_attr.adb (Eval_Attribute): Likewise.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb: Add with and use clauses for Exp_Put_Image.
+ 	(Eval_Attribute.Fold_Compile_Time_Known_Enumeration_Image): New
+ 	procedure factored out from....
+ 	(Eval_Attribute): ...here.  Attempt to fold 'Img and 'Image for all
+ 	compile-time known values of enumeration, but not character, types,
+ 	provided that Put_Image need not be called, by invoking the nested
+ 	Fold_Compile_Time_Known_Enumeration_Image procedure on the value.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_util.adb: Fix RM references.
+ 	* sem_util.ads: Likewise.
+ 	* sem_warn.adb: Likewise.
+ 
+ 2026-05-25  Martin Clochard  <clochard@adacore.com>
+ 
+ 	* sem_util.adb (As_Boolean): utility to fill decoration in expressions
+ 	(Determining_Condition): set Etype for generated Boolean connectors
+ 	(Conditional_Evaluation_Condition): set Etype for generated connectors
+ 
+ 2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* par-ch12.adb (P_Formal_Subprogram_Declaration): Pass True for
+ 	the Is_Core_Extension parameter on call to Error_Msg_GNAT_Extension.
+ 
+ 2026-05-25  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Record aspect CPU and
+ 	Priority applied to subprogram as a representation item.
+ 
+ 2026-05-25  Claire Dross  <dross@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Exit_Contract): The Exception_Raised exit kind
+ 	is not compatible with No_Raise.
+ 	(Analyze_Pragma): The Exceptional_Cases pragma is not compatible with
+ 	No_Raise.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (E_Subprogram_Type): Add the missing
+ 	Scope_Depth_Value field.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/93702
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Revert latest
+ 	change.
+ 	* sem_ch12.adb (Analyze_One_Association): Remove redundant line.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Freeze the profile
+ 	again for bodies that are not generated from expression functions.
+ 
+ 2026-05-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Controlling_Formals): Formals of a type
+ 	specifying aspect First_Controlling_Parameter are not candidate
+ 	controlling parameters when they are not the first formal of
+ 	the dispatching primitive.
+ 
+ 2026-05-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Handle internally
+ 	generated initialization invoking a C++ constructor.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/93702
+ 	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): Call
+ 	Freeze_Expr_Types_Before instead of Freeze_Expr_Types.
+ 	(Process_Preconditions_For): Likewise.
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not set
+ 	Was_Expression_Function flag on the generated bodies.
+ 	* exp_ch6.adb (Expand_Call_Helper): Call Original_Node on the
+ 	result of the call to Expression_Of_Expression_Function.
+ 	* freeze.ads (Freeze_Expr_Types): Delete.
+ 	(Freeze_Expr_Types_Before): New procedure declaration.
+ 	* freeze.adb (Check_Expression_Function): Delete.
+ 	(Freeze_And_Append): Add Do_Freeze_Profile formal parameter and
+ 	pass it to Freeze_Entity.  Remove call to Check_Expression_Function.
+ 	(Freeze_Entity): Set Test_E consistently and freeze the expression
+ 	of expression functions that are primitives of a tagged type.
+ 	(Freeze_Profile): Adjust calls to Should_Freeze_Type.
+ 	(In_Expanded_Body): Also return true for DIC procedures.
+ 	(Freeze_Expression): Remove call to Check_Expression_Function.
+ 	Freeze the expression of expression functions.
+ 	(Freeze_Expr_Types): Add Result and Before formal parameters.
+ 	Make a copy and preanalyze/resolve it only if Typ is present.
+ 	(Freeze_Expr_Types.Explain_Error): New procedure.
+ 	(Freeze_Expr_Types.Find_Incomplete_Constant): Likewise.
+ 	(Freeze_Expr_Types.Check_And_Freeze_Type): Return immediately if
+ 	the type is already frozen.  Report errors on N instead of Node.
+ 	If Before is False, append the freeze nodes to Result.
+ 	(Freeze_Expr_Types.Freeze_Type_Refs): Call Find_Incomplete_Constant.
+ 	(Freeze_Expr_Types_Before): New procedure.
+ 	(Should_Freeze_Type): Remove formal parameter E and
+ 	specific kludge for stand-alone expression functions.
+ 	* ghost.ads (Mark_And_Set_Ghost_Body_Of_Expression_Function): New
+ 	procedure declaration.
+ 	* ghost.adb (Mark_And_Set_Ghost_Body_Of_Expression_Function): New
+ 	procedure body.
+ 	* rtsfind.adb (RTE): Preserve and reset the In_Inlined_Body flag.
+ 	(RTE_Record_Component): Likewise.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Just call
+ 	Freeze_Expression to freeze the expression of prefixes that are
+ 	expression functions and remove obsolete implementation.
+ 	* sem_ch3.adb (Analyze_Declarations): Adjust commentary.
+ 	(Check_Completion): Also skip stand-alone expressions functions.
+ 	* sem_ch4.adb (Analyze_Case_Expression): Always analyze the choices.
+ 	* sem_ch6.adb: Add with and use clauses for Sem_Ch7.
+ 	(Analyze_Expression_Function): Call Freeze_Expr_Types_Before instead
+ 	of Freeze_Expr_Types for expression functions that are completions.
+ 	For stand-alone expression functions, set In_Private_Part on the
+ 	entity if it is in the private part, propagate the results of the
+ 	resolution of the specification of the the declaration to that of
+ 	the body and insert the body at the next freezing point.
+ 	(Analyze_Subprogram_Body_Helper): Remove the machinery for masking
+ 	and unmasking unfrozen types. For a stand-alone expression function,
+ 	call Mark_And_Set_Ghost_Body_Of_Expression_Function, remove obsolete
+ 	code dealing with the freezing of the spec, set In_Inlined_Body to
+ 	True, make the full view of the private types of its scope visible
+ 	if this is not the current scope and it is in the private part, and
+ 	avoid making the spec immediately visible.
+ 	(Analyze_Subprogram_Specification): Fix typo.
+ 	(New_Overloaded_Entity): Set Has_Completion on a [generic] package
+ 	that conflicts with the entity to prevent a cascaded error.
+ 	* sem_ch7.ads (Is_Private_Base_Type): New function declaration moved
+ 	here from...
+ 	* sem_ch7.adb (Is_Private_Base_Type): ...here.  Remove.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Call Freeze_Expression
+ 	to freeze the expression of expression functions, but only if the
+ 	renaming comes from source.
+ 	* sem_ch12.adb (Analyze_One_Association): Likewise, and remove the
+ 	manual freezing for calls to them.
+ 	* sem_res.adb (Resolve): Remove obsolete commentary.
+ 	(Resolve_Call): Always freeze the expression of names that are
+ 	expression functions.
+ 	* sem_util.adb (Check_Fully_Declared): Add commentary and do not
+ 	check types with private component declared outside of the current
+ 	scope when it is a generic unit.
+ 	(Expression_Of_Expression_Function): Return Expression directly.
+ 	(Is_Inlinable_Expression_Function): Call Original_Node on the
+ 	result of the call to Expression_Of_Expression_Function.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Retrieve again the
+ 	expression of the expression function manually.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Entity_Name): Add the name of the constant
+ 	to the error message for premature freezing of deferred constants.
+ 
+ 2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch12.adb (Build_Subprogram_Wrapper): Remove the subprogram
+ 	renaming created for the formal-to-actual association from the
+ 	list of renamings (only when such a subprogram renaming is present).
+ 	Also, change the name from plural to singular, since the procedure
+ 	only creates one wrapper, update the spec comment to reflect that,
+ 	and clarify the state and use of the Renamings parameter.
+ 
+ 2026-05-25  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Abstract_State): Improve handling of
+ 	True/False for Abstract_State with Ghost.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Add Initialize
+ 	aspect with default others to trigger Initialize aspect analysis.
+ 	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): Fix
+ 	initialization order.
+ 	(Init_From_Initialize_Expression): Retrieve initialization expression or
+ 	the default one base on the Initialize aspect.
+ 	(Init_From_Default_Or_Constructor):. Retrieve initialization expression
+ 	based on the default one in the record initialization list or the init
+ 	procedure.
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Add check for
+ 	missing components that require initialization, and add an
+ 	expression_with_action node to place ABE during resolution of
+ 	aggregates with function calls.
+ 	(Check_Constructor_Choices): Helper to check that the aggregate choices
+ 	do not refer to ancestors.
+ 	(Diagnose_Misplaced_Aspects): Improve diagnostics when it is a clear
+ 	misspelling of Initialize aspect.
+ 	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): If missing, add a
+ 	compiler generated Initialize aspect with default others to trigger
+ 	Initialize analysis.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Has_Public_Visibility_Of_Subprogram): Use Subp_Id
+ 	throughout and Is_Expression_Function to spot expression functions.
+ 	* ghost.adb (Is_OK_Declaration): Likewise.
+ 	* sem_ch12.adb (Analyze_One_Association): Likewise.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
+ 	(Analyze_Subprogram_Specification): Fix typo.
+ 	(Find_Corresponding_Spec): Call Is_Expression_Function.
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Retrieve the expression
+ 	by means of Expression_Of_Expression_Function.
+ 	* sem_res.adb (Resolve_Allocator): Call Is_Expression_Function.
+ 	(Rewrite_Renamed_Operator): Likewise.
+ 	* sem_util.adb (Expression_Of_Expression_Function): Streamline the
+ 	the implementation.
+ 	(Is_Expression_Function): Likewise.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Bail out for the name
+ 	of an object renaming declaration at library level, if the call
+ 	does not return on the secondary stack.
+ 	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Rewrite the
+ 	renaming as a regular object declaration if it is declared at
+ 	library level and the name is a controlled function call whose
+ 	result is not returned on the secondary stack.
+ 	* exp_util.adb (Rewrite_Object_Declaration_As_Renaming): Minor fix.
+ 
+ 2026-05-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Record subtypes
+ 	inherit the CPP_Class attribute; required for instantiations.
+ 
+ 2026-05-25  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Contracts): Add cases for formal subprogram
+ 	Nkinds so that Analyze_Entry_Or_Subprogram_Contract will be called
+ 	for them.
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Account for the cases
+ 	of formal subprogram Nkinds, allowing Old attributes for those.
+ 	* sem_ch12.adb (Build_Subprogram_Wrappers): Add a formal for passing
+ 	the unanalyzed generic formal, and use it for copying any aspect
+ 	specifications of the generic formal rather than copying the analyzed
+ 	generic formal's aspects.
+ 	(Analyze_One_Association): Pass Assoc.Un_Formal as an additional
+ 	actual in the call to Build_Subprogram_Wrappers.
+ 
+ 2026-05-25  Steve Baird  <baird@adacore.com>
+ 
+ 	* accessibility.adb (Needs_Accessibility_Level_Temp_Or_Check): Conform
+ 	to spec changes. Return True for the RHS of an assignment statement.
+ 	* accessibility.ads: Change name of Is_Anonymous_Access_Actual
+ 	to Needs_Accessibility_Level_Temp_Or_Check; the function now returns
+ 	True in cases other than those described by the old name.
+ 	Also change name of the formal parameter from N to Conditional_Expr.
+ 	* exp_ch4.adb (Expand_N_If_Expression): Update call to a function
+ 	whose name changed.
+ 
+ 2026-05-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Is_Fully_Initialized_Variant): Moved inside
+ 	subprogram Is_Fully_Initialized_Type.
+ 	(Is_Fully_Initialized_Constrained_Array): New subprogram that
+ 	factorizes code of Is_[Fully|Partially]_Initialized_Type.
+ 	(Is_Fully_Initialized_Record_Type): New subprogram; add missing
+ 	support for incomplete types.
+ 	(Is_Partially_Initialized_Record_Type): New subprogram; add missing
+ 	support for incomplete types.
+ 	(Is_Partially_Initialized_Type): Add new formal for predicate checks.
+ 	* sem_util.ads (Is_Partially_Initialized_Type): Add new formal for
+ 	predicate checks.
+ 	* sem_warn.adb (Type_OK_For_No_Value_Assigned): Use named parameters
+ 	in call to Is_Partially_Initialized_Type.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Add new actual for
+ 	predicate checks.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Introduce new local
+ 	boolean constant From_Expression_Function, use it throughout, and
+ 	replace an equivalent test by it.  Do not deal with name conflicts
+ 	here when it is true.  Do not verify the consistency of overriding
+ 	indicators for stand-alone expression functions.
+ 	* sem_util.ads (Is_Expression_Function_Or_Completion): Fix improper
+ 	wording in description.
+ 	* sem_util.adb (Is_Expression_Function_Or_Completion): Streamline
+ 	the implementation.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Init_Call.Find_Init_Call_In_List): Check that
+ 	the first actual denotes the expected variable modulo qualification
+ 	and conversion.
+ 
+ 2026-05-25  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Report an error if the
+ 	return statement of a function with foreign convention has a call
+ 	to a C++ constructor.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Handle initialization
+ 	expression calling a C++ constructor in an extended return statement
+ 	of a subprogram with Ada convention.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Pull out the generic
+ 	case from the if-statement and put it first.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Dispatching_Call): Remove suppression of checks
+ 	during analysis of expanded dispatching calls.
+ 
+ 2026-05-25  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Add that finally is a
+ 	non-reserved keyword.
+ 	* par-ch5.adb (P_Sequence_Of_Statements): handle "finally" syntax
+ 	extension.
+ 	* snames.ads-tmpl: Remove the concept of GNAT extension reserved
+ 	word.
+ 	* snames.adb-tmpl (Is_Keyword_Name): Likewise.
+ 	* scans.adb (Initialize_Ada_Keywords): Likewise.
+ 	* par-util.adb (Check_Future_Keyword): Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-05-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Protected_Body):
+ 	Remove "raise Program_Error" and consolidate other
+ 	cases.
+ 
+ 2026-05-25  Sebastian Poeplau  <poeplau@adacore.com>
+ 
+ 	* libgnarl/libgnarl.gpr: Add dependency on libgnat.gpr.
+ 	Set Library_Name and Library_Version depending on Library_Kind.
+ 	* libgnat/libgnat.gpr: Likewise.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* aspects.ads (Aspects): Make Super aspect optional to allow for
+ 	explicit call to parent parameterless constructor.
+ 	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Build implicit
+ 	parameterless constructor when no other constructors are defined but the
+ 	type has an ancestor with constructors.
+ 	* exp_ch6.adb
+ 	(Init_Expression_If_Any): Pe4rmit implicit calls to parameterless
+ 	constructors in initialization expressions if available.
+ 	(Make_Parent_Constructor_Call): Super without parameters calls the
+ 	parent parameterless constructor.
+ 	* sem_ch13.adb (Analyze_Aspect_Specification): Allow Super aspect
+ 	without expression.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Delay check for missing
+ 	parameterless constructor until the the implicit constructor is built.
+ 
+ 2026-05-25  Steve Baird  <baird@adacore.com>
+ 
+ 	* aspects.ads: Add three new Taint_Xxx aspects to the Aspect_Id
+ 	enumeration type and define a corresponding subtype,
+ 	Ignored_Aspects.
+ 	* exp_prag.adb (Expand_N_Pragma): Don't rewrite a taint-related
+ 	pragma as a null statement. We want to leave the (unanalyzed)
+ 	pragma in the tree.
+ 	* sem_ch13.adb (Analyze_One_Aspect): Leave taint-related aspect
+ 	specifications
+ 	(and their arguments, if any) unanalyzed.
+ 	(Check_Aspect_At_Freeze_Point): Update a case statement to treat
+ 	the new aspects as an error case.
+ 	* sem_util.adb (Should_Ignore_Pragma_Sem): Return True for an
+ 	ignored pragma.
+ 	* snames.ads-tmpl: Define names for the three new aspects.
+ 
+ 2026-05-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* scans.adb (Save_Scan_State): Use an aggregate.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_Helper_Call): Refactor code to handle both static and
+ 	dynamic precondition calls in the same way.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Record_Init_Proc): Move Build_Assignment to
+ 	Build_Component_Assignment in Exp_Util for a more general use.
+ 	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): refactor using
+ 	Build_Component_Assignment.
+ 	* exp_util.adb (Build_Component_Assignment): Logic to build component
+ 	assignments for initialization procedures and constructor prologues.
+ 	* exp_util.ads (Build_Component_Assignment): Likewise.
+ 	* sem_ch5.adb (Analyze_Assignment): Revert back changes from previous
+ 	attempt to fix assignments of limited types in constructor prologues,
+ 	the use of Build_Component_Assignment makes those changes unnecessary.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Minor comment fixes.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sinput.ads: Small tweak to head comment.
+ 
+ 2026-05-25  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Type): Propagate by-constructor indication
+ 	only for derived tagged types, not for composition.
+ 
  2026-05-19  Jakub Jelinek  <jakub@redhat.com>
  
  	PR other/125348
diff -Nrcpad gcc-17-20260524/gcc/ada/Makefile.rtl gcc-17-20260531/gcc/ada/Makefile.rtl
*** gcc-17-20260524/gcc/ada/Makefile.rtl	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/Makefile.rtl	Sun May 31 22:32:04 2026
*************** GNATRTL_TASKING_OBJS= \
*** 56,61 ****
--- 56,63 ----
    s-inmaop$(objext) \
    s-interr$(objext) \
    s-intman$(objext) \
+   s-intnam$(objext) \
+   s-inttyp$(objext) \
    s-mudido$(objext) \
    s-osinte$(objext) \
    s-proinf$(objext) \
*************** setup-rts: rts-err force
*** 3369,3374 ****
--- 3371,3378 ----
  	  if [ -f $(RTSDIR)/$$f ]; then echo $$f >> $(RTSDIR)/libgnarl.lst; fi \
  	done
  	@echo thread.c >> $(RTSDIR)/libgnarl.lst
+ # s-intnam.ads is generated later, so hardcode it here
+ 	@echo s-intnam.ads >> $(RTSDIR)/libgnarl.lst
  	@for f in \
  	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.ads,$(F))) \
  	  $(foreach F,$(GNATRTL_NONTASKING_OBJS),$(subst $(objext),.adb,$(F))); \
diff -Nrcpad gcc-17-20260524/gcc/ada/accessibility.adb gcc-17-20260531/gcc/ada/accessibility.adb
*** gcc-17-20260524/gcc/ada/accessibility.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/accessibility.adb	Sun May 31 22:32:04 2026
*************** with Tbuild;         use Tbuild;
*** 53,58 ****
--- 53,91 ----
  
  package body Accessibility is
  
+    -----------------------
+    -- Local Subprograms --
+    -----------------------
+ 
+    procedure Apply_Accessibility_Check_For_Anonymous_Return
+      (Exp         : Node_Id;
+       Func        : Entity_Id;
+       Insert_Node : Node_Id);
+    --  If the result type of the function is an anonymous access type, insert
+    --  a check that the accessibility level of the entity designated by the
+    --  result is not deeper than the level of the master of the call. Exp is
+    --  an expression being returned from Func.
+ 
+    procedure Apply_Accessibility_Check_For_Class_Wide_Return
+      (Exp  : Node_Id;
+       Func : Entity_Id);
+    --  Ada 2005 (AI95-344): If the result type is class-wide, insert a check
+    --  that the level of the return expression's underlying type is not deeper
+    --  than the level of the master enclosing the function. Always generate the
+    --  check when the type of the return expression is class-wide, when it's a
+    --  type conversion, or when it's a formal parameter. Otherwise suppress the
+    --  check in the case where the return expression has a specific type whose
+    --  level is known not to be statically deeper than the result type of the
+    --  function. Exp is an expression being returned from Func.
+ 
+    procedure Apply_Accessibility_Check_For_Discriminated_Return
+      (Exp  : Node_Id;
+       Func : Entity_Id);
+    --  If the result type of the function has access discriminants, insert
+    --  checks that the accessibility level of each entity designated by an
+    --  access discriminant of the result is not deeper than the level of the
+    --  master of the call. Exp is an expression being returned from Func.
+ 
     ---------------------------
     -- Accessibility_Message --
     ---------------------------
*************** package body Accessibility is
*** 255,261 ****
           --  First deal with function calls in Ada 95
  
           if Nkind (N) = N_Function_Call
!            and then Ada_Version < Ada_2005
           then
              --  With a return by reference, we either get the accessibility of
              --  the function or, in case of an indirect call, the accessibility
--- 288,294 ----
           --  First deal with function calls in Ada 95
  
           if Nkind (N) = N_Function_Call
!            and then Ada_Version <= Ada_95
           then
              --  With a return by reference, we either get the accessibility of
              --  the function or, in case of an indirect call, the accessibility
*************** package body Accessibility is
*** 336,344 ****
              --  access discriminant constraint of a return object (signified
              --  by In_Return_Context) on the side of the callee.
  
!             if Nkind (N) = N_Function_Call
!               and then (In_Return_Value (N) or else In_Return_Context)
!             then
                 declare
                    Extra_Formal : constant Entity_Id :=
                      Extra_Accessibility_Of_Result (Current_Subprogram);
--- 369,375 ----
              --  access discriminant constraint of a return object (signified
              --  by In_Return_Context) on the side of the callee.
  
!             if In_Return_Value (N) or else In_Return_Context then
                 declare
                    Extra_Formal : constant Entity_Id :=
                      Extra_Accessibility_Of_Result (Current_Subprogram);
*************** package body Accessibility is
*** 501,506 ****
--- 532,542 ----
        --  Perform the processing on the expression
  
        case Nkind (E) is
+          --  The accessibility level of the literal null is the library level
+ 
+          when N_Null =>
+             return Make_Level_Literal (Scope_Depth (Standard_Standard));
+ 
           --  The level of an aggregate is that of the innermost master that
           --  evaluates it as defined in RM 3.10.2 (10/4).
  
*************** package body Accessibility is
*** 545,553 ****
                          (Innermost_Master_Scope_Depth
                            (Enclosing_Declaration (Expr)));
  
!             --  Unchecked or unrestricted attributes have unlimited depth
  
              elsif Attribute_Name (E) in Name_Address
                                        | Name_Unchecked_Access
                                        | Name_Unrestricted_Access
              then
--- 581,591 ----
                          (Innermost_Master_Scope_Depth
                            (Enclosing_Declaration (Expr)));
  
!             --  Return the library level to null out the check for the Address,
!             --  Deref, Unchecked_Access and Unrestricted_Access attributes.
  
              elsif Attribute_Name (E) in Name_Address
+                                       | Name_Deref
                                        | Name_Unchecked_Access
                                        | Name_Unrestricted_Access
              then
*************** package body Accessibility is
*** 866,877 ****
                 if (In_Return_Value (E) or else In_Return_Context)
                   and then Level /= Dynamic_Level
                 then
!                   return Make_Level_Literal
!                            (Scope_Depth (Standard_Standard));
                 end if;
  
!                return Make_Level_Literal
!                         (Innermost_Master_Scope_Depth (Expr));
  
              --  Otherwise, continue recursing over the expression prefixes
  
--- 904,913 ----
                 if (In_Return_Value (E) or else In_Return_Context)
                   and then Level /= Dynamic_Level
                 then
!                   return Make_Level_Literal (Scope_Depth (Standard_Standard));
                 end if;
  
!                return Make_Level_Literal (Innermost_Master_Scope_Depth (Expr));
  
              --  Otherwise, continue recursing over the expression prefixes
  
*************** package body Accessibility is
*** 948,1066 ****
        end case;
     end Accessibility_Level;
  
-    -------------------------------
-    -- Apply_Accessibility_Check --
-    -------------------------------
- 
-    procedure Apply_Accessibility_Check
-      (N           : Node_Id;
-       Typ         : Entity_Id;
-       Insert_Node : Node_Id)
-    is
-       Loc : constant Source_Ptr := Sloc (N);
- 
-       Check_Cond  : Node_Id;
-       Param_Ent   : Entity_Id := Param_Entity (N);
-       Param_Level : Node_Id;
-       Type_Level  : Node_Id;
- 
-    begin
-       --  Verify we haven't tried to add a dynamic accessibility check when we
-       --  shouldn't.
- 
-       pragma Assert (not No_Dynamic_Accessibility_Checks_Enabled (N));
- 
-       if Ada_Version >= Ada_2012
-          and then No (Param_Ent)
-          and then Is_Entity_Name (N)
-          and then Ekind (Entity (N)) in E_Constant | E_Variable
-          and then Present (Effective_Extra_Accessibility (Entity (N)))
-       then
-          Param_Ent := Entity (N);
-          while Present (Renamed_Object (Param_Ent)) loop
-             --  Renamed_Object must return an Entity_Name here
-             --  because of preceding "Present (E_E_A (...))" test.
- 
-             Param_Ent := Entity (Renamed_Object (Param_Ent));
-          end loop;
-       end if;
- 
-       if Inside_A_Generic then
-          return;
- 
-       --  Only apply the run-time check if the access parameter has an
-       --  associated extra access level parameter and when accessibility checks
-       --  are enabled.
- 
-       elsif Present (Param_Ent)
-          and then Present (Get_Dynamic_Accessibility (Param_Ent))
-          and then not Accessibility_Checks_Suppressed (Param_Ent)
-          and then not Accessibility_Checks_Suppressed (Typ)
-       then
-          --  Obtain the parameter's accessibility level
- 
-          Param_Level :=
-            New_Occurrence_Of (Get_Dynamic_Accessibility (Param_Ent), Loc);
- 
-          --  Use the dynamic accessibility parameter for the function's result
-          --  when one has been created instead of statically referring to the
-          --  deepest type level so as to appropriatly handle the rules for
-          --  RM 3.10.2 (10.1/3).
- 
-          if Ekind (Scope (Param_Ent)) = E_Function
-            and then In_Return_Value (N)
-            and then Ekind (Typ) = E_Anonymous_Access_Type
-          then
-             --  Associate the level of the result type to the extra result
-             --  accessibility parameter belonging to the current function.
- 
-             if Present (Extra_Accessibility_Of_Result (Scope (Param_Ent))) then
-                Type_Level :=
-                  New_Occurrence_Of
-                    (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
- 
-             --  In Ada 2005 and earlier modes, a result extra accessibility
-             --  parameter is not generated and no dynamic check is performed.
- 
-             else
-                return;
-             end if;
- 
-          --  Otherwise get the type's accessibility level normally
- 
-          else
-             Type_Level :=
-               Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
-          end if;
- 
-          --  Raise Program_Error if the accessibility level of the access
-          --  parameter is deeper than the level of the target access type.
- 
-          Check_Cond :=
-            Make_Op_Gt (Loc,
-              Left_Opnd  => Param_Level,
-              Right_Opnd => Type_Level);
- 
-          Insert_Action (Insert_Node,
-            Make_Raise_Program_Error (Loc,
-              Condition => Check_Cond,
-              Reason    => PE_Accessibility_Check_Failed));
- 
-          Analyze_And_Resolve (N);
- 
-          --  If constant folding has happened on the condition for the
-          --  generated error, then warn about it being unconditional.
- 
-          if Nkind (Check_Cond) = N_Identifier
-            and then Entity (Check_Cond) = Standard_True
-          then
-             Error_Msg_Warn := SPARK_Mode /= On;
-             Error_Msg_N ("accessibility check fails<<", N);
-             Error_Msg_N ("\Program_Error [<<", N);
-          end if;
-       end if;
-    end Apply_Accessibility_Check;
- 
     ---------------------------------------------
     -- Apply_Accessibility_Check_For_Allocator --
     ---------------------------------------------
--- 984,989 ----
*************** package body Accessibility is
*** 1250,1255 ****
--- 1173,1696 ----
        end if;
     end Apply_Accessibility_Check_For_Allocator;
  
+    ----------------------------------------------------
+    -- Apply_Accessibility_Check_For_Anonymous_Return --
+    ----------------------------------------------------
+ 
+    procedure Apply_Accessibility_Check_For_Anonymous_Return
+      (Exp         : Node_Id;
+       Func        : Entity_Id;
+       Insert_Node : Node_Id)
+    is
+       Loc : constant Source_Ptr := Sloc (Exp);
+ 
+       function Has_Level_Tied_To_Explicitly_Aliased_Parameter
+         (Exp : Node_Id) return Boolean;
+       --  Exp is an anonymous access value. Return True iff the accessibility
+       --  of the type of Exp is the level of an explicitly aliased parameter
+       --  of Func. If true, this indicates that no check should be performed
+       --  for Exp.
+ 
+       -----------------------------------------------------
+       --  Has_Level_Tied_To_Explicitly_Aliased_Parameter --
+       -----------------------------------------------------
+ 
+       function Has_Level_Tied_To_Explicitly_Aliased_Parameter
+         (Exp : Node_Id) return Boolean
+       is
+          E, P : Node_Id;
+ 
+       begin
+          E := Exp;
+ 
+          --  Look through constants
+ 
+          while Is_Entity_Name (E)
+            and then Ekind (Entity (E)) = E_Constant
+            and then Present (Constant_Value (Entity (E)))
+          loop
+             E := Constant_Value (Entity (E));
+          end loop;
+ 
+          if Nkind (E) = N_Attribute_Reference
+            and then Get_Attribute_Id (Attribute_Name (E)) = Attribute_Access
+          then
+             P := Ultimate_Prefix (E);
+             if Is_Entity_Name (P)
+               and then Is_Explicitly_Aliased (Entity (P))
+               and then Scope (Entity (P)) = Func
+             then
+                return True;
+             end if;
+          end if;
+ 
+          return False;
+       end Has_Level_Tied_To_Explicitly_Aliased_Parameter;
+ 
+    --  Start of processing for Apply_Accessibility_Check_For_Anonymous_Return
+ 
+    begin
+       if Present (Extra_Accessibility_Of_Result (Func))
+         and then not Has_Level_Tied_To_Explicitly_Aliased_Parameter (Exp)
+       then
+          declare
+             Discrim_Level : constant Node_Id :=
+               Accessibility_Level (Expr              => Exp,
+                                    Level             => Dynamic_Level,
+                                    In_Return_Context => True);
+ 
+          begin
+             if Nkind (Discrim_Level) = N_Integer_Literal
+               and then Intval (Discrim_Level) > Scope_Depth (Func)
+             then
+                Error_Msg_N
+                  ("level of type of access value of return expression "
+                   & "is statically too deep",
+                   Enclosing_Declaration_Or_Statement (Exp));
+             end if;
+ 
+             Insert_Action (Insert_Node,
+               Make_Raise_Program_Error (Loc,
+                 Condition =>
+                   Make_Op_Gt (Loc,
+                     Left_Opnd  => Discrim_Level,
+                     Right_Opnd => New_Occurrence_Of
+                       (Extra_Accessibility_Of_Result (Func), Loc)),
+                 Reason    => PE_Accessibility_Check_Failed),
+               Suppress => Access_Check);
+          end;
+       end if;
+    end Apply_Accessibility_Check_For_Anonymous_Return;
+ 
+    -----------------------------------------------------
+    -- Apply_Accessibility_Check_For_Class_Wide_Return --
+    -----------------------------------------------------
+ 
+    procedure Apply_Accessibility_Check_For_Class_Wide_Return
+      (Exp  : Node_Id;
+       Func : Entity_Id)
+    is
+       Loc : constant Source_Ptr := Sloc (Exp);
+ 
+    begin
+        --  CodePeer does not do anything useful on Ada.Tags.Type_Specific_Data
+        --  components.
+ 
+       if Ada_Version >= Ada_2005
+         and then not CodePeer_Mode
+         and then Tagged_Type_Expansion
+         and then
+           (Is_Class_Wide_Type (Etype (Exp))
+             or else Nkind (Exp) in
+                       N_Type_Conversion | N_Unchecked_Type_Conversion
+             or else (Is_Entity_Name (Exp)
+                       and then Is_Formal (Entity (Exp)))
+             or else Scope_Depth (Enclosing_Dynamic_Scope (Etype (Exp))) >
+                       Subprogram_Access_Level (Func))
+       then
+          declare
+             Tag_Node : Node_Id;
+ 
+          begin
+             --  Ada 2005 (AI-251): In class-wide interface objects we displace
+             --  "this" to reference the base of the object. This is required to
+             --  get access to the TSD of the object.
+ 
+             if Is_Class_Wide_Type (Etype (Exp))
+               and then Is_Interface (Etype (Exp))
+             then
+                --  If the expression is an explicit dereference then we can
+                --  directly displace the pointer to reference the base of
+                --  the object.
+ 
+                if Nkind (Exp) = N_Explicit_Dereference then
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name                   =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Unchecked_Convert_To (RTE (RE_Address),
+                                 Duplicate_Subexpr (Prefix (Exp)))))));
+ 
+                --  Similar case to the previous one but the expression is a
+                --  renaming of an explicit dereference.
+ 
+                elsif Nkind (Exp) = N_Identifier
+                  and then Present (Renamed_Object (Entity (Exp)))
+                  and then Nkind (Renamed_Object (Entity (Exp)))
+                             = N_Explicit_Dereference
+                then
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name                   =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Unchecked_Convert_To (RTE (RE_Address),
+                                 Duplicate_Subexpr
+                                   (Prefix
+                                     (Renamed_Object (Entity (Exp)))))))));
+ 
+                --  Common case: obtain the address of the actual object and
+                --  displace the pointer to reference the base of the object.
+ 
+                else
+                   Tag_Node :=
+                     Make_Explicit_Dereference (Loc,
+                       Prefix =>
+                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                           Make_Function_Call (Loc,
+                             Name               =>
+                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                             Parameter_Associations => New_List (
+                               Make_Attribute_Reference (Loc,
+                                 Prefix         => Duplicate_Subexpr (Exp),
+                                 Attribute_Name => Name_Address)))));
+                end if;
+             else
+                Tag_Node :=
+                  Make_Attribute_Reference (Loc,
+                    Prefix         => Duplicate_Subexpr (Exp),
+                    Attribute_Name => Name_Tag);
+             end if;
+ 
+             --  Suppress junk access chacks on RE_Tag_Ptr
+ 
+             Insert_Action (Exp,
+               Make_Raise_Program_Error (Loc,
+                 Condition =>
+                   Make_Op_Gt (Loc,
+                     Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
+                     Right_Opnd =>
+                       Make_Integer_Literal (Loc,
+                         Subprogram_Access_Level (Func))),
+                 Reason    => PE_Accessibility_Check_Failed),
+               Suppress => Access_Check);
+          end;
+       end if;
+    end Apply_Accessibility_Check_For_Class_Wide_Return;
+ 
+    --------------------------------------------------------
+    -- Apply_Accessibility_Check_For_Discriminated_Return --
+    --------------------------------------------------------
+ 
+    --  A case that is not addressed today is the case where we need to check
+    --  an access discriminant subcomponent of the function result other than
+    --  a discriminant of the function result. This case can only happen if the
+    --  function result type has an unconstrained subcomponent subtype that has
+    --  an access discriminant (which implies that the function result type must
+    --  be limited).
+ 
+    --  A further corner case of that corner case arises if the limited result
+    --  type is class-wide and it is not known statically whether this access
+    --  discriminant subcomponent exists. The easiest way to address it properly
+    --  would probably involve adding a compiler-generated dispatching procedure
+    --  and a dispatching call could be used to perform the check in a context
+    --  where we know statically the specific type of the function result.
+    --  Finding a less important unimplemented case would be challenging.
+ 
+    procedure Apply_Accessibility_Check_For_Discriminated_Return
+      (Exp : Node_Id; Func : Entity_Id)
+    is
+       Loc : constant Source_Ptr := Sloc (Exp);
+ 
+       function Constraint_Bearing_Subtype_If_Any
+         (Exp : Node_Id) return Node_Id;
+       --  If we can locate a constrained subtype whose constraint applies
+       --  to Exp, then return that. Otherwise, return Etype (Exp).
+ 
+       function Discr_Expression
+         (Typ : Entity_Id; Discr_Index : Positive) return Node_Id;
+       --  Typ is a constrained discriminated subtype.
+       --  Return the constraint expression for the indexed discriminant.
+ 
+       ---------------------------------------
+       -- Constraint_Bearing_Subtype_If_Any --
+       ---------------------------------------
+ 
+       function Constraint_Bearing_Subtype_If_Any
+         (Exp : Node_Id) return Entity_Id
+       is
+          Result : Entity_Id := Etype (Exp);
+ 
+       begin
+          if Is_Constrained (Result) then
+             return Result;
+          end if;
+ 
+          --  Look through expansion-generated levels of indirection
+          --  to find a constrained subtype. Yuck. This comes up in
+          --  some cases when the unexpanded source returns an aggregate.
+ 
+          if Nkind (Exp) = N_Explicit_Dereference then
+             declare
+                P : Node_Id := Prefix (Exp);
+ 
+             begin
+                while Is_Entity_Name (P)
+                  and then Ekind (Entity (P)) = E_Constant
+                  and then Present (Constant_Value (Entity (P)))
+                loop
+                   P := Constant_Value (Entity (P));
+                end loop;
+ 
+                if Nkind (P) = N_Allocator
+                  and then Nkind (Expression (P)) = N_Qualified_Expression
+                then
+                   Result := Etype (Expression (P));
+                end if;
+             end;
+          end if;
+ 
+          if Is_Constrained (Result) then
+             return Result;
+          end if;
+ 
+          --  No constrained subtype found
+ 
+          return Etype (Exp);
+       end Constraint_Bearing_Subtype_If_Any;
+ 
+       ----------------------
+       -- Discr_Expression --
+       ----------------------
+ 
+       function Discr_Expression
+         (Typ : Entity_Id; Discr_Index : Positive) return Node_Id
+       is
+          Constraint_Elmt : Elmt_Id :=
+            First_Elmt (Discriminant_Constraint (Typ));
+       begin
+          for Skip in 1 .. Discr_Index - 1 loop
+             Next_Elmt (Constraint_Elmt);
+          end loop;
+ 
+          return Node (Constraint_Elmt);
+       end Discr_Expression;
+ 
+       --  Local variables
+ 
+       Constrained_Subtype : constant Entity_Id :=
+                               Constraint_Bearing_Subtype_If_Any (Exp);
+ 
+       Discr       : Entity_Id := First_Discriminant (Etype (Func));
+       Discr_Index : Positive  := 1;
+       Discr_Exp   : Node_Id;
+ 
+    --  Start of Apply_Accessibility_Check_For_Discriminated_Return
+ 
+    begin
+       --  ??? Do not generate a check if version is Ada 95 (or earlier).
+       --  It is unclear whether this is really correct, or is just a stopgap
+       --  measure. Investigation is needed to decide how post-Ada-95 binding
+       --  interpretation changes in RM 3.10.2 should interact with Ada 95's
+       --  return-by-reference model for functions with limited result types
+       --  (which was abandoned in Ada 2005).
+ 
+       if Ada_Version <= Ada_95 then
+          return;
+       end if;
+ 
+       --  If we are returning a function call then that function will
+       --  perform the needed check.
+ 
+       if Nkind (Unqualify (Exp)) = N_Function_Call then
+          return;
+       end if;
+ 
+      --  ??? Cope with the consequences of the Disable_Tagged_Cases flag
+      --  in accessibility.adb (which can cause the extra formal parameter
+      --  needed for the check(s) generated here to be missing in the case
+      --  of a tagged result type); this is a workaround and can
+      --  prevent generation of a required check (or even a required
+      --  legality check - see "statically too deep" check below).
+ 
+       if No (Extra_Accessibility_Of_Result (Func)) then
+          return;
+       end if;
+ 
+       Remove_Side_Effects (Exp);
+ 
+       while Present (Discr) loop
+          if Is_Anonymous_Access_Type (Etype (Discr)) then
+             if Is_Constrained (Constrained_Subtype) then
+                Discr_Exp :=
+                  New_Copy_Tree
+                    (Discr_Expression (Constrained_Subtype, Discr_Index));
+             else
+                Discr_Exp :=
+                  Make_Selected_Component (Loc,
+                    Prefix => New_Copy_Tree (Exp),
+                    Selector_Name => New_Occurrence_Of (Discr, Loc));
+             end if;
+ 
+             Analyze (Discr_Exp);
+ 
+             Apply_Accessibility_Check_For_Anonymous_Return
+               (Discr_Exp, Func, Exp);
+          end if;
+ 
+          Next_Discriminant (Discr);
+          Discr_Index := Discr_Index + 1;
+       end loop;
+    end Apply_Accessibility_Check_For_Discriminated_Return;
+ 
+    ---------------------------------------------
+    -- Apply_Accessibility_Check_For_Parameter --
+    ---------------------------------------------
+ 
+    procedure Apply_Accessibility_Check_For_Parameter
+      (N           : Node_Id;
+       Typ         : Entity_Id;
+       Insert_Node : Node_Id)
+    is
+       Loc : constant Source_Ptr := Sloc (N);
+ 
+       Check_Cond  : Node_Id;
+       Param_Ent   : Entity_Id := Param_Entity (N);
+       Param_Level : Node_Id;
+       Type_Level  : Node_Id;
+ 
+    begin
+       --  Verify we haven't tried to add a dynamic accessibility check when we
+       --  shouldn't.
+ 
+       pragma Assert (not No_Dynamic_Accessibility_Checks_Enabled (N));
+ 
+       if Ada_Version >= Ada_2012
+          and then No (Param_Ent)
+          and then Is_Entity_Name (N)
+          and then Ekind (Entity (N)) in E_Constant | E_Variable
+          and then Present (Effective_Extra_Accessibility (Entity (N)))
+       then
+          Param_Ent := Entity (N);
+          while Present (Renamed_Object (Param_Ent)) loop
+             --  Renamed_Object must return an Entity_Name here
+             --  because of preceding "Present (E_E_A (...))" test.
+ 
+             Param_Ent := Entity (Renamed_Object (Param_Ent));
+          end loop;
+       end if;
+ 
+       if Inside_A_Generic then
+          return;
+ 
+       --  Only apply the run-time check if the access parameter has an
+       --  associated extra access level parameter and when accessibility checks
+       --  are enabled.
+ 
+       elsif Present (Param_Ent)
+          and then Present (Get_Dynamic_Accessibility (Param_Ent))
+          and then not Accessibility_Checks_Suppressed (Param_Ent)
+          and then not Accessibility_Checks_Suppressed (Typ)
+       then
+          --  Obtain the parameter's accessibility level
+ 
+          Param_Level :=
+            New_Occurrence_Of (Get_Dynamic_Accessibility (Param_Ent), Loc);
+ 
+          --  Use the dynamic accessibility parameter for the function's result
+          --  when one has been created instead of statically referring to the
+          --  deepest type level so as to appropriatly handle the rules for
+          --  RM 3.10.2 (10.1/3).
+ 
+          if Ekind (Scope (Param_Ent)) = E_Function
+            and then In_Return_Value (N)
+            and then Ekind (Typ) = E_Anonymous_Access_Type
+          then
+             --  Associate the level of the result type to the extra result
+             --  accessibility parameter belonging to the current function.
+ 
+             if Present (Extra_Accessibility_Of_Result (Scope (Param_Ent))) then
+                Type_Level :=
+                  New_Occurrence_Of
+                    (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
+ 
+             --  In Ada 2005 and earlier modes, a result extra accessibility
+             --  parameter is not generated and no dynamic check is performed.
+ 
+             else
+                return;
+             end if;
+ 
+          --  Otherwise get the type's accessibility level normally
+ 
+          else
+             Type_Level :=
+               Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
+          end if;
+ 
+          --  Raise Program_Error if the accessibility level of the access
+          --  parameter is deeper than the level of the target access type.
+ 
+          Check_Cond :=
+            Make_Op_Gt (Loc,
+              Left_Opnd  => Param_Level,
+              Right_Opnd => Type_Level);
+ 
+          Insert_Action (Insert_Node,
+            Make_Raise_Program_Error (Loc,
+              Condition => Check_Cond,
+              Reason    => PE_Accessibility_Check_Failed));
+ 
+          Analyze_And_Resolve (N);
+ 
+          --  If constant folding has happened on the condition for the
+          --  generated error, then warn about it being unconditional.
+ 
+          if Nkind (Check_Cond) = N_Identifier
+            and then Entity (Check_Cond) = Standard_True
+          then
+             Error_Msg_Warn := SPARK_Mode /= On;
+             Error_Msg_N ("accessibility check fails<<", N);
+             Error_Msg_N ("\Program_Error [<<", N);
+          end if;
+       end if;
+    end Apply_Accessibility_Check_For_Parameter;
+ 
+    ------------------------------------------
+    -- Apply_Accessibility_Check_For_Return --
+    ------------------------------------------
+ 
+    procedure Apply_Accessibility_Check_For_Return
+      (Exp  : Node_Id;
+       Func : Entity_Id)
+    is
+       Typ : constant Entity_Id := Etype (Func);
+ 
+    begin
+       --  Return immediately if accessiblity checks are suppressed for Func
+ 
+       if Accessibility_Checks_Suppressed (Func) then
+          return;
+       end if;
+ 
+       --  Ada 2005 (AI95-344): If the result type is class-wide, then insert
+       --  a check that the level of the return expression's underlying type
+       --  is not deeper than the level of the master enclosing the function.
+ 
+       if Is_Class_Wide_Type (Typ) then
+          Apply_Accessibility_Check_For_Class_Wide_Return (Exp, Func);
+ 
+       --  Check that the access result does not designate an entity that
+       --  the function result could outlive.
+ 
+       elsif Ekind (Typ) = E_Anonymous_Access_Type then
+          Apply_Accessibility_Check_For_Anonymous_Return (Exp, Func, Exp);
+ 
+       --  Check that result's access discriminants (if any) do not designate
+       --  entities that the function result could outlive.
+ 
+       elsif Has_Anonymous_Access_Discriminant (Typ) then
+          Apply_Accessibility_Check_For_Discriminated_Return (Exp, Func);
+       end if;
+    end Apply_Accessibility_Check_For_Return;
+ 
     ------------------------------------------
     -- Check_Return_Construct_Accessibility --
     ------------------------------------------
*************** package body Accessibility is
*** 1958,1975 ****
        return False;
     end Has_Unconstrained_Access_Discriminants;
  
!    --------------------------------
!    -- Is_Anonymous_Access_Actual --
!    --------------------------------
  
!    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean is
        Par : Node_Id;
     begin
!       if Ekind (Etype (N)) /= E_Anonymous_Access_Type then
           return False;
        end if;
  
!       Par := Parent (N);
        while Present (Par)
          and then Nkind (Par) in N_Case_Expression
                                | N_If_Expression
--- 2399,2418 ----
        return False;
     end Has_Unconstrained_Access_Discriminants;
  
!    ---------------------------------------------
!    -- Needs_Accessibility_Level_Temp_Or_Check --
!    ---------------------------------------------
  
!    function Needs_Accessibility_Level_Temp_Or_Check
!      (Conditional_Expr : Node_Id) return Boolean
!    is
        Par : Node_Id;
     begin
!       if Ekind (Etype (Conditional_Expr)) /= E_Anonymous_Access_Type then
           return False;
        end if;
  
!       Par := Parent (Conditional_Expr);
        while Present (Par)
          and then Nkind (Par) in N_Case_Expression
                                | N_If_Expression
*************** package body Accessibility is
*** 1977,1984 ****
        loop
           Par := Parent (Par);
        end loop;
!       return Nkind (Par) in N_Subprogram_Call;
!    end Is_Anonymous_Access_Actual;
  
     --------------------------------------
     -- Needs_Result_Accessibility_Level --
--- 2420,2428 ----
        loop
           Par := Parent (Par);
        end loop;
! 
!       return Nkind (Par) in N_Subprogram_Call | N_Assignment_Statement;
!    end Needs_Accessibility_Level_Temp_Or_Check;
  
     --------------------------------------
     -- Needs_Result_Accessibility_Level --
*************** package body Accessibility is
*** 2213,2220 ****
        In_Return_Context : Boolean := False) return Uint
     is
     begin
!       return Intval
!                (Accessibility_Level (Expr, Level, In_Return_Context));
     end Static_Accessibility_Level;
  
     -----------------------
--- 2657,2663 ----
        In_Return_Context : Boolean := False) return Uint
     is
     begin
!       return Intval (Accessibility_Level (Expr, Level, In_Return_Context));
     end Static_Accessibility_Level;
  
     -----------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/accessibility.ads gcc-17-20260531/gcc/ada/accessibility.ads
*** gcc-17-20260524/gcc/ada/accessibility.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/accessibility.ads	Sun May 31 22:32:04 2026
*************** package Accessibility is
*** 45,54 ****
     --  When in the context of the function Accessibility_Level,
     --  Accessibility_Level_Kind signals what type of accessibility level to
     --  obtain. For example, when Level is Dynamic_Level, a defining identifier
!    --  associated with a SAOOAAT may be returned or an N_Integer_Literal node.
     --  When the level is Object_Decl_Level, an N_Integer_Literal node is
     --  returned containing the level of the declaration of the object if
!    --  relevant (be it a SAOOAAT or otherwise). Finally, Zero_On_Dynamic_Level
     --  returns library level for all cases where the accessibility level is
     --  dynamic (used to bypass static accessibility checks in dynamic cases).
  
--- 45,54 ----
     --  When in the context of the function Accessibility_Level,
     --  Accessibility_Level_Kind signals what type of accessibility level to
     --  obtain. For example, when Level is Dynamic_Level, a defining identifier
!    --  associated with a saooaaat may be returned or an N_Integer_Literal node.
     --  When the level is Object_Decl_Level, an N_Integer_Literal node is
     --  returned containing the level of the declaration of the object if
!    --  relevant (be it a saooaaat or otherwise). Finally, Zero_On_Dynamic_Level
     --  returns library level for all cases where the accessibility level is
     --  dynamic (used to bypass static accessibility checks in dynamic cases).
  
*************** package Accessibility is
*** 68,83 ****
     --  The Allow_Alt_Model parameter allows the alternative level calculation
     --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
  
-    procedure Apply_Accessibility_Check
-      (N           : Node_Id;
-       Typ         : Entity_Id;
-       Insert_Node : Node_Id);
-    --  Given a name N denoting an access parameter, emits a run-time
-    --  accessibility check (if necessary), checking that the level of
-    --  the object denoted by the access parameter is not deeper than the
-    --  level of the type Typ. Program_Error is raised if the check fails.
-    --  Insert_Node indicates the node where the check should be inserted.
- 
     procedure Apply_Accessibility_Check_For_Allocator
       (N              : Node_Id;
        Exp            : Node_Id;
--- 68,73 ----
*************** package Accessibility is
*** 109,114 ****
--- 99,119 ----
     --  case seems to be an actual gap in the language rules that needs to
     --  be fixed by the ARG. ???
  
+    procedure Apply_Accessibility_Check_For_Parameter
+      (N           : Node_Id;
+       Typ         : Entity_Id;
+       Insert_Node : Node_Id);
+    --  Given a name N denoting an access parameter, insert a run-time check
+    --  that the accessibility level of the object denoted by the parameter
+    --  is not deeper than the level of the type Typ. Insert_Node indicates
+    --  the node where the check should be inserted.
+ 
+    procedure Apply_Accessibility_Check_For_Return
+      (Exp  : Node_Id;
+       Func : Entity_Id);
+    --  Insert the required run-time accessibility checks for an expression Exp
+    --  that is being returned from function Func.
+ 
     procedure Check_Return_Construct_Accessibility
       (Return_Stmt : Node_Id;
        Stm_Entity  : Entity_Id);
*************** package Accessibility is
*** 131,138 ****
     --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
  
     function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
!    --  Same as Einfo.Extra_Accessibility except thtat object renames
!    --  are looked through.
  
     function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
     --  Obtain the accessibility level for a given entity formal taking into
--- 136,142 ----
     --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
  
     function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
!    --  Same as Extra_Accessibility in Einfo, but looks through object renamings
  
     function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
     --  Obtain the accessibility level for a given entity formal taking into
*************** package Accessibility is
*** 178,186 ****
     --  Returns True if the given subtype is unconstrained and has one or more
     --  access discriminants.
  
!    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean;
!    --  Determine if N is used as an actual for a call whose corresponding
!    --  formal is of an anonymous access type.
  
     function Needs_Result_Accessibility_Level
       (Func_Id : Entity_Id) return Boolean;
--- 182,194 ----
     --  Returns True if the given subtype is unconstrained and has one or more
     --  access discriminants.
  
!    function Needs_Accessibility_Level_Temp_Or_Check
!      (Conditional_Expr : Node_Id) return Boolean;
!    --  Determine whether a conditional expression occurs in a context that
!    --  requires either an associated accessibility-level-valued temp (which
!    --  is assigned to in each arm of the conditional expression) or an
!    --  accessibility level check (which is pushed down into each arm of the
!    --  conditional expression).
  
     function Needs_Result_Accessibility_Level
       (Func_Id : Entity_Id) return Boolean;
diff -Nrcpad gcc-17-20260524/gcc/ada/adaint.c gcc-17-20260531/gcc/ada/adaint.c
*** gcc-17-20260524/gcc/ada/adaint.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/adaint.c	Sun May 31 22:32:04 2026
*************** __gnat_set_OWNER_ACL (TCHAR *wname,
*** 2050,2056 ****
  
    if (AccessMode == SET_ACCESS)
      {
!       /*  SET_ACCESS, we want to set an explicte set of permissions, do not
  	  merge with current DACL.  */
        if (SetEntriesInAcl (1, &ea, NULL, &pNewDACL) != ERROR_SUCCESS)
  	return;
--- 2050,2056 ----
  
    if (AccessMode == SET_ACCESS)
      {
!       /*  SET_ACCESS, we want to set an explicit set of permissions, do not
  	  merge with current DACL.  */
        if (SetEntriesInAcl (1, &ea, NULL, &pNewDACL) != ERROR_SUCCESS)
  	return;
*************** __gnat_copy_attribs (char *from ATTRIBUT
*** 3240,3280 ****
    TCHAR wfrom [GNAT_MAX_PATH_LEN + 2];
    TCHAR wto [GNAT_MAX_PATH_LEN + 2];
    BOOL res;
!   FILETIME fct, flat, flwt;
!   HANDLE hfrom, hto;
  
    S2WSC (wfrom, from, GNAT_MAX_PATH_LEN + 2);
    S2WSC (wto, to, GNAT_MAX_PATH_LEN + 2);
  
!   /*  Do we need to copy the timestamp ? */
  
    if (mode != 2) {
!      /* retrieve from times */
! 
!      hfrom = CreateFile
!        (wfrom, GENERIC_READ, 0, NULL, OPEN_EXISTING,
!         FILE_ATTRIBUTE_NORMAL, NULL);
! 
!      if (hfrom == INVALID_HANDLE_VALUE)
!        return -1;
! 
!      res = GetFileTime (hfrom, &fct, &flat, &flwt);
! 
!      CloseHandle (hfrom);
! 
!      if (res == 0)
!        return -1;
! 
!      /* retrieve from times */
  
       hto = CreateFile
!        (wto, GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
          FILE_ATTRIBUTE_NORMAL, NULL);
  
       if (hto == INVALID_HANDLE_VALUE)
         return -1;
  
!      res = SetFileTime (hto, NULL, &flat, &flwt);
  
       CloseHandle (hto);
  
--- 3240,3267 ----
    TCHAR wfrom [GNAT_MAX_PATH_LEN + 2];
    TCHAR wto [GNAT_MAX_PATH_LEN + 2];
    BOOL res;
!   HANDLE hto;
  
    S2WSC (wfrom, from, GNAT_MAX_PATH_LEN + 2);
    S2WSC (wto, to, GNAT_MAX_PATH_LEN + 2);
  
!   WIN32_FILE_ATTRIBUTE_DATA info;
!   res = GetFileAttributesEx(wfrom, GetFileExInfoStandard, &info);
!   if (res == 0)
!     return -1;
  
    if (mode != 2) {
!      /* Mode is not "None", copy timestamps */
  
       hto = CreateFile
!        (wto, FILE_WRITE_ATTRIBUTES, 0, NULL, OPEN_EXISTING,
          FILE_ATTRIBUTE_NORMAL, NULL);
  
       if (hto == INVALID_HANDLE_VALUE)
         return -1;
  
!      res = SetFileTime
!        (hto, NULL, &info.ftCreationTime, &info.ftLastAccessTime);
  
       CloseHandle (hto);
  
*************** __gnat_copy_attribs (char *from ATTRIBUT
*** 3282,3301 ****
         return -1;
    }
  
!   /* Do we need to copy the permissions ? */
!   /* Set file attributes in full mode. */
! 
!   if (mode != 0)
!     {
!       DWORD attribs = GetFileAttributes (wfrom);
  
!       if (attribs == INVALID_FILE_ATTRIBUTES)
! 	return -1;
  
!       res = SetFileAttributes (wto, attribs);
!       if (res == 0)
! 	return -1;
!     }
  
    return 0;
  
--- 3269,3282 ----
         return -1;
    }
  
!   if (mode != 0) {
!     /* Mode is not "Time_Stamps", copy file attributes. */
  
!     res = SetFileAttributes (wto, info.dwFileAttributes);
  
!     if (res == 0)
!       return -1;
!   }
  
    return 0;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/argv-lynxos178-raven-cert.c gcc-17-20260531/gcc/ada/argv-lynxos178-raven-cert.c
*** gcc-17-20260524/gcc/ada/argv-lynxos178-raven-cert.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/argv-lynxos178-raven-cert.c	Sun May 31 22:32:04 2026
***************
*** 48,60 ****
  extern "C" {
  #endif
  
! /* argc and argv of the main program are saved under gnat_argc and gnat_argv,
!    envp of the main program is saved under gnat_envp.
!    While gnat_argc and gnat_envp are not needed, they are referenced from
!    the binder-generated file so they need to be defined here */
  
  int gnat_argc = 0;
  char **gnat_argv = NULL;
  char **gnat_envp = NULL;
  
  int
--- 48,69 ----
  extern "C" {
  #endif
  
! /* argc and argv of the main program are saved under gnat_argc and gnat_argv.
!    While gnat_argc is not needed, it's referenced from the binder-generated
!    file so it needs to be defined here */
  
  int gnat_argc = 0;
  char **gnat_argv = NULL;
+ 
+ /* It used to be the case that users were required to forward the envp
+    parameter of main to the variable below when using a non-Ada main. The
+    consequences for failing to meet the requirement was improper operation of
+    Ada.Command_Line.Environment.
+ 
+    Today, users are not required to do anything with gnat_envp and
+    Ada.Command_Line.Environment does not use it anymore. In fact it's not used
+    by anything, but we keep its definition so that programs that obey the old
+    requirement keep linking. */
  char **gnat_envp = NULL;
  
  int
diff -Nrcpad gcc-17-20260524/gcc/ada/argv.c gcc-17-20260531/gcc/ada/argv.c
*** gcc-17-20260524/gcc/ada/argv.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/argv.c	Sun May 31 22:32:04 2026
***************
*** 37,47 ****
     gnat_argv are the values as modified by toplev, and these routines
     are accessed from the Osint package.  */
  
- /* Also routines for accessing the environment from the runtime library.
-    Gnat_envp is the original envp value as stored by the binder generated
-    main program, and these routines are accessed from the
-    Ada.Command_Line.Environment package.  */
- 
  #ifdef IN_RTS
  #include "runtime.h"
  #include <stdlib.h>
--- 37,42 ----
***************
*** 59,78 ****
  extern "C" {
  #endif
  
! /* argc and argv of the main program are saved under gnat_argc and gnat_argv,
!    envp of the main program is saved under gnat_envp.  */
  
  int gnat_argc = 0;
  char **gnat_argv = NULL;
- char **gnat_envp = NULL;
- 
- #if defined (_WIN32) && !defined (RTX)
- /* Note that on Windows environment the environ point to a buffer that could
-    be reallocated if needed. It means that gnat_envp needs to be updated
-    before using gnat_envp to point to the right environment space */
- /* for the environ variable definition */
- #define gnat_envp (environ)
- #endif
  
  int
  __gnat_arg_count (void)
--- 54,63 ----
  extern "C" {
  #endif
  
! /* argc and argv of the main program are saved under gnat_argc and gnat_argv */
  
  int gnat_argc = 0;
  char **gnat_argv = NULL;
  
  int
  __gnat_arg_count (void)
*************** __gnat_fill_arg (char *a, int i)
*** 96,127 ****
      memcpy (a, gnat_argv[i], strlen (gnat_argv[i]));
  }
  
- int
- __gnat_env_count (void)
- {
-   int i;
- 
-   for (i = 0; gnat_envp[i]; i++)
-     ;
-   return i;
- }
- 
- int
- __gnat_len_env (int env_num)
- {
-   if (gnat_envp != NULL)
-     return strlen (gnat_envp[env_num]);
-   else
-     return 0;
- }
- 
- void
- __gnat_fill_env (char *a, int i)
- {
-   if (gnat_envp != NULL)
-     memcpy (a, gnat_envp[i], strlen (gnat_envp[i]));
- }
- 
  #ifdef __cplusplus
  }
  #endif
--- 81,86 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/aspects.adb gcc-17-20260531/gcc/ada/aspects.adb
*** gcc-17-20260524/gcc/ada/aspects.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/aspects.adb	Sun May 31 22:32:04 2026
***************
*** 24,30 ****
  ------------------------------------------------------------------------------
  
  with Atree;          use Atree;
- with Debug;          use Debug;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
  with Nlists;         use Nlists;
--- 24,29 ----
*************** package body Aspects is
*** 279,292 ****
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id is
     begin
-       --  Aspect Unsigned_Base_Range temporarily disabled
- 
-       if Name = Name_Unsigned_Base_Range
-         and then not Debug_Flag_Dot_U
-       then
-          return No_Aspect;
-       end if;
- 
        return Aspect_Id_Hash_Table.Get (Name);
     end Get_Aspect_Id;
  
--- 278,283 ----
*************** package body Aspects is
*** 306,312 ****
        Class_Present : Boolean := False) return Boolean
     is
     begin
!       return Present (Find_Aspect (Id, A, Class_Present => Class_Present));
     end Has_Aspect;
  
     function Has_Aspects (N : Node_Id) return Boolean
--- 297,305 ----
        Class_Present : Boolean := False) return Boolean
     is
     begin
!       return Present
!               (Find_Aspect
!                 (Id, A, Class_Present => Class_Present, Or_Rep_Item => True));
     end Has_Aspect;
  
     function Has_Aspects (N : Node_Id) return Boolean
diff -Nrcpad gcc-17-20260524/gcc/ada/aspects.ads gcc-17-20260531/gcc/ada/aspects.ads
*** gcc-17-20260524/gcc/ada/aspects.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/aspects.ads	Sun May 31 22:32:04 2026
*************** package Aspects is
*** 70,76 ****
     type Aspect_Id is
       (No_Aspect,                            -- Dummy entry for no aspect
  
!       --  The following aspects do not have a (static) boolean value
  
        Aspect_Abstract_State,                -- GNAT
        Aspect_Address,
--- 70,76 ----
     type Aspect_Id is
       (No_Aspect,                            -- Dummy entry for no aspect
  
!       --  The following aspects do not have a Boolean value
  
        Aspect_Abstract_State,                -- GNAT
        Aspect_Address,
*************** package Aspects is
*** 159,167 ****
        Aspect_Super,                         -- GNAT
        Aspect_Suppress,
        Aspect_Synchronization,
        Aspect_Test_Case,                     -- GNAT
        Aspect_Type_Invariant,
-       Aspect_Unimplemented,                 -- GNAT
        Aspect_Unsuppress,
        Aspect_User_Aspect,                   -- GNAT
        Aspect_Value_Size,                    -- GNAT
--- 159,169 ----
        Aspect_Super,                         -- GNAT
        Aspect_Suppress,
        Aspect_Synchronization,
+       Aspect_Taint_Sanitizer,               -- GNAT
+       Aspect_Taint_Sink,                    -- GNAT
+       Aspect_Taint_Source,                  -- GNAT
        Aspect_Test_Case,                     -- GNAT
        Aspect_Type_Invariant,
        Aspect_Unsuppress,
        Aspect_User_Aspect,                   -- GNAT
        Aspect_Value_Size,                    -- GNAT
*************** package Aspects is
*** 169,175 ****
        Aspect_Warnings,                      -- GNAT
        Aspect_Write,
  
!       --  The following aspects correspond to library unit pragmas
  
        Aspect_All_Calls_Remote,
        Aspect_Elaborate_Body,
--- 171,178 ----
        Aspect_Warnings,                      -- GNAT
        Aspect_Write,
  
!       --  The following are in subtype Library_Unit_Aspects (and also in
!       --  subtype Boolean_Aspects).
  
        Aspect_All_Calls_Remote,
        Aspect_Elaborate_Body,
*************** package Aspects is
*** 180,191 ****
        Aspect_Remote_Types,
        Aspect_Shared_Passive,
  
!       --  Remaining aspects have a static boolean value that turns the aspect
!       --  on or off. They all correspond to pragmas, but are only converted to
!       --  the pragmas where the value is True. A value of False normally means
!       --  that the aspect is ignored, except in the case of derived types where
!       --  the aspect value is inherited from the parent, in which case, we do
!       --  not allow False if we inherit a True value from the parent.
  
        Aspect_Always_Terminates,             -- GNAT
        Aspect_Asynchronous,
--- 183,189 ----
        Aspect_Remote_Types,
        Aspect_Shared_Passive,
  
!       --  The following are in subtype Boolean_Aspects
  
        Aspect_Always_Terminates,             -- GNAT
        Aspect_Asynchronous,
*************** package Aspects is
*** 281,369 ****
        Aspect_Type_Invariant    => True,
        others                   => False);
  
     --  The following array identifies all implementation defined aspects
  
     Implementation_Defined_Aspect : constant array (Aspect_Id) of Boolean :=
!      (Aspect_Abstract_State             => True,
!       Aspect_Always_Terminates          => True,
!       Aspect_Annotate                   => True,
!       Aspect_Async_Readers              => True,
!       Aspect_Async_Writers              => True,
!       Aspect_Constant_After_Elaboration => True,
!       Aspect_Contract_Cases             => True,
!       Aspect_CUDA_Device                => True,
!       Aspect_CUDA_Global                => True,
!       Aspect_Depends                    => True,
!       Aspect_Designated_Storage_Model   => True,
!       Aspect_Dimension                  => True,
!       Aspect_Dimension_System           => True,
!       Aspect_Disable_Controlled         => True,
!       Aspect_Effective_Reads            => True,
!       Aspect_Effective_Writes           => True,
!       Aspect_Exceptional_Cases          => True,
!       Aspect_Exit_Cases                 => True,
!       Aspect_Extended_Access            => True,
!       Aspect_Extensions_Visible         => True,
!       Aspect_External_Initialization    => True,
!       Aspect_Favor_Top_Level            => True,
!       Aspect_Finalizable                => True,
        Aspect_First_Controlling_Parameter => True,
!       Aspect_Ghost                      => True,
!       Aspect_Ghost_Predicate            => True,
!       Aspect_Global                     => True,
!       Aspect_GNAT_Annotate              => True,
!       Aspect_Initial_Condition          => True,
!       Aspect_Initializes                => True,
!       Aspect_Inline_Always              => True,
!       Aspect_Invariant                  => True,
!       Aspect_Iterable                   => True,
!       Aspect_Linker_Section             => True,
!       Aspect_Local_Restrictions         => True,
!       Aspect_Lock_Free                  => True,
!       Aspect_Max_Queue_Length           => True,
!       Aspect_No_Caching                 => True,
!       Aspect_No_Elaboration_Code_All    => True,
!       Aspect_No_Inline                  => True,
!       Aspect_No_Raise                   => True,
!       Aspect_No_Tagged_Streams          => True,
!       Aspect_No_Task_Parts              => True,
!       Aspect_Obsolescent                => True,
!       Aspect_Part_Of                    => True,
!       Aspect_Persistent_BSS             => True,
!       Aspect_Potentially_Invalid        => True,
!       Aspect_Predicate                  => True,
!       Aspect_Pure_Function              => True,
!       Aspect_Refined_Depends            => True,
!       Aspect_Refined_Global             => True,
!       Aspect_Refined_Post               => True,
!       Aspect_Refined_State              => True,
!       Aspect_Relaxed_Initialization     => True,
!       Aspect_Remote_Access_Type         => True,
!       Aspect_Scalar_Storage_Order       => True,
!       Aspect_Secondary_Stack_Size       => True,
!       Aspect_Shared                     => True,
!       Aspect_Side_Effects               => True,
!       Aspect_Simple_Storage_Pool        => True,
!       Aspect_Simple_Storage_Pool_Type   => True,
!       Aspect_SPARK_Mode                 => True,
!       Aspect_Storage_Model_Type         => True,
!       Aspect_Subprogram_Variant         => True,
!       Aspect_Suppress_Debug_Info        => True,
!       Aspect_Suppress_Initialization    => True,
!       Aspect_Test_Case                  => True,
!       Aspect_Thread_Local_Storage       => True,
!       Aspect_Unimplemented              => True,
!       Aspect_Universal_Aliasing         => True,
!       Aspect_Unmodified                 => True,
!       Aspect_Unreferenced               => True,
!       Aspect_Unreferenced_Objects       => True,
!       Aspect_Unsigned_Base_Range        => True,
!       Aspect_User_Aspect                => True,
!       Aspect_Value_Size                 => True,
!       Aspect_Volatile_Full_Access       => True,
!       Aspect_Volatile_Function          => True,
!       Aspect_Warnings                   => True,
!       others                            => False);
  
     --  The following array indicates aspects that specify operational
     --  characteristics, and thus can be specified on partial views.
--- 279,377 ----
        Aspect_Type_Invariant    => True,
        others                   => False);
  
+    --  Ignored aspects are intended for use by other tools (e.g., CodePeer) and
+    --  should be accepted and then ignored by the compiler.
+    --  Any aspect_definition in an aspect_specification for an ignored aspect
+    --  is parsed but is otherwise ignored (in particular, it is not analyzed).
+ 
+    subtype Ignored_Aspects is Aspect_Id range
+      Aspect_Taint_Sanitizer .. Aspect_Taint_Source;
+ 
     --  The following array identifies all implementation defined aspects
  
     Implementation_Defined_Aspect : constant array (Aspect_Id) of Boolean :=
!      (Aspect_Abstract_State              => True,
!       Aspect_Always_Terminates           => True,
!       Aspect_Annotate                    => True,
!       Aspect_Async_Readers               => True,
!       Aspect_Async_Writers               => True,
!       Aspect_Constant_After_Elaboration  => True,
!       Aspect_Contract_Cases              => True,
!       Aspect_CUDA_Device                 => True,
!       Aspect_CUDA_Global                 => True,
!       Aspect_Depends                     => True,
!       Aspect_Designated_Storage_Model    => True,
!       Aspect_Dimension                   => True,
!       Aspect_Dimension_System            => True,
!       Aspect_Disable_Controlled          => True,
!       Aspect_Effective_Reads             => True,
!       Aspect_Effective_Writes            => True,
!       Aspect_Exceptional_Cases           => True,
!       Aspect_Exit_Cases                  => True,
!       Aspect_Extended_Access             => True,
!       Aspect_Extensions_Visible          => True,
!       Aspect_External_Initialization     => True,
!       Aspect_Favor_Top_Level             => True,
!       Aspect_Finalizable                 => True,
        Aspect_First_Controlling_Parameter => True,
!       Aspect_Ghost                       => True,
!       Aspect_Ghost_Predicate             => True,
!       Aspect_Global                      => True,
!       Aspect_GNAT_Annotate               => True,
!       Aspect_Initial_Condition           => True,
!       Aspect_Initialize                  => True,
!       Aspect_Initializes                 => True,
!       Aspect_Inline_Always               => True,
!       Aspect_Invariant                   => True,
!       Aspect_Iterable                    => True,
!       Aspect_Linker_Section              => True,
!       Aspect_Local_Restrictions          => True,
!       Aspect_Lock_Free                   => True,
!       Aspect_Max_Queue_Length            => True,
!       Aspect_No_Caching                  => True,
!       Aspect_No_Elaboration_Code_All     => True,
!       Aspect_No_Inline                   => True,
!       Aspect_No_Raise                    => True,
!       Aspect_No_Tagged_Streams           => True,
!       Aspect_No_Task_Parts               => True,
!       Aspect_Obsolescent                 => True,
!       Aspect_Part_Of                     => True,
!       Aspect_Persistent_BSS              => True,
!       Aspect_Potentially_Invalid         => True,
!       Aspect_Predicate                   => True,
!       Aspect_Pure_Function               => True,
!       Aspect_Refined_Depends             => True,
!       Aspect_Refined_Global              => True,
!       Aspect_Refined_Post                => True,
!       Aspect_Refined_State               => True,
!       Aspect_Relaxed_Initialization      => True,
!       Aspect_Remote_Access_Type          => True,
!       Aspect_Scalar_Storage_Order        => True,
!       Aspect_Secondary_Stack_Size        => True,
!       Aspect_Shared                      => True,
!       Aspect_Side_Effects                => True,
!       Aspect_Simple_Storage_Pool         => True,
!       Aspect_Simple_Storage_Pool_Type    => True,
!       Aspect_SPARK_Mode                  => True,
!       Aspect_Storage_Model_Type          => True,
!       Aspect_Subprogram_Variant          => True,
!       Aspect_Suppress_Debug_Info         => True,
!       Aspect_Suppress_Initialization     => True,
!       Aspect_Test_Case                   => True,
!       Aspect_Thread_Local_Storage        => True,
!       Aspect_Universal_Aliasing          => True,
!       Aspect_Unmodified                  => True,
!       Aspect_Unreferenced                => True,
!       Aspect_Unreferenced_Objects        => True,
!       Aspect_Unsigned_Base_Range         => True,
!       Aspect_User_Aspect                 => True,
!       Aspect_Value_Size                  => True,
!       Aspect_Volatile_Full_Access        => True,
!       Aspect_Volatile_Function           => True,
!       Aspect_Warnings                    => True,
!       Ignored_Aspects                    => True,
!       others                             => False);
!          --  end Implementation_Defined_Aspect
  
     --  The following array indicates aspects that specify operational
     --  characteristics, and thus can be specified on partial views.
*************** package Aspects is
*** 397,414 ****
       Aspect_Id range Aspect_All_Calls_Remote .. Aspect_Shared_Passive;
  
     --  The following subtype defines aspects accepting an optional static
!    --  boolean parameter indicating if the aspect should be active or
!    --  cancelling. If the parameter is missing the effective value is True,
!    --  enabling the aspect. If the parameter is present it must be a static
!    --  expression of type Standard.Boolean. If the value is True, then the
!    --  aspect is enabled. If it is False, the aspect is disabled.
     --
!    --  The Always_Terminates fits in this category even though it accepts an
!    --  optional boolean parameter which is non-static, because we want it to
!    --  be usable with pragma User_Defined_Aspect.
  
     subtype Boolean_Aspects is
!      Aspect_Id range Aspect_Always_Terminates .. Aspect_Id'Last;
  
     subtype Pre_Post_Aspects is Aspect_Id
     with Static_Predicate => Pre_Post_Aspects in Aspect_Post
--- 405,424 ----
       Aspect_Id range Aspect_All_Calls_Remote .. Aspect_Shared_Passive;
  
     --  The following subtype defines aspects accepting an optional static
!    --  Boolean parameter. If the parameter is missing the effective value is
!    --  True. These aspects all correspond to pragmas, but are only converted to
!    --  the pragmas if the value is True. A value of False normally means
!    --  that the aspect is ignored, except in the case of derived types where
!    --  the aspect value is inherited from the parent, in which case we do
!    --  not allow False if we inherit a True value from the parent.
     --
!    --  Always_Terminates fits in this category except that it accepts a
!    --  nonstatic value; we want it to be usable with pragma
!    --  User_Aspect_Definition.
  
     subtype Boolean_Aspects is
!      Aspect_Id range Library_Unit_Aspects'First .. Aspect_Id'Last;
!    --  Includes Library_Unit_Aspects
  
     subtype Pre_Post_Aspects is Aspect_Id
     with Static_Predicate => Pre_Post_Aspects in Aspect_Post
*************** package Aspects is
*** 512,523 ****
        Aspect_Stream_Size                => Expression,
        Aspect_String_Literal             => Name,
        Aspect_Subprogram_Variant         => Expression,
!       Aspect_Super                      => Expression,
        Aspect_Suppress                   => Name,
        Aspect_Synchronization            => Name,
        Aspect_Test_Case                  => Expression,
        Aspect_Type_Invariant             => Expression,
-       Aspect_Unimplemented              => Optional_Expression,
        Aspect_Unsuppress                 => Name,
        Aspect_User_Aspect                => Expression,
        Aspect_Value_Size                 => Expression,
--- 522,532 ----
        Aspect_Stream_Size                => Expression,
        Aspect_String_Literal             => Name,
        Aspect_Subprogram_Variant         => Expression,
!       Aspect_Super                      => Optional_Expression,
        Aspect_Suppress                   => Name,
        Aspect_Synchronization            => Name,
        Aspect_Test_Case                  => Expression,
        Aspect_Type_Invariant             => Expression,
        Aspect_Unsuppress                 => Name,
        Aspect_User_Aspect                => Expression,
        Aspect_Value_Size                 => Expression,
*************** package Aspects is
*** 525,532 ****
        Aspect_Warnings                   => Name,
        Aspect_Write                      => Name,
  
!       Library_Unit_Aspects              => Optional_Expression,
        Boolean_Aspects                   => Optional_Expression);
  
     --  The following array indicates what aspects are representation aspects
  
--- 534,542 ----
        Aspect_Warnings                   => Name,
        Aspect_Write                      => Name,
  
!       Ignored_Aspects                   => Optional_Expression,
        Boolean_Aspects                   => Optional_Expression);
+          --  end Aspect_Argument
  
     --  The following array indicates what aspects are representation aspects
  
*************** package Aspects is
*** 624,630 ****
        Aspect_Synchronization              => False,
        Aspect_Test_Case                    => False,
        Aspect_Type_Invariant               => False,
-       Aspect_Unimplemented                => False,
        Aspect_Unsigned_Base_Range          => True,
        Aspect_Unsuppress                   => False,
        Aspect_User_Aspect                  => False,
--- 634,639 ----
*************** package Aspects is
*** 633,638 ****
--- 642,648 ----
        Aspect_Warnings                     => False,
        Aspect_Write                        => False,
  
+       Ignored_Aspects                     => False,
        Library_Unit_Aspects                => False,
  
        Aspect_Always_Terminates            => False,
*************** package Aspects is
*** 689,694 ****
--- 699,705 ----
        Aspect_Volatile_Full_Access         => True,
        Aspect_Volatile_Function            => False,
        Aspect_Yield                        => False);
+          --  end Is_Representation_Aspect
  
     -----------------------------------------
     -- Table Linking Names and Aspect_Id's --
*************** package Aspects is
*** 838,849 ****
        Aspect_Suppress                     => Name_Suppress,
        Aspect_Suppress_Debug_Info          => Name_Suppress_Debug_Info,
        Aspect_Suppress_Initialization      => Name_Suppress_Initialization,
        Aspect_Thread_Local_Storage         => Name_Thread_Local_Storage,
        Aspect_Synchronization              => Name_Synchronization,
        Aspect_Test_Case                    => Name_Test_Case,
        Aspect_Type_Invariant               => Name_Type_Invariant,
        Aspect_Unchecked_Union              => Name_Unchecked_Union,
-       Aspect_Unimplemented                => Name_Unimplemented,
        Aspect_Universal_Aliasing           => Name_Universal_Aliasing,
        Aspect_Unmodified                   => Name_Unmodified,
        Aspect_Unreferenced                 => Name_Unreferenced,
--- 849,862 ----
        Aspect_Suppress                     => Name_Suppress,
        Aspect_Suppress_Debug_Info          => Name_Suppress_Debug_Info,
        Aspect_Suppress_Initialization      => Name_Suppress_Initialization,
+       Aspect_Taint_Sanitizer              => Name_Taint_Sanitizer,
+       Aspect_Taint_Sink                   => Name_Taint_Sink,
+       Aspect_Taint_Source                 => Name_Taint_Source,
        Aspect_Thread_Local_Storage         => Name_Thread_Local_Storage,
        Aspect_Synchronization              => Name_Synchronization,
        Aspect_Test_Case                    => Name_Test_Case,
        Aspect_Type_Invariant               => Name_Type_Invariant,
        Aspect_Unchecked_Union              => Name_Unchecked_Union,
        Aspect_Universal_Aliasing           => Name_Universal_Aliasing,
        Aspect_Unmodified                   => Name_Unmodified,
        Aspect_Unreferenced                 => Name_Unreferenced,
*************** package Aspects is
*** 859,865 ****
        Aspect_Volatile_Function            => Name_Volatile_Function,
        Aspect_Warnings                     => Name_Warnings,
        Aspect_Write                        => Name_Write,
!       Aspect_Yield                        => Name_Yield);
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id;
     pragma Inline (Get_Aspect_Id);
--- 872,878 ----
        Aspect_Volatile_Function            => Name_Volatile_Function,
        Aspect_Warnings                     => Name_Warnings,
        Aspect_Write                        => Name_Write,
!       Aspect_Yield                        => Name_Yield); -- Aspect_Names
  
     function Get_Aspect_Id (Name : Name_Id) return Aspect_Id;
     pragma Inline (Get_Aspect_Id);
*************** package Aspects is
*** 919,927 ****
     --  To deal with the delayed aspect case, we use two flags. The first is
     --  set on the parent type if it has delayed representation aspects. This
     --  flag Has_Delayed_Rep_Aspects indicates that if we derive from this type
!    --  we have to worry about making sure we inherit any delayed aspects. The
!    --  second flag is set on a derived type: May_Inherit_Delayed_Rep_Aspects
!    --  is set if the parent type has Has_Delayed_Rep_Aspects set.
  
     --  When we freeze a derived type, if the May_Inherit_Delayed_Rep_Aspects
     --  flag is set, then we call Sem_Ch13.Inherit_Delayed_Rep_Aspects when
--- 932,940 ----
     --  To deal with the delayed aspect case, we use two flags. The first is
     --  set on the parent type if it has delayed representation aspects. This
     --  flag Has_Delayed_Rep_Aspects indicates that if we derive from this type
!    --  we have to make sure we inherit any delayed aspects. The second flag is
!    --  set on a derived type: May_Inherit_Delayed_Rep_Aspects is set if the
!    --  parent type has Has_Delayed_Rep_Aspects set.
  
     --  When we freeze a derived type, if the May_Inherit_Delayed_Rep_Aspects
     --  flag is set, then we call Sem_Ch13.Inherit_Delayed_Rep_Aspects when
*************** package Aspects is
*** 1005,1011 ****
        Aspect_Favor_Top_Level              => Always_Delay,
        Aspect_Finalizable                  => Always_Delay,
        Aspect_Ghost_Predicate              => Always_Delay,
-       Aspect_Implicit_Dereference         => Always_Delay,
        Aspect_Independent                  => Always_Delay,
        Aspect_Independent_Components       => Always_Delay,
        Aspect_Inline                       => Always_Delay,
--- 1018,1023 ----
*************** package Aspects is
*** 1014,1020 ****
        Aspect_Integer_Literal              => Always_Delay,
        Aspect_Interrupt_Handler            => Always_Delay,
        Aspect_Interrupt_Priority           => Always_Delay,
-       Aspect_Invariant                    => Always_Delay,
        Aspect_Iterable                     => Always_Delay,
        Aspect_Iterator_Element             => Always_Delay,
        Aspect_Lock_Free                    => Always_Delay,
--- 1026,1031 ----
*************** package Aspects is
*** 1023,1032 ****
        Aspect_No_Return                    => Always_Delay,
        Aspect_Output                       => Always_Delay,
        Aspect_Persistent_BSS               => Always_Delay,
-       Aspect_Post                         => Always_Delay,
-       Aspect_Postcondition                => Always_Delay,
-       Aspect_Pre                          => Always_Delay,
-       Aspect_Precondition                 => Always_Delay,
        Aspect_Predicate                    => Always_Delay,
        Aspect_Predicate_Failure            => Always_Delay,
        Aspect_Preelaborable_Initialization => Always_Delay,
--- 1034,1039 ----
*************** package Aspects is
*** 1053,1069 ****
        Aspect_Storage_Pool                 => Always_Delay,
        Aspect_Stream_Size                  => Always_Delay,
        Aspect_String_Literal               => Always_Delay,
-       Aspect_Suppress                     => Always_Delay,
        Aspect_Suppress_Debug_Info          => Always_Delay,
        Aspect_Suppress_Initialization      => Always_Delay,
        Aspect_Thread_Local_Storage         => Always_Delay,
-       Aspect_Type_Invariant               => Always_Delay,
        Aspect_Unchecked_Union              => Always_Delay,
        Aspect_Universal_Aliasing           => Always_Delay,
        Aspect_Unmodified                   => Always_Delay,
        Aspect_Unreferenced                 => Always_Delay,
        Aspect_Unreferenced_Objects         => Always_Delay,
-       Aspect_Unsuppress                   => Always_Delay,
        Aspect_Variable_Indexing            => Always_Delay,
        Aspect_Write                        => Always_Delay,
  
--- 1060,1073 ----
*************** package Aspects is
*** 1087,1101 ****
--- 1091,1109 ----
        Aspect_Export                       => Never_Delay,
        Aspect_Extensions_Visible           => Never_Delay,
        Aspect_External_Initialization      => Never_Delay,
+       Aspect_External_Name                => Never_Delay,
        Aspect_First_Controlling_Parameter  => Never_Delay,
        Aspect_Ghost                        => Never_Delay,
        Aspect_Global                       => Never_Delay,
        Aspect_GNAT_Annotate                => Never_Delay,
        Aspect_Import                       => Never_Delay,
        Aspect_Initial_Condition            => Never_Delay,
+       Aspect_Link_Name                    => Never_Delay,
        Aspect_Local_Restrictions           => Never_Delay,
+       Aspect_Implicit_Dereference         => Never_Delay,
        Aspect_Initialize                   => Never_Delay,
        Aspect_Initializes                  => Never_Delay,
+       Aspect_Invariant                    => Never_Delay,
        Aspect_Max_Entry_Queue_Length       => Never_Delay,
        Aspect_Max_Queue_Length             => Never_Delay,
        Aspect_No_Caching                   => Never_Delay,
*************** package Aspects is
*** 1105,1111 ****
--- 1113,1123 ----
        Aspect_No_Tagged_Streams            => Never_Delay,
        Aspect_Obsolescent                  => Never_Delay,
        Aspect_Part_Of                      => Never_Delay,
+       Aspect_Post                         => Never_Delay,
+       Aspect_Postcondition                => Never_Delay,
        Aspect_Potentially_Invalid          => Never_Delay,
+       Aspect_Pre                          => Never_Delay,
+       Aspect_Precondition                 => Never_Delay,
        Aspect_Refined_Depends              => Never_Delay,
        Aspect_Refined_Global               => Never_Delay,
        Aspect_Refined_Post                 => Never_Delay,
*************** package Aspects is
*** 1116,1128 ****
        Aspect_Static                       => Never_Delay,
        Aspect_Subprogram_Variant           => Never_Delay,
        Aspect_Super                        => Never_Delay,
        Aspect_Synchronization              => Never_Delay,
        Aspect_Test_Case                    => Never_Delay,
!       Aspect_Unimplemented                => Never_Delay,
        Aspect_User_Aspect                  => Never_Delay,
        Aspect_Volatile_Function            => Never_Delay,
        Aspect_Warnings                     => Never_Delay,
        Aspect_Yield                        => Never_Delay,
  
        Aspect_Alignment                    => Rep_Aspect,
        Aspect_Atomic                       => Rep_Aspect,
--- 1128,1143 ----
        Aspect_Static                       => Never_Delay,
        Aspect_Subprogram_Variant           => Never_Delay,
        Aspect_Super                        => Never_Delay,
+       Aspect_Suppress                     => Never_Delay,
        Aspect_Synchronization              => Never_Delay,
        Aspect_Test_Case                    => Never_Delay,
!       Aspect_Type_Invariant               => Never_Delay,
!       Aspect_Unsuppress                   => Never_Delay,
        Aspect_User_Aspect                  => Never_Delay,
        Aspect_Volatile_Function            => Never_Delay,
        Aspect_Warnings                     => Never_Delay,
        Aspect_Yield                        => Never_Delay,
+       Ignored_Aspects                     => Never_Delay,
  
        Aspect_Alignment                    => Rep_Aspect,
        Aspect_Atomic                       => Rep_Aspect,
*************** package Aspects is
*** 1130,1138 ****
        Aspect_Bit_Order                    => Rep_Aspect,
        Aspect_Component_Size               => Rep_Aspect,
        Aspect_Extended_Access              => Rep_Aspect,
-       Aspect_External_Name                => Rep_Aspect,
        Aspect_Full_Access_Only             => Rep_Aspect,
-       Aspect_Link_Name                    => Rep_Aspect,
        Aspect_Linker_Section               => Rep_Aspect,
        Aspect_Machine_Radix                => Rep_Aspect,
        Aspect_Object_Size                  => Rep_Aspect,
--- 1145,1151 ----
*************** package Aspects is
*** 1194,1202 ****
        Aspect_Warnings                     => True,
        others                              => False);
  
!    -------------------------------------------------------------------
!    -- Handling of Aspects Specifications on Single Concurrent Types --
!    -------------------------------------------------------------------
  
     --  Certain aspects that appear on the following nodes
  
--- 1207,1215 ----
        Aspect_Warnings                     => True,
        others                              => False);
  
!    ------------------------------------------------------------------
!    -- Handling of Aspect Specifications on Single Concurrent Types --
!    ------------------------------------------------------------------
  
     --  Certain aspects that appear on the following nodes
  
diff -Nrcpad gcc-17-20260524/gcc/ada/aux-io.c gcc-17-20260531/gcc/ada/aux-io.c
*** gcc-17-20260524/gcc/ada/aux-io.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/aux-io.c	Sun May 31 22:32:04 2026
***************
*** 37,43 ****
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    imcompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
--- 37,43 ----
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    incompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
diff -Nrcpad gcc-17-20260524/gcc/ada/bindgen.adb gcc-17-20260531/gcc/ada/bindgen.adb
*** gcc-17-20260524/gcc/ada/bindgen.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/bindgen.adb	Sun May 31 22:32:04 2026
*************** package body Bindgen is
*** 61,68 ****
     --  Flag indicating whether the unit Ada.Command_Line is in the closure of
     --  the partition. This is set by Resolve_Binder_Options, and is used to
     --  determine whether or not to import and use symbols defined in
!    --  Ada.Command_Line's support packages (gnat_argc, gnat_argv, gnat_envp
!    --  and gnat_exit_status). Conservatively, it is always set to True for
     --  non-configurable run-times as parts of the compiler and run-time assume
     --  these symbols are available and can be imported directly.
  
--- 61,68 ----
     --  Flag indicating whether the unit Ada.Command_Line is in the closure of
     --  the partition. This is set by Resolve_Binder_Options, and is used to
     --  determine whether or not to import and use symbols defined in
!    --  Ada.Command_Line's support packages (gnat_argc, gnat_argv and
!    --  gnat_exit_status). Conservatively, it is always set to True for
     --  non-configurable run-times as parts of the compiler and run-time assume
     --  these symbols are available and can be imported directly.
  
*************** package body Bindgen is
*** 2021,2028 ****
        if Command_Line_Args_On_Target then
           Write_Statement_Buffer;
           WBI ("     (argc : Integer;");
!          WBI ("      argv : System.Address;");
!          WBI ("      envp : System.Address)");
  
           if Exit_Status_Supported_On_Target then
              WBI ("      return Integer");
--- 2021,2027 ----
        if Command_Line_Args_On_Target then
           Write_Statement_Buffer;
           WBI ("     (argc : Integer;");
!          WBI ("      argv : System.Address)");
  
           if Exit_Status_Supported_On_Target then
              WBI ("      return Integer");
*************** package body Bindgen is
*** 2135,2141 ****
           WBI ("         gnat_argc := argc;");
           WBI ("         gnat_argv := argv;");
           WBI ("      end if;");
-          WBI ("      gnat_envp := envp;");
           WBI ("");
        end if;
  
--- 2134,2139 ----
*************** package body Bindgen is
*** 2613,2624 ****
              WBI ("");
              WBI ("   gnat_argc : Integer;");
              WBI ("   gnat_argv : System.Address;");
-             WBI ("   gnat_envp : System.Address;");
  
              WBI ("");
              WBI ("   pragma Import (C, gnat_argc);");
              WBI ("   pragma Import (C, gnat_argv);");
-             WBI ("   pragma Import (C, gnat_envp);");
           end if;
  
           --  Define exit status if supported by the target. The exit status is
--- 2611,2620 ----
*************** package body Bindgen is
*** 2723,2731 ****
           if Command_Line_Args_On_Target then
              Write_Statement_Buffer;
              WBI ("     (argc : Integer;");
-             WBI ("      argv : System.Address;");
              Set_String
!                 ("      envp : System.Address)");
  
              if Exit_Status_Supported_On_Target then
                 Write_Statement_Buffer;
--- 2719,2726 ----
           if Command_Line_Args_On_Target then
              Write_Statement_Buffer;
              WBI ("     (argc : Integer;");
              Set_String
!                 ("      argv : System.Address)");
  
              if Exit_Status_Supported_On_Target then
                 Write_Statement_Buffer;
diff -Nrcpad gcc-17-20260524/gcc/ada/checks.adb gcc-17-20260531/gcc/ada/checks.adb
*** gcc-17-20260524/gcc/ada/checks.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/checks.adb	Sun May 31 22:32:04 2026
*************** package body Checks is
*** 3367,3372 ****
--- 3367,3378 ----
        --  for floating-point types. But the additional less precise tests below
        --  catch these cases.
  
+       --  Under GNATProve mode, when the type of the expression is Universal
+       --  Integer we cannot determine if the expression is in the range of the
+       --  target type. Required because, Universal_Integer is implemented as a
+       --  128-bit type but, in theory, its values may be out of range for
+       --  128-bit target types.
+ 
        --  Note: skip this if we are given a source_typ, since the point of
        --  supplying a Source_Typ is to stop us looking at the expression.
        --  We could sharpen this test to be out parameters only ???
*************** package body Checks is
*** 3374,3379 ****
--- 3380,3387 ----
        if Is_Discrete_Type (Target_Typ)
          and then not Is_Unconstrained_Subscr_Ref
          and then No (Source_Typ)
+         and then not (Etype (Expr) = Universal_Integer
+                         and then GNATprove_Mode)
        then
           declare
              Thi : constant Node_Id := Type_High_Bound (Target_Typ);
diff -Nrcpad gcc-17-20260524/gcc/ada/cio.c gcc-17-20260531/gcc/ada/cio.c
*** gcc-17-20260524/gcc/ada/cio.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/cio.c	Sun May 31 22:32:04 2026
*************** extern "C" {
*** 57,63 ****
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    imcompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
--- 57,63 ----
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    incompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
diff -Nrcpad gcc-17-20260524/gcc/ada/contracts.adb gcc-17-20260531/gcc/ada/contracts.adb
*** gcc-17-20260524/gcc/ada/contracts.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/contracts.adb	Sun May 31 22:32:04 2026
*************** package body Contracts is
*** 452,457 ****
--- 452,459 ----
  
           if Nkind (Decl) in N_Abstract_Subprogram_Declaration
                            | N_Entry_Declaration
+                           | N_Formal_Abstract_Subprogram_Declaration
+                           | N_Formal_Concrete_Subprogram_Declaration
                            | N_Generic_Subprogram_Declaration
                            | N_Subprogram_Declaration
           then
*************** package body Contracts is
*** 751,763 ****
                    if Freeze_Types
                      and then Present (Corresponding_Aspect (Prag))
                    then
!                      Freeze_Expr_Types
!                        (Def_Id => Subp_Id,
!                         Typ    => Standard_Boolean,
                          Expr   =>
                            Expression
                              (First (Pragma_Argument_Associations (Prag))),
!                         N      => Bod);
                    end if;
  
                    Analyze_Pre_Post_Condition_In_Decl_Part (Prag, Freeze_Id);
--- 753,765 ----
                    if Freeze_Types
                      and then Present (Corresponding_Aspect (Prag))
                    then
!                      Freeze_Expr_Types_Before
!                        (N      => Bod,
                          Expr   =>
                            Expression
                              (First (Pragma_Argument_Associations (Prag))),
!                         Def_Id => Subp_Id,
!                         Typ    => Standard_Boolean);
                    end if;
  
                    Analyze_Pre_Post_Condition_In_Decl_Part (Prag, Freeze_Id);
*************** package body Contracts is
*** 2329,2335 ****
                 --  An Initialization procedure must be considered visible even
                 --  though it is internally generated.
  
!                if Is_Init_Proc (Defining_Entity (Subp_Decl)) then
                    return True;
  
                 elsif Ekind (Scope (Typ)) /= E_Package then
--- 2331,2337 ----
                 --  An Initialization procedure must be considered visible even
                 --  though it is internally generated.
  
!                if Is_Init_Proc (Subp_Id) then
                    return True;
  
                 elsif Ekind (Scope (Typ)) /= E_Package then
*************** package body Contracts is
*** 2341,2350 ****
                 --  last check.
  
                 elsif not Comes_From_Source (Subp_Decl)
!                  and then
!                    (Nkind (Original_Node (Subp_Decl)) /= N_Expression_Function
!                       or else not
!                         Comes_From_Source (Defining_Entity (Subp_Decl)))
                 then
                    return False;
  
--- 2343,2350 ----
                 --  last check.
  
                 elsif not Comes_From_Source (Subp_Decl)
!                  and then (not Is_Expression_Function (Subp_Id)
!                             or else not Comes_From_Source (Subp_Id))
                 then
                    return False;
  
*************** package body Contracts is
*** 2356,2363 ****
                    declare
                       Decls      : constant List_Id   :=
                                      List_Containing (Subp_Decl);
!                      Subp_Scope : constant Entity_Id :=
!                                     Scope (Defining_Entity (Subp_Decl));
                       Typ_Scope  : constant Entity_Id := Scope (Typ);
  
                    begin
--- 2356,2362 ----
                    declare
                       Decls      : constant List_Id   :=
                                      List_Containing (Subp_Decl);
!                      Subp_Scope : constant Entity_Id := Scope (Subp_Id);
                       Typ_Scope  : constant Entity_Id := Scope (Typ);
  
                    begin
*************** package body Contracts is
*** 2385,2392 ****
                      (Nkind (Parent (Subp_Decl)) = N_Compilation_Unit);
  
                    declare
!                      Subp_Scope : constant Entity_Id :=
!                                     Scope (Defining_Entity (Subp_Decl));
                       Typ_Scope  : constant Entity_Id := Scope (Typ);
  
                    begin
--- 2384,2390 ----
                      (Nkind (Parent (Subp_Decl)) = N_Compilation_Unit);
  
                    declare
!                      Subp_Scope : constant Entity_Id := Scope (Subp_Id);
                       Typ_Scope  : constant Entity_Id := Scope (Typ);
  
                    begin
*************** package body Contracts is
*** 3104,3116 ****
                       if Freeze_T
                         and then Present (Corresponding_Aspect (Prag))
                       then
!                         Freeze_Expr_Types
!                           (Def_Id => Subp_Id,
!                            Typ    => Standard_Boolean,
                             Expr   =>
                               Expression
                                 (First (Pragma_Argument_Associations (Prag))),
!                            N      => Body_Decl);
                       end if;
  
                       Prepend_Pragma_To_Decls (Prag);
--- 3102,3114 ----
                       if Freeze_T
                         and then Present (Corresponding_Aspect (Prag))
                       then
!                         Freeze_Expr_Types_Before
!                           (N      => Body_Decl,
                             Expr   =>
                               Expression
                                 (First (Pragma_Argument_Associations (Prag))),
!                            Def_Id => Subp_Id,
!                            Typ    => Standard_Boolean);
                       end if;
  
                       Prepend_Pragma_To_Decls (Prag);
*************** package body Contracts is
*** 3379,3391 ****
        --  Step 6: Construct subprogram _wrapped_statements
  
        --  When no statements are present we still need to insert contract
!       --  related declarations.
  
!       if No (Stmts) then
           Prepend_List_To (Declarations (Body_Decl), Decls);
  
-       --  Otherwise, we need a wrapper
- 
        else
           Build_Subprogram_Contract_Wrapper (Body_Id, Stmts, Decls, Result);
        end if;
--- 3377,3389 ----
        --  Step 6: Construct subprogram _wrapped_statements
  
        --  When no statements are present we still need to insert contract
!       --  related declarations. There's also no need to create the contracts
!       --  wrapper when the subprogram is marked as not returning, since
!       --  postconditions and invariant checks won't be reached in that case.
  
!       if No (Stmts) or else No_Return (Subp_Id) then
           Prepend_List_To (Declarations (Body_Decl), Decls);
  
        else
           Build_Subprogram_Contract_Wrapper (Body_Id, Stmts, Decls, Result);
        end if;
diff -Nrcpad gcc-17-20260524/gcc/ada/cstreams.c gcc-17-20260531/gcc/ada/cstreams.c
*** gcc-17-20260524/gcc/ada/cstreams.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/cstreams.c	Sun May 31 22:32:04 2026
*************** extern "C" {
*** 88,94 ****
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    imcompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
--- 88,94 ----
  #endif
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    incompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
diff -Nrcpad gcc-17-20260524/gcc/ada/debug.adb gcc-17-20260531/gcc/ada/debug.adb
*** gcc-17-20260524/gcc/ada/debug.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/debug.adb	Sun May 31 22:32:04 2026
*************** package body Debug is
*** 105,111 ****
     --  d.r  Disable reordering of components in record types
     --  d.s  Strict secondary stack management
     --  d.t  Disable static allocation of library level dispatch tables
!    --  d.u  Enable Unsigned_Base_Range aspect language extension
     --  d.v  Enforce SPARK elaboration rules in SPARK code
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
--- 105,111 ----
     --  d.r  Disable reordering of components in record types
     --  d.s  Strict secondary stack management
     --  d.t  Disable static allocation of library level dispatch tables
!    --  d.u
     --  d.v  Enforce SPARK elaboration rules in SPARK code
     --  d.w  Do not check for infinite loops
     --  d.x  No exception handlers
*************** package body Debug is
*** 800,807 ****
     --       previous dynamic construction of tables. It is there as a possible
     --       work around if we run into trouble with the new implementation.
  
!    --  d.u  Enable the support for Unsigned_Base_Range aspect, attribute, and
!    --       pragma.
  
     --  d.v  This flag enforces the elaboration rules defined in the SPARK
     --       Reference Manual, chapter 7.7, to all SPARK code within a unit. As
--- 800,806 ----
     --       previous dynamic construction of tables. It is there as a possible
     --       work around if we run into trouble with the new implementation.
  
!    --  d.u
  
     --  d.v  This flag enforces the elaboration rules defined in the SPARK
     --       Reference Manual, chapter 7.7, to all SPARK code within a unit. As
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/about_this_guide.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/about_this_guide.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/about_this_guide.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/about_this_guide.rst	Sun May 31 22:32:04 2026
*************** This reference manual contains the follo
*** 61,66 ****
--- 61,69 ----
    follow since it cannot be provided on all systems, or which may be
    undesirable on some systems.
  
+ * :ref:`GNAT_Implementation_Mode` details the features and restrictions that
+   are enabled while building the compiler and its runtime libraries.
+ 
  * :ref:`Implementation_Defined_Characteristics`, provides a guide to
    minimizing implementation dependent features.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/gnat_implementation_mode.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/gnat_implementation_mode.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/gnat_implementation_mode.rst	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/gnat_implementation_mode.rst	Sun May 31 22:32:04 2026
***************
*** 0 ****
--- 1,84 ----
+ 
+ .. _GNAT_Implementation_Mode:
+ 
+ **************************************************
+ GNAT Implementation Mode (the ``-gnatg`` switch)
+ **************************************************
+ 
+ ``-gnatg`` enables **GNAT implementation mode**, the internal compilation mode
+ used when building GNAT itself and its runtime libraries. It is not intended
+ for user application programs.
+ 
+ It implies ``-gnatw.ge`` (extended warning set, treated as errors) and
+ ``-gnatyg`` (GNAT style checks).
+ 
+ Language & Semantic Changes
+ ===========================
+ 
+ Ada Version and Identifier Rules
+ ---------------------------------
+ 
+ * **Ada version is fixed at Ada 2012**, regardless of other switches.
+ * **Identifier character set is restricted to 7-bit ASCII**;
+   extended characters are disallowed.
+ * **Identifiers are allowed to start with underscore** to avoid conflicts
+   between global symbols in the runtime and those defined in the user code.
+ 
+ Limited Types
+ -------------
+ 
+ * Copying limited objects is **permitted** (normally illegal).
+ * Initializing limited types emits a **warning** rather than an error.
+ * Returning objects of limited types is **permitted**.
+ 
+ Preelaboration and Categorization
+ ----------------------------------
+ 
+ * Categorization errors (pure/preelaborated unit violations) are downgraded
+   to **warnings**.
+ * Statements in preelaborated units emit a **warning** rather than an error.
+ * Private objects and non-static constants/calls in preelaborated units emit
+   **warnings** rather than errors.
+ * Calls to non-preelaborable subprograms in preelaborated packages are
+   demoted to **suppressible warnings** (RM 10.2.1), allowing the runtime to
+   include elaboration code that would otherwise be forbidden.
+ * Assignment statements to library-level variables are **excluded** from
+   access-before-elaboration (ABE) analysis, on the assumption that the
+   predefined runtime manages its own elaboration order correctly.
+ 
+ Overflow
+ --------
+ 
+ Overflow checks are **suppressed** but the overflow checking mode is set to
+ **Strict** (for assertion purposes).
+ 
+ Miscellaneous
+ -------------
+ 
+ * ``Scalar_Storage_Order`` attribute applies to **generic types** (normally
+   it does not).
+ * Only the ``--!`` special comment sequence is recognized; all others are
+   disallowed.
+ * The ``Priority`` aspect/attribute on protected types accepts the
+   unconstrained type ``Any_Priority`` rather than the subtype
+   ``System.Priority`` (a subrange of ``Integer``), giving GNAT's own
+   protected objects access to the full implementation-defined priority range.
+ * ``pragma Extend_System`` is **ignored** (prevents circularities in System).
+   Exception: predefined renaming units (``Text_IO``, ``Direct_IO``, etc.) are
+   compiled without GNAT implementation mode so that ``Extend_System`` still
+   works for them.
+ * Importing a non-pure external function (``pragma Import``) into a ``Pure``
+   unit does **not** produce a purity warning, on the assumption that the
+   runtime knows the purity properties of the C functions it imports.
+ * ``pragma Style_Checks ("All_Checks")`` activates the stricter ``-gnatyg``
+   rule set rather than the default ``-gnaty`` set.
+ 
+ ALI Files and Recompilation
+ ----------------------------
+ 
+ * ALI files are always generated for predefined generic packages.
+ * Compiling a unit whose top-level name is ``Ada``, ``Interfaces``, or
+   ``System`` as the main unit is permitted; the RM reserves these as
+   hierarchical library-unit name prefixes, but the diagnostic is suppressed
+   to let GNAT compile its own predefined library (``Ada.Text_IO``,
+   ``System.Storage_Elements``, etc.) as main units.
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun May 31 22:32:04 2026
*************** Examples
*** 272,280 ****
        S : Segment := (1 .. 2 => (0, 0));
        T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
     begin
!       S := (S with delta (1).X | (2).Y => 12, (1).Y => 15);
  
!       pragma Assert (S (1).X = 12);
        pragma Assert (S (2).Y = 12);
        pragma Assert (S (1).Y = 15);
  
--- 272,280 ----
        S : Segment := (1 .. 2 => (0, 0));
        T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
     begin
!       S := (S with delta (1).X => 11, (2).Y => 12, (1).Y => 15);
  
!       pragma Assert (S (1).X = 11);
        pragma Assert (S (2).Y = 12);
        pragma Assert (S (1).Y = 15);
  
*************** Restricting the position of controlling
*** 584,589 ****
--- 584,613 ----
  
  * The result of a function is never a controlling result.
  
+ ``Unsigned_Base_Range`` aspect
+ ------------------------------
+ 
+ A new pragma/aspect, ``Unsigned_Base_Range``, is introduced to explicitly
+ enforce the use of an unsigned base type for signed integer types.
+ RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
+ requirement often requires the use of larger data types for arithmetic
+ operations, potentially introducing undesirable run-time overhead and
+ performance penalties, particularly in embedded systems. For instance,
+ on a 64-bit architecture, a 64-bit multiplication can be performed with
+ a single hardware instruction, whereas a 128-bit multiplication requires
+ multiple instructions and intermediate steps.
+ 
+ Here is an example of this feature:
+ 
+ .. code-block:: ada
+ 
+   type Uns_64 is range 0 .. 2 ** 64 - 1
+     with Size => 64,
+          Unsigned_Base_Range => True;
+ 
+ It ensures that arithmetic operations of type ``Uns_64`` are carried
+ out using 64 bits.
+ 
  Generalized Finalization
  ------------------------
  
*************** Here is the archetypal example:
*** 611,618 ****
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures have the same profile, with a single ``in out`` parameter,
! and also have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
--- 635,643 ----
      procedure Finalize   (Obj : in out T);
      procedure Initialize (Obj : in out T);
  
! The three procedures must be primitive operations of ``T`` and have a single
! ``in out`` parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
     initialization expression.
*************** descendant of T (including T itself)
*** 1501,1507 ****
  * shall have a Size that does not exceed the specified value; and
  
  * shall have a (possibly inherited) ``Size'Class`` aspect that does not exceed
!   the specifed value; and
  
  * shall be undiscriminated; and
  
--- 1526,1532 ----
  * shall have a Size that does not exceed the specified value; and
  
  * shall have a (possibly inherited) ``Size'Class`` aspect that does not exceed
!   the specified value; and
  
  * shall be undiscriminated; and
  
*************** another sequence of statements is comple
*** 1746,1751 ****
--- 1771,1779 ----
  
  This feature is similar to the one with the same name in other languages such as Java.
  
+ Note that ``finally`` is a keyword but it is not a reserved word. This is a
+ configuration that does not exist in standard Ada.
+ 
  Syntax
  ^^^^^^
  
*************** Destructors
*** 1800,1806 ****
  -----------
  
  The :ada:`Destructor` extension adds a new finalization mechanism that
! significantly differs standard Ada in how it interacts with type derivation.
  
  New syntax is introduced to make it possible to define "destructors" for record
  types, tagged or untagged. Here's a simple example:
--- 1828,1835 ----
  -----------
  
  The :ada:`Destructor` extension adds a new finalization mechanism that
! significantly differs from standard Ada in how it interacts with type
! derivation.
  
  New syntax is introduced to make it possible to define "destructors" for record
  types, tagged or untagged. Here's a simple example:
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun May 31 22:32:04 2026
*************** to set this restriction (if some unit do
*** 937,943 ****
  the binder will refuse to bind the partition).
  
  Technical note: The restriction name and the unit name are
! intepreted entirely syntactically, as in the corresponding
  Restrictions pragma, they are not analyzed semantically,
  so they do not have a type.
  
--- 937,943 ----
  the binder will refuse to bind the partition).
  
  Technical note: The restriction name and the unit name are
! interpreted entirely syntactically, as in the corresponding
  Restrictions pragma, they are not analyzed semantically,
  so they do not have a type.
  
*************** If the opposite storage order is specifi
*** 1067,1073 ****
  a scalar component of an object of type ``S`` is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
! operatings on the enclosing machine scalar), and the opposite operation
  is done for writes.
  
  In that case, the restrictions set forth in 13.5.1(10.3/2) for scalar components
--- 1067,1073 ----
  a scalar component of an object of type ``S`` is read, the storage
  elements of the enclosing machine scalar are first reversed (before
  retrieving the component value, possibly applying some shift and mask
! operations on the enclosing machine scalar), and the opposite operation
  is done for writes.
  
  In that case, the restrictions set forth in 13.5.1(10.3/2) for scalar components
*************** inheritance in the case of a derived typ
*** 1089,1095 ****
  the native ordering of the target, but this default can be overridden using
  pragma ``Default_Scalar_Storage_Order``.
  
! If a component of ``T`` is itself of a record or array type, the specfied
  ``Scalar_Storage_Order`` does *not* apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
--- 1089,1095 ----
  the native ordering of the target, but this default can be overridden using
  pragma ``Default_Scalar_Storage_Order``.
  
! If a component of ``T`` is itself of a record or array type, the specified
  ``Scalar_Storage_Order`` does *not* apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
*************** static expression and where the function
*** 1304,1310 ****
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
  -(2**(m-1)) .. 2**m-1, where m is the memory size
! (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
--- 1304,1310 ----
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
  -(2**(m-1)) .. 2**m-1, where m is the memory size
! (typically 32 or 64). Negative values are interpreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
*************** begin unmodified. Similarly:
*** 1629,1635 ****
  
  
  yields a value for ``Rvar2`` of (A => 1, B => 20, C => 3),
! with ``Rvar1`` being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
--- 1629,1635 ----
  
  
  yields a value for ``Rvar2`` of (A => 1, B => 20, C => 3),
! with ``Rvar1`` being unmodified.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Sun May 31 22:32:04 2026
*************** main program in the natural manner.
*** 773,779 ****
  These names are interpreted consistently with the underlying file system.
  
  *
!   "The maxium value for a file size in Directories.  See A.16(87)."
  
  Directories.File_Size'Last is equal to Long_Long_Integer'Last .
  
--- 773,779 ----
  These names are interpreted consistently with the underlying file system.
  
  *
!   "The maximum value for a file size in Directories.  See A.16(87)."
  
  Directories.File_Size'Last is equal to Long_Long_Integer'Last .
  
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun May 31 22:32:04 2026
*************** except that in an ``Assertion_Policy`` p
*** 485,491 ****
  (or disabled).
  
  The intention is that this be used within a subprogram when the
! given test expresion sums up all the work done so far in the
  subprogram, so that the rest of the subprogram can be verified
  (informally or formally) using only the entry preconditions,
  and the expression in this pragma. This allows dividing up
--- 485,491 ----
  (or disabled).
  
  The intention is that this be used within a subprogram when the
! given test expression sums up all the work done so far in the
  subprogram, so that the rest of the subprogram can be verified
  (informally or formally) using only the entry preconditions,
  and the expression in this pragma. This allows dividing up
*************** checking is enabled.
*** 4854,4860 ****
  
  Note that pragma ``Postcondition`` differs from the language-defined
  ``Post`` aspect (and corresponding ``Post`` pragma) in allowing
! multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier ``Check``. Historically, pragma
  ``Postcondition`` was implemented prior to the development of
--- 4854,4860 ----
  
  Note that pragma ``Postcondition`` differs from the language-defined
  ``Post`` aspect (and corresponding ``Post`` pragma) in allowing
! multiple occurrences, allowing occurrences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier ``Check``. Historically, pragma
  ``Postcondition`` was implemented prior to the development of
*************** checking is enabled.
*** 4984,4990 ****
  
  Note that pragma ``Precondition`` differs from the language-defined
  ``Pre`` aspect (and corresponding ``Pre`` pragma) in allowing
! multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier ``Check``. Historically, pragma
  ``Precondition`` was implemented prior to the development of
--- 4984,4990 ----
  
  Note that pragma ``Precondition`` differs from the language-defined
  ``Pre`` aspect (and corresponding ``Pre`` pragma) in allowing
! multiple occurrences, allowing occurrences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier ``Check``. Historically, pragma
  ``Precondition`` was implemented prior to the development of
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst	Sun May 31 22:32:04 2026
*************** http://www.ada-auth.org/AI12-SUMMARY.HTM
*** 356,362 ****
  
    .. code::
  
!     Array (1 .. 10) of Integer :=
        (for I in 1 .. 10 => I ** 2);
      type Matrix is
      array
--- 356,362 ----
  
    .. code::
  
!     array (1 .. 10) of Integer :=
        (for I in 1 .. 10 => I ** 2);
      type Matrix is
      array
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst	Sun May 31 22:32:04 2026
*************** True for all of these, as well as for an
*** 269,275 ****
  	?? := Get_Unrelated_Obj_Acc (BEx): --  ditto, NO ERROR DETECTED!
      end;
  
! The calls marked with ``NO ERROR DETECTED!`` will compile sucessfully,
  even though the types specified in the specializations of the generic
  function do not match the type of the exception object that the
  function is expected to return. Mismatches between derived and base
--- 269,275 ----
  	?? := Get_Unrelated_Obj_Acc (BEx): --  ditto, NO ERROR DETECTED!
      end;
  
! The calls marked with ``NO ERROR DETECTED!`` will compile successfully,
  even though the types specified in the specializations of the generic
  function do not match the type of the exception object that the
  function is expected to return. Mismatches between derived and base
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun May 31 22:32:04 2026
*************** done for the case of anonymous access-to
*** 1948,1954 ****
  In GNAT, we decide that if an explicit Convention is applied
  to an object or component, and its type is such an anonymous type,
  then the convention will apply to this anonymous type as well. This
! seems to make sense since it is anomolous in any case to have a
  different convention for an object and its type, and there is clearly
  no way to explicitly specify a convention for an anonymous type, since
  it doesn't have a name to specify!
--- 1948,1954 ----
  In GNAT, we decide that if an explicit Convention is applied
  to an object or component, and its type is such an anonymous type,
  then the convention will apply to this anonymous type as well. This
! seems to make sense since it is anomalous in any case to have a
  different convention for an object and its type, and there is clearly
  no way to explicitly specify a convention for an anonymous type, since
  it doesn't have a name to specify!
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Sun May 31 22:32:04 2026
*************** to support specific constructs of the la
*** 194,200 ****
  * ``System.Memory``: heap memory allocation routines,
  * ``System.Memory_Compare``: memory comparison routine (aka ``memcmp`` for C),
  * ``System.Memory_Copy``: memory copy routine (aka ``memcpy`` for C),
! * ``System.Memory_Move``: memoy move routine (aka ``memmove`` for C),
  * ``System.Memory_Set``: memory set routine (aka ``memset`` for C),
  * ``System.Stack_Checking[.Operations]``: stack checking without MMU,
  * ``System.GCC``: support routines from the GCC library.
--- 194,200 ----
  * ``System.Memory``: heap memory allocation routines,
  * ``System.Memory_Compare``: memory comparison routine (aka ``memcmp`` for C),
  * ``System.Memory_Copy``: memory copy routine (aka ``memcpy`` for C),
! * ``System.Memory_Move``: memory move routine (aka ``memmove`` for C),
  * ``System.Memory_Set``: memory set routine (aka ``memset`` for C),
  * ``System.Stack_Checking[.Operations]``: stack checking without MMU,
  * ``System.GCC``: support routines from the GCC library.
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm/the_gnat_library.rst gcc-17-20260531/gcc/ada/doc/gnat_rm/the_gnat_library.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Sun May 31 22:32:04 2026
*************** multiple instantiations.
*** 642,648 ****
  
  .. index:: UTF-8 representation
  
! .. index:: Wide characte representations
  
  Provides a routine which given a string, reads the start of the string to
  see whether it is one of the standard byte order marks (BOM's) which signal
--- 642,648 ----
  
  .. index:: UTF-8 representation
  
! .. index:: Wide character representations
  
  Provides a routine which given a string, reads the start of the string to
  see whether it is one of the standard byte order marks (BOM's) which signal
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_rm.rst gcc-17-20260531/gcc/ada/doc/gnat_rm.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_rm.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_rm.rst	Sun May 31 22:32:04 2026
*************** GNAT Reference Manual
*** 45,50 ****
--- 45,51 ----
     gnat_rm/implementation_defined_attributes
     gnat_rm/standard_and_implementation_defined_restrictions
     gnat_rm/implementation_advice
+    gnat_rm/gnat_implementation_mode
     gnat_rm/implementation_defined_characteristics
     gnat_rm/intrinsic_subprograms
     gnat_rm/representation_clauses_and_pragmas
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-17-20260531/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun May 31 22:32:04 2026
*************** Alphabetical List of All Switches
*** 1616,1622 ****
  
  :switch:`-gnateH`
    Set the threshold from which the RM 13.5.1(13.3/2) clause applies to 64.
!   This is useful only on 64-bit plaforms where this threshold is 128, but
    used to be 64 in earlier versions of the compiler.
  
  
--- 1616,1622 ----
  
  :switch:`-gnateH`
    Set the threshold from which the RM 13.5.1(13.3/2) clause applies to 64.
!   This is useful only on 64-bit platforms where this threshold is 128, but
    used to be 64 in earlier versions of the compiler.
  
  
*************** correctly, the two variables
*** 7345,7353 ****
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual ``argc`` and ``argv`` values passed to the
! main program. With no *n* present, ``gnatbind``
  generates the C main program to automatically set these variables.
! If the *n* switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  ``Ada.Command_Line`` will not be available, and any attempt to use
  them will raise ``Constraint_Error``. If command line access is
--- 7345,7353 ----
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual ``argc`` and ``argv`` values passed to the
! main program. With no :switch:`-n` present, ``gnatbind``
  generates the C main program to automatically set these variables.
! If the :switch:`-n` switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  ``Ada.Command_Line`` will not be available, and any attempt to use
  them will raise ``Constraint_Error``. If command line access is
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-17-20260531/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sun May 31 22:32:04 2026
*************** using GNAT and your familiarity with com
*** 647,653 ****
  Naming Conventions for GNAT Source Files
  ----------------------------------------
  
! In order to bettter understand the workings of the GNAT system, the following
  brief description of its organization may be helpful:
  
  * Files with prefix :file:`sc` contain the lexical scanner.
--- 647,653 ----
  Naming Conventions for GNAT Source Files
  ----------------------------------------
  
! In order to better understand the workings of the GNAT system, the following
  brief description of its organization may be helpful:
  
  * Files with prefix :file:`sc` contain the lexical scanner.
*************** aliasing optimizations are automatically
*** 2265,2271 ****
  
  If it's not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
! source type is not visible in that unit), the second possibiliy is for you to
  use pragma ``No_Strict_Aliasing`` for the type. You must place this pragma
  in the same declarative part as the declaration of the access type:
  
--- 2265,2271 ----
  
  If it's not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
! source type is not visible in that unit), the second possibility is for you to
  use pragma ``No_Strict_Aliasing`` for the type. You must place this pragma
  in the same declarative part as the declaration of the access type:
  
*************** optimizations that assume the variable c
*** 2421,2427 ****
  means that the above example will in fact "work" reliably, that is, it
  will produce the expected results. However, you should nevertheless
  avoid code such as this if possible because it's not portable and may not
! functin as you expect with all compilers.
  
  
  .. _Atomic_Variables_and_Optimization:
--- 2421,2427 ----
  means that the above example will in fact "work" reliably, that is, it
  will produce the expected results. However, you should nevertheless
  avoid code such as this if possible because it's not portable and may not
! function as you expect with all compilers.
  
  
  .. _Atomic_Variables_and_Optimization:
*************** for code that is to be exported to some
*** 3043,3049 ****
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
  example, ``A+B+C`` parses as though it were ``(A+B)+C``, but
! the compiler can reintepret this as ``A+(B+C)``, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
  expression ``A+B+C`` will be evaluated as ``(A+B)+C``.
--- 3043,3049 ----
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
  example, ``A+B+C`` parses as though it were ``(A+B)+C``, but
! the compiler can reinterpret this as ``A+(B+C)``, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
  expression ``A+B+C`` will be evaluated as ``(A+B)+C``.
*************** given in kilobytes. For example:
*** 3552,3558 ****
  would specify to the analyzer that the environment task stack has a limit
  of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
  
! This is not suppored by the LLVM back end.
  
  The package ``GNAT.Task_Stack_Usage`` provides facilities to get
  stack-usage reports at run time. See its body for the details.
--- 3552,3558 ----
  would specify to the analyzer that the environment task stack has a limit
  of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
  
! This is not supported by the LLVM back end.
  
  The package ``GNAT.Task_Stack_Usage`` provides facilities to get
  stack-usage reports at run time. See its body for the details.
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst gcc-17-20260531/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Sun May 31 22:32:04 2026
*************** building specialized scripts.
*** 602,608 ****
       * Places each keyword ``use`` in USE clauses on a separate line
       * Splits the line just before the keyword ``record`` in a RECORD type
         declaration
!      * Indents named blocks and loop statments with respect to the name
       * When necessary, splits binary operators always before the operator
       * Inserts an extra blank before various occurrences of ``(`` and ``:``
       * When it is necessary to split a line between two subexpressions (because
--- 602,608 ----
       * Places each keyword ``use`` in USE clauses on a separate line
       * Splits the line just before the keyword ``record`` in a RECORD type
         declaration
!      * Indents named blocks and loop statements with respect to the name
       * When necessary, splits binary operators always before the operator
       * Inserts an extra blank before various occurrences of ``(`` and ``:``
       * When it is necessary to split a line between two subexpressions (because
*************** building specialized scripts.
*** 1069,1075 ****
       If you specify a project file but don't specify a source file,
       either directly or by means of a :switch:`--files` option,
       ``gnatpp`` processes all the units of the closure of the
!      specifed project. Otherwise this option has no effect.
  
     :switch:`-U {main_unit}`
       If you specify a project file but don't specify a source file,
--- 1069,1075 ----
       If you specify a project file but don't specify a source file,
       either directly or by means of a :switch:`--files` option,
       ``gnatpp`` processes all the units of the closure of the
!      specified project. Otherwise this option has no effect.
  
     :switch:`-U {main_unit}`
       If you specify a project file but don't specify a source file,
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_ugn/platform_specific_information.rst gcc-17-20260531/gcc/ada/doc/gnat_ugn/platform_specific_information.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Sun May 31 22:32:04 2026
*************** This gets the effective user id and if i
*** 292,298 ****
  Program_Error. Note that if you're running the code in a container, this may
  not be sufficient as you may have sufficient privilege on the container,
  but not on the host machine running the container, so check that you also
! have sufficient priviledge for running the container image.
  
  .. _A_GNU_Linux_debug_quirk:
  
--- 292,298 ----
  Program_Error. Note that if you're running the code in a container, this may
  not be sufficient as you may have sufficient privilege on the container,
  but not on the host machine running the container, so check that you also
! have sufficient privilege for running the container image.
  
  .. _A_GNU_Linux_debug_quirk:
  
*************** least the following data::
*** 586,592 ****
     </assembly>
  
  Without the manifest file, the socket timeout will be overcorrected on
! these Windows Server versions and the actual time wil be 500
  milliseconds shorter than what was set with
  ``GNAT.Sockets.Set_Socket_Option``.  Note that on Microsoft Windows
  versions where correction is necessary, there is no way to set a
--- 586,592 ----
     </assembly>
  
  Without the manifest file, the socket timeout will be overcorrected on
! these Windows Server versions and the actual time will be 500
  milliseconds shorter than what was set with
  ``GNAT.Sockets.Set_Socket_Option``.  Note that on Microsoft Windows
  versions where correction is necessary, there is no way to set a
*************** You may specify any of the following swi
*** 1617,1622 ****
--- 1617,1628 ----
    ``file`` contains the name of an ALI or object file.
  
  
+   .. index:: -m (gnatdll)
+ 
+ :switch:`-m`
+   Generate map file
+ 
+ 
    .. index:: -n (gnatdll)
  
  :switch:`-n`
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-17-20260531/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-17-20260524/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun May 31 22:32:04 2026
*************** An exception occurs if the file name gen
*** 368,374 ****
  with one of the characters
  ``a``, ``g``, ``i``, or ``s`` and the second character is a
  hyphen. In this case, the character tilde is used in place
! of the hypen. This special rule avoids clashes with
  the standard names for child units of the packages ``System``, ``Ada``,
  ``Interfaces``, and ``GNAT``, which use the prefixes
  ``s-``, ``a-``, ``i-``, and ``g-``,
--- 368,374 ----
  with one of the characters
  ``a``, ``g``, ``i``, or ``s`` and the second character is a
  hyphen. In this case, the character tilde is used in place
! of the hyphen. This special rule avoids clashes with
  the standard names for child units of the packages ``System``, ``Ada``,
  ``Interfaces``, and ``GNAT``, which use the prefixes
  ``s-``, ``a-``, ``i-``, and ``g-``,
*************** use of a foreign linker for the last pha
*** 3907,3913 ****
    mechanism used.
  
    If you are using the ``setjmp`` / ``longjmp`` exception mechanism, you need only
!   inclue the paths to the ``libgcc`` libraries:
  
    .. code-block:: sh
  
--- 3907,3913 ----
    mechanism used.
  
    If you are using the ``setjmp`` / ``longjmp`` exception mechanism, you need only
!   include the paths to the ``libgcc`` libraries:
  
    .. code-block:: sh
  
diff -Nrcpad gcc-17-20260524/gcc/ada/doc/share/conf.py gcc-17-20260531/gcc/ada/doc/share/conf.py
*** gcc-17-20260524/gcc/ada/doc/share/conf.py	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/doc/share/conf.py	Sun May 31 22:32:04 2026
*************** if os.path.isfile('favicon.ico'):
*** 150,156 ****
  
  html_static_path = ['_static']
  
! # Use gnat.sty for bulding documents
  latex_additional_files = ['gnat.sty']
  
  # Add copyright info to file
--- 150,156 ----
  
  html_static_path = ['_static']
  
! # Use gnat.sty for building documents
  latex_additional_files = ['gnat.sty']
  
  # Add copyright info to file
diff -Nrcpad gcc-17-20260524/gcc/ada/einfo.ads gcc-17-20260531/gcc/ada/einfo.ads
*** gcc-17-20260524/gcc/ada/einfo.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/einfo.ads	Sun May 31 22:32:04 2026
*************** package Einfo is
*** 430,436 ****
  --    Alignment_Clause (synthesized)
  --       Applies to all entities for types and objects. If an alignment
  --       attribute definition clause is present for the entity, then this
! --       function returns the N_Attribute_Definition clause that specifies the
  --       alignment. If no alignment clause applies to the type, then the call
  --       to this function returns Empty. Note that the call can return a
  --       non-Empty value even if Has_Alignment_Clause is not set (happens with
--- 430,436 ----
  --    Alignment_Clause (synthesized)
  --       Applies to all entities for types and objects. If an alignment
  --       attribute definition clause is present for the entity, then this
! --       function returns the N_Attribute_Definition_Clause that specifies the
  --       alignment. If no alignment clause applies to the type, then the call
  --       to this function returns Empty. Note that the call can return a
  --       non-Empty value even if Has_Alignment_Clause is not set (happens with
*************** package Einfo is
*** 1608,1614 ****
  
  --    Has_Delayed_Aspects
  --       Defined in all entities. Set if the Rep_Item chain for the entity has
! --       one or more N_Aspect_Definition nodes chained which are not to be
  --       evaluated till the freeze point. The aspect definition expression
  --       clause has been preanalyzed to get visibility at the point of use,
  --       but no other action has been taken.
--- 1608,1614 ----
  
  --    Has_Delayed_Aspects
  --       Defined in all entities. Set if the Rep_Item chain for the entity has
! --       one or more N_Aspect_Definition nodes chained that are not to be
  --       evaluated till the freeze point. The aspect definition expression
  --       clause has been preanalyzed to get visibility at the point of use,
  --       but no other action has been taken.
*************** package Einfo is
*** 2294,2310 ****
  --       to multiple subprogram entities).
  
  --    In_Package_Body
! --       Defined in package entities. Set on the entity that denotes the
! --       package (the defining occurrence of the package declaration) while
! --       analyzing and expanding the package body. Reset on completion of
! --       analysis/expansion.
  
  --    In_Private_Part
! --       Defined in all entities. Can be set only in package entities and
! --       objects. For package entities, this flag is set to indicate that the
! --       private part of the package is being analyzed. The flag is reset at
! --       the end of the package declaration. For objects it indicates that the
! --       declaration of the object occurs in the private part of a package.
  
  --    Incomplete_Actuals
  --       Defined on package entities that are instances. Indicates the actuals
--- 2294,2313 ----
  --       to multiple subprogram entities).
  
  --    In_Package_Body
! --       Defined in all entities. Can be set only in package entities, objects
! --       and overloadable entities. For package entities, this flag is set to
! --       indicate that the body of the package is being analyzed. The flag is
! --       reset at the end of the package body. For objects and overloadable
! --       entities, indicates that the declaration of the entity occurs in the
! --       body of a package.
  
  --    In_Private_Part
! --       Defined in all entities. Can be set only in package entities, objects
! --       and overloadable entities. For package entities, this flag is set to
! --       indicate that the private part of the package is being analyzed. The
! --       flag is reset at the end of the package declaration. For objects and
! --       overloadable entities, indicates that the declaration of the entity
! --       occurs in the private part of a package.
  
  --    Incomplete_Actuals
  --       Defined on package entities that are instances. Indicates the actuals
diff -Nrcpad gcc-17-20260524/gcc/ada/env.c gcc-17-20260531/gcc/ada/env.c
*** gcc-17-20260524/gcc/ada/env.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/env.c	Sun May 31 22:32:04 2026
*************** void __gnat_clearenv (void)
*** 256,261 ****
--- 256,303 ----
  #endif
  }
  
+ /* It used to be the case that users were required to forward the envp
+    parameter of main to the variable below when using a non-Ada main. The
+    consequences for failing to meet the requirement was improper operation of
+    Ada.Command_Line.Environment.
+ 
+    Nowadays, users are not required to do anything with gnat_envp and
+    Ada.Command_Line.Environment does not use it anymore. In fact it's not used
+    by anything, but we keep its definition so that programs that obey the old
+    requirement keep linking. */
+ char **gnat_envp = NULL;
+ 
+ int
+ __gnat_env_count (void)
+ {
+   int i;
+   char **envp = __gnat_environ();
+ 
+   for (i = 0; envp[i]; i++)
+     ;
+   return i;
+ }
+ 
+ int
+ __gnat_len_env (int env_num)
+ {
+   char **envp = __gnat_environ();
+ 
+   if (envp != NULL)
+     return strlen (envp[env_num]);
+   else
+     return 0;
+ }
+ 
+ void
+ __gnat_fill_env (char *a, int i)
+ {
+   char **envp = __gnat_environ();
+ 
+   if (envp != NULL)
+     memcpy (a, envp[i], strlen (envp[i]));
+ }
+ 
  #ifdef __cplusplus
  }
  #endif
diff -Nrcpad gcc-17-20260524/gcc/ada/env.h gcc-17-20260531/gcc/ada/env.h
*** gcc-17-20260524/gcc/ada/env.h	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/env.h	Sun May 31 22:32:04 2026
***************
*** 29,36 ****
--- 29,44 ----
   *                                                                          *
   ****************************************************************************/
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  extern void __gnat_getenv (char *name, int *len, char **value);
  extern void __gnat_setenv (char *name, char *value);
  extern char **__gnat_environ (void);
  extern void __gnat_unsetenv (char *name);
  extern void __gnat_clearenv(void);
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-17-20260524/gcc/ada/errid-diagnostic_repository.ads gcc-17-20260531/gcc/ada/errid-diagnostic_repository.ads
*** gcc-17-20260524/gcc/ada/errid-diagnostic_repository.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errid-diagnostic_repository.ads	Sun May 31 22:32:04 2026
***************
*** 23,29 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Types; use Types;
  
  package Errid.Diagnostic_Repository is
     type Diagnostic_Entry_Type is record
--- 23,30 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Rident; use Rident;
! with Types;  use Types;
  
  package Errid.Diagnostic_Repository is
     type Diagnostic_Entry_Type is record
*************** package Errid.Diagnostic_Repository is
*** 36,41 ****
--- 37,45 ----
  
        Switch : Switch_Id := No_Switch_Id;
        --  The switch that controls the diagnostic message.
+ 
+       Restriction : Restriction_Id := Not_A_Restriction_Id;
+       --  The restriction associated with the diagnostic message.
     end record;
  
     type Diagnostics_Registry_Type is
*************** package Errid.Diagnostic_Repository is
*** 60,98 ****
     Diagnostic_Entries : constant Diagnostics_Registry_Type :=
       (No_Diagnostic_Id => <>,
        GNAT0001         =>
!         (Status   => Active,
!          Human_Id => new String'("Default_Iterator_Not_Primitive_Error"),
!          Switch   => No_Switch_Id),
        GNAT0002         =>
!         (Status   => Active,
!          Human_Id => new String'("Invalid_Operand_Types_General_Error"),
!          Switch   => No_Switch_Id),
        GNAT0003         =>
!         (Status   => Active,
!          Human_Id => new String'("Pragma_No_Effect_With_Lock_Free_Warning"),
!          Switch   => No_Switch_Id),
        GNAT0004         =>
!         (Status   => Active,
!          Human_Id => new String'("End_Loop_Expected_Error"),
!          Switch   => No_Switch_Id),
        GNAT0005         =>
!         (Status   => Active,
!          Human_Id => new String'("Representation_Too_Late_Error"),
!          Switch   => No_Switch_Id),
        GNAT0006         =>
!         (Status   => Active,
!          Human_Id => new String'("Mixed_Container_Aggregate_Error"),
!          Switch   => No_Switch_Id),
!      GNAT0007         =>
!         (Status   => Active,
!          Human_Id => new String'("Volatile_Not_Modifed_Warning"),
!          Switch   => gnatwk),
!      GNAT0008         =>
!         (Status   => Active,
!          Human_Id => new String'("Variable_Not_Modifed_Warning"),
!          Switch   => gnatwk),
!      GNAT0009         =>
!         (Status   => Active,
!          Human_Id => new String'("In_Out_Not_Modifed_Warning"),
!          Switch   => gnatwk));
  end Errid.Diagnostic_Repository;
--- 64,694 ----
     Diagnostic_Entries : constant Diagnostics_Registry_Type :=
       (No_Diagnostic_Id => <>,
        GNAT0001         =>
!         (Status      => Active,
!          Human_Id    => new String'("Default_Iterator_Not_Primitive_Error"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
        GNAT0002         =>
!         (Status      => Active,
!          Human_Id    => new String'("Invalid_Operand_Types_General_Error"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
        GNAT0003         =>
!         (Status      => Active,
!          Human_Id    => new String'("Pragma_No_Effect_With_Lock_Free_Warning"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
        GNAT0004         =>
!         (Status      => Active,
!          Human_Id    => new String'("End_Loop_Expected_Error"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
        GNAT0005         =>
!         (Status      => Active,
!          Human_Id    => new String'("Representation_Too_Late_Error"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
        GNAT0006         =>
!         (Status      => Active,
!          Human_Id    => new String'("Mixed_Container_Aggregate_Error"),
!          Switch      => No_Switch_Id,
!          Restriction => Not_A_Restriction_Id),
!       GNAT0007         =>
!         (Status      => Active,
!          Human_Id    => new String'("Volatile_Not_Modifed_Warning"),
!          Switch      => gnatwk,
!          Restriction => Not_A_Restriction_Id),
!       GNAT0008         =>
!         (Status      => Active,
!          Human_Id    => new String'("Variable_Not_Modifed_Warning"),
!          Switch      => gnatwk,
!          Restriction => Not_A_Restriction_Id),
!       GNAT0009         =>
!         (Status      => Active,
!          Human_Id    => new String'("In_Out_Not_Modifed_Warning"),
!          Switch      => gnatwk,
!          Restriction => Not_A_Restriction_Id),
!       GNAT0010         =>
!         (Status      => Active,
!          Human_Id    => new String'("Simple_Barriers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Simple_Barriers),
!       GNAT0011         =>
!         (Status      => Active,
!          Human_Id    => new String'("Pure_Barriers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Pure_Barriers),
!       GNAT0012         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Abort_Statements_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Abort_Statements),
!       GNAT0013         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Access_Parameter_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Access_Parameter_Allocators),
!       GNAT0014         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Access_Subprograms_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Access_Subprograms),
!       GNAT0015         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Allocators),
!       GNAT0016         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Anonymous_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Anonymous_Allocators),
!       GNAT0017         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Asynchronous_Control_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Asynchronous_Control),
!       GNAT0018         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Calendar_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Calendar),
!       GNAT0019         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Coextensions_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Coextensions),
!       GNAT0020         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Default_Stream_Attributes_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Default_Stream_Attributes),
!       GNAT0021         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Delay_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Delay),
!       GNAT0022         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Direct_Boolean_Operators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Direct_Boolean_Operators),
!       GNAT0023         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Dispatch_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dispatch),
!       GNAT0024         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Dispatching_Calls_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dispatching_Calls),
!       GNAT0025         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Dynamic_Accessibility_Checks_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dynamic_Accessibility_Checks),
!       GNAT0026         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Dynamic_Attachment_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dynamic_Attachment),
!       GNAT0027         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Dynamic_CPU_Assignment_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dynamic_CPU_Assignment),
!       GNAT0028         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Dynamic_Priorities_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dynamic_Priorities),
!       GNAT0029         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Enumeration_Maps_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Enumeration_Maps),
!       GNAT0030         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Entry_Calls_In_Elaboration_Code_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Entry_Calls_In_Elaboration_Code),
!       GNAT0031         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Entry_Queue_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Entry_Queue),
!       GNAT0032         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Exception_Handlers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Exception_Handlers),
!       GNAT0033         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Exception_Propagation_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Exception_Propagation),
!       GNAT0034         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Exception_Registration_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Exception_Registration),
!       GNAT0035         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Exceptions_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Exceptions),
!       GNAT0036         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Finalization_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Finalization),
!       GNAT0037         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Fixed_IO_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Fixed_IO),
!       GNAT0038         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Fixed_Point_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Fixed_Point),
!       GNAT0039         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Floating_Point_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Floating_Point),
!       GNAT0040         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_IO_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_IO),
!       GNAT0041         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implicit_Conditionals_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Conditionals),
!       GNAT0042         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implicit_Dynamic_Code_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Dynamic_Code),
!       GNAT0043         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implicit_Heap_Allocations_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Heap_Allocations),
!       GNAT0044         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implicit_Task_Allocations_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Task_Allocations),
!       GNAT0045         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Implicit_Protected_Object_Allocations"
!               & "_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Protected_Object_Allocations),
!       GNAT0046         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Initialize_Scalars_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Initialize_Scalars),
!       GNAT0047         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Local_Tagged_Types_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Local_Tagged_Types),
!       GNAT0048         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Local_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Local_Allocators),
!       GNAT0049         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Local_Timing_Events_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Local_Timing_Events),
!       GNAT0050         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Local_Protected_Objects_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Local_Protected_Objects),
!       GNAT0051         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Long_Long_Integers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Long_Long_Integers),
!       GNAT0052         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Multiple_Elaboration_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Multiple_Elaboration),
!       GNAT0053         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Nested_Finalization_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Nested_Finalization),
!       GNAT0054         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Protected_Type_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Protected_Type_Allocators),
!       GNAT0055         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Protected_Types_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Protected_Types),
!       GNAT0056         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Recursion_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Recursion),
!       GNAT0057         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Reentrancy_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Reentrancy),
!       GNAT0058         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Relative_Delay_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Relative_Delay),
!       GNAT0059         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Requeue_Statements_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Requeue_Statements),
!       GNAT0060         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Secondary_Stack_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Secondary_Stack),
!       GNAT0061         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Select_Statements_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Select_Statements),
!       GNAT0062         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Specific_Termination_Handlers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Specific_Termination_Handlers),
!       GNAT0063         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Standard_Allocators_After_Elaboration"
!               & "_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Standard_Allocators_After_Elaboration),
!       GNAT0064         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Standard_Storage_Pools_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Standard_Storage_Pools),
!       GNAT0065         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Stream_Optimizations_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Stream_Optimizations),
!       GNAT0066         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Streams_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Streams),
!       GNAT0067         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Tagged_Type_Registration_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Tagged_Type_Registration),
!       GNAT0068         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Task_Allocators_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_Allocators),
!       GNAT0069         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Task_Attributes_Package_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_Attributes_Package),
!       GNAT0070         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Task_At_Interrupt_Priority_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_At_Interrupt_Priority),
!       GNAT0071         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Task_Hierarchy_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_Hierarchy),
!       GNAT0072         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Task_Hierarchy_Implicit_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_Hierarchy_Implicit),
!       GNAT0073         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Task_Termination_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Task_Termination),
!       GNAT0074         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Tasks_Unassigned_To_CPU_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Tasks_Unassigned_To_CPU),
!       GNAT0075         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Tasking_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Tasking),
!       GNAT0076         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Terminate_Alternatives_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Terminate_Alternatives),
!       GNAT0077         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Unchecked_Access_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Unchecked_Access),
!       GNAT0078         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Unchecked_Conversion_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Unchecked_Conversion),
!       GNAT0079         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Unchecked_Deallocation_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Unchecked_Deallocation),
!       GNAT0080         =>
!         (Status      => Active,
!          Human_Id    => new String'("Static_Priorities_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Static_Priorities),
!       GNAT0081         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Static_Storage_Size_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Static_Storage_Size),
!       GNAT0082         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Default_Initialization_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Default_Initialization),
!       GNAT0083         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Immediate_Reclamation_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Immediate_Reclamation),
!       GNAT0084         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Dynamic_Sized_Objects_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Dynamic_Sized_Objects),
!       GNAT0085         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("No_Implementation_Aspect_Specifications_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Aspect_Specifications),
!       GNAT0086         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implementation_Attributes_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Attributes),
!       GNAT0087         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implementation_Identifiers_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Identifiers),
!       GNAT0088         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implementation_Pragmas_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Pragmas),
!       GNAT0089         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implementation_Restrictions_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Restrictions),
!       GNAT0090         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implementation_Units_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implementation_Units),
!       GNAT0091         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Implicit_Aliasing_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Aliasing),
!       GNAT0092         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Implicit_Loops_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Implicit_Loops),
!       GNAT0093         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Elaboration_Code_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Elaboration_Code),
!       GNAT0094         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Obsolescent_Features_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Obsolescent_Features),
!       GNAT0095         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Unrecognized_Aspects_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Unrecognized_Aspects),
!       GNAT0096         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Unrecognized_Pragmas_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Unrecognized_Pragmas),
!       GNAT0097         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Wide_Characters_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Wide_Characters),
!       GNAT0098         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Static_Dispatch_Tables_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Static_Dispatch_Tables),
!       GNAT0099         =>
!         (Status      => Active,
!          Human_Id    => new String'("SPARK_05_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => SPARK_05),
!       GNAT0100         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Specification_Of_Aspect_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Specification_Of_Aspect),
!       GNAT0101         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("No_Use_Of_Attribute_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Use_Of_Attribute),
!       GNAT0102         =>
!         (Status      => Active,
!          Human_Id    => new String'("No_Use_Of_Pragma_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => No_Use_Of_Pragma),
!       GNAT0103         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Max_Protected_Entries_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Protected_Entries),
!       GNAT0104         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Max_Select_Alternatives_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Select_Alternatives),
!       GNAT0105         =>
!         (Status      => Active,
!          Human_Id    => new String'("Max_Task_Entries_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Task_Entries),
!       GNAT0106         =>
!         (Status      => Active,
!          Human_Id    => new String'("Max_Tasks_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Tasks),
!       GNAT0107         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'
!              ("Max_Asynchronous_Select_Nesting_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Asynchronous_Select_Nesting),
!       GNAT0108         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Max_Entry_Queue_Length_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Entry_Queue_Length),
!       GNAT0109         =>
!         (Status      => Active,
!          Human_Id    =>
!            new String'("Max_Storage_At_Blocking_Restriction_Violation"),
!          Switch      => No_Switch_Id,
!          Restriction => Max_Storage_At_Blocking));
  end Errid.Diagnostic_Repository;
diff -Nrcpad gcc-17-20260524/gcc/ada/errid-restriction_repository.ads gcc-17-20260531/gcc/ada/errid-restriction_repository.ads
*** gcc-17-20260524/gcc/ada/errid-restriction_repository.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/ada/errid-restriction_repository.ads	Sun May 31 22:32:04 2026
***************
*** 0 ****
--- 1,178 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --          E R R I D . R E S T R I C T I O N _ R E P O S I T O R Y         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 1992-2026, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Rident; use Rident;
+ 
+ package Errid.Restriction_Repository is
+ 
+    type Restriction_To_Diagnostic_Mapping is
+      array (Restriction_Id) of Diagnostic_Id;
+ 
+    Rest_To_Diag_Mappping : constant Restriction_To_Diagnostic_Mapping :=
+      (Simple_Barriers                          => GNAT0010,
+       Pure_Barriers                            => GNAT0011,
+       No_Abort_Statements                      => GNAT0012,
+       No_Access_Parameter_Allocators           => GNAT0013,
+       No_Access_Subprograms                    => GNAT0014,
+       No_Allocators                            => GNAT0015,
+       No_Anonymous_Allocators                  => GNAT0016,
+       No_Asynchronous_Control                  => GNAT0017,
+       No_Calendar                              => GNAT0018,
+       No_Coextensions                          => GNAT0019,
+       No_Default_Stream_Attributes             => GNAT0020,
+       No_Delay                                 => GNAT0021,
+       No_Direct_Boolean_Operators              => GNAT0022,
+       No_Dispatch                              => GNAT0023,
+       No_Dispatching_Calls                     => GNAT0024,
+       No_Dynamic_Accessibility_Checks          => GNAT0025,
+       No_Dynamic_Attachment                    => GNAT0026,
+       No_Dynamic_CPU_Assignment                => GNAT0027,
+       No_Dynamic_Priorities                    => GNAT0028,
+       No_Enumeration_Maps                      => GNAT0029,
+       No_Entry_Calls_In_Elaboration_Code       => GNAT0030,
+       No_Entry_Queue                           => GNAT0031,
+       No_Exception_Handlers                    => GNAT0032,
+       No_Exception_Propagation                 => GNAT0033,
+       No_Exception_Registration                => GNAT0034,
+       No_Exceptions                            => GNAT0035,
+       No_Finalization                          => GNAT0036,
+       No_Fixed_IO                              => GNAT0037,
+       No_Fixed_Point                           => GNAT0038,
+       No_Floating_Point                        => GNAT0039,
+       No_IO                                    => GNAT0040,
+       No_Implicit_Conditionals                 => GNAT0041,
+       No_Implicit_Dynamic_Code                 => GNAT0042,
+       No_Implicit_Heap_Allocations             => GNAT0043,
+       No_Implicit_Task_Allocations             => GNAT0044,
+       No_Implicit_Protected_Object_Allocations => GNAT0045,
+       No_Initialize_Scalars                    => GNAT0046,
+       No_Local_Tagged_Types                    => GNAT0047,
+       No_Local_Allocators                      => GNAT0048,
+       No_Local_Timing_Events                   => GNAT0049,
+       No_Local_Protected_Objects               => GNAT0050,
+       No_Long_Long_Integers                    => GNAT0051,
+       No_Multiple_Elaboration                  => GNAT0052,
+       No_Nested_Finalization                   => GNAT0053,
+       No_Protected_Type_Allocators             => GNAT0054,
+       No_Protected_Types                       => GNAT0055,
+       No_Recursion                             => GNAT0056,
+       No_Reentrancy                            => GNAT0057,
+       No_Relative_Delay                        => GNAT0058,
+       No_Requeue_Statements                    => GNAT0059,
+       No_Secondary_Stack                       => GNAT0060,
+       No_Select_Statements                     => GNAT0061,
+       No_Specific_Termination_Handlers         => GNAT0062,
+       No_Standard_Allocators_After_Elaboration => GNAT0063,
+       No_Standard_Storage_Pools                => GNAT0064,
+       No_Stream_Optimizations                  => GNAT0065,
+       No_Streams                               => GNAT0066,
+       No_Tagged_Type_Registration              => GNAT0067,
+       No_Task_Allocators                       => GNAT0068,
+       No_Task_Attributes_Package               => GNAT0069,
+       No_Task_At_Interrupt_Priority            => GNAT0070,
+       No_Task_Hierarchy                        => GNAT0071,
+       No_Task_Hierarchy_Implicit               => GNAT0072,
+       No_Task_Termination                      => GNAT0073,
+       No_Tasks_Unassigned_To_CPU               => GNAT0074,
+       No_Tasking                               => GNAT0075,
+       No_Terminate_Alternatives                => GNAT0076,
+       No_Unchecked_Access                      => GNAT0077,
+       No_Unchecked_Conversion                  => GNAT0078,
+       No_Unchecked_Deallocation                => GNAT0079,
+       Static_Priorities                        => GNAT0080,
+       Static_Storage_Size                      => GNAT0081,
+ 
+       --  The following require consistency checking with special rules. See
+       --  individual routines in unit Bcheck for details of what is required.
+ 
+       No_Default_Initialization                => GNAT0082,
+ 
+       --  The following cases do not require consistency checking and if used
+       --  as a configuration pragma within a specific unit, apply only to that
+       --  unit (e.g. if used in the package spec, do not apply to the body)
+ 
+       --  Note: No_Elaboration_Code is handled specially. Like the other
+       --  non-partition-wide restrictions, it can only be set in a unit that
+       --  is part of the extended main source unit (body/spec/subunits). But
+       --  it is sticky, in that if it is found anywhere within any of these
+       --  units, it applies to all units in this extended main source.
+ 
+       Immediate_Reclamation                    => GNAT0083,
+       No_Dynamic_Sized_Objects                 => GNAT0084,
+       No_Implementation_Aspect_Specifications  => GNAT0085,
+       No_Implementation_Attributes             => GNAT0086,
+       No_Implementation_Identifiers            => GNAT0087,
+       No_Implementation_Pragmas                => GNAT0088,
+       No_Implementation_Restrictions           => GNAT0089,
+       No_Implementation_Units                  => GNAT0090,
+       No_Implicit_Aliasing                     => GNAT0091,
+       No_Implicit_Loops                        => GNAT0092,
+       No_Elaboration_Code                      => GNAT0093,
+       No_Obsolescent_Features                  => GNAT0094,
+       No_Unrecognized_Aspects                  => GNAT0095,
+       No_Unrecognized_Pragmas                  => GNAT0096,
+       No_Wide_Characters                       => GNAT0097,
+       Static_Dispatch_Tables                   => GNAT0098,
+       SPARK_05                                 => GNAT0099,
+ 
+       --  The following cases require a parameter value
+ 
+       No_Specification_Of_Aspect               => GNAT0100,
+       No_Use_Of_Attribute                      => GNAT0101,
+       No_Use_Of_Pragma                         => GNAT0102,
+ 
+       --  The following entries are fully checked at compile/bind time, which
+       --  means that the compiler can in general tell the minimum value which
+       --  could be used with a restrictions pragma. The binder can deduce the
+       --  appropriate minimum value for the partition by taking the maximum
+       --  value required by any unit.
+ 
+       Max_Protected_Entries                    => GNAT0103,
+       Max_Select_Alternatives                  => GNAT0104,
+       Max_Task_Entries                         => GNAT0105,
+ 
+       --  The following entries are also fully checked at compile/bind time,
+       --  and the compiler can also at least in some cases tell the minimum
+       --  value which could be used with a restriction pragma. The difference
+       --  is that the contributions are additive, so the binder deduces this
+       --  value by adding the unit contributions.
+ 
+       Max_Tasks                                => GNAT0106,
+ 
+       --  The following entries are checked at compile time only for zero/
+       --  nonzero entries. This means that the compiler can tell at compile
+       --  time if a restriction value of zero is (would be) violated, but that
+       --  the compiler cannot distinguish between different non-zero values.
+ 
+       Max_Asynchronous_Select_Nesting          => GNAT0107,
+       Max_Entry_Queue_Length                   => GNAT0108,
+ 
+       --  The remaining entries are not checked at compile/bind time
+ 
+       Max_Storage_At_Blocking                  => GNAT0109,
+ 
+       Not_A_Restriction_Id                     => No_Diagnostic_Id);
+ 
+ end Errid.Restriction_Repository;
diff -Nrcpad gcc-17-20260524/gcc/ada/errid.adb gcc-17-20260531/gcc/ada/errid.adb
*** gcc-17-20260524/gcc/ada/errid.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errid.adb	Sun May 31 22:32:04 2026
***************
*** 23,31 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Errid.Diagnostic_Repository; use Errid.Diagnostic_Repository;
! with Errid.Switch_Repository;     use Errid.Switch_Repository;
! with Erroutc.SARIF_Emitter;       use Erroutc.SARIF_Emitter;
  
  package body Errid is
  
--- 23,33 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Errid.Diagnostic_Repository;  use Errid.Diagnostic_Repository;
! with Errid.Restriction_Repository; use Errid.Restriction_Repository;
! with Errid.Switch_Repository;      use Errid.Switch_Repository;
! with Erroutc.SARIF_Emitter;        use Erroutc.SARIF_Emitter;
! with Rident;                       use Rident;
  
  package body Errid is
  
*************** package body Errid is
*** 37,42 ****
--- 39,47 ----
     procedure Add_All_Diagnostic_Rules (Printer : in out SARIF_Printer);
     --  Add all active Diagnostic_Id-s to the SARIF_Printer
  
+    procedure Add_All_Restriction_Rules (Printer : in out SARIF_Printer);
+    --  Add all active Restriction_Id-s to the SARIF_Printer
+ 
     procedure Add_All_Switch_Rules (Printer : in out SARIF_Printer);
     --  Add all active Switch_Id-s to the SARIF_Printer
  
*************** package body Errid is
*** 44,49 ****
--- 49,64 ----
     --  Check that if a diagnostic has a switch then that diagnostic is also
     --  included in the list of diagnostics for that switch.
  
+    procedure Check_Diagnostic_To_Restriction_Consistency
+      (D_Id : Diagnostic_Id);
+    --  Check that if a diagnostic has a restriction then that diagnostic is
+    --  also included as the diagnostic for that restriction.
+ 
+    procedure Check_Restriction_To_Diagnostic_Consistency
+      (R_Id : Restriction_Id);
+    --  Check that the diagnostic set for a restriction has that restriction as
+    --  its restriction in the repository.
+ 
     procedure Check_Switch_To_Diagnostic_Consistency (S_Id : Switch_Id);
     --  Check that if a Switch has diagnostics then that diagnostic has the same
     --  switch marked as its switch.
*************** package body Errid is
*** 77,82 ****
--- 92,146 ----
        raise Diagnostic_Inconsistency with Err_Msg;
     end Check_Diagnostic_To_Switch_Consistency;
  
+    -------------------------------------------------
+    -- Check_Diagnostic_To_Restriction_Consistency --
+    -------------------------------------------------
+ 
+    procedure Check_Diagnostic_To_Restriction_Consistency (D_Id : Diagnostic_Id)
+    is
+       D        : constant Diagnostic_Entry_Type := Diagnostic_Entries (D_Id);
+       Restrict : constant Restriction_Id := D.Restriction;
+       Err_Msg  : constant String :=
+         Restriction_Id'Image (D.Restriction)
+         & " should contain "
+         & Diagnostic_Id'Image (D_Id)
+         & " in its diagnostics";
+    begin
+       if Restrict = Not_A_Restriction_Id then
+          return;
+       end if;
+ 
+       if Rest_To_Diag_Mappping (Restrict) /= D_Id then
+          raise Diagnostic_Inconsistency with Err_Msg;
+       end if;
+    end Check_Diagnostic_To_Restriction_Consistency;
+ 
+    -------------------------------------------------
+    -- Check_Restriction_To_Diagnostic_Consistency --
+    -------------------------------------------------
+ 
+    procedure Check_Restriction_To_Diagnostic_Consistency
+      (R_Id : Restriction_Id)
+    is
+       D    : Diagnostic_Entry_Type;
+       D_Id : Diagnostic_Id;
+    begin
+       if R_Id = Not_A_Restriction_Id then
+          return;
+       end if;
+ 
+       D_Id := Rest_To_Diag_Mappping (R_Id);
+       D := Diagnostic_Entries (D_Id);
+ 
+       if D.Restriction /= R_Id then
+          raise Diagnostic_Inconsistency
+            with
+              Restriction_Id'Image (R_Id)
+              & " should be the restriction for "
+              & Diagnostic_Id'Image (D_Id);
+       end if;
+    end Check_Restriction_To_Diagnostic_Consistency;
+ 
     --------------------------------------------
     -- Check_Switch_To_Diagnostic_Consistency --
     --------------------------------------------
*************** package body Errid is
*** 138,147 ****
--- 202,225 ----
           if Id /= No_Diagnostic_Id then
              Diagnostic_Id_Lists.Append (Printer.Diagnostics, Id);
              Check_Diagnostic_To_Switch_Consistency (Id);
+             Check_Diagnostic_To_Restriction_Consistency (Id);
           end if;
        end loop;
     end Add_All_Diagnostic_Rules;
  
+    -------------------------------
+    -- Add_All_Restriction_Rules --
+    -------------------------------
+ 
+    procedure Add_All_Restriction_Rules (Printer : in out SARIF_Printer) is
+    begin
+       Printer.Restrictions := Restriction_Id_Lists.Create;
+       for R in All_Restrictions loop
+          Restriction_Id_Lists.Append (Printer.Restrictions, R);
+          Check_Restriction_To_Diagnostic_Consistency (R);
+       end loop;
+    end Add_All_Restriction_Rules;
+ 
     --------------------------
     -- Add_All_Switch_Rules --
     --------------------------
*************** package body Errid is
*** 166,171 ****
--- 244,250 ----
     begin
        Add_All_Diagnostic_Rules (Printer);
        Add_All_Switch_Rules (Printer);
+       Add_All_Restriction_Rules (Printer);
        Printer.Report_Type := Repository_Report;
  
        Print_SARIF_Report (Printer);
diff -Nrcpad gcc-17-20260524/gcc/ada/errid.ads gcc-17-20260531/gcc/ada/errid.ads
*** gcc-17-20260524/gcc/ada/errid.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errid.ads	Sun May 31 22:32:04 2026
*************** package Errid is
*** 39,45 ****
        GNAT0006,
        GNAT0007,
        GNAT0008,
!       GNAT0009);
  
     type Diagnostic_Id_Array is array (Positive range <>) of Diagnostic_Id;
     type Diagnostic_Id_Array_Access is access Diagnostic_Id_Array;
--- 39,145 ----
        GNAT0006,
        GNAT0007,
        GNAT0008,
!       GNAT0009,
!       GNAT0010,
!       GNAT0011,
!       GNAT0012,
!       GNAT0013,
!       GNAT0014,
!       GNAT0015,
!       GNAT0016,
!       GNAT0017,
!       GNAT0018,
!       GNAT0019,
!       GNAT0020,
!       GNAT0021,
!       GNAT0022,
!       GNAT0023,
!       GNAT0024,
!       GNAT0025,
!       GNAT0026,
!       GNAT0027,
!       GNAT0028,
!       GNAT0029,
!       GNAT0030,
!       GNAT0031,
!       GNAT0032,
!       GNAT0033,
!       GNAT0034,
!       GNAT0035,
!       GNAT0036,
!       GNAT0037,
!       GNAT0038,
!       GNAT0039,
!       GNAT0040,
!       GNAT0041,
!       GNAT0042,
!       GNAT0043,
!       GNAT0044,
!       GNAT0045,
!       GNAT0046,
!       GNAT0047,
!       GNAT0048,
!       GNAT0049,
!       GNAT0050,
!       GNAT0051,
!       GNAT0052,
!       GNAT0053,
!       GNAT0054,
!       GNAT0055,
!       GNAT0056,
!       GNAT0057,
!       GNAT0058,
!       GNAT0059,
!       GNAT0060,
!       GNAT0061,
!       GNAT0062,
!       GNAT0063,
!       GNAT0064,
!       GNAT0065,
!       GNAT0066,
!       GNAT0067,
!       GNAT0068,
!       GNAT0069,
!       GNAT0070,
!       GNAT0071,
!       GNAT0072,
!       GNAT0073,
!       GNAT0074,
!       GNAT0075,
!       GNAT0076,
!       GNAT0077,
!       GNAT0078,
!       GNAT0079,
!       GNAT0080,
!       GNAT0081,
!       GNAT0082,
!       GNAT0083,
!       GNAT0084,
!       GNAT0085,
!       GNAT0086,
!       GNAT0087,
!       GNAT0088,
!       GNAT0089,
!       GNAT0090,
!       GNAT0091,
!       GNAT0092,
!       GNAT0093,
!       GNAT0094,
!       GNAT0095,
!       GNAT0096,
!       GNAT0097,
!       GNAT0098,
!       GNAT0099,
!       GNAT0100,
!       GNAT0101,
!       GNAT0102,
!       GNAT0103,
!       GNAT0104,
!       GNAT0105,
!       GNAT0106,
!       GNAT0107,
!       GNAT0108,
!       GNAT0109);
  
     type Diagnostic_Id_Array is array (Positive range <>) of Diagnostic_Id;
     type Diagnostic_Id_Array_Access is access Diagnostic_Id_Array;
diff -Nrcpad gcc-17-20260524/gcc/ada/errout.adb gcc-17-20260531/gcc/ada/errout.adb
*** gcc-17-20260524/gcc/ada/errout.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errout.adb	Sun May 31 22:32:04 2026
*************** with Csets;          use Csets;
*** 35,40 ****
--- 35,41 ----
  with Debug;          use Debug;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
+ with Errid.Diagnostic_Repository; use Errid.Diagnostic_Repository;
  with Erroutc;        use Erroutc;
  with Erroutc.Pretty_Emitter;
  with Erroutc.SARIF_Emitter; use Erroutc.SARIF_Emitter;
*************** with Lib;            use Lib;
*** 43,48 ****
--- 44,50 ----
  with Opt;            use Opt;
  with Nlists;         use Nlists;
  with Output;         use Output;
+ with Rident;         use Rident;
  with Scans;          use Scans;
  with Sem_Aux;        use Sem_Aux;
  with Sinput;         use Sinput;
*************** package body Errout is
*** 99,104 ****
--- 101,109 ----
       (Printer : in out SARIF_Printer);
     --  Fill the printer with the unique diagnostic and switch id.
  
+    procedure Delete_Specifically_Suppressed_Warnings;
+    --  Mark any messages suppressed by specific warnings as Deleted
+ 
     procedure Error_Msg_Internal
       (Msg        : String;
        Span       : Source_Span;
*************** package body Errout is
*** 120,125 ****
--- 125,145 ----
     --  the actual instantiation (i.e the line with the new). Msg_Cont is
     --  set true if this is a continuation message.
  
+    function Is_Before (M1, M2 : Error_Msg_Id) return Boolean;
+    --  Return True if M1 sorts before M2 in the error chain. Messages are
+    --  ordered first by source file (Sfile), then by flag location (Sptr),
+    --  then by original location (Optr) as a tiebreaker.
+ 
+    procedure Find_Msg_Insertion_Point
+      (Cur_Msg  : Error_Msg_Id;
+       Prev_Msg : out Error_Msg_Id;
+       Next_Msg : out Error_Msg_Id);
+    --  Determine the insertion point for Cur_Msg in the sorted error chain.
+    --  Sets Prev_Msg to the message preceding the insertion point and Next_Msg
+    --  to the message following it (No_Error_Msg if at the end of the chain).
+    --  Messages are ordered first by source file and then by source location
+    --  (Sptr, then Optr as a tiebreaker).
+ 
     function No_Warnings (N : Node_Or_Entity_Id) return Boolean;
     --  Determines if warnings should be suppressed for the given node
  
*************** package body Errout is
*** 219,224 ****
--- 239,249 ----
     --    " "     returns "?"
     --    other   trimmed, prefixed and suffixed with "?".
  
+    procedure Write_All_Errors_In_Verbose_Format;
+    --  Emit all error messages in the errors table using the verbose format
+    --  activated by -gnatv where the error line is also printed along with the
+    --  error msg.
+ 
     -----------------------------------------
     -- Add_Unique_Diagnostics_And_Switches --
     -----------------------------------------
*************** package body Errout is
*** 237,242 ****
--- 262,271 ----
        --  Insert a switch to the printers swtiches list by adding them in
        --  the same order as they are defined (alphanumerically).
  
+       procedure Insert_Restriction (R : Restriction_Id);
+       --  Insert a restriction to the printers restriction list by adding them
+       --  in the same order as they are defined.
+ 
        -----------------------
        -- Insert_Diagnostic --
        -----------------------
*************** package body Errout is
*** 260,265 ****
--- 289,323 ----
           Append (Printer.Diagnostics, D);
        end Insert_Diagnostic;
  
+       ------------------------
+       -- Insert_Restriction --
+       ------------------------
+ 
+       procedure Insert_Restriction (R : Restriction_Id) is
+          use Restriction_Id_Lists;
+          It : Iterator := Iterate (Printer.Restrictions);
+          El : Restriction_Id;
+       begin
+          --  Do not add a switch if the diagnostic was not using one
+ 
+          if R = Not_A_Restriction_Id then
+             return;
+          end if;
+ 
+          while Has_Next (It) loop
+             Next (It, El);
+ 
+             if El = R then
+                return;
+             elsif El > R then
+                Insert_Before (Printer.Restrictions, El, R);
+                return;
+             end if;
+          end loop;
+ 
+          Append (Printer.Restrictions, R);
+       end Insert_Restriction;
+ 
        -------------------
        -- Insert_Switch --
        -------------------
*************** package body Errout is
*** 294,310 ****
--- 352,409 ----
     begin
        Printer.Diagnostics := Diagnostic_Id_Lists.Create;
        Printer.Switches := Switch_Id_Lists.Create;
+       Printer.Restrictions := Restriction_Id_Lists.Create;
  
        E_Id := First_Error_Msg;
        while E_Id /= No_Error_Msg loop
           E_Obj := Errors.Table (E_Id);
           Insert_Diagnostic (E_Obj.Id);
           Insert_Switch (E_Obj.Switch);
+          Insert_Restriction (E_Obj.Restriction);
  
           Next_Error_Msg (E_Id);
        end loop;
     end Add_Unique_Diagnostics_And_Switches;
  
+    ---------------------------------------------
+    -- Delete_Specifically_Suppressed_Warnings --
+    ---------------------------------------------
+ 
+    procedure Delete_Specifically_Suppressed_Warnings is
+       function Warning_Is_Suppressed (E : Error_Msg_Id) return Boolean;
+       --  Check if the warning is suppressed in either its posted or original
+       --  location.
+ 
+       ---------------------------
+       -- Warning_Is_Suppressed --
+       ---------------------------
+ 
+       function Warning_Is_Suppressed (E : Error_Msg_Id) return Boolean is
+          CE  : Error_Msg_Object renames Errors.Table (E);
+          Tag : constant String := Get_Warning_Tag (E);
+       begin
+          return
+            Warning_Is_Suppressed (CE.Sptr.Ptr, CE.Text, Tag)
+            or else Warning_Is_Suppressed (CE.Optr.Ptr, CE.Text, Tag);
+       end Warning_Is_Suppressed;
+ 
+       Cur : Error_Msg_Id := First_Error_Msg;
+ 
+    --  Start of processing for Delete_Specifically_Suppressed_Warnings
+ 
+    begin
+       while Cur /= No_Error_Msg loop
+          if Errors.Table (Cur).Kind = Warning
+            and then not Errors.Table (Cur).Deleted
+            and then Warning_Is_Suppressed (Cur)
+          then
+             Delete_Error_And_Continuation_Msgs (Cur);
+          end if;
+ 
+          Cur := Errors.Table (Cur).Next;
+       end loop;
+    end Delete_Specifically_Suppressed_Warnings;
+ 
     -----------------------
     -- Change_Error_Text --
     -----------------------
*************** package body Errout is
*** 351,377 ****
     --------------------------------------
  
     procedure Delete_Warning_And_Continuations (Msg : Error_Msg_Id) is
-       Id : Error_Msg_Id;
- 
     begin
        pragma Assert (not Errors.Table (Msg).Msg_Cont);
! 
!       Id := Msg;
!       loop
!          declare
!             M : Error_Msg_Object renames Errors.Table (Id);
! 
!          begin
!             if not M.Deleted then
!                M.Deleted := True;
!                Decrease_Error_Msg_Count (M);
!             end if;
! 
!             Id := M.Next;
!             exit when Id = No_Error_Msg;
!             exit when not Errors.Table (Id).Msg_Cont;
!          end;
!       end loop;
     end Delete_Warning_And_Continuations;
  
     ------------------
--- 450,458 ----
     --------------------------------------
  
     procedure Delete_Warning_And_Continuations (Msg : Error_Msg_Id) is
     begin
        pragma Assert (not Errors.Table (Msg).Msg_Cont);
!       Delete_Error_And_Continuation_Msgs (Msg);
     end Delete_Warning_And_Continuations;
  
     ------------------
*************** package body Errout is
*** 564,573 ****
--- 645,714 ----
        Sindex : Source_File_Index;
        --  Source index for flag location
  
+       Posting_Error_Loc : Source_Ptr;
+       --  Location of outer level instantiation in instantiation case, or
+       --  just a copy of Flag_Location in the normal case. This is the
+       --  location where all error messages will actually be posted.
+ 
+       Treat_As_Continuation_Msg : Boolean;
+       --  Used to label continuation lines in instantiation case with
+       --  proper Msg_Cont status.
+ 
        Orig_Loc : Source_Ptr;
        --  Original location of Flag_Location (i.e. location in original
        --  template in instantiation case, otherwise unchanged).
  
+       Save_Error_Msg_Sloc : Source_Ptr;
+ 
+       function In_Loop_With_Suppressed_Warnings (N : Node_Id) return Boolean;
+       --  Returns true if N is contained in a loop statement where warnings
+       --  have been suppressed.
+ 
+       function Instantiation_Msg (X : Source_File_Index) return String;
+       --  Text used in an instantiation messages based on the error kind and
+       --  type of inlining or instantiation that was used in this location.
+ 
+       -----------------------
+       -- Instantiation_Msg --
+       -----------------------
+ 
+       function Instantiation_Msg (X : Source_File_Index) return String
+       is (if Inlined_Body (X)
+           then
+             (case Error_Msg_Kind is
+                when Info    => "info: in inlined body #",
+                when Warning => Warn_Insertion & "in inlined body #",
+                when Style   => "style: in inlined body #",
+                when others  => "error in inlined body #")
+           else
+             (case Error_Msg_Kind is
+                when Info    => "info: in instantiation #",
+                when Warning => Warn_Insertion & "in instantiation #",
+                when Style   => "style: in instantiation #",
+                when others  => "instantiation error #"));
+ 
+       --------------------------------------
+       -- In_Loop_With_Suppressed_Warnings --
+       --------------------------------------
+ 
+       function In_Loop_With_Suppressed_Warnings (N : Node_Id) return Boolean is
+          P : Node_Id;
+       begin
+          P := Parent (N);
+          while Present (P) loop
+             if Nkind (P) = N_Loop_Statement and then Suppress_Loop_Warnings (P)
+             then
+                return True;
+             end if;
+ 
+             P := Parent (P);
+          end loop;
+ 
+          return False;
+       end In_Loop_With_Suppressed_Warnings;
+ 
+       --  Start of processing for Error_Msg
+ 
     begin
        --  Return if all errors are to be ignored
  
*************** package body Errout is
*** 582,590 ****
        --  location is No_Location and we don't have any messages so far, but
        --  that is a real bug and a legitimate bomb, so we go ahead.
  
!       if Flag_Location = No_Location
!         and then Total_Errors_Detected > 0
!       then
           return;
        end if;
  
--- 723,729 ----
        --  location is No_Location and we don't have any messages so far, but
        --  that is a real bug and a legitimate bomb, so we go ahead.
  
!       if Flag_Location = No_Location and then Total_Errors_Detected > 0 then
           return;
        end if;
  
*************** package body Errout is
*** 641,649 ****
        --  that style checks are not considered warning messages for this
        --  purpose.
  
!       if Error_Msg_Kind = Warning
!         and then Warnings_Suppressed (Orig_Loc) /= No_String
!       then
           return;
  
        --  For style messages, check too many messages so far
--- 780,786 ----
        --  that style checks are not considered warning messages for this
        --  purpose.
  
!       if Error_Msg_Kind = Warning and then Warnings_Suppressed (Orig_Loc) then
           return;
  
        --  For style messages, check too many messages so far
*************** package body Errout is
*** 658,680 ****
        --  probably null (i.e. when loop executes only if invalid values
        --  present). In either case warnings in the loop are likely to be junk.
  
!       elsif Error_Msg_Kind = Warning and then Present (N) then
! 
!          declare
!             P : Node_Id;
! 
!          begin
!             P := Parent (N);
!             while Present (P) loop
!                if Nkind (P) = N_Loop_Statement
!                  and then Suppress_Loop_Warnings (P)
!                then
!                   return;
!                end if;
! 
!                P := Parent (P);
!             end loop;
!          end;
        end if;
  
        --  The idea at this stage is that we have two kinds of messages
--- 795,805 ----
        --  probably null (i.e. when loop executes only if invalid values
        --  present). In either case warnings in the loop are likely to be junk.
  
!       elsif Error_Msg_Kind = Warning
!         and then Present (N)
!         and then In_Loop_With_Suppressed_Warnings (N)
!       then
!          return;
        end if;
  
        --  The idea at this stage is that we have two kinds of messages
*************** package body Errout is
*** 739,875 ****
        --  OK, here we have an instantiation error, and we need to generate the
        --  error on the instantiation, rather than on the template.
  
!       declare
!          Actual_Error_Loc : Source_Ptr;
!          --  Location of outer level instantiation in instantiation case, or
!          --  just a copy of Flag_Location in the normal case. This is the
!          --  location where all error messages will actually be posted.
! 
!          Save_Error_Msg_Sloc : constant Source_Ptr := Error_Msg_Sloc;
!          --  Save possible location set for caller's message. We need to use
!          --  Error_Msg_Sloc for the location of the instantiation error but we
!          --  have to preserve a possible original value.
! 
!          X : Source_File_Index;
! 
!          Msg_Cont_Status : Boolean;
!          --  Used to label continuation lines in instantiation case with
!          --  proper Msg_Cont status.
! 
!       begin
!          --  Loop to find highest level instantiation, where all error
!          --  messages will be placed.
! 
!          X := Sindex;
!          loop
!             Actual_Error_Loc := Instantiation (X);
!             X := Get_Source_File_Index (Actual_Error_Loc);
!             exit when Instantiation (X) = No_Location;
!          end loop;
! 
!          --  Since we are generating the messages at the instantiation point in
!          --  any case, we do not want the references to the bad lines in the
!          --  instance to be annotated with the location of the instantiation.
! 
!          Suppress_Instance_Location := True;
!          Msg_Cont_Status := False;
! 
!          --  Loop to generate instantiation messages
! 
!          Error_Msg_Sloc := Flag_Location;
!          X := Get_Source_File_Index (Flag_Location);
!          while Instantiation (X) /= No_Location loop
! 
!             --  Suppress instantiation message on continuation lines
! 
!             if Msg (Msg'First) /= '\' then
! 
!                --  Case of inlined body
! 
!                if Inlined_Body (X) then
!                   if Error_Msg_Kind = Info then
!                      Error_Msg_Internal
!                        (Msg      => "info: in inlined body #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
! 
!                   elsif Error_Msg_Kind = Warning then
!                      Error_Msg_Internal
!                        (Msg      => Warn_Insertion & "in inlined body #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
  
!                   elsif Error_Msg_Kind = Style then
!                      Error_Msg_Internal
!                        (Msg      => "style: in inlined body #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
  
!                   else
!                      Error_Msg_Internal
!                        (Msg      => "error in inlined body #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
!                   end if;
  
!                --  Case of generic instantiation
  
!                else
!                   if Error_Msg_Kind = Info then
!                      Error_Msg_Internal
!                        (Msg      => "info: in instantiation #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
  
!                   elsif Error_Msg_Kind = Warning then
!                      Error_Msg_Internal
!                        (Msg      => Warn_Insertion & "in instantiation #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
  
!                   elsif Error_Msg_Kind = Style then
!                      Error_Msg_Internal
!                        (Msg      => "style: in instantiation #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
  
!                   else
!                      Error_Msg_Internal
!                        (Msg      => "instantiation error #",
!                         Span     => To_Span (Actual_Error_Loc),
!                         Opan     => Flag_Span,
!                         Msg_Cont => Msg_Cont_Status);
!                   end if;
!                end if;
!             end if;
  
!             Error_Msg_Sloc := Instantiation (X);
!             X := Get_Source_File_Index (Error_Msg_Sloc);
!             Msg_Cont_Status := True;
!          end loop;
  
!          Suppress_Instance_Location := False;
!          Error_Msg_Sloc := Save_Error_Msg_Sloc;
  
!          --  Here we output the original message on the outer instantiation
  
!          Error_Msg_Internal
!            (Msg        => Msg,
!             Span       => To_Span (Actual_Error_Loc),
!             Opan       => Flag_Span,
!             Msg_Cont   => Msg_Cont_Status,
!             Error_Code => Error_Code,
!             Label      => Label,
!             Spans      => Spans,
!             Fixes      => Fixes);
!       end;
     end Error_Msg;
  
     ----------------------------------
--- 864,915 ----
        --  OK, here we have an instantiation error, and we need to generate the
        --  error on the instantiation, rather than on the template.
  
!       Posting_Error_Loc := Top_Level_Location (Flag_Location);
  
!       Save_Error_Msg_Sloc := Error_Msg_Sloc;
  
!       --  Since we are generating the messages at the instantiation point in
!       --  any case, we do not want the references to the bad lines in the
!       --  instance to be annotated with the location of the instantiation.
  
!       Suppress_Instance_Location := True;
!       Treat_As_Continuation_Msg := False;
  
!       --  Loop to generate instantiation messages
  
!       Error_Msg_Sloc := Flag_Location;
!       Sindex := Get_Source_File_Index (Flag_Location);
!       while Instantiation (Sindex) /= No_Location loop
  
!          --  Suppress instantiation message on continuation lines
  
!          if Msg (Msg'First) /= '\' then
!             Error_Msg_Internal
!               (Msg      => Instantiation_Msg (Sindex),
!                Span     => To_Span (Posting_Error_Loc),
!                Opan     => Flag_Span,
!                Msg_Cont => Treat_As_Continuation_Msg);
!          end if;
  
!          Error_Msg_Sloc := Instantiation (Sindex);
!          Sindex := Get_Source_File_Index (Error_Msg_Sloc);
!          Treat_As_Continuation_Msg := True;
!       end loop;
  
!       Suppress_Instance_Location := False;
!       Error_Msg_Sloc := Save_Error_Msg_Sloc;
  
!       --  Here we output the original message on the outer instantiation
  
!       Error_Msg_Internal
!         (Msg        => Msg,
!          Span       => To_Span (Posting_Error_Loc),
!          Opan       => Flag_Span,
!          Msg_Cont   => Treat_As_Continuation_Msg,
!          Error_Code => Error_Code,
!          Label      => Label,
!          Spans      => Spans,
!          Fixes      => Fixes);
     end Error_Msg;
  
     ----------------------------------
*************** package body Errout is
*** 1309,1317 ****
  
           --  Immediate return if warning message and warnings are suppressed
  
!          if Warnings_Suppressed (Optr) /= No_String
!            or else Warnings_Suppressed (Sptr) /= No_String
!          then
              Cur_Msg := No_Error_Msg;
              return;
           end if;
--- 1349,1355 ----
  
           --  Immediate return if warning message and warnings are suppressed
  
!          if Warnings_Suppressed (Optr) or else Warnings_Suppressed (Sptr) then
              Cur_Msg := No_Error_Msg;
              return;
           end if;
*************** package body Errout is
*** 1522,1527 ****
--- 1560,1566 ----
            Id                  => Error_Code,
            Switch              =>
              Get_Switch_Id (Error_Msg_Kind, Warning_Msg_Char),
+           Restriction         => Diagnostic_Entries (Error_Code).Restriction,
            Fixes               => First_Fix));
        Cur_Msg := Errors.Last;
  
*************** package body Errout is
*** 1562,1605 ****
        --  location (earlier flag location first in the chain).
  
        else
!          --  First a quick check, does this belong at the very end of the chain
!          --  of error messages. This saves a lot of time in the normal case if
!          --  there are lots of messages.
! 
!          if Last_Error_Msg /= No_Error_Msg
!            and then Errors.Table (Cur_Msg).Sfile
!                     = Errors.Table (Last_Error_Msg).Sfile
!            and then (Sptr > Errors.Table (Last_Error_Msg).Sptr.Ptr
!                      or else (Sptr = Errors.Table (Last_Error_Msg).Sptr.Ptr
!                               and then Optr
!                                        > Errors.Table (Last_Error_Msg)
!                                            .Optr
!                                            .Ptr))
!          then
!             Prev_Msg := Last_Error_Msg;
!             Next_Msg := No_Error_Msg;
! 
!          --  Otherwise do a full sequential search for the insertion point
! 
!          else
!             Prev_Msg := No_Error_Msg;
!             Next_Msg := First_Error_Msg;
!             while Next_Msg /= No_Error_Msg loop
!                exit when
!                  Errors.Table (Cur_Msg).Sfile < Errors.Table (Next_Msg).Sfile;
! 
!                if Errors.Table (Cur_Msg).Sfile = Errors.Table (Next_Msg).Sfile
!                then
!                   exit when
!                     Sptr < Errors.Table (Next_Msg).Sptr.Ptr
!                     or else (Sptr = Errors.Table (Next_Msg).Sptr.Ptr
!                              and then Optr < Errors.Table (Next_Msg).Optr.Ptr);
!                end if;
! 
!                Prev_Msg := Next_Msg;
!                Next_Msg := Errors.Table (Next_Msg).Next;
!             end loop;
!          end if;
  
           --  Now we insert the new message in the error chain.
  
--- 1601,1607 ----
        --  location (earlier flag location first in the chain).
  
        else
!          Find_Msg_Insertion_Point (Cur_Msg, Prev_Msg, Next_Msg);
  
           --  Now we insert the new message in the error chain.
  
*************** package body Errout is
*** 1626,1642 ****
              Last_Killed := False;
           end if;
  
!          if Prev_Msg = No_Error_Msg then
!             First_Error_Msg := Cur_Msg;
!          else
!             Errors.Table (Prev_Msg).Next := Cur_Msg;
!          end if;
! 
!          Errors.Table (Cur_Msg).Next := Next_Msg;
! 
!          if Next_Msg = No_Error_Msg then
!             Last_Error_Msg := Cur_Msg;
!          end if;
        end if;
  
        Increase_Error_Msg_Count (Errors.Table (Cur_Msg));
--- 1628,1634 ----
              Last_Killed := False;
           end if;
  
!          Insert_Error_Msg (Cur_Msg, Prev_Msg, Next_Msg);
        end if;
  
        Increase_Error_Msg_Count (Errors.Table (Cur_Msg));
*************** package body Errout is
*** 1908,2007 ****
     --------------
  
     procedure Finalize (Last_Call : Boolean) is
-       Cur : Error_Msg_Id;
-       Nxt : Error_Msg_Id;
-       F   : Error_Msg_Id;
- 
-       procedure Delete_Warning (E : Error_Msg_Id);
-       --  Delete a warning msg if not already deleted and adjust warning count
- 
-       --------------------
-       -- Delete_Warning --
-       --------------------
- 
-       procedure Delete_Warning (E : Error_Msg_Id) is
-       begin
-          if not Errors.Table (E).Deleted then
-             Errors.Table (E).Deleted := True;
-             Decrease_Error_Msg_Count (Errors.Table (E));
-          end if;
-       end Delete_Warning;
- 
-    --  Start of processing for Finalize
- 
     begin
!       --  Set Prev pointers
! 
!       Cur := First_Error_Msg;
!       while Cur /= No_Error_Msg loop
!          Nxt := Errors.Table (Cur).Next;
!          exit when Nxt = No_Error_Msg;
!          Errors.Table (Nxt).Prev := Cur;
!          Cur := Nxt;
!       end loop;
! 
!       --  Eliminate any duplicated error messages from the list. This is
!       --  done after the fact to avoid problems with Change_Error_Text.
! 
!       Cur := First_Error_Msg;
!       while Cur /= No_Error_Msg loop
!          Nxt := Errors.Table (Cur).Next;
! 
!          F := Nxt;
!          while F /= No_Error_Msg
!            and then Errors.Table (F).Sptr.Ptr = Errors.Table (Cur).Sptr.Ptr
!          loop
!             Check_Duplicate_Message (Cur, F);
!             F := Errors.Table (F).Next;
!          end loop;
! 
!          Cur := Nxt;
!       end loop;
! 
!       --  Mark any messages suppressed by specific warnings as Deleted
! 
!       Cur := First_Error_Msg;
!       while Cur /= No_Error_Msg loop
!          declare
!             CE  : Error_Msg_Object renames Errors.Table (Cur);
!             Tag : constant String := Get_Warning_Tag (Cur);
! 
!          begin
!             if CE.Kind = Warning
!               and then not CE.Deleted
!               and then
!                    (Warning_Specifically_Suppressed (CE.Sptr.Ptr, CE.Text, Tag)
!                                                                 /= No_String
!                       or else
!                     Warning_Specifically_Suppressed (CE.Optr.Ptr, CE.Text, Tag)
!                                                                 /= No_String)
!             then
!                Delete_Warning (Cur);
! 
!                --  If this is a continuation, delete previous parts of message
! 
!                F := Cur;
!                while Errors.Table (F).Msg_Cont loop
!                   F := Errors.Table (F).Prev;
!                   exit when F = No_Error_Msg;
!                   Delete_Warning (F);
!                end loop;
! 
!                --  Delete any following continuations
! 
!                F := Cur;
!                loop
!                   F := Errors.Table (F).Next;
!                   exit when F = No_Error_Msg;
!                   exit when not Errors.Table (F).Msg_Cont;
!                   Delete_Warning (F);
!                end loop;
!             end if;
!          end;
! 
!          Cur := Errors.Table (Cur).Next;
!       end loop;
! 
        Finalize_Called := True;
  
        --  Check consistency of specific warnings (may add warnings). We only
--- 1900,1908 ----
     --------------
  
     procedure Finalize (Last_Call : Boolean) is
     begin
!       Delete_Duplicate_Errors;
!       Delete_Specifically_Suppressed_Warnings;
        Finalize_Called := True;
  
        --  Check consistency of specific warnings (may add warnings). We only
*************** package body Errout is
*** 2012,2017 ****
--- 1913,1953 ----
        end if;
     end Finalize;
  
+    ------------------------------
+    -- Find_Msg_Insertion_Point --
+    ------------------------------
+ 
+    procedure Find_Msg_Insertion_Point
+      (Cur_Msg  : Error_Msg_Id;
+       Prev_Msg : out Error_Msg_Id;
+       Next_Msg : out Error_Msg_Id)
+    is
+    begin
+       --  First a quick check, does this belong at the very end of the chain
+       --  of error messages. This saves a lot of time in the normal case if
+       --  there are lots of messages.
+ 
+       if Last_Error_Msg /= No_Error_Msg
+         and then
+           Errors.Table (Cur_Msg).Sfile = Errors.Table (Last_Error_Msg).Sfile
+         and then Is_Before (Last_Error_Msg, Cur_Msg)
+       then
+          Prev_Msg := Last_Error_Msg;
+          Next_Msg := No_Error_Msg;
+ 
+       --  Otherwise do a full sequential search for the insertion point
+ 
+       else
+          Prev_Msg := No_Error_Msg;
+          Next_Msg := First_Error_Msg;
+          while Next_Msg /= No_Error_Msg loop
+             exit when Is_Before (Cur_Msg, Next_Msg);
+             Prev_Msg := Next_Msg;
+             Next_Msg := Errors.Table (Next_Msg).Next;
+          end loop;
+       end if;
+    end Find_Msg_Insertion_Point;
+ 
     ----------------
     -- First_Node --
     ----------------
*************** package body Errout is
*** 2251,2256 ****
--- 2187,2209 ----
        Specific_Warnings.Init;
     end Initialize;
  
+    ---------------
+    -- Is_Before --
+    ---------------
+ 
+    function Is_Before (M1, M2 : Error_Msg_Id) return Boolean is
+       E1 : Error_Msg_Object renames Errors.Table (M1);
+       E2 : Error_Msg_Object renames Errors.Table (M2);
+    begin
+       if E1.Sfile /= E2.Sfile then
+          return E1.Sfile < E2.Sfile;
+       elsif E1.Sptr.Ptr /= E2.Sptr.Ptr then
+          return E1.Sptr.Ptr < E2.Sptr.Ptr;
+       else
+          return E1.Optr.Ptr < E2.Optr.Ptr;
+       end if;
+    end Is_Before;
+ 
     -------------------------------
     -- Is_Size_Too_Small_Message --
     -------------------------------
*************** package body Errout is
*** 2823,2861 ****
  
        --  Local subprograms
  
-       procedure Emit_Error_Msgs;
-       --  Emit all error messages in the table use the pretty printed format if
-       --  -gnatdF is used otherwise use the brief format.
- 
        procedure Write_Header (Sfile : Source_File_Index);
        --  Write header line (compiling or checking given file)
  
-       procedure Write_Max_Errors;
-       --  Write message if max errors reached
- 
-       --------------------
-       -- Emit_Error_Msgs --
-       ---------------------
- 
-       procedure Emit_Error_Msgs is
-          E : Error_Msg_Id;
-       begin
-          Set_Standard_Error;
- 
-          E := First_Error_Msg;
-          while E /= No_Error_Msg loop
-             if not Errors.Table (E).Deleted then
-                Output_Msg_Location (E);
-                Output_Msg_Text (E);
-                Write_Eol;
-             end if;
- 
-             E := Errors.Table (E).Next;
-          end loop;
- 
-          Set_Standard_Output;
-       end Emit_Error_Msgs;
- 
        ------------------
        -- Write_Header --
        ------------------
--- 2776,2784 ----
*************** package body Errout is
*** 2883,2919 ****
           end if;
        end Write_Header;
  
-       ----------------------
-       -- Write_Max_Errors --
-       ----------------------
- 
-       procedure Write_Max_Errors is
-       begin
-          if Maximum_Messages /= 0 then
-             if Warnings_Detected >= Maximum_Messages then
-                Set_Standard_Error;
-                Write_Line ("maximum number of warnings output");
-                Write_Line ("any further warnings suppressed");
-                Set_Standard_Output;
-             end if;
- 
-             --  If too many errors print message
- 
-             if Total_Errors_Detected >= Maximum_Messages then
-                Set_Standard_Error;
-                Write_Line ("fatal error: maximum number of errors detected");
-                Set_Standard_Output;
-             end if;
-          end if;
-       end Write_Max_Errors;
- 
        --  Local variables
  
        E          : Error_Msg_Id;
        Err_Flag   : Boolean;
  
!       Sarif_File_Name       : constant String :=
!         Get_First_Main_File_Name & ".gnat.sarif";
  
        Printer : Erroutc.SARIF_Emitter.SARIF_Printer;
  
--- 2806,2818 ----
           end if;
        end Write_Header;
  
        --  Local variables
  
        E          : Error_Msg_Id;
        Err_Flag   : Boolean;
  
!       Sarif_File_Name : constant String :=
!         Strip_Directory (Get_First_Main_File_Name) & ".gnat.sarif";
  
        Printer : Erroutc.SARIF_Emitter.SARIF_Printer;
  
*************** package body Errout is
*** 3017,3023 ****
           elsif Debug_Flag_FF then
              Erroutc.Pretty_Emitter.Print_Error_Messages;
           else
!             Emit_Error_Msgs;
           end if;
        end if;
  
--- 2916,2922 ----
           elsif Debug_Flag_FF then
              Erroutc.Pretty_Emitter.Print_Error_Messages;
           else
!             Write_All_Errors_In_Brief_Format;
           end if;
        end if;
  
*************** package body Errout is
*** 3187,3206 ****
              Write_Header (Main_Source_File);
           end if;
  
!          E := First_Error_Msg;
! 
!          --  Loop through error lines
! 
!          while E /= No_Error_Msg loop
!             if Errors.Table (E).Deleted then
!                E := Errors.Table (E).Next;
!             else
!                Write_Eol;
!                Output_Source_Line
!                  (Errors.Table (E).Line, Errors.Table (E).Sfile, True);
!                Output_Error_Msgs (E);
!             end if;
!          end loop;
        end if;
  
        --  Output error summary if verbose or full list mode
--- 3086,3092 ----
              Write_Header (Main_Source_File);
           end if;
  
!          Write_All_Errors_In_Verbose_Format;
        end if;
  
        --  Output error summary if verbose or full list mode
*************** package body Errout is
*** 3378,3389 ****
  
        function Check_For_Warning (N : Node_Id) return Traverse_Result is
           Loc : constant Source_Ptr := Sloc (N);
-          E   : Error_Msg_Id;
  
           function To_Be_Removed (E : Error_Msg_Id) return Boolean;
           --  Returns True for a message that is to be removed. Also adjusts
           --  warning count appropriately.
  
           -------------------
           -- To_Be_Removed --
           -------------------
--- 3264,3277 ----
  
        function Check_For_Warning (N : Node_Id) return Traverse_Result is
           Loc : constant Source_Ptr := Sloc (N);
  
           function To_Be_Removed (E : Error_Msg_Id) return Boolean;
           --  Returns True for a message that is to be removed. Also adjusts
           --  warning count appropriately.
  
+          procedure Remove_Errors is new
+            Filter_And_Delete_Errors (To_Be_Removed);
+ 
           -------------------
           -- To_Be_Removed --
           -------------------
*************** package body Errout is
*** 3406,3413 ****
  
                 and then not Errors.Table (E).Uncond
              then
-                Decrease_Error_Msg_Count (Errors.Table (E));
- 
                 return True;
  
              --  No removal required
--- 3294,3299 ----
*************** package body Errout is
*** 3420,3448 ****
        --  Start of processing for Check_For_Warnings
  
        begin
!          while To_Be_Removed (First_Error_Msg) loop
!             First_Error_Msg := Errors.Table (First_Error_Msg).Next;
!          end loop;
! 
!          if First_Error_Msg = No_Error_Msg then
!             Last_Error_Msg := No_Error_Msg;
!          end if;
! 
!          E := First_Error_Msg;
!          while E /= No_Error_Msg loop
!             while To_Be_Removed (Errors.Table (E).Next) loop
!                Errors.Table (Errors.Table (E).Next).Deleted := True;
! 
!                Errors.Table (E).Next :=
!                  Errors.Table (Errors.Table (E).Next).Next;
! 
!                if Errors.Table (E).Next = No_Error_Msg then
!                   Last_Error_Msg := E;
!                end if;
!             end loop;
! 
!             E := Errors.Table (E).Next;
!          end loop;
  
           --  Warnings may have been posted on subexpressions of original tree
  
--- 3306,3312 ----
        --  Start of processing for Check_For_Warnings
  
        begin
!          Remove_Errors;
  
           --  Warnings may have been posted on subexpressions of original tree
  
*************** package body Errout is
*** 4576,4579 ****
--- 4440,4466 ----
        end if;
     end Warn_Insertion;
  
+    ----------------------------------------
+    -- Write_All_Errors_In_Verbose_Format --
+    ----------------------------------------
+ 
+    procedure Write_All_Errors_In_Verbose_Format is
+       E : Error_Msg_Id;
+    begin
+       E := First_Error_Msg;
+ 
+       --  Loop through error lines
+ 
+       while E /= No_Error_Msg loop
+          if Errors.Table (E).Deleted then
+             E := Errors.Table (E).Next;
+          else
+             Write_Eol;
+             Output_Source_Line
+                (Errors.Table (E).Line, Errors.Table (E).Sfile, True);
+             Output_Error_Msgs (E);
+          end if;
+       end loop;
+    end Write_All_Errors_In_Verbose_Format;
+ 
  end Errout;
diff -Nrcpad gcc-17-20260524/gcc/ada/errout.ads gcc-17-20260531/gcc/ada/errout.ads
*** gcc-17-20260524/gcc/ada/errout.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errout.ads	Sun May 31 22:32:04 2026
*************** package Errout is
*** 907,914 ****
     --  where the expression is parenthesized, an attempt is made to include
     --  the parentheses (i.e. to return the location of the final paren).
  
!    procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr)
!      renames Erroutc.Purge_Messages;
     --  All error messages whose location is in the range From .. To (not
     --  including the end points) will be deleted from the error listing.
  
--- 907,914 ----
     --  where the expression is parenthesized, an attempt is made to include
     --  the parentheses (i.e. to return the location of the final paren).
  
!    procedure Delete_Error_Msgs_In_Range (From : Source_Ptr; To : Source_Ptr)
!    renames Erroutc.Delete_Error_Msgs_In_Range;
     --  All error messages whose location is in the range From .. To (not
     --  including the end points) will be deleted from the error listing.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/erroutc-pretty_emitter.adb gcc-17-20260531/gcc/ada/erroutc-pretty_emitter.adb
*** gcc-17-20260524/gcc/ada/erroutc-pretty_emitter.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/erroutc-pretty_emitter.adb	Sun May 31 22:32:04 2026
***************
*** 23,29 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Namet;      use Namet;
  with Opt;        use Opt;
  with Output;     use Output;
  with Sinput;     use Sinput;
--- 23,28 ----
*************** package body Erroutc.Pretty_Emitter is
*** 304,322 ****
     procedure Print_Sub_Diagnostic
       (Sub_Diag : Error_Msg_Object; Diag : Error_Msg_Object; Offset : Integer);
  
-    function To_String (Sptr : Source_Ptr) return String;
-    --  Convert the source pointer to a string of the form: "file:line:column"
- 
-    function To_File_Name (Sptr : Source_Ptr) return String;
-    --  Converts the file name of the Sptr to a string.
- 
-    function Line_To_String (Sptr : Source_Ptr) return String;
-    --  Converts the logical line number of the Sptr to a string.
- 
-    function Column_To_String (Sptr : Source_Ptr) return String;
-    --  Converts the column number of the Sptr to a string. Column values less
-    --  than 10 are prefixed with a 0.
- 
     -------------
     -- Destroy --
     -------------
--- 303,308 ----
*************** package body Erroutc.Pretty_Emitter is
*** 1356,1410 ****
        Set_Standard_Output;
     end Print_Error_Messages;
  
-    ------------------
-    -- To_File_Name --
-    ------------------
- 
-    function To_File_Name (Sptr : Source_Ptr) return String is
-       Sfile    : constant Source_File_Index := Get_Source_File_Index (Sptr);
-       Ref_Name : constant File_Name_Type    :=
-         (if Full_Path_Name_For_Brief_Errors then Full_Ref_Name (Sfile)
-          else Reference_Name (Sfile));
- 
-    begin
-       return Get_Name_String (Ref_Name);
-    end To_File_Name;
- 
-    --------------------
-    -- Line_To_String --
-    --------------------
- 
-    function Line_To_String (Sptr : Source_Ptr) return String is
-       Line    : constant Logical_Line_Number := Get_Logical_Line_Number (Sptr);
-       Img_Raw : constant String              := Int'Image (Int (Line));
- 
-    begin
-       return Img_Raw (Img_Raw'First + 1 .. Img_Raw'Last);
-    end Line_To_String;
- 
-    ----------------------
-    -- Column_To_String --
-    ----------------------
- 
-    function Column_To_String (Sptr : Source_Ptr) return String is
-       Col     : constant Column_Number := Get_Column_Number (Sptr);
-       Img_Raw : constant String        := Int'Image (Int (Col));
- 
-    begin
-       return
-         (if Col < 10 then "0" else "") &
-         Img_Raw (Img_Raw'First + 1 .. Img_Raw'Last);
-    end Column_To_String;
- 
-    ---------------
-    -- To_String --
-    ---------------
- 
-    function To_String (Sptr : Source_Ptr) return String is
-    begin
-       return
-         To_File_Name (Sptr) & ":" & Line_To_String (Sptr) & ":" &
-         Column_To_String (Sptr);
-    end To_String;
- 
  end Erroutc.Pretty_Emitter;
--- 1342,1345 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/erroutc-sarif_emitter.adb gcc-17-20260531/gcc/ada/erroutc-sarif_emitter.adb
*** gcc-17-20260524/gcc/ada/erroutc-sarif_emitter.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/erroutc-sarif_emitter.adb	Sun May 31 22:32:04 2026
***************
*** 24,29 ****
--- 24,30 ----
  ------------------------------------------------------------------------------
  
  with Errid.Diagnostic_Repository; use Errid.Diagnostic_Repository;
+ with Errid.Restriction_Repository; use Errid.Restriction_Repository;
  with Errid.Switch_Repository;     use Errid.Switch_Repository;
  with JSON_Utils;                  use JSON_Utils;
  with Gnatvsn;                     use Gnatvsn;
*************** package body Erroutc.SARIF_Emitter is
*** 332,337 ****
--- 333,348 ----
     --    "name": <Human_Id(S)>
     --  },
  
+    procedure Print_Rule (R : Restriction_Id);
+    --  Print a rule node that consists of the following attributes:
+    --  * ruleId
+    --  * name
+    --
+    --  {
+    --    "id": <Restroction_Id>,
+    --    "name": <Restroction_Id>_Restriction
+    --  },
+ 
     procedure Print_Rules (Self : SARIF_Printer);
     --  Print a rules node that consists of multiple rule nodes.
     --  Rules are considered to be a set of unique diagnostics with the unique
*************** package body Erroutc.SARIF_Emitter is
*** 386,391 ****
--- 397,406 ----
           Diagnostic_Id_Lists.Destroy (Self.Diagnostics);
        end if;
  
+       if Restriction_Id_Lists.Present (Self.Restrictions) then
+          Restriction_Id_Lists.Destroy (Self.Restrictions);
+       end if;
+ 
        if Switch_Id_Lists.Present (Self.Switches) then
           Switch_Id_Lists.Destroy (Self.Switches);
        end if;
*************** package body Erroutc.SARIF_Emitter is
*** 1146,1151 ****
--- 1161,1167 ----
     procedure Print_Rule (E : Diagnostic_Id) is
        Human_Id : constant String_Ptr := Diagnostic_Entries (E).Human_Id;
        Switch   : constant Switch_Id := Diagnostic_Entries (E).Switch;
+       Restrict : constant Restriction_Id := Diagnostic_Entries (E).Restriction;
     begin
        Write_Char ('{');
        Begin_Block;
*************** package body Erroutc.SARIF_Emitter is
*** 1174,1179 ****
--- 1190,1209 ----
           End_Block;
           NL_And_Indent;
           Write_Char (']');
+ 
+       elsif Restrict /= Not_A_Restriction_Id then
+          Write_Char (',');
+          NL_And_Indent;
+ 
+          Write_Str ("""" & N_RELATIONSHIPS & """" & ": " & "[");
+          Begin_Block;
+ 
+          NL_And_Indent;
+          Print_Relationship (Restriction_Id'Image (Restrict), "superset");
+ 
+          End_Block;
+          NL_And_Indent;
+          Write_Char (']');
        end if;
  
        End_Block;
*************** package body Erroutc.SARIF_Emitter is
*** 1223,1228 ****
--- 1253,1296 ----
        Write_Char ('}');
     end Print_Rule;
  
+    procedure Print_Rule (R : Restriction_Id) is
+       function Restriction_Name (R : Restriction_Id) return String
+       is (Restriction_Id'Image (R) & "_Restriction");
+ 
+    begin
+       pragma Assert (R /= Not_A_Restriction_Id);
+ 
+       Write_Char ('{');
+       Begin_Block;
+       NL_And_Indent;
+ 
+       Write_String_Attribute (N_ID, Restriction_Id'Image (R));
+       Write_Char (',');
+       NL_And_Indent;
+ 
+       Write_String_Attribute (N_NAME, Restriction_Name (R));
+ 
+       if Rest_To_Diag_Mappping (R) /= No_Diagnostic_Id then
+          Write_Char (',');
+          NL_And_Indent;
+ 
+          Write_Str ("""" & N_RELATIONSHIPS & """" & ": " & "[");
+          Begin_Block;
+          NL_And_Indent;
+ 
+          Print_Relationship
+            (Diagnostic_Id'Image (Rest_To_Diag_Mappping (R)), "subset");
+ 
+          End_Block;
+          NL_And_Indent;
+          Write_Char (']');
+       end if;
+ 
+       End_Block;
+       NL_And_Indent;
+       Write_Char ('}');
+    end Print_Rule;
+ 
     -----------------
     -- Print_Rules --
     -----------------
*************** package body Erroutc.SARIF_Emitter is
*** 1230,1237 ****
--- 1298,1308 ----
     procedure Print_Rules (Self : SARIF_Printer) is
        D       : Diagnostic_Id;
        S       : Switch_Id;
+       R       : Restriction_Id;
        Diag_It : Diagnostic_Id_Lists.Iterator :=
          Diagnostic_Id_Lists.Iterate (Self.Diagnostics);
+       Rest_It   : Restriction_Id_Lists.Iterator :=
+         Restriction_Id_Lists.Iterate (Self.Restrictions);
        Sw_It   : Switch_Id_Lists.Iterator :=
          Switch_Id_Lists.Iterate (Self.Switches);
  
*************** package body Erroutc.SARIF_Emitter is
*** 1262,1267 ****
--- 1333,1347 ----
           Print_Rule (S);
        end loop;
  
+       while Restriction_Id_Lists.Has_Next (Rest_It) loop
+          Restriction_Id_Lists.Next (Rest_It, R);
+ 
+          Write_Char (',');
+ 
+          NL_And_Indent;
+          Print_Rule (R);
+       end loop;
+ 
        End_Block;
        NL_And_Indent;
        Write_Char (']');
diff -Nrcpad gcc-17-20260524/gcc/ada/erroutc-sarif_emitter.ads gcc-17-20260531/gcc/ada/erroutc-sarif_emitter.ads
*** gcc-17-20260524/gcc/ada/erroutc-sarif_emitter.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/erroutc-sarif_emitter.ads	Sun May 31 22:32:04 2026
***************
*** 25,30 ****
--- 25,39 ----
  with GNAT.Lists; use GNAT.Lists;
  package Erroutc.SARIF_Emitter is
  
+    procedure Destroy (Elem : in out Restriction_Id) is null;
+    pragma Inline (Destroy);
+    package Restriction_Id_Lists is new Doubly_Linked_Lists
+      (Element_Type    => Restriction_Id,
+       "="             => "=",
+       Destroy_Element => Destroy,
+       Check_Tampering => False);
+    subtype Restriction_Id_List is Restriction_Id_Lists.Doubly_Linked_List;
+ 
     procedure Destroy (Elem : in out Switch_Id) is null;
     pragma Inline (Destroy);
     package Switch_Id_Lists is new Doubly_Linked_Lists
*************** package Erroutc.SARIF_Emitter is
*** 61,67 ****
        --  Unique diagnostics printed as rules in the SARIF report
  
        Switches : Switch_Id_List;
!       --  Unique switches printed as rules in the SARIF report
  
        Report_Type : Report_Kind := Diagnostic_Report;
        --  The type of report to be printed in SARIF
--- 70,79 ----
        --  Unique diagnostics printed as rules in the SARIF report
  
        Switches : Switch_Id_List;
!       --  Unique switches printed as rules in the SARIF
! 
!       Restrictions : Restriction_Id_List;
!       --  Unique Restrictions printed as rules in the SARIF report
  
        Report_Type : Report_Kind := Diagnostic_Report;
        --  The type of report to be printed in SARIF
diff -Nrcpad gcc-17-20260524/gcc/ada/erroutc.adb gcc-17-20260531/gcc/ada/erroutc.adb
*** gcc-17-20260524/gcc/ada/erroutc.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/erroutc.adb	Sun May 31 22:32:04 2026
*************** package body Erroutc is
*** 145,153 ****
           K := Keep;
  
           loop
!             Errors.Table (D).Deleted := True;
! 
!             Decrease_Error_Msg_Count (Errors.Table (D));
  
              --  Substitute shorter of the two error messages
  
--- 145,151 ----
           K := Keep;
  
           loop
!             Delete_Error_Msg (D);
  
              --  Substitute shorter of the two error messages
  
*************** package body Erroutc is
*** 275,317 ****
        end if;
     end Debug_Output;
  
     ----------
     -- dmsg --
     ----------
  
     procedure dmsg (Id : Error_Msg_Id) is
        E : Error_Msg_Object renames Errors.Table (Id);
  
     begin
        w ("Dumping error message, Id = ", Int (Id));
!       w ("  Text               = ", E.Text.all);
!       w ("  Next               = ", Int (E.Next));
!       w ("  Prev               = ", Int (E.Prev));
!       w ("  Sfile              = ", Int (E.Sfile));
  
        Write_Str
!         ("  Sptr               = ");
!       Write_Location (E.Sptr.Ptr);  --  ??? Do not write the full span for now
        Write_Eol;
  
        Write_Str
!         ("  Optr               = ");
        Write_Location (E.Optr.Ptr);
        Write_Eol;
  
        Write_Str
!         ("  Insertion_Sloc     = ");
        Write_Location (E.Insertion_Sloc);
        Write_Eol;
  
!       w ("  Line               = ", Int (E.Line));
!       w ("  Col                = ", Int (E.Col));
!       w ("  Kind               = ", E.Kind'Img);
!       w ("  Warn_Err           = ", E.Warn_Err'Img);
!       w ("  Warn_Chr           = '" & E.Warn_Chr & ''');
!       w ("  Uncond             = ", E.Uncond);
!       w ("  Msg_Cont           = ", E.Msg_Cont);
!       w ("  Deleted            = ", E.Deleted);
  
        Write_Eol;
     end dmsg;
--- 273,499 ----
        end if;
     end Debug_Output;
  
+    ------------------------------
+    -- Filter_And_Delete_Errors --
+    ------------------------------
+ 
+    procedure Filter_And_Delete_Errors is
+       E : Error_Msg_Id;
+    begin
+       E := First_Error_Msg;
+       while E /= No_Error_Msg loop
+          if Filter (E) then
+             Delete_Error_Msg (E);
+          end if;
+ 
+          E := Errors.Table (E).Next;
+       end loop;
+    end Filter_And_Delete_Errors;
+ 
+    -----------------------------
+    -- Delete_Duplicate_Errors --
+    -----------------------------
+ 
+    procedure Delete_Duplicate_Errors is
+       Cur : Error_Msg_Id;
+       Nxt : Error_Msg_Id;
+       F   : Error_Msg_Id;
+    begin
+       Cur := First_Error_Msg;
+       while Cur /= No_Error_Msg loop
+          Nxt := Errors.Table (Cur).Next;
+ 
+          F := Nxt;
+          while F /= No_Error_Msg
+            and then Errors.Table (F).Sptr.Ptr = Errors.Table (Cur).Sptr.Ptr
+          loop
+             Check_Duplicate_Message (Cur, F);
+             F := Errors.Table (F).Next;
+          end loop;
+ 
+          Cur := Nxt;
+       end loop;
+    end Delete_Duplicate_Errors;
+ 
+    ----------------------
+    -- Delete_Error_Msg --
+    ----------------------
+ 
+    procedure Delete_Error_Msg (E : Error_Msg_Id) is
+    begin
+       if not Errors.Table (E).Deleted then
+          Errors.Table (E).Deleted := True;
+          Decrease_Error_Msg_Count (Errors.Table (E));
+       end if;
+    end Delete_Error_Msg;
+ 
+    --------------------------------
+    -- Delete_Error_Msgs_In_Range --
+    --------------------------------
+ 
+    procedure Delete_Error_Msgs_In_Range (From : Source_Ptr; To : Source_Ptr) is
+ 
+       function Error_in_Range (E : Error_Msg_Id) return Boolean;
+       --  Returns True for a message that is to be purged. Also adjusts
+       --  error counts appropriately.
+ 
+       procedure Delete_Errors is new Filter_And_Delete_Errors (Error_in_Range);
+ 
+       --------------------
+       -- Error_in_Range --
+       --------------------
+ 
+       function Error_in_Range (E : Error_Msg_Id) return Boolean
+       is (E /= No_Error_Msg
+           and then Errors.Table (E).Sptr.Ptr > From
+           and then Errors.Table (E).Sptr.Ptr < To);
+ 
+    --  Start of processing for Delete_Error_Msgs_In_Range
+ 
+    begin
+       Delete_Errors;
+    end Delete_Error_Msgs_In_Range;
+ 
+    ----------------------------------------
+    -- Delete_Error_And_Continuation_Msgs --
+    ----------------------------------------
+ 
+    procedure Delete_Error_And_Continuation_Msgs (E : Error_Msg_Id) is
+       F : Error_Msg_Id;
+    begin
+       Delete_Error_Msg (E);
+ 
+       --  If this is a continuation, delete previous parts of message
+ 
+       F := E;
+       while Errors.Table (F).Msg_Cont loop
+          F := Errors.Table (F).Prev;
+          exit when F = No_Error_Msg;
+          Delete_Error_Msg (F);
+       end loop;
+ 
+       --  Delete any following continuations
+ 
+       F := E;
+       loop
+          F := Errors.Table (F).Next;
+          exit when F = No_Error_Msg;
+          exit when not Errors.Table (F).Msg_Cont;
+          Delete_Error_Msg (F);
+       end loop;
+    end Delete_Error_And_Continuation_Msgs;
+ 
+    -----------
+    -- dedit --
+    -----------
+ 
+    procedure dedit (Id : Edit_Id) is
+       E : Edit_Type renames Edits.Table (Id);
+    begin
+       w ("    Edit, Id = ", Int (Id));
+       w ("      Next          = ", Int (E.Next));
+       w ("      Text          = ",
+         (if E.Text /= null then E.Text.all else "<>"));
+       w ("      Span          = ", To_String (E.Span));
+    end dedit;
+ 
+    ----------
+    -- dfix --
+    ----------
+ 
+    procedure dfix (Id : Fix_Id) is
+       F : Fix_Type renames Fixes.Table (Id);
+       E_Id : Edit_Id := F.Edits;
+    begin
+       w ("  Fix, Id = ", Int (Id));
+       w ("    Next          = ", Int (F.Next));
+       w ("    Description   = ",
+         (if F.Description /= null then F.Description.all else "<>"));
+       while E_Id /= No_Edit loop
+          dedit (E_Id);
+          E_Id := Edits.Table (E_Id).Next;
+       end loop;
+    end dfix;
+ 
+    ----------
+    -- dloc --
+    ----------
+ 
+    procedure dloc (Id : Labeled_Span_Id) is
+       L : Labeled_Span_Type renames Locations.Table (Id);
+    begin
+       if L.Is_Primary then
+          w ("  Primary location, Id = ", Int (Id));
+       else
+          w ("  Secondary location, Id = ", Int (Id));
+       end if;
+       w ("    Label         = ",
+         (if L.Label /= null then L.Label.all else "<>"));
+       w ("    Span          = ", To_String (L.Span));
+       w ("    Is_Region     = ", L.Is_Region);
+       w ("    Next          = ", Int (L.Next));
+    end dloc;
+ 
     ----------
     -- dmsg --
     ----------
  
     procedure dmsg (Id : Error_Msg_Id) is
        E : Error_Msg_Object renames Errors.Table (Id);
+       Loc_Id : Labeled_Span_Id := E.Locations;
+       F_Id : Fix_Id := E.Fixes;
  
     begin
        w ("Dumping error message, Id = ", Int (Id));
!       w ("  Text                = ", E.Text.all);
!       w ("  Next                = ", Int (E.Next));
!       w ("  Prev                = ", Int (E.Prev));
!       w ("  Sfile               = ", Int (E.Sfile));
  
        Write_Str
!         ("  Sptr                = ");
!       Write_Location (E.Sptr.Ptr);
        Write_Eol;
+       w ("  Span                = ", To_String (E.Sptr));
  
        Write_Str
!         ("  Optr                = ");
        Write_Location (E.Optr.Ptr);
        Write_Eol;
+       w ("  Opan                = ", To_String (E.Optr));
  
        Write_Str
!         ("  Insertion_Sloc      = ");
        Write_Location (E.Insertion_Sloc);
        Write_Eol;
  
!       while Loc_Id /= No_Labeled_Span loop
!          dloc (Loc_Id);
!          Loc_Id := Locations.Table (Loc_Id).Next;
!       end loop;
! 
!       while Loc_Id /= No_Labeled_Span loop
!          dloc (Loc_Id);
!          Loc_Id := Locations.Table (Loc_Id).Next;
!       end loop;
! 
!       while F_Id /= No_Fix loop
!          dfix (F_Id);
!          F_Id := Fixes.Table (F_Id).Next;
!       end loop;
! 
!       w ("  Line                = ", Int (E.Line));
!       w ("  Col                 = ", Int (E.Col));
!       w ("  Kind                = ", E.Kind'Img);
!       w ("  Warn_Err            = ", E.Warn_Err'Img);
!       w ("  Warn_Chr            = '" & E.Warn_Chr & ''');
!       w ("  Uncond              = ", E.Uncond);
!       w ("  Compile_Time_Pragma = ", E.Compile_Time_Pragma);
!       w ("  Msg_Cont            = ", E.Msg_Cont);
!       w ("  Deleted             = ", E.Deleted);
!       w ("  Switch              = ", E.Switch'Img);
!       w ("  Diag_Id             = ", E.Id'Img);
!       w ("  Restriction         = ", E.Restriction'Img);
  
        Write_Eol;
     end dmsg;
*************** package body Erroutc is
*** 515,520 ****
--- 697,728 ----
     end Next_Continuation_Msg;
  
     ----------------------
+    -- Insert_Error_Msg --
+    ----------------------
+ 
+    procedure Insert_Error_Msg
+      (Msg      : Error_Msg_Id;
+       Prev_Msg : Error_Msg_Id;
+       Next_Msg : Error_Msg_Id)
+    is
+    begin
+       Errors.Table (Msg).Prev := Prev_Msg;
+       Errors.Table (Msg).Next := Next_Msg;
+ 
+       if Prev_Msg = No_Error_Msg then
+          First_Error_Msg := Msg;
+       else
+          Errors.Table (Prev_Msg).Next := Msg;
+       end if;
+ 
+       if Next_Msg = No_Error_Msg then
+          Last_Error_Msg := Msg;
+       else
+          Errors.Table (Next_Msg).Prev := Msg;
+       end if;
+    end Insert_Error_Msg;
+ 
+    ----------------------
     -- Primary_Location --
     ----------------------
  
*************** package body Erroutc is
*** 1240,1295 ****
        end loop;
     end Prescan_Message;
  
-    --------------------
-    -- Purge_Messages --
-    --------------------
- 
-    procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr) is
-       E : Error_Msg_Id;
- 
-       function To_Be_Purged (E : Error_Msg_Id) return Boolean;
-       --  Returns True for a message that is to be purged. Also adjusts
-       --  error counts appropriately.
- 
-       ------------------
-       -- To_Be_Purged --
-       ------------------
- 
-       function To_Be_Purged (E : Error_Msg_Id) return Boolean is
-       begin
-          if E /= No_Error_Msg
-            and then Errors.Table (E).Sptr.Ptr > From
-            and then Errors.Table (E).Sptr.Ptr < To
-          then
-             Decrease_Error_Msg_Count (Errors.Table (E));
- 
-             return True;
- 
-          else
-             return False;
-          end if;
-       end To_Be_Purged;
- 
-    --  Start of processing for Purge_Messages
- 
-    begin
-       while To_Be_Purged (First_Error_Msg) loop
-          First_Error_Msg := Errors.Table (First_Error_Msg).Next;
-       end loop;
- 
-       E := First_Error_Msg;
-       while E /= No_Error_Msg loop
-          while To_Be_Purged (Errors.Table (E).Next) loop
-             Errors.Table (Errors.Table (E).Next).Deleted := True;
- 
-             Errors.Table (E).Next :=
-               Errors.Table (Errors.Table (E).Next).Next;
-          end loop;
- 
-          E := Errors.Table (E).Next;
-       end loop;
-    end Purge_Messages;
- 
     ----------------
     -- Same_Error --
     ----------------
--- 1448,1453 ----
*************** package body Erroutc is
*** 2072,2077 ****
--- 2230,2316 ----
        return False;
     end Sloc_In_Range;
  
+    ------------------
+    -- To_File_Name --
+    ------------------
+ 
+    function To_File_Name (Sptr : Source_Ptr) return String is
+       Sfile    : constant Source_File_Index := Get_Source_File_Index (Sptr);
+       Ref_Name : constant File_Name_Type    :=
+         (if Full_Path_Name_For_Brief_Errors then Full_Ref_Name (Sfile)
+          else Reference_Name (Sfile));
+ 
+    begin
+       return Get_Name_String (Ref_Name);
+    end To_File_Name;
+ 
+    ---------------
+    -- To_String --
+    ---------------
+ 
+    function To_String (Sptr : Source_Ptr) return String is
+       function Line_To_String (Sptr : Source_Ptr) return String;
+       --  Converts the logical line number of the Sptr to a string.
+ 
+       function Column_To_String (Sptr : Source_Ptr) return String;
+       --  Converts the column number of the Sptr to a string. Column values
+       --  less than 10 are prefixed with a 0.
+ 
+       --------------------
+       -- Line_To_String --
+       --------------------
+ 
+       function Line_To_String (Sptr : Source_Ptr) return String is
+          Line    : constant Logical_Line_Number :=
+            Get_Logical_Line_Number (Sptr);
+          Img_Raw : constant String := Int'Image (Int (Line));
+ 
+       begin
+          return Img_Raw (Img_Raw'First + 1 .. Img_Raw'Last);
+       end Line_To_String;
+ 
+       ----------------------
+       -- Column_To_String --
+       ----------------------
+ 
+       function Column_To_String (Sptr : Source_Ptr) return String is
+          Col     : constant Column_Number := Get_Column_Number (Sptr);
+          Img_Raw : constant String := Int'Image (Int (Col));
+ 
+       begin
+          return
+            (if Col < 10 then "0" else "")
+            & Img_Raw (Img_Raw'First + 1 .. Img_Raw'Last);
+       end Column_To_String;
+ 
+       --  Start of processing for To_String
+    begin
+       return
+         To_File_Name (Sptr)
+         & ":"
+         & Line_To_String (Sptr)
+         & ":"
+         & Column_To_String (Sptr);
+    end To_String;
+ 
+    ---------------
+    -- To_String --
+    ---------------
+ 
+    function To_String (Span : Source_Span) return String is
+    begin
+       return
+         "[" & To_String (Span.First) & " .. " & To_String (Span.Last) & "]";
+    end To_String;
+ 
+    ---------------------------
+    -- Warning_Is_Suppressed --
+    ---------------------------
+ 
+    function Warning_Is_Suppressed
+      (Loc : Source_Ptr; Msg : String_Ptr; Tag : String := "") return Boolean
+    is (Warning_Specifically_Suppressed (Loc, Msg, Tag) /= No_String);
+ 
     -------------------------------------
     -- Warning_Specifically_Suppressed --
     -------------------------------------
*************** package body Erroutc is
*** 2153,2158 ****
--- 2392,2420 ----
        end if;
     end Warnings_Suppressed;
  
+    --------------------------------------
+    -- Write_All_Errors_In_Brief_Format --
+    --------------------------------------
+ 
+    procedure Write_All_Errors_In_Brief_Format is
+       E : Error_Msg_Id;
+    begin
+       Set_Standard_Error;
+ 
+       E := First_Error_Msg;
+       while E /= No_Error_Msg loop
+          if not Errors.Table (E).Deleted then
+             Output_Msg_Location (E);
+             Output_Msg_Text (E);
+             Write_Eol;
+          end if;
+ 
+          E := Errors.Table (E).Next;
+       end loop;
+ 
+       Set_Standard_Output;
+    end Write_All_Errors_In_Brief_Format;
+ 
     -------------------------
     -- Write_Error_Summary --
     -------------------------
*************** package body Erroutc is
*** 2247,2250 ****
--- 2509,2536 ----
        Set_Standard_Output;
     end Write_Error_Summary;
  
+    ----------------------
+    -- Write_Max_Errors --
+    ----------------------
+ 
+    procedure Write_Max_Errors is
+    begin
+       if Maximum_Messages /= 0 then
+          if Warnings_Detected >= Maximum_Messages then
+             Set_Standard_Error;
+             Write_Line ("maximum number of warnings output");
+             Write_Line ("any further warnings suppressed");
+             Set_Standard_Output;
+          end if;
+ 
+          --  If too many errors print message
+ 
+          if Total_Errors_Detected >= Maximum_Messages then
+             Set_Standard_Error;
+             Write_Line ("fatal error: maximum number of errors detected");
+             Set_Standard_Output;
+          end if;
+       end if;
+    end Write_Max_Errors;
+ 
  end Erroutc;
diff -Nrcpad gcc-17-20260524/gcc/ada/erroutc.ads gcc-17-20260531/gcc/ada/erroutc.ads
*** gcc-17-20260524/gcc/ada/erroutc.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/erroutc.ads	Sun May 31 22:32:04 2026
***************
*** 27,35 ****
  --  reporting packages, including Errout and Prj.Err.
  
  with Table;
! with Errid; use Errid;
! with Osint; use Osint;
! with Types; use Types;
  
  package Erroutc is
  
--- 27,36 ----
  --  reporting packages, including Errout and Prj.Err.
  
  with Table;
! with Errid;  use Errid;
! with Osint;  use Osint;
! with Rident; use Rident;
! with Types;  use Types;
  
  package Erroutc is
  
*************** package Erroutc is
*** 353,358 ****
--- 354,362 ----
        Id : Diagnostic_Id := No_Diagnostic_Id;
        --  Unique error code for the given message
  
+       Restriction : Restriction_Id := Not_A_Restriction_Id;
+       --  Restriction related to the diagnostic
+ 
        Locations : Labeled_Span_Id := No_Labeled_Span;
        --  Identifier to the first location identified by the error message.
        --  These locations are marked with an underlying span line and
*************** package Erroutc is
*** 384,389 ****
--- 388,400 ----
     --  as the physically last entry in the error message table, since messages
     --  are not always inserted in sequence.
  
+    procedure Insert_Error_Msg
+      (Msg : Error_Msg_Id; Prev_Msg : Error_Msg_Id; Next_Msg : Error_Msg_Id);
+    --  Insert Msg into the error message chain between Prev_Msg and Next_Msg.
+    --  Sets the Next and Prev pointers on Msg, updates the Next pointer of
+    --  Prev_Msg and the Prev pointer of Next_Msg, and adjusts First_Error_Msg
+    --  and Last_Error_Msg when Prev_Msg or Next_Msg is No_Error_Msg.
+ 
     procedure Next_Error_Msg (E : in out Error_Msg_Id);
     --  Update E to point to the next error message in the list of error
     --  messages. Skip deleted and continuation messages.
*************** package Erroutc is
*** 613,618 ****
--- 624,638 ----
     --  Returns true if errors have been detected, or warnings that are treated
     --  as errors.
  
+    procedure dedit (Id : Edit_Id);
+    --  Debugging routine to dump an edit. Used by dfix.
+ 
+    procedure dfix (Id : Fix_Id);
+    --  Debugging routine to dump a fix. Used by dmsg.
+ 
+    procedure dloc (Id : Labeled_Span_Id);
+    --  Debugging routine to dump a location. Used by dmsg.
+ 
     procedure dmsg (Id : Error_Msg_Id);
     --  Debugging routine to dump an error message
  
*************** package Erroutc is
*** 726,734 ****
     --  Tag used at the end of warning messages that were converted by
     --  pragma Warning_As_Error.
  
!    procedure Purge_Messages (From : Source_Ptr; To : Source_Ptr);
     --  All error messages whose location is in the range From .. To (not
!    --  including the end points) will be deleted from the error listing.
  
     function Same_Error (M1, M2 : Error_Msg_Id) return Boolean;
     --  See if two messages have the same text. Returns true if the text of the
--- 746,774 ----
     --  Tag used at the end of warning messages that were converted by
     --  pragma Warning_As_Error.
  
!    procedure Delete_Duplicate_Errors;
!    --  Delete dupleicate error messages from the list. This is
!    --  done after the fact to avoid problems with Change_Error_Text.
! 
!    procedure Delete_Error_Msg (E : Error_Msg_Id);
!    --  Delete an error msg if not already deleted and adjust message count
! 
!    procedure Delete_Error_Msgs_In_Range (From : Source_Ptr; To : Source_Ptr);
     --  All error messages whose location is in the range From .. To (not
!    --  including the end points) will be marked as deleted in the error
!    --  listing.
! 
!    procedure Delete_Error_And_Continuation_Msgs (E : Error_Msg_Id);
!    --  Delete E and all continuations following E and if E was a continuation
!    --  then all of the continuations before it and the non-continuation message
!    --  that it was attached to.
! 
!    generic
!       with function Filter (E : Error_Msg_Id) return Boolean is <>;
!    procedure Filter_And_Delete_Errors;
!    pragma Inline (Filter_And_Delete_Errors);
!    --  Iterate over all of the errors in the error chain and mark all messages
!    --  as deleted if they match the Filter.
  
     function Same_Error (M1, M2 : Error_Msg_Id) return Boolean;
     --  See if two messages have the same text. Returns true if the text of the
*************** package Erroutc is
*** 852,857 ****
--- 892,901 ----
     --  Called in response to a pragma Warnings (On) to record the source
     --  location from which warnings are to be turned back on.
  
+    function Warning_Is_Suppressed
+      (Loc : Source_Ptr; Msg : String_Ptr; Tag : String := "") return Boolean;
+    --  Returns true if warning is specifically suppresed by a pragma.
+ 
     function Warnings_Suppressed (Loc : Source_Ptr) return String_Id;
     --  Determines if given location is covered by a warnings off suppression
     --  range in the warnings table (or is suppressed by compilation option,
*************** package Erroutc is
*** 862,867 ****
--- 906,916 ----
     --  parameter from the pragma is returned (or the null string if no Reason
     --  parameter was present).
  
+    function Warnings_Suppressed (Loc : Source_Ptr) return Boolean
+    is (Warnings_Suppressed (Loc) /= No_String);
+    --  Returns true if there is a reason for the warnings to be suppressed at
+    --  this location.
+ 
     function Warning_Specifically_Suppressed
       (Loc : Source_Ptr;
        Msg : String_Ptr;
*************** package Erroutc is
*** 877,882 ****
--- 926,939 ----
     --  branch of gnat2why, which does not know about tags in the calls but
     --  which uses the latest version of erroutc.
  
+    function To_String (Span : Source_Span) return String;
+ 
+    function To_String (Sptr : Source_Ptr) return String;
+    --  Convert the source pointer to a string of the form: "file:line:column"
+ 
+    function To_File_Name (Sptr : Source_Ptr) return String;
+    --  Converts the file name of the Sptr to a string.
+ 
     function Warning_Treated_As_Error (Msg : String) return Boolean;
     --  Returns True if the warning message Msg matches any of the strings
     --  given by Warning_As_Error pragmas, as stored in the Warnings_As_Errors
*************** package Erroutc is
*** 886,892 ****
--- 943,955 ----
     --  Returns true if a Warning_As_Error pragma matches either the error text
     --  or the warning tag of the message.
  
+    procedure Write_All_Errors_In_Brief_Format;
+    --  Emit all error messages in the errors table using the brief format
+ 
     procedure Write_Error_Summary;
     --  Write error summary
  
+    procedure Write_Max_Errors;
+    --  Write message if max errors reached
+ 
  end Erroutc;
diff -Nrcpad gcc-17-20260524/gcc/ada/errutil.adb gcc-17-20260531/gcc/ada/errutil.adb
*** gcc-17-20260524/gcc/ada/errutil.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/errutil.adb	Sun May 31 22:32:04 2026
*************** with Erroutc;  use Erroutc;
*** 30,35 ****
--- 30,36 ----
  with Namet;    use Namet;
  with Opt;      use Opt;
  with Output;   use Output;
+ with Rident;   use Rident;
  with Scans;    use Scans;
  with Sinput;   use Sinput;
  with Stringt;  use Stringt;
*************** package body Errutil is
*** 65,70 ****
--- 66,76 ----
     --  to determine whether or not the # insertion needs a file name. The
     --  variables Msg_Buffer, Msglen and Is_Unconditional_Msg are set on return.
  
+    procedure Write_All_Errors_In_Verbose_Format (Source_Type : String);
+    --  Emit all error messages in the errors table using the verbose format
+    --  activated by -gnatv where the error line is also printed along with the
+    --  error msg.
+ 
     ------------------
     -- Error_Msg_AP --
     ------------------
*************** package body Errutil is
*** 186,194 ****
        --  Immediate return if warning message and warnings are suppressed.
        --  Note that style messages are not warnings for this purpose.
  
!       if Error_Msg_Kind = Warning
!         and then Warnings_Suppressed (Sptr) /= No_String
!       then
           Cur_Msg := No_Error_Msg;
           return;
        end if;
--- 192,198 ----
        --  Immediate return if warning message and warnings are suppressed.
        --  Note that style messages are not warnings for this purpose.
  
!       if Error_Msg_Kind = Warning and then Warnings_Suppressed (Sptr) then
           Cur_Msg := No_Error_Msg;
           return;
        end if;
*************** package body Errutil is
*** 217,222 ****
--- 221,227 ----
              Kind                => Error_Msg_Kind,
              Id                  => No_Diagnostic_Id,
              Switch              => No_Switch_Id,
+             Restriction         => Not_A_Restriction_Id,
              Locations           => No_Labeled_Span,
              Fixes               => No_Fix));
  
*************** package body Errutil is
*** 316,362 ****
     --------------
  
     procedure Finalize (Source_Type : String := "project") is
!       Cur      : Error_Msg_Id;
!       Nxt      : Error_Msg_Id;
!       E, F     : Error_Msg_Id;
        Err_Flag : Boolean;
  
     begin
!       --  Eliminate any duplicated error messages from the list. This is
!       --  done after the fact to avoid problems with Change_Error_Text.
! 
!       Cur := First_Error_Msg;
!       while Cur /= No_Error_Msg loop
!          Nxt := Errors.Table (Cur).Next;
! 
!          F := Nxt;
!          while F /= No_Error_Msg
!            and then Errors.Table (F).Sptr = Errors.Table (Cur).Sptr
!          loop
!             Check_Duplicate_Message (Cur, F);
!             F := Errors.Table (F).Next;
!          end loop;
! 
!          Cur := Nxt;
!       end loop;
  
        --  Brief Error mode
  
        if Brief_Output or (not Full_List and not Verbose_Mode) then
!          E := First_Error_Msg;
!          Set_Standard_Error;
! 
!          while E /= No_Error_Msg loop
!             if not Errors.Table (E).Deleted then
!                Output_Msg_Location (E);
!                Output_Msg_Text (E);
!                Write_Eol;
!             end if;
! 
!             E := Errors.Table (E).Next;
!          end loop;
! 
!          Set_Standard_Output;
        end if;
  
        --  Full source listing case
--- 321,336 ----
     --------------
  
     procedure Finalize (Source_Type : String := "project") is
!       E        : Error_Msg_Id;
        Err_Flag : Boolean;
  
     begin
!       Delete_Duplicate_Errors;
  
        --  Brief Error mode
  
        if Brief_Output or (not Full_List and not Verbose_Mode) then
!          Write_All_Errors_In_Brief_Format;
        end if;
  
        --  Full source listing case
*************** package body Errutil is
*** 402,420 ****
        --  Verbose mode (error lines only with error flags)
  
        if Verbose_Mode then
!          E := First_Error_Msg;
! 
!          --  Loop through error lines
! 
!          while E /= No_Error_Msg loop
!             Write_Eol;
!             Output_Source_Line
!               (Errors.Table (E).Line,
!                Errors.Table (E).Sfile,
!                True,
!                Source_Type);
!             Output_Error_Msgs (E);
!          end loop;
        end if;
  
        --  Output error summary if verbose or full list mode
--- 376,382 ----
        --  Verbose mode (error lines only with error flags)
  
        if Verbose_Mode then
!          Write_All_Errors_In_Verbose_Format (Source_Type);
        end if;
  
        --  Output error summary if verbose or full list mode
*************** package body Errutil is
*** 423,442 ****
           Write_Error_Summary;
        end if;
  
!       if Maximum_Messages /= 0 then
!          if Warnings_Detected >= Maximum_Messages then
!             Set_Standard_Error;
!             Write_Line ("maximum number of warnings detected");
! 
!             Warning_Mode := Suppress;
!          end if;
! 
!          if Total_Errors_Detected >= Maximum_Messages then
!             Set_Standard_Error;
!             Write_Line ("fatal error: maximum errors reached");
!             Set_Standard_Output;
!          end if;
!       end if;
  
        --  Even though Warning_Info_Messages are a subclass of warnings, they
        --  must not be treated as errors when -gnatwe is in effect.
--- 385,391 ----
           Write_Error_Summary;
        end if;
  
!       Write_Max_Errors;
  
        --  Even though Warning_Info_Messages are a subclass of warnings, they
        --  must not be treated as errors when -gnatwe is in effect.
*************** package body Errutil is
*** 643,646 ****
--- 592,614 ----
        end loop;
     end Set_Msg_Text;
  
+    ----------------------------------------
+    -- Write_All_Errors_In_Verbose_Format --
+    ----------------------------------------
+ 
+    procedure Write_All_Errors_In_Verbose_Format (Source_Type : String) is
+       E : Error_Msg_Id;
+    begin
+       E := First_Error_Msg;
+ 
+       --  Loop through error lines
+ 
+       while E /= No_Error_Msg loop
+          Write_Eol;
+          Output_Source_Line
+            (Errors.Table (E).Line, Errors.Table (E).Sfile, True, Source_Type);
+          Output_Error_Msgs (E);
+       end loop;
+    end Write_All_Errors_In_Verbose_Format;
+ 
  end Errutil;
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_aggr.adb gcc-17-20260531/gcc/ada/exp_aggr.adb
*** gcc-17-20260524/gcc/ada/exp_aggr.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_aggr.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Aggr is
*** 7848,7854 ****
  
              else
                 --  a deep delta aggregate choice
!                pragma Assert (All_Extensions_Allowed);
  
                 declare
                    --  recursively get name for prefix
--- 7848,7854 ----
  
              else
                 --  a deep delta aggregate choice
!                pragma Assert (Core_Extensions_Allowed);
  
                 declare
                    --  recursively get name for prefix
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_attr.adb gcc-17-20260531/gcc/ada/exp_attr.adb
*** gcc-17-20260524/gcc/ada/exp_attr.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_attr.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Attr is
*** 2998,3004 ****
                                  (Entity (Prefix (Enc_Object))))
                and then not No_Dynamic_Accessibility_Checks_Enabled (Enc_Object)
              then
!                Apply_Accessibility_Check (Prefix (Enc_Object), Typ, N);
  
                 --  Ada 2005 (AI-251): If the designated type is an interface we
                 --  add an implicit conversion to force the displacement of the
--- 2998,3005 ----
                                  (Entity (Prefix (Enc_Object))))
                and then not No_Dynamic_Accessibility_Checks_Enabled (Enc_Object)
              then
!                Apply_Accessibility_Check_For_Parameter
!                  (Prefix (Enc_Object), Typ, N);
  
                 --  Ada 2005 (AI-251): If the designated type is an interface we
                 --  add an implicit conversion to force the displacement of the
*************** package body Exp_Attr is
*** 3553,3558 ****
--- 3554,3578 ----
                New_Occurrence_Of
                  (Extra_Constrained (Formal_Ent), Loc));
  
+          --  Extra formals are not created for Unchecked_Union parameters
+ 
+          elsif Present (Formal_Ent)
+            and then Ekind (Formal_Ent) /= E_In_Parameter
+            and then Is_Unchecked_Union (Base_Type (Etype (Formal_Ent)))
+          then
+             if Comes_From_Source (N) then
+                Error_Msg_N
+                  ("constraints cannot be determined for Unchecked_Union??", N);
+                Error_Msg_N
+                  ("\Program_Error will be raised for ''Constrained??", N);
+             end if;
+ 
+             Insert_Action (N,
+               Make_Raise_Program_Error (Loc,
+                 Reason => PE_Unchecked_Union_Restriction));
+ 
+             Rewrite (N, New_Occurrence_Of (Boolean_Literals (False), Loc));
+ 
           --  If the prefix is an access to object, the attribute applies to
           --  the designated object, so rewrite with an explicit dereference.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch3.adb gcc-17-20260531/gcc/ada/exp_ch3.adb
*** gcc-17-20260524/gcc/ada/exp_ch3.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch3.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Ch3 is
*** 95,103 ****
     --  It also supplies the source location used for the procedure.
  
     procedure Build_Implicit_Copy_Constructor (N : Node_Id; Typ : Entity_Id);
!    --  Build default copy constructor. N is the type declaration node, and Typ
     --  is the corresponding entity for the record type.
  
     function Build_Discriminant_Formals
       (Rec_Id : Entity_Id;
        Use_Dl : Boolean) return List_Id;
--- 95,108 ----
     --  It also supplies the source location used for the procedure.
  
     procedure Build_Implicit_Copy_Constructor (N : Node_Id; Typ : Entity_Id);
!    --  Build implicit copy constructor. N is the type declaration node, and Typ
     --  is the corresponding entity for the record type.
  
+    procedure Build_Implicit_Parameterless_Constructor
+      (N : Node_Id; Typ : Entity_Id);
+    --  Build implicit parameterless constructor. N is the type declaration
+    --  node, and Typ is the corresponding entity for the record type.
+ 
     function Build_Discriminant_Formals
       (Rec_Id : Entity_Id;
        Use_Dl : Boolean) return List_Id;
*************** package body Exp_Ch3 is
*** 1982,1987 ****
--- 1987,2071 ----
        Set_Init_Proc (Typ, Copy_Id);
     end Build_Implicit_Copy_Constructor;
  
+    ----------------------------------------------
+    -- Build_Implicit_Parameterless_Constructor --
+    ----------------------------------------------
+ 
+    procedure Build_Implicit_Parameterless_Constructor
+      (N : Node_Id; Typ : Entity_Id)
+    is
+       Loc            : constant Source_Ptr := Sloc (Typ);
+       Constructor_Id : Entity_Id;
+       Spec_Node      : Node_Id;
+    begin
+       --  The implicit parameterless constructor doesn't need to do anything.
+       --  In fact, during subprogram expansion, prepending the prologue of
+       --  constructors takes care of calling the parent's constructor (if
+       --  derived) and initializing components that need construction. Exactly
+       --  what an implicit parameterless constructor should do.
+ 
+       if not Comes_From_Source (N)
+         or else not Needs_Construction (Typ)
+         or else Has_Parameterless_Constructor (Typ, Allow_Removed => True)
+         or else Has_Explicit_Constructor (Typ)
+         or else (Is_Derived_Type (Typ)
+                  and then not Has_Parameterless_Constructor
+                                 (Parent_Subtype (Typ)))
+       then
+          return;
+       end if;
+ 
+       Constructor_Id :=
+         Make_Defining_Identifier (Loc,
+           Direct_Attribute_Definition_Name (Typ, Name_Constructor));
+       Mutate_Ekind (Constructor_Id, E_Procedure);
+ 
+       if not Debug_Generated_Code then
+          Set_Debug_Info_Off (Constructor_Id);
+       end if;
+ 
+       Spec_Node := New_Node (N_Procedure_Specification, Loc);
+       Set_Defining_Unit_Name (Spec_Node, Constructor_Id);
+ 
+       --  The implicit parameterless constructor has the following profile:
+       --    procedure T'Constructor (Self : in out T);
+ 
+       Set_Parameter_Specifications (Spec_Node, New_List (
+         Make_Parameter_Specification (Loc,
+           Defining_Identifier => Make_Defining_Identifier (Loc, Name_Self),
+           In_Present          => True,
+           Out_Present         => True,
+           Parameter_Type      => New_Occurrence_Of (Typ, Loc))));
+ 
+       Freeze_Extra_Formals (Constructor_Id);
+ 
+       declare
+          Ignore             : Node_Id;
+          Default_Initialize : constant Node_Id :=
+            Make_Aspect_Specification (Loc,
+              Identifier => Make_Identifier (Loc, Name_Initialize),
+              Expression =>
+                Make_Aggregate (Loc,
+                  Component_Associations   => New_List (
+                    Make_Component_Association (Loc,
+                      Choices     => New_List (Make_Others_Choice (Loc)),
+                      Box_Present => True)),
+                  Is_Parenthesis_Aggregate => True));
+       begin
+          Ignore :=
+            Make_Subprogram_Body (Loc,
+              Specification => Spec_Node,
+              Handled_Statement_Sequence =>
+                Make_Handled_Sequence_Of_Statements (Loc),
+              Aspect_Specifications => New_List (Default_Initialize));
+       end;
+ 
+       Set_Is_Public (Constructor_Id, Is_Public (Typ));
+       Set_Is_Internal (Constructor_Id);
+       Set_Is_Constructor (Constructor_Id);
+       Set_Init_Proc (Typ, Constructor_Id);
+    end Build_Implicit_Parameterless_Constructor;
+ 
     --------------------------------
     -- Build_Discriminant_Formals --
     --------------------------------
*************** package body Exp_Ch3 is
*** 2752,2766 ****
        Init_Control_Formal : Entity_Id := Empty; -- set in Build_Init_Statements
        Has_Late_Init_Comp  : Boolean := False;   -- set in Build_Init_Statements
  
-       function Build_Assignment
-         (Id      : Entity_Id;
-          Default : Node_Id) return List_Id;
-       --  Build an assignment statement that assigns the default expression to
-       --  its corresponding record component if defined. The left-hand side of
-       --  the assignment is marked Assignment_OK so that initialization of
-       --  limited private records works correctly. This routine may also build
-       --  an adjustment call if the component is controlled.
- 
        procedure Build_Discriminant_Assignments (Statement_List : List_Id);
        --  If the record has discriminants, add assignment statements to
        --  Statement_List to initialize the discriminant values from the
--- 2836,2841 ----
*************** package body Exp_Ch3 is
*** 2822,2948 ****
        --  Determine whether a record initialization procedure needs to be
        --  generated for the given record type.
  
-       ----------------------
-       -- Build_Assignment --
-       ----------------------
- 
-       function Build_Assignment
-         (Id      : Entity_Id;
-          Default : Node_Id) return List_Id
-       is
-          Default_Loc : constant Source_Ptr := Sloc (Default);
-          Typ         : constant Entity_Id  := Underlying_Type (Etype (Id));
- 
-          Exp   : Node_Id;
-          Exp_Q : Node_Id;
-          Lhs   : Node_Id;
-          Res   : List_Id;
- 
-       begin
-          Lhs :=
-            Make_Selected_Component (Default_Loc,
-              Prefix        => Make_Identifier (Loc, Name_uInit),
-              Selector_Name => New_Occurrence_Of (Id, Default_Loc));
-          Set_Assignment_OK (Lhs);
- 
-          --  Take copy of Default to ensure that later copies of this component
-          --  declaration in derived types see the original tree, not a node
-          --  rewritten during expansion of the init_proc. If the copy contains
-          --  itypes, the scope of the new itypes is the init_proc being built.
- 
-          declare
-             Map : Elist_Id := No_Elist;
- 
-          begin
-             if Has_Late_Init_Comp then
-                --  Map the type to the _Init parameter in order to
-                --  handle "current instance" references.
- 
-                Map := New_Elmt_List
-                         (Elmt1 => Rec_Type,
-                          Elmt2 => Defining_Identifier (First
-                                    (Parameter_Specifications
-                                       (Parent (Proc_Id)))));
- 
-                --  If the type has an incomplete view, a current instance
-                --  may have an incomplete type. In that case, it must also be
-                --  replaced by the formal of the Init_Proc.
- 
-                if Present (Incomplete_View (Rec_Type)) then
-                   Append_Elmt (
-                     N  => Incomplete_View (Rec_Type),
-                     To => Map);
-                   Append_Elmt (
-                     N  => Defining_Identifier
-                             (First
-                               (Parameter_Specifications
-                                 (Parent (Proc_Id)))),
-                     To => Map);
-                end if;
-             end if;
- 
-             Exp := New_Copy_Tree (Default, New_Scope => Proc_Id, Map => Map);
-          end;
- 
-          Res := New_List (
-            Make_Assignment_Statement (Loc,
-              Name       => Lhs,
-              Expression => Exp));
- 
-          Exp_Q := Unqualify (Exp);
- 
-          --  Adjust the component if controlled, except if the expression is an
-          --  aggregate that will be expanded inline (but note that the case of
-          --  container aggregates does require component adjustment), or else
-          --  a function call whose result is adjusted in the called function.
-          --  Note that, when we don't inhibit component adjustment, the tag
-          --  will be automatically inserted by Make_Tag_Ctrl_Assignment in the
-          --  tagged case. Otherwise, we have to generate a tag assignment here.
- 
-          if Needs_Finalization (Typ)
-            and then (Nkind (Exp_Q) not in N_Aggregate | N_Extension_Aggregate
-                       or else Is_Container_Aggregate (Exp_Q))
-            and then not Is_Build_In_Place_Function_Call (Exp)
-            and then not (Back_End_Return_Slot
-                           and then Nkind (Exp) = N_Function_Call)
-          then
-             Set_No_Finalize_Actions (First (Res));
- 
-          else
-             Set_No_Ctrl_Actions (First (Res));
- 
-             --  Adjust the tag if tagged because of possible view conversions
- 
-             if Is_Tagged_Type (Typ)
-               and then Tagged_Type_Expansion
-               and then Nkind (Exp_Q) /= N_Raise_Expression
-             then
-                declare
-                   Utyp : Entity_Id := Underlying_Type (Typ);
- 
-                begin
-                   --  Get the relevant type for Make_Tag_Assignment_From_Type,
-                   --  which, for concurrent types is the corresponding record.
- 
-                   if Ekind (Utyp) in E_Protected_Type | E_Task_Type then
-                      Utyp := Corresponding_Record_Type (Utyp);
-                   end if;
- 
-                   Append_To (Res,
-                     Make_Tag_Assignment_From_Type (Default_Loc,
-                       New_Copy_Tree (Lhs, New_Scope => Proc_Id),
-                       Utyp));
-                end;
-             end if;
-          end if;
- 
-          return Res;
- 
-       exception
-          when RE_Not_Available =>
-             return Empty_List;
-       end Build_Assignment;
- 
        ------------------------------------
        -- Build_Discriminant_Assignments --
        ------------------------------------
--- 2897,2902 ----
*************** package body Exp_Ch3 is
*** 2972,2979 ****
                 else
                    D_Loc := Sloc (D);
                    Append_List_To (Statement_List,
!                     Build_Assignment (D,
!                       New_Occurrence_Of (Discriminal (D), D_Loc)));
                 end if;
  
                 Next_Discriminant (D);
--- 2926,2939 ----
                 else
                    D_Loc := Sloc (D);
                    Append_List_To (Statement_List,
!                     Build_Component_Assignment (Loc,
!                       Prefix        => Make_Identifier (Loc, Name_uInit),
!                       Prefix_Type   => Rec_Type,
!                       Proc_Id       => Proc_Id,
!                       Component_Id  => D,
!                       Default_Expr  =>
!                         New_Occurrence_Of (Discriminal (D), D_Loc),
!                       Is_Incomplete => Has_Late_Init_Comp));
                 end if;
  
                 Next_Discriminant (D);
*************** package body Exp_Ch3 is
*** 4000,4006 ****
                            Discr_Map       => Discr_Map,
                            Constructor_Ref => Expression (Decl));
                    else
!                      Actions := Build_Assignment (Id, Expression (Decl));
                    end if;
  
                 --  Expand components with constructors to have the 'Make
--- 3960,3973 ----
                            Discr_Map       => Discr_Map,
                            Constructor_Ref => Expression (Decl));
                    else
!                      Actions :=
!                        Build_Component_Assignment (Loc,
!                          Prefix        => Make_Identifier (Loc, Name_uInit),
!                          Prefix_Type   => Rec_Type,
!                          Proc_Id       => Proc_Id,
!                          Component_Id  => Id,
!                          Default_Expr  => Expression (Decl),
!                          Is_Incomplete => Has_Late_Init_Comp);
                    end if;
  
                 --  Expand components with constructors to have the 'Make
*************** package body Exp_Ch3 is
*** 4016,4022 ****
                          Subtype_Indication
                            (Component_Definition (Decl))));
                    Analyze (Expression (Decl));
!                   Actions := Build_Assignment (Id, Expression (Decl));
  
                 --  CPU, Dispatching_Domain, Priority, and Secondary_Stack_Size
                 --  components are filled in with the corresponding rep-item
--- 3983,3996 ----
                          Subtype_Indication
                            (Component_Definition (Decl))));
                    Analyze (Expression (Decl));
!                   Actions :=
!                     Build_Component_Assignment (Loc,
!                       Prefix        => Make_Identifier (Loc, Name_uInit),
!                       Prefix_Type   => Rec_Type,
!                       Proc_Id       => Proc_Id,
!                       Component_Id  => Id,
!                       Default_Expr  => Expression (Decl),
!                       Is_Incomplete => Has_Late_Init_Comp);
  
                 --  CPU, Dispatching_Domain, Priority, and Secondary_Stack_Size
                 --  components are filled in with the corresponding rep-item
*************** package body Exp_Ch3 is
*** 4113,4119 ****
                             Exp := Convert_To (RTE (RE_Size_Type), Exp);
                          end if;
  
!                         Actions := Build_Assignment (Id, Exp);
  
                       --  Nothing needed if no Rep Item
  
--- 4087,4100 ----
                             Exp := Convert_To (RTE (RE_Size_Type), Exp);
                          end if;
  
!                         Actions :=
!                           Build_Component_Assignment (Loc,
!                             Prefix        => Make_Identifier (Loc, Name_uInit),
!                             Prefix_Type   => Rec_Type,
!                             Proc_Id       => Proc_Id,
!                             Component_Id  => Id,
!                             Default_Expr  => Exp,
!                             Is_Incomplete => Has_Late_Init_Comp);
  
                       --  Nothing needed if no Rep Item
  
*************** package body Exp_Ch3 is
*** 4194,4208 ****
  
                 elsif Component_Needs_Simple_Initialization (Typ) then
                    Actions :=
!                     Build_Assignment
!                       (Id      => Id,
!                        Default =>
!                          Get_Simple_Init_Val
!                            (Typ  => Typ,
!                             N    => N,
!                             Size =>
!                               (if Known_Esize (Id) then Esize (Id)
!                                else Uint_0)));
  
                 --  Nothing needed for this case
  
--- 4175,4193 ----
  
                 elsif Component_Needs_Simple_Initialization (Typ) then
                    Actions :=
!                     Build_Component_Assignment (Loc,
!                       Prefix        => Make_Identifier (Loc, Name_uInit),
!                       Prefix_Type   => Rec_Type,
!                       Proc_Id       => Proc_Id,
!                       Component_Id  => Id,
!                       Default_Expr  =>
!                         Get_Simple_Init_Val
!                           (Typ  => Typ,
!                            N    => N,
!                            Size =>
!                              (if Known_Esize (Id) then Esize (Id)
!                               else Uint_0)),
!                       Is_Incomplete => Has_Late_Init_Comp);
  
                 --  Nothing needed for this case
  
*************** package body Exp_Ch3 is
*** 4408,4414 ****
                 then
                    if Present (Expression (Decl)) then
                       Append_List_To (Late_Stmts,
!                        Build_Assignment (Id, Expression (Decl)));
  
                    elsif Has_Non_Null_Base_Init_Proc (Typ) then
                       Append_List_To (Late_Stmts,
--- 4393,4405 ----
                 then
                    if Present (Expression (Decl)) then
                       Append_List_To (Late_Stmts,
!                        Build_Component_Assignment (Loc,
!                          Prefix        => Make_Identifier (Loc, Name_uInit),
!                          Prefix_Type   => Rec_Type,
!                          Proc_Id       => Proc_Id,
!                          Component_Id  => Id,
!                          Default_Expr  => Expression (Decl),
!                          Is_Incomplete => Has_Late_Init_Comp));
  
                    elsif Has_Non_Null_Base_Init_Proc (Typ) then
                       Append_List_To (Late_Stmts,
*************** package body Exp_Ch3 is
*** 4435,4447 ****
                       end if;
                    elsif Component_Needs_Simple_Initialization (Typ) then
                       Append_List_To (Late_Stmts,
!                        Build_Assignment
!                          (Id      => Id,
!                           Default =>
!                             Get_Simple_Init_Val
!                               (Typ  => Typ,
!                                N    => N,
!                                Size => Esize (Id))));
                    end if;
                 end if;
  
--- 4426,4442 ----
                       end if;
                    elsif Component_Needs_Simple_Initialization (Typ) then
                       Append_List_To (Late_Stmts,
!                        Build_Component_Assignment (Loc,
!                          Prefix        => Make_Identifier (Loc, Name_uInit),
!                          Prefix_Type   => Rec_Type,
!                          Proc_Id       => Proc_Id,
!                          Component_Id  => Id,
!                          Default_Expr  =>
!                            Get_Simple_Init_Val
!                              (Typ  => Typ,
!                               N    => N,
!                               Size => Esize (Id)),
!                          Is_Incomplete => Has_Late_Init_Comp));
                    end if;
                 end if;
  
*************** package body Exp_Ch3 is
*** 4865,4877 ****
  
        --  Derived types that have no type extension can use the initialization
        --  procedure of their parent and do not need a procedure of their own.
        --  This is only correct if there are no representation clauses for the
        --  type or its parent, and if the parent has in fact been frozen so
        --  that its initialization procedure exists.
  
        if Is_Derived_Type (Rec_Type)
          and then not Is_Tagged_Type (Rec_Type)
!         and then not Is_Unchecked_Union (Rec_Type)
          and then not Has_New_Non_Standard_Rep (Rec_Type)
          and then not Parent_Subtype_Renaming_Discrims
          and then Present (Base_Init_Proc (Etype (Rec_Type)))
--- 4860,4874 ----
  
        --  Derived types that have no type extension can use the initialization
        --  procedure of their parent and do not need a procedure of their own.
+       --  Same for derivations of unchecked_union types.
        --  This is only correct if there are no representation clauses for the
        --  type or its parent, and if the parent has in fact been frozen so
        --  that its initialization procedure exists.
  
        if Is_Derived_Type (Rec_Type)
          and then not Is_Tagged_Type (Rec_Type)
!         and then Is_Unchecked_Union (Rec_Type)
!                    = Is_Unchecked_Union (Etype (Rec_Type))
          and then not Has_New_Non_Standard_Rep (Rec_Type)
          and then not Parent_Subtype_Renaming_Discrims
          and then Present (Base_Init_Proc (Etype (Rec_Type)))
*************** package body Exp_Ch3 is
*** 6672,6681 ****
           Build_Untagged_Record_Equality (Typ);
        end if;
  
-       --  Freeze constructors as predefined operations
- 
-       Append_Freeze_Actions (Typ, Constructor_Freeze (Typ));
- 
        --  Before building the record initialization procedure, if we are
        --  dealing with a concurrent record value type, then we must go through
        --  the discriminants, exchanging discriminals between the concurrent
--- 6669,6674 ----
*************** package body Exp_Ch3 is
*** 6720,6728 ****
--- 6713,6726 ----
          and then (Tagged_Type_Expansion or else not Is_Interface (Typ))
        then
           Build_Record_Init_Proc (Typ_Decl, Typ);
+          Build_Implicit_Parameterless_Constructor (Typ_Decl, Typ);
           Build_Implicit_Copy_Constructor (Typ_Decl, Typ);
        end if;
  
+       --  Freeze constructors as done with predefined operations
+ 
+       Append_Freeze_Actions (Typ, Constructor_Freeze (Typ));
+ 
        --  Create the body of TSS primitive Finalize_Address. This must be done
        --  before the bodies of all predefined primitives are created. If Typ
        --  is limited, Stream_Input and Stream_Read may produce build-in-place
*************** package body Exp_Ch3 is
*** 7700,7722 ****
             and then not Is_Delayed_Aggregate (Expr)
             and then not No_Initialization (N)
           then
-             --  Ada 2005 (AI95-344): If the result type is class-wide, insert
-             --  a check that the level of the return expression's underlying
-             --  type is not deeper than the level of the master enclosing the
-             --  function.
- 
              --  AI12-043: The check is made immediately after the return object
              --  is created.
  
!             if Is_Class_Wide_Type (Etype (Func_Id)) then
!                Apply_CW_Accessibility_Check (Expr, Func_Id);
!             end if;
! 
!             if Has_Anonymous_Access_Discriminant (Etype (Expr)) then
!                --  Check that access discrims do not designate entities
!                --  that the function result could outlive.
!                Apply_Access_Discrims_Accessibility_Check (Expr, Func_Id);
!             end if;
  
              Alloc_Expr := New_Copy_Tree (Expr);
  
--- 7698,7707 ----
             and then not Is_Delayed_Aggregate (Expr)
             and then not No_Initialization (N)
           then
              --  AI12-043: The check is made immediately after the return object
              --  is created.
  
!             Apply_Accessibility_Check_For_Return (Expr, Func_Id);
  
              Alloc_Expr := New_Copy_Tree (Expr);
  
*************** package body Exp_Ch3 is
*** 8491,8496 ****
--- 8476,8519 ----
              --  class that has no virtual methods is an untagged limited
              --  record type.
  
+             --  a) C++ constructor call placed in a return statement. The
+             --     BIP_Object_Access param of the enclosing function has
+             --     the pointer to the object; convert it to the type of the
+             --     first formal of the called C++ constructor.
+ 
+             elsif Is_CPP_Constructor_Call (Expr)
+               and then Is_Return_Object (Def_Id)
+             then
+                declare
+                   Encl_Func   : constant Entity_Id :=
+                                   Return_Applies_To (Scope (Def_Id));
+                   BIP_Object  : constant Node_Id :=
+                                   Build_In_Place_Formal (Encl_Func,
+                                     BIP_Object_Access);
+                   Id_Ctor     : constant Entity_Id := Entity (Name (Expr));
+                   Id_Ref      : constant Node_Id :=
+                                   Unchecked_Convert_To (Etype (Id_Ctor),
+                                     Make_Explicit_Dereference (Loc,
+                                       New_Occurrence_Of (BIP_Object, Loc)));
+                   BIP_Obj_Ref : constant Node_Id :=
+                                   Make_Explicit_Dereference (Loc,
+                                     New_Occurrence_Of (BIP_Object, Loc));
+ 
+                begin
+                   Insert_List_Before_And_Analyze (N,
+                     Build_Initialization_Call (N, Id_Ref, Typ,
+                       Constructor_Ref => Expr));
+ 
+                   --  Generate:
+                   --    obj : T := renames BIP_Object_Access.all;
+ 
+                   Analyze (BIP_Obj_Ref);
+                   Rewrite_Object_Declaration_As_Renaming (N, BIP_Obj_Ref);
+                   return;
+                end;
+ 
+             --  b) C++ constructor call not placed in a return statement
+ 
              elsif Is_CPP_Constructor_Call (Expr) then
                 declare
                    Id_Ref : constant Node_Id := New_Occurrence_Of (Def_Id, Loc);
*************** package body Exp_Ch3 is
*** 9294,9319 ****
                    Insert_Action_After (Init_After, Tag_Assign);
                 end if;
  
-                --  Ada 2005 (AI95-344): If the result type is class-wide,
-                --  insert a check that the level of the return expression's
-                --  underlying type is not deeper than the level of the master
-                --  enclosing the function.
- 
                 --  AI12-043: The check is made immediately after the return
                 --  object is created.
  
!                if Is_Class_Wide_Type (Etype (Func_Id)) then
!                   Apply_CW_Accessibility_Check (Expr_Q, Func_Id);
!                end if;
! 
!                --  ??? Usually calls to Apply_CW_Accessibility_Check and to
!                --  Apply_Access_Discrims_Accessibility_Check come in pairs.
!                --  Do we need a (conditional) call here to A_A_D_A_C ?
              end;
           end if;
  
        --  If this is the return object of a function returning on the secondary
!       --  stack, convert the declaration to a renaming of the dereference of ah
        --  allocator for the secondary stack.
  
        --    Result : T [:= <expression>];
--- 9317,9331 ----
                    Insert_Action_After (Init_After, Tag_Assign);
                 end if;
  
                 --  AI12-043: The check is made immediately after the return
                 --  object is created.
  
!                Apply_Accessibility_Check_For_Return (Expr_Q, Func_Id);
              end;
           end if;
  
        --  If this is the return object of a function returning on the secondary
!       --  stack, convert the declaration to a renaming of the dereference of an
        --  allocator for the secondary stack.
  
        --    Result : T [:= <expression>];
*************** package body Exp_Ch3 is
*** 9404,9410 ****
           end;
  
        --  If this is the return object of a function returning a by-reference
!       --  type, convert the declaration to a renaming of the dereference of ah
        --  allocator for the return stack.
  
        --    Result : T [:= <expression>];
--- 9416,9422 ----
           end;
  
        --  If this is the return object of a function returning a by-reference
!       --  type, convert the declaration to a renaming of the dereference of an
        --  allocator for the return stack.
  
        --    Result : T [:= <expression>];
*************** package body Exp_Ch3 is
*** 9477,9486 ****
           end;
        end if;
  
!       --  Final transformation - turn the object declaration into a renaming
!       --  if appropriate. If this is the completion of a deferred constant
!       --  declaration, then this transformation generates what would be
!       --  illegal code if written by hand, but that's OK.
  
        if Rewrite_As_Renaming then
           Rewrite_Object_Declaration_As_Renaming (N, Expr_Q);
--- 9489,9498 ----
           end;
        end if;
  
!       --  Final transformation: turn the object declaration into a renaming if
!       --  needed. If this is the completion of a deferred constant declaration,
!       --  this transformation generates what would be illegal code if written
!       --  by hand, but that's OK.
  
        if Rewrite_As_Renaming then
           Rewrite_Object_Declaration_As_Renaming (N, Expr_Q);
*************** package body Exp_Ch3 is
*** 11649,11658 ****
                  Null_Record_Present => True);
  
              --  GNATprove will use expression of an expression function as an
!             --  implicit postcondition. GNAT will also benefit from expression
!             --  function to avoid premature freezing, but would struggle if we
!             --  added an expression function to freezing actions, so we create
!             --  the expanded form directly.
  
              if GNATprove_Mode then
                 Func_Body :=
--- 11661,11669 ----
                  Null_Record_Present => True);
  
              --  GNATprove will use expression of an expression function as an
!             --  implicit postcondition. GNAT will not benefit from expression
!             --  function (and would struggle if we add an expression function
!             --  to freezing actions).
  
              if GNATprove_Mode then
                 Func_Body :=
*************** package body Exp_Ch3 is
*** 11671,11677 ****
                         Statements => New_List (
                           Make_Simple_Return_Statement (Loc,
                             Expression => Ext_Aggr))));
-                Set_Was_Expression_Function (Func_Body);
              end if;
  
              Append_To (Body_List, Func_Body);
--- 11682,11687 ----
*************** package body Exp_Ch3 is
*** 11683,11688 ****
--- 11693,11699 ----
              Func_Id := Defining_Unit_Name (Specification (Func_Decl));
  
              Mutate_Ekind (Func_Id, E_Function);
+             Set_Has_Controlling_Result (Func_Id);
              Set_Is_Wrapper (Func_Id);
  
              --  Corresponding_Spec will be set again to the same value during
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch4.adb gcc-17-20260531/gcc/ada/exp_ch4.adb
*** gcc-17-20260524/gcc/ada/exp_ch4.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch4.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Ch4 is
*** 5162,5170 ****
        --  Return True if we can copy objects of this type when expanding a case
        --  expression.
  
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean;
-       --  Return True if N is an object declaration that can be optimized
- 
        ------------------
        -- Is_Copy_Type --
        ------------------
--- 5162,5167 ----
*************** package body Exp_Ch4 is
*** 5174,5193 ****
           return Is_Elementary_Type (Underlying_Type (Typ));
        end Is_Copy_Type;
  
-       --------------------------------
-       -- Is_Optimizable_Declaration --
-       --------------------------------
- 
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Object_Declaration
-            and then not (Is_Entity_Name (Object_Definition (N))
-                           and then Is_Class_Wide_Type
-                                      (Entity (Object_Definition (N))))
-            and then not Is_Return_Object (Defining_Identifier (N))
-            and then not Is_Copy_Type (Typ);
-       end Is_Optimizable_Declaration;
- 
        --  Local variables
  
        Acts       : List_Id;
--- 5171,5176 ----
*************** package body Exp_Ch4 is
*** 5236,5245 ****
        --    case X is
        --       when A =>
        --          then-obj : typ := then_expr;
!       --          target :=  then-obj'Unrestricted_Access;
        --       when B =>
        --          else-obj : typ := else-expr;
!       --          target :=  else-obj'Unrestricted_Access;
        --       ...
        --    end case
        --
--- 5219,5228 ----
        --    case X is
        --       when A =>
        --          then-obj : typ := then_expr;
!       --          target := then-obj'Unrestricted_Access;
        --       when B =>
        --          else-obj : typ := else-expr;
!       --          target := else-obj'Unrestricted_Access;
        --       ...
        --    end case
        --
*************** package body Exp_Ch4 is
*** 5265,5271 ****
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else Is_Optimizable_Declaration (Uncond_Par)
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
--- 5248,5255 ----
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else (Is_Distributable_Declaration (Uncond_Par)
!                         and then not Is_Copy_Type (Typ))
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
*************** package body Exp_Ch4 is
*** 5286,5292 ****
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Optimizable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
--- 5270,5276 ----
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Distributable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
*************** package body Exp_Ch4 is
*** 5479,5486 ****
--- 5463,5472 ----
              --    Target := Obj'Unrestricted_Access;
  
              elsif Optimize_Object_Decl then
+                Par_Obj := Defining_Identifier (Par);
                 Obj := Make_Temporary (Loc, 'C', Alt_Expr);
  
+                Set_Is_Return_Object (Obj, Is_Return_Object (Par_Obj));
                 Insert_Conditional_Object_Declaration
                   (Obj, Typ, Alt_Expr, Const => Constant_Present (Par));
  
*************** package body Exp_Ch4 is
*** 5751,5770 ****
        Par   : constant Node_Id    := Parent (N);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Force_Expand : constant Boolean := Is_Anonymous_Access_Actual (N);
        --  Determine if we are dealing with a special case of a conditional
        --  expression used as an actual for an anonymous access type which
        --  forces us to transform the if expression into an expression with
        --  actions in order to create a temporary to capture the level of the
!       --  expression in each branch.
  
        function Is_Copy_Type (Typ : Entity_Id) return Boolean;
        --  Return True if we can copy objects of this type when expanding an if
        --  expression.
  
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean;
-       --  Return True if N is an object declaration that can be optimized
- 
        function OK_For_Single_Subtype (T1, T2 : Entity_Id) return Boolean;
        --  Return true if it is acceptable to use a single subtype for two
        --  dependent expressions of subtype T1 and T2 respectively, which are
--- 5737,5757 ----
        Par   : constant Node_Id    := Parent (N);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Force_Expand : constant Boolean
!         := Needs_Accessibility_Level_Temp_Or_Check (N);
        --  Determine if we are dealing with a special case of a conditional
        --  expression used as an actual for an anonymous access type which
        --  forces us to transform the if expression into an expression with
        --  actions in order to create a temporary to capture the level of the
!       --  expression in each branch. Also True if the conditional
!       --  expression is the RHS of an assignment to a saooaaat (so the
!       --  accessibility level temp associated with the saooaaat also needs
!       --  to be updated as part of the assignment).
  
        function Is_Copy_Type (Typ : Entity_Id) return Boolean;
        --  Return True if we can copy objects of this type when expanding an if
        --  expression.
  
        function OK_For_Single_Subtype (T1, T2 : Entity_Id) return Boolean;
        --  Return true if it is acceptable to use a single subtype for two
        --  dependent expressions of subtype T1 and T2 respectively, which are
*************** package body Exp_Ch4 is
*** 5782,5801 ****
             and then not Is_By_Reference_Type (Utyp);
        end Is_Copy_Type;
  
-       --------------------------------
-       -- Is_Optimizable_Declaration --
-       --------------------------------
- 
-       function Is_Optimizable_Declaration (N : Node_Id) return Boolean is
-       begin
-          return Nkind (N) = N_Object_Declaration
-            and then not (Is_Entity_Name (Object_Definition (N))
-                           and then Is_Class_Wide_Type
-                                      (Entity (Object_Definition (N))))
-            and then not Is_Return_Object (Defining_Identifier (N))
-            and then not Is_Copy_Type (Typ);
-       end Is_Optimizable_Declaration;
- 
        ---------------------------
        -- OK_For_Single_Subtype --
        ---------------------------
--- 5769,5774 ----
*************** package body Exp_Ch4 is
*** 5856,5865 ****
  
        --    if cond then
        --       then-obj : typ := then_expr;
!       --       target :=  then-obj'Unrestricted_Access;
        --    else
        --       else-obj : typ := else-expr;
!       --       target :=  else-obj'Unrestricted_Access;
        --    end if;
        --
        --    obj : typ renames target.all;
--- 5829,5838 ----
  
        --    if cond then
        --       then-obj : typ := then_expr;
!       --       target := then-obj'Unrestricted_Access;
        --    else
        --       else-obj : typ := else-expr;
!       --       target := else-obj'Unrestricted_Access;
        --    end if;
        --
        --    obj : typ renames target.all;
*************** package body Exp_Ch4 is
*** 5885,5891 ****
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else Is_Optimizable_Declaration (Uncond_Par)
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
--- 5858,5865 ----
                             Unqualified_Unconditional_Parent (N);
           begin
              if Nkind (Uncond_Par) = N_Simple_Return_Statement
!               or else (Is_Distributable_Declaration (Uncond_Par)
!                         and then not Is_Copy_Type (Typ))
                or else (Parent_Is_Regular_Aggregate (Uncond_Par)
                          and then not Is_Copy_Type (Typ))
              then
*************** package body Exp_Ch4 is
*** 5906,5912 ****
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Optimizable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
--- 5880,5886 ----
           elsif Nkind (Par) = N_Simple_Return_Statement then
              Optimize_Return_Stmt := True;
  
!          elsif Is_Distributable_Declaration (Par) then
              Optimize_Object_Decl := True;
  
           else
*************** package body Exp_Ch4 is
*** 6074,6081 ****
--- 6048,6058 ----
              Target   : constant Entity_Id := Make_Temporary (Loc, 'C', N);
  
           begin
+             Set_Is_Return_Object (Then_Obj, Is_Return_Object (Par_Obj));
              Insert_Conditional_Object_Declaration
                (Then_Obj, Typ, Thenx, Const => Constant_Present (Par));
+ 
+             Set_Is_Return_Object (Else_Obj, Is_Return_Object (Par_Obj));
              Insert_Conditional_Object_Declaration
                (Else_Obj, Typ, Elsex, Const => Constant_Present (Par));
  
*************** package body Exp_Ch4 is
*** 8610,8615 ****
--- 8587,8594 ----
  
           if Validity_Check_Operands
             and then not Is_Known_Valid (Component_Type (Typl))
+            and then not
+              Is_Check_Suppressed (Component_Type (Typl), Validity_Check)
           then
              declare
                 Save_Force_Validity_Checks : constant Boolean :=
*************** package body Exp_Ch4 is
*** 12380,12386 ****
                 null;
  
              else
!                Apply_Accessibility_Check
                   (Operand, Target_Type, Insert_Node => Operand);
              end if;
  
--- 12359,12365 ----
                 null;
  
              else
!                Apply_Accessibility_Check_For_Parameter
                   (Operand, Target_Type, Insert_Node => Operand);
              end if;
  
*************** package body Exp_Ch4 is
*** 12539,12544 ****
--- 12518,12534 ----
           --  Start of processing for Tagged_Conversion
  
           begin
+             --  When the operand is a qualified expression of an aggregate,
+             --  force its evaluation by capturing its value in a constant
+             --  (to ensure full initialization of the tagged object).
+ 
+             if Nkind (Operand) = N_Qualified_Expression
+               and then Nkind (Expression (Operand)) in N_Aggregate
+                                                      | N_Extension_Aggregate
+             then
+                Force_Evaluation (Operand, Mode => Strict);
+             end if;
+ 
              --  Handle entities from the limited view
  
              if Is_Access_Type (Operand_Type) then
*************** package body Exp_Ch4 is
*** 13662,13668 ****
        --  cannot invoke Process_Transients_In_Expression on it since it is not
        --  a transient object (it has the lifetime of the original object).
  
!       if Needs_Finalization (Base_Type (Etype (Obj_Id))) then
           Master_Node_Id := Make_Temporary (Loc, 'N');
           Master_Node_Decl :=
             Make_Master_Node_Declaration (Loc, Master_Node_Id, Obj_Id);
--- 13652,13660 ----
        --  cannot invoke Process_Transients_In_Expression on it since it is not
        --  a transient object (it has the lifetime of the original object).
  
!       if Needs_Finalization (Base_Type (Etype (Obj_Id)))
!         and then not Is_Return_Object (Obj_Id)
!       then
           Master_Node_Id := Make_Temporary (Loc, 'N');
           Master_Node_Decl :=
             Make_Master_Node_Declaration (Loc, Master_Node_Id, Obj_Id);
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch5.adb gcc-17-20260531/gcc/ada/exp_ch5.adb
*** gcc-17-20260524/gcc/ada/exp_ch5.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch5.adb	Sun May 31 22:32:04 2026
*************** with Einfo.Entities; use Einfo.Entities;
*** 32,37 ****
--- 32,38 ----
  with Einfo.Utils;    use Einfo.Utils;
  with Elists;         use Elists;
  with Exp_Aggr;       use Exp_Aggr;
+ with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch7;        use Exp_Ch7;
  with Exp_Ch11;       use Exp_Ch11;
*************** package body Exp_Ch5 is
*** 2412,2417 ****
--- 2413,2438 ----
        if Componentwise_Assignment (N) then
           Expand_Assign_Record (N);
           return;
+ 
+       --  Another special case: internally generated initialization invoking
+       --  a C++ constructor. This case corresponds with the initialization
+       --  of an aggregate component.
+ 
+       elsif not Comes_From_Source (N)
+         and then (No_Ctrl_Actions (N) or else No_Finalize_Actions (N))
+         and then Is_CPP_Constructor_Call (Rhs)
+       then
+          declare
+             Expr   : constant Node_Id := Relocate_Node (Rhs);
+             Id_Ref : constant Node_Id := Relocate_Node (Lhs);
+ 
+          begin
+             Insert_List_Before_And_Analyze (N,
+               Build_Initialization_Call (N, Id_Ref, Typ,
+                 Constructor_Ref => Expr));
+             Rewrite (N, Make_Null_Statement (Loc));
+             return;
+          end;
        end if;
  
        --  Defend against invalid subscripts on left side if we are in standard
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch6.adb gcc-17-20260531/gcc/ada/exp_ch6.adb
*** gcc-17-20260524/gcc/ada/exp_ch6.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch6.adb	Sun May 31 22:32:04 2026
*************** with Errout;         use Errout;
*** 34,40 ****
  with Elists;         use Elists;
  with Expander;       use Expander;
  with Exp_Aggr;       use Exp_Aggr;
- with Exp_Atag;       use Exp_Atag;
  with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch4;        use Exp_Ch4;
  with Exp_Ch7;        use Exp_Ch7;
--- 34,39 ----
*************** package body Exp_Ch6 is
*** 306,311 ****
--- 305,313 ----
     --  Expand simple return from function. In the case where we are returning
     --  from a function body this is called by Expand_N_Simple_Return_Statement.
  
+    function Get_Function_Entity (N : Node_Id) return Entity_Id;
+    --  Get the entity of function call N, or raise Program_Error if not found
+ 
     procedure Insert_Post_Call_Actions (N : Node_Id; Post_Call : List_Id);
     --  Insert the Post_Call list previously produced by routine Expand_Actuals
     --  or Expand_Call_Helper into the tree.
*************** package body Exp_Ch6 is
*** 725,1103 ****
        Add_Extra_Actual_To_Call (Function_Call, Chain_Formal, Chain_Actual);
     end Add_Task_Actuals_To_Build_In_Place_Call;
  
-    ----------------------------------------------
-    -- Apply_Access_Discrims_Accesibility_Check --
-    ----------------------------------------------
- 
-    procedure Apply_Access_Discrims_Accessibility_Check
-      (Exp : Node_Id; Func : Entity_Id)
-    is
-       Loc : constant Source_Ptr := Sloc (Exp);
- 
-       --  Some of the code here in this procedure may need to be factored
-       --  out at some point because it seems like some of the same
-       --  functionality would be needed for accessibility checking of a
-       --  return statement when the function result type is an anonymous
-       --  access type (as opposed to a type that has an anonymous access
-       --  discriminant).
-       --
-       --  Another case that is not addressed today is the case where
-       --  we need to check an access discriminant subcomponent of the
-       --  function result other than a discriminant of the function result.
-       --  This can only happen if the function result type has an unconstrained
-       --  subcomponent subtype that has an access discriminant (which implies
-       --  that the function result type must be limited).
-       --
-       --  A further corner case of that corner case arises if the limited
-       --  function result type is class-wide and it is not known statically
-       --  that this access-discriminant-bearing subcomponent exists. The
-       --  easiest way to address this properly would probably involve adding
-       --  a new compiler-generated dispatching procedure; a dispatching call
-       --  could then be used to perform the check in a context where we know
-       --  statically the specific type of the function result. Finding a
-       --  less important unimplemented case would be challenging.
- 
-       function Constraint_Bearing_Subtype_If_Any
-         (Exp : Node_Id) return Node_Id;
-       --  If we can locate a constrained subtype whose constraint applies
-       --  to Exp, then return that. Otherwise, return Etype (Exp).
- 
-       function Discr_Expression
-         (Typ : Entity_Id; Discr_Index : Positive) return Node_Id;
-       --  Typ is a constrained discriminated subtype.
-       --  Return the constraint expression for the indexed discriminant.
- 
-       function Has_Level_Tied_To_Explicitly_Aliased_Param
-         (Constraint_Exp : Node_Id) return Boolean;
-       --  Constraint_Exp is the value given for an access discriminant
-       --  in a discriminant constraint for Exp. Return True iff the
-       --  accessibility of the type of that discriminant of Exp is the level
-       --  of an explicitly aliased parameter of Func. If true, this indicates
-       --  that no check should be performed for this discriminant.
- 
-       ---------------------------------------
-       -- Constraint_Bearing_Subtype_If_Any --
-       ---------------------------------------
- 
-       function Constraint_Bearing_Subtype_If_Any
-         (Exp : Node_Id) return Entity_Id
-       is
-          Result : Entity_Id := Etype (Exp);
-       begin
-          if Is_Constrained (Result) then
-             return Result;
-          end if;
- 
-          --  Look through expansion-generated levels of indirection
-          --  to find a constrained subtype. Yuck. This comes up in
-          --  some cases when the unexpanded source returns an aggregate.
- 
-          if Nkind (Exp) = N_Explicit_Dereference
-            and then Nkind (Prefix (Exp)) = N_Identifier
-            and then Ekind (Entity (Prefix (Exp))) = E_Constant
-          then
-             declare
-                Acc_Const       : Entity_Id := Entity (Prefix (Exp));
-                Acc_Const_Value : Node_Id := Empty;
-             begin
-                --  look through constants initialized to constants
-                loop
-                   exit when Nkind (Parent (Acc_Const)) /= N_Object_Declaration;
- 
-                   Acc_Const_Value := Expression (Parent (Acc_Const));
- 
-                   if Nkind (Acc_Const_Value) = N_Identifier
-                     and then Ekind (Entity (Acc_Const_Value)) = E_Constant
-                   then
-                      Acc_Const := Entity (Acc_Const_Value);
-                   else
-                      exit;
-                   end if;
-                end loop;
- 
-                if Nkind (Acc_Const_Value) = N_Allocator
-                  and then Nkind (Expression (Acc_Const_Value))
-                              = N_Qualified_Expression
-                then
-                   Result :=
-                     Etype (Expression (Acc_Const_Value));
-                end if;
-             end;
-          end if;
- 
-          if Is_Constrained (Result) then
-             return Result;
-          end if;
- 
-          --  no constrained subtype found
-          return Etype (Exp);
-       end Constraint_Bearing_Subtype_If_Any;
- 
-       ----------------------
-       -- Discr_Expression --
-       ----------------------
- 
-       function Discr_Expression
-         (Typ : Entity_Id; Discr_Index : Positive) return Node_Id
-       is
-          Constraint_Elmt : Elmt_Id :=
-            First_Elmt (Discriminant_Constraint (Typ));
-       begin
-          for Skip in 1 .. Discr_Index - 1 loop
-             Next_Elmt (Constraint_Elmt);
-          end loop;
-          return Node (Constraint_Elmt);
-       end Discr_Expression;
- 
-       -------------------------------------------------
-       --  Has_Level_Tied_To_Explicitly_Aliased_Param --
-       -------------------------------------------------
- 
-       function Has_Level_Tied_To_Explicitly_Aliased_Param
-         (Constraint_Exp : Node_Id) return Boolean
-       is
-          Discr_Exp   : Node_Id := Constraint_Exp;
-          Attr_Prefix : Node_Id;
-       begin
-          --  look through constants
-          while Nkind (Discr_Exp) = N_Identifier
-            and then Ekind (Entity (Discr_Exp)) = E_Constant
-            and then Nkind (Parent (Entity (Discr_Exp))) = N_Object_Declaration
-          loop
-             Discr_Exp := Expression (Parent (Entity (Discr_Exp)));
-          end loop;
- 
-          if Nkind (Discr_Exp) = N_Attribute_Reference
-            and then Get_Attribute_Id
-                       (Attribute_Name (Discr_Exp)) = Attribute_Access
-          then
-             Attr_Prefix := Ultimate_Prefix (Prefix (Discr_Exp));
-             if Is_Entity_Name (Attr_Prefix)
-               and then Is_Explicitly_Aliased (Entity (Attr_Prefix))
-               and then Scope (Entity (Attr_Prefix)) = Func
-             then
-                return True;
-             end if;
-          end if;
- 
-          return False;
-       end Has_Level_Tied_To_Explicitly_Aliased_Param;
- 
-       Discr       : Entity_Id := First_Discriminant (Etype (Exp));
-       Discr_Index : Positive  := 1;
-       Discr_Exp   : Node_Id;
- 
-       Constrained_Subtype : constant Entity_Id :=
-         Constraint_Bearing_Subtype_If_Any (Exp);
-    begin
-       --  ??? Do not generate a check if version is Ada 95 (or earlier).
-       --  It is unclear whether this is really correct, or is just a stopgap
-       --  measure. Investigation is needed to decide how post-Ada-95 binding
-       --  interpretation changes in RM 3.10.2 should interact with Ada 95's
-       --  return-by-reference model for functions with limited result types
-       --  (which was abandoned in Ada 2005).
- 
-       if Ada_Version <= Ada_95 then
-          return;
-       end if;
- 
-       --  If we are returning a function call then that function will
-       --  perform the needed check.
- 
-       if Nkind (Unqualify (Exp)) = N_Function_Call then
-          return;
-       end if;
- 
-      --  ??? Cope with the consequences of the Disable_Tagged_Cases flag
-      --  in accessibility.adb (which can cause the extra formal parameter
-      --  needed for the check(s) generated here to be missing in the case
-      --  of a tagged result type); this is a workaround and can
-      --  prevent generation of a required check (or even a required
-      --  legality check - see "statically too deep" check below).
- 
-       if No (Extra_Accessibility_Of_Result (Func)) then
-          return;
-       end if;
- 
-       Remove_Side_Effects (Exp);
- 
-       while Present (Discr) loop
-          if Is_Anonymous_Access_Type (Etype (Discr)) then
-             if Is_Constrained (Constrained_Subtype) then
-                Discr_Exp :=
-                  New_Copy_Tree
-                    (Discr_Expression (Constrained_Subtype, Discr_Index));
-             else
-                Discr_Exp :=
-                  Make_Selected_Component (Loc,
-                    Prefix => New_Copy_Tree (Exp),
-                    Selector_Name => New_Occurrence_Of (Discr, Loc));
-             end if;
- 
-             if not Has_Level_Tied_To_Explicitly_Aliased_Param (Discr_Exp) then
-                declare
-                   --  We could do this min operation earlier, as is done
-                   --  for other implicit level parameters. Motivation for
-                   --  doing this min operation (earlier or not) is as for
-                   --  Generate_Minimum_Accessibility (see sem_ch6.adb):
-                   --  if a level value is too big, then the caller and the
-                   --  callee disagree about what it means.
- 
-                   Level_Of_Master_Of_Call : constant Node_Id :=
-                     Make_Attribute_Reference (Loc,
-                       Prefix => New_Occurrence_Of (Standard_Natural, Loc),
-                       Attribute_Name => Name_Min,
-                       Expressions => New_List (
-                         Make_Integer_Literal (Loc, Scope_Depth (Func)),
-                         New_Occurrence_Of
-                           (Extra_Accessibility_Of_Result (Func), Loc)));
- 
-                   Discrim_Level : Node_Id;
-                begin
-                   Analyze (Level_Of_Master_Of_Call);
-                   Analyze (Discr_Exp);
- 
-                   Discrim_Level :=
-                     Accessibility_Level (Discr_Exp, Level => Dynamic_Level);
-                   Analyze (Discrim_Level);
- 
-                   if Nkind (Discrim_Level) = N_Integer_Literal
-                     and then Intval (Discrim_Level) > Scope_Depth (Func)
-                   then
-                      Error_Msg_N
-                         ("level of type of access discriminant value of "
-                          & "return expression is statically too deep",
-                          Enclosing_Declaration_Or_Statement (Exp));
-                   end if;
- 
-                   Insert_Action (Exp,
-                     Make_Raise_Program_Error (Loc,
-                       Condition =>
-                         Make_Op_Gt (Loc,
-                           Left_Opnd  => Discrim_Level,
-                           Right_Opnd => Level_Of_Master_Of_Call),
-                       Reason    => PE_Accessibility_Check_Failed),
-                     Suppress => Access_Check);
-                end;
-             end if;
-          end if;
- 
-          Next_Discriminant (Discr);
-          Discr_Index := Discr_Index + 1;
-       end loop;
-    end Apply_Access_Discrims_Accessibility_Check;
- 
-    ----------------------------------
-    -- Apply_CW_Accessibility_Check --
-    ----------------------------------
- 
-    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id) is
-       Loc : constant Source_Ptr := Sloc (Exp);
- 
-    begin
-        --  CodePeer does not do anything useful on Ada.Tags.Type_Specific_Data
-        --  components.
- 
-       if Ada_Version >= Ada_2005
-         and then not CodePeer_Mode
-         and then Tagged_Type_Expansion
-         and then not Scope_Suppress.Suppress (Accessibility_Check)
-         and then
-           (Is_Class_Wide_Type (Etype (Exp))
-             or else Nkind (Exp) in
-                       N_Type_Conversion | N_Unchecked_Type_Conversion
-             or else (Is_Entity_Name (Exp)
-                       and then Is_Formal (Entity (Exp)))
-             or else Scope_Depth (Enclosing_Dynamic_Scope (Etype (Exp))) >
-                       Scope_Depth (Enclosing_Dynamic_Scope (Func)))
-       then
-          declare
-             Tag_Node : Node_Id;
- 
-          begin
-             --  Ada 2005 (AI-251): In class-wide interface objects we displace
-             --  "this" to reference the base of the object. This is required to
-             --  get access to the TSD of the object.
- 
-             if Is_Class_Wide_Type (Etype (Exp))
-               and then Is_Interface (Etype (Exp))
-             then
-                --  If the expression is an explicit dereference then we can
-                --  directly displace the pointer to reference the base of
-                --  the object.
- 
-                if Nkind (Exp) = N_Explicit_Dereference then
-                   Tag_Node :=
-                     Make_Explicit_Dereference (Loc,
-                       Prefix =>
-                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
-                           Make_Function_Call (Loc,
-                             Name                   =>
-                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
-                             Parameter_Associations => New_List (
-                               Unchecked_Convert_To (RTE (RE_Address),
-                                 Duplicate_Subexpr (Prefix (Exp)))))));
- 
-                --  Similar case to the previous one but the expression is a
-                --  renaming of an explicit dereference.
- 
-                elsif Nkind (Exp) = N_Identifier
-                  and then Present (Renamed_Object (Entity (Exp)))
-                  and then Nkind (Renamed_Object (Entity (Exp)))
-                             = N_Explicit_Dereference
-                then
-                   Tag_Node :=
-                     Make_Explicit_Dereference (Loc,
-                       Prefix =>
-                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
-                           Make_Function_Call (Loc,
-                             Name                   =>
-                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
-                             Parameter_Associations => New_List (
-                               Unchecked_Convert_To (RTE (RE_Address),
-                                 Duplicate_Subexpr
-                                   (Prefix
-                                     (Renamed_Object (Entity (Exp)))))))));
- 
-                --  Common case: obtain the address of the actual object and
-                --  displace the pointer to reference the base of the object.
- 
-                else
-                   Tag_Node :=
-                     Make_Explicit_Dereference (Loc,
-                       Prefix =>
-                         Unchecked_Convert_To (RTE (RE_Tag_Ptr),
-                           Make_Function_Call (Loc,
-                             Name               =>
-                               New_Occurrence_Of (RTE (RE_Base_Address), Loc),
-                             Parameter_Associations => New_List (
-                               Make_Attribute_Reference (Loc,
-                                 Prefix         => Duplicate_Subexpr (Exp),
-                                 Attribute_Name => Name_Address)))));
-                end if;
-             else
-                Tag_Node :=
-                  Make_Attribute_Reference (Loc,
-                    Prefix         => Duplicate_Subexpr (Exp),
-                    Attribute_Name => Name_Tag);
-             end if;
- 
-             --  Suppress junk access chacks on RE_Tag_Ptr
- 
-             Insert_Action (Exp,
-               Make_Raise_Program_Error (Loc,
-                 Condition =>
-                   Make_Op_Gt (Loc,
-                     Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
-                     Right_Opnd =>
-                       Make_Integer_Literal (Loc,
-                         Scope_Depth (Enclosing_Dynamic_Scope (Func)))),
-                 Reason    => PE_Accessibility_Check_Failed),
-               Suppress => Access_Check);
-          end;
-       end if;
-    end Apply_CW_Accessibility_Check;
- 
     -----------------------
     -- BIP_Formal_Suffix --
     -----------------------
--- 727,732 ----
*************** package body Exp_Ch6 is
*** 2194,2200 ****
  
                    pragma Assert (Ada_Version >= Ada_2012);
  
!                   Apply_Accessibility_Check (Lhs, E_Formal, N);
  
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
--- 1823,1829 ----
  
                    pragma Assert (Ada_Version >= Ada_2012);
  
!                   Apply_Accessibility_Check_For_Parameter (Lhs, E_Formal, N);
  
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
*************** package body Exp_Ch6 is
*** 3183,3192 ****
  
        if Must_Rewrite_Indirect_Call
          and then (not Is_Overloadable (Current_Scope)
!              or else not (Is_Access_Subprogram_Wrapper (Current_Scope)
                             or else
                               (Chars (Current_Scope) = Name_uWrapped_Statements
!                                and then Is_Access_Subprogram_Wrapper
                                            (Scope (Current_Scope)))))
        then
           declare
--- 2812,2821 ----
  
        if Must_Rewrite_Indirect_Call
          and then (not Is_Overloadable (Current_Scope)
!              or else not (Is_Access_To_Subprogram_Wrapper (Current_Scope)
                             or else
                               (Chars (Current_Scope) = Name_uWrapped_Statements
!                                and then Is_Access_To_Subprogram_Wrapper
                                            (Scope (Current_Scope)))))
        then
           declare
*************** package body Exp_Ch6 is
*** 5538,5544 ****
  
           elsif Is_Inlinable_Expression_Function (Subp) then
              Rewrite
!               (Call_Node, New_Copy (Expression_Of_Expression_Function (Subp)));
              Analyze (Call_Node);
              return;
  
--- 5167,5175 ----
  
           elsif Is_Inlinable_Expression_Function (Subp) then
              Rewrite
!               (Call_Node,
!                New_Copy
!                  (Original_Node (Expression_Of_Expression_Function (Subp))));
              Analyze (Call_Node);
              return;
  
*************** package body Exp_Ch6 is
*** 5781,5793 ****
  
        --  Note that object declarations are also distributed into conditional
        --  expressions, but we may be invoked before this distribution is done.
-       --  However that's not the case for the declarations of return objects,
-       --  see the twin Is_Optimizable_Declaration predicates that are present
-       --  in Expand_N_Case_Expression and Expand_N_If_Expression of Exp_Ch4.
  
!       elsif Nkind (Uncond_Par) = N_Object_Declaration
!         and then not Is_Return_Object (Defining_Identifier (Uncond_Par))
!       then
           return;
        end if;
  
--- 5412,5419 ----
  
        --  Note that object declarations are also distributed into conditional
        --  expressions, but we may be invoked before this distribution is done.
  
!       elsif Is_Distributable_Declaration  (Uncond_Par) then
           return;
        end if;
  
*************** package body Exp_Ch6 is
*** 5824,5829 ****
--- 5450,5467 ----
           return;
        end if;
  
+       --  Do not expand the name of an object renaming declaration at library
+       --  level if the call does not return on the secondary stack, since the
+       --  renaming will eventually be turned into a regular object declaration
+       --  in Expand_N_Object_Renaming_Declaration.
+ 
+       if Nkind (Par) = N_Object_Renaming_Declaration
+         and then not Use_Sec_Stack
+         and then Is_Library_Level_Entity (Defining_Identifier (Par))
+       then
+          return;
+       end if;
+ 
        --  Resolution is now finished, make sure we don't start analysis again
        --  because of the duplication.
  
*************** package body Exp_Ch6 is
*** 6354,6369 ****
                 else Empty);
  
              Component : Entity_Id := First_Entity (First_Param_Type);
!             Init_List : constant List_Id := New_List;
  
!             function Init_Expression_If_Any (Component : Entity_Id)
!               return Node_Id;
!             --  If the given component is mentioned in the Initialize
!             --  aspect for the constructor procedure, then return the
!             --  initial value expression specified there.
!             --  Otherwise, if the component declaration includes an
!             --  initial value expression, then return that expression.
!             --  Otherwise, return Empty.
  
              function Make_Init_Proc_Call (Component      : Entity_Id;
                                            Component_Name : Node_Id)
--- 5992,6019 ----
                 else Empty);
  
              Component : Entity_Id := First_Entity (First_Param_Type);
!             Comp_List, Initialize_List, Tag_List, Parent_List :
!               constant List_Id := New_List;
!             --  Comp_List contains the list of default initializations, init
!             --  procedure calls, or constructor calls for components;
!             --  Initialize_List contains the list of component initializations
!             --  coming from the Initialize aspect;
!             --  Tag_List contains the initialization for the tag;
!             --  Parent_List contains the parent constructor call.
  
!             function Init_From_Initialize_Expression
!               (Component : Entity_Id) return Node_Id;
!             --  If the Initialize aspect for the constructor procedure contains
!             --  the given component or the default others, then return the
!             --  initial value expression specified there. Otherwise, return
!             --  Empty.
! 
!             function Init_From_Default_Or_Constructor
!               (Component : Entity_Id) return Node_Id;
!             --  If the component declaration includes a default initial value
!             --  expression or its type has a parameterless constructor
!             --  available, then return that expression (or a corresponding Make
!             --  call in the constructor case). Otherwise, return Empty.
  
              function Make_Init_Proc_Call (Component      : Entity_Id;
                                            Component_Name : Node_Id)
*************** package body Exp_Ch6 is
*** 6379,6420 ****
              --  This function is called only in the case of a
              --  Constructor procedure for a type extension.
  
!             ----------------------------
!             -- Init_Expression_If_Any --
!             ----------------------------
  
!             function Init_Expression_If_Any (Component : Entity_Id)
                return Node_Id
              is
!                Initialize_Comp_Assoc : Node_Id := First_Initialize_Comp_Assoc;
!                Choice : Node_Id;
  
                 --  ??? Technically, this is quadratic (linear search called
                 --  a linear number of times). When/if we see performance
                 --  problems with hundreds of components mentioned in one
                 --  Initialize aspect specification, we can revisit this.
              begin
!                while Present (Initialize_Comp_Assoc) loop
!                   Choice := First (Choices (Initialize_Comp_Assoc));
  
                    while Present (Choice) loop
!                      if Nkind (Choice) = N_Identifier
                         and then Chars (Choice) = Chars (Component)
                       then
!                         return Expression (Initialize_Comp_Assoc);
                       end if;
                       Next (Choice);
                    end loop;
  
!                   Next (Initialize_Comp_Assoc);
                 end loop;
  
                 if Present (Expression (Parent (Component))) then
                    return Expression (Parent (Component));
                 end if;
  
                 return Empty;
!             end Init_Expression_If_Any;
  
              -------------------------
              -- Make_Init_Proc_Call --
--- 6029,6102 ----
              --  This function is called only in the case of a
              --  Constructor procedure for a type extension.
  
!             --------------------------------
!             -- From_Initialize_Expression --
!             --------------------------------
  
!             function Init_From_Initialize_Expression (Component : Entity_Id)
                return Node_Id
              is
!                Component_Cursor  : Node_Id := First_Initialize_Comp_Assoc;
!                Choice            : Node_Id;
!                Others_Expression : Node_Id := Empty;
  
                 --  ??? Technically, this is quadratic (linear search called
                 --  a linear number of times). When/if we see performance
                 --  problems with hundreds of components mentioned in one
                 --  Initialize aspect specification, we can revisit this.
              begin
!                while Present (Component_Cursor) loop
!                   Choice := First (Choices (Component_Cursor));
  
                    while Present (Choice) loop
!                      --  The others expression is used in case there is no
!                      --  explicit component association for the given one.
! 
!                      if Nkind (Choice) = N_Others_Choice
!                        and then Comes_From_Source (Choice)
!                      then
!                         Others_Expression := Expression (Component_Cursor);
! 
!                      elsif Nkind (Choice) = N_Identifier
                         and then Chars (Choice) = Chars (Component)
                       then
!                         return Expression (Component_Cursor);
                       end if;
                       Next (Choice);
                    end loop;
  
!                   Next (Component_Cursor);
                 end loop;
  
+                return Others_Expression;
+             end Init_From_Initialize_Expression;
+ 
+             --------------------------------------
+             -- Init_From_Default_Or_Constructor --
+             --------------------------------------
+ 
+             function Init_From_Default_Or_Constructor (Component : Entity_Id)
+               return Node_Id is
+             begin
                 if Present (Expression (Parent (Component))) then
                    return Expression (Parent (Component));
                 end if;
  
+                --  In case the type needs construction and a parameterless
+                --  constructor is present, then it can be implicitly used it
+                --  here.
+ 
+                if Needs_Construction (Etype (Component))
+                  and then Has_Parameterless_Constructor (Etype (Component))
+                then
+                   return Make_Attribute_Reference (Loc,
+                            Prefix         =>
+                              New_Occurrence_Of (Etype (Component), Loc),
+                            Attribute_Name => Name_Make);
+                end if;
+ 
                 return Empty;
!             end Init_From_Default_Or_Constructor;
  
              -------------------------
              -- Make_Init_Proc_Call --
*************** package body Exp_Ch6 is
*** 6466,6475 ****
                         Expression (Super_Aspect);
                       Expr       : Node_Id;
                    begin
!                      if Nkind (Super_Expr) /= N_Aggregate then
                          Expr := New_Copy_Tree (Super_Expr);
                          Set_Paren_Count (Expr, 0);
                          Actual_Parameters := New_List (Expr);
                       else
                          --  Interpret this "aggregate" as a list of
                          --  actual parameter expressions.
--- 6148,6164 ----
                         Expression (Super_Aspect);
                       Expr       : Node_Id;
                    begin
!                      --  Super without expression is a call to the parent
!                      --  parameterless constructor.
! 
!                      if No (Super_Expr) then
!                         Actual_Parameters := No_List;
! 
!                      elsif Nkind (Super_Expr) /= N_Aggregate then
                          Expr := New_Copy_Tree (Super_Expr);
                          Set_Paren_Count (Expr, 0);
                          Actual_Parameters := New_List (Expr);
+ 
                       else
                          --  Interpret this "aggregate" as a list of
                          --  actual parameter expressions.
*************** package body Exp_Ch6 is
*** 6500,6520 ****
  
           begin
              while Present (Component) loop
!                pragma Assert (Ekind (Component) = E_Component);
  
                 if Chars (Component) = Name_uTag then
!                   null;
  
                 elsif Chars (Component) = Name_uParent
                   and then Needs_Construction (Etype (Component))
                 then
!                   Append_To (Init_List, Make_Parent_Constructor_Call
!                                           (Parent_Type => Etype (Component)));
  
                 else
                    declare
!                      Maybe_Init_Exp : constant Node_Id :=
!                        Init_Expression_If_Any (Component);
  
                       function Make_Component_Name return Node_Id is
                         (Make_Selected_Component (Loc,
--- 6189,6222 ----
  
           begin
              while Present (Component) loop
! 
!                --  Skip if not a component, this may happen when initialization
!                --  expressions contain strings.
! 
!                if Ekind (Component) /= E_Component then
!                   goto Next_Component;
!                end if;
  
                 if Chars (Component) = Name_uTag then
!                   Append_To (Tag_List,
!                     Make_Tag_Assignment_From_Type (Loc,
!                       Target => New_Occurrence_Of
!                                   (First_Formal (Spec_Id), Loc),
!                       Typ    => First_Param_Type));
  
                 elsif Chars (Component) = Name_uParent
                   and then Needs_Construction (Etype (Component))
                 then
!                   Append_To (Parent_List,
!                     Make_Parent_Constructor_Call
!                       (Parent_Type => Etype (Component)));
  
                 else
                    declare
!                      Maybe_Initialize             : constant Node_Id :=
!                        Init_From_Initialize_Expression (Component);
!                      Maybe_Default_Or_Constructor : constant Node_Id :=
!                        Init_From_Default_Or_Constructor (Component);
  
                       function Make_Component_Name return Node_Id is
                         (Make_Selected_Component (Loc,
*************** package body Exp_Ch6 is
*** 6523,6559 ****
                            Selector_Name =>
                              Make_Identifier (Loc, Chars (Component))));
                    begin
!                      --  Handle case where initial value for this component
!                      --  is specified either in an Initialize aspect
!                      --  specification or as part of the component declaration.
! 
!                      if Present (Maybe_Init_Exp) then
!                         --  ??? Should reorganize things so that
!                         --  procedure Build_Assignment in exp_ch3.adb
!                         --  (which is currently declared inside of
!                         --  Build_Record_Init_Proc) can be called from here.
!                         --  That procedure handles some corner cases
!                         --  that are not properly handled here (e.g.,
!                         --  mapping current instance references to the
!                         --  appropriate formal parameter).
! 
!                         if Is_Tagged_Type (Etype (Component)) then
!                            Append_To (Init_List,
!                              Make_Tag_Assignment_From_Type (Loc,
!                                Target => Make_Component_Name,
!                                Typ => Etype (Component)));
!                         end if;
  
!                         Append_To (Init_List,
!                           Make_Assignment_Statement (Loc,
!                             Name       => Make_Component_Name,
!                             Expression => New_Copy_Tree
!                                             (Maybe_Init_Exp,
!                                              New_Scope => Body_Id)));
  
                       --  Handle case where component's type has an init proc
                       elsif Has_Non_Null_Base_Init_Proc (Etype (Component)) then
!                         Append_To (Init_List,
                                     Make_Init_Proc_Call (
                                      Component      => Component,
                                      Component_Name => Make_Component_Name));
--- 6225,6263 ----
                            Selector_Name =>
                              Make_Identifier (Loc, Chars (Component))));
                    begin
!                      --  Handle case where initial value for this component is
!                      --  specified either in an Initialize aspect specification
!                      --  or as part of the component declaration.
  
!                      if Present (Maybe_Initialize)
!                        or else Present (Maybe_Default_Or_Constructor)
!                      then
!                         declare
!                            Init : Node_Id;
!                            List : List_Id;
!                         begin
!                            if Present (Maybe_Initialize) then
!                               Init := Maybe_Initialize;
!                               List := Initialize_List;
!                            else
!                               Init := Maybe_Default_Or_Constructor;
!                               List := Comp_List;
!                            end if;
!                            Append_List_To (List,
!                              Build_Component_Assignment (Loc,
!                                Prefix       =>
!                                  New_Occurrence_Of
!                                    (First_Formal (Spec_Id), Loc),
!                                Prefix_Type  => First_Param_Type,
!                                Proc_Id      => Body_Id,
!                                Component_Id => Component,
!                                Default_Expr =>
!                                  New_Copy_Tree (Init, New_Scope => Body_Id)));
!                         end;
  
                       --  Handle case where component's type has an init proc
                       elsif Has_Non_Null_Base_Init_Proc (Etype (Component)) then
!                         Append_To (Comp_List,
                                     Make_Init_Proc_Call (
                                      Component      => Component,
                                      Component_Name => Make_Component_Name));
*************** package body Exp_Ch6 is
*** 6563,6572 ****
                    end;
                 end if;
  
                 Next_Entity (Component);
              end loop;
  
!             Insert_List_Before_And_Analyze (First (L), Init_List);
           end;
  
           Pop_Scope;
--- 6267,6284 ----
                    end;
                 end if;
  
+                <<Next_Component>>
                 Next_Entity (Component);
              end loop;
  
!             --  First, use default value initializations and init procedures,
!             --  then call the parent constructor (if any), then initialize all
!             --  other components through the Initialize aspect, last the tag.
! 
!             Append_List (Tag_List, Initialize_List);
!             Append_List (Initialize_List, Parent_List);
!             Append_List (Parent_List, Comp_List);
!             Insert_List_Before_And_Analyze (First (L), Comp_List);
           end;
  
           Pop_Scope;
*************** package body Exp_Ch6 is
*** 7839,7871 ****
              end;
           end if;
  
-       --  Ada 2005 (AI95-344): If the result type is class-wide, then insert
-       --  a check that the level of the return expression's underlying type
-       --  is not deeper than the level of the master enclosing the function.
- 
-       --  AI12-043: The check is made immediately after the return object is
-       --  created. This means that we do not apply it to the simple return
-       --  generated by the expansion of an extended return statement.
- 
-       --  No runtime check needed in interface thunks since it is performed
-       --  by the target primitive associated with the thunk.
- 
-       elsif Is_Class_Wide_Type (R_Type)
-         and then not Comes_From_Extended_Return_Statement (N)
-         and then not Is_Thunk (Scope_Id)
-       then
-          Apply_CW_Accessibility_Check (Exp, Scope_Id);
- 
-       --  Check that result's access discrims (if any) do not designate
-       --  entities that the function result could outlive. See preceding
-       --  comment about extended return statements and thunks.
- 
-       elsif Has_Anonymous_Access_Discriminant (Exp_Typ)
-         and then not Comes_From_Extended_Return_Statement (N)
-         and then not Is_Thunk (Scope_Id)
-       then
-          Apply_Access_Discrims_Accessibility_Check (Exp, Scope_Id);
- 
        --  Ada 2012 (AI05-0073): If the result subtype of the function is
        --  defined by an access_definition designating a specific tagged
        --  type T, a check is made that the result value is null or the tag
--- 7551,7556 ----
*************** package body Exp_Ch6 is
*** 7908,7913 ****
--- 7593,7613 ----
               Suppress  => All_Checks);
        end if;
  
+       --  Generate a run-time accessibility check if needed
+ 
+       --  AI12-043: The check is made immediately after the return object is
+       --  created. This means that we do not apply it to the simple return
+       --  generated by the expansion of an extended return statement.
+ 
+       --  No run-time check needed in interface thunks since it is performed
+       --  by the target primitive associated with the thunk.
+ 
+       if not Comes_From_Extended_Return_Statement (N)
+         and then not Is_Thunk (Scope_Id)
+       then
+          Apply_Accessibility_Check_For_Return (Exp, Scope_Id);
+       end if;
+ 
        --  If the result is of an unconstrained array subtype with fixed lower
        --  bound, then sliding to that bound may be needed.
  
*************** package body Exp_Ch6 is
*** 8055,8060 ****
--- 7755,7777 ----
        Compute_Returns_By_Ref (Subp);
     end Freeze_Subprogram;
  
+    -------------------------
+    -- Get_Function_Entity --
+    -------------------------
+ 
+    function Get_Function_Entity (N : Node_Id) return Entity_Id is
+    begin
+       if Is_Entity_Name (Name (N)) then
+          return Entity (Name (N));
+ 
+       elsif Nkind (Name (N)) = N_Explicit_Dereference then
+          return Etype (Name (N));
+ 
+       else
+          raise Program_Error;
+       end if;
+    end Get_Function_Entity;
+ 
     --------------------------
     -- Has_BIP_Extra_Formal --
     --------------------------
*************** package body Exp_Ch6 is
*** 8295,8313 ****
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Call_Node);
  
-       function Build_Dynamic_Check_Helper_Call return Node_Id;
-       --  Build call to the helper runtime function of the nearest ancestor
-       --  of the target subprogram that dynamically evaluates the merged
-       --  or-else preconditions.
- 
        function Build_Error_Message (Subp_Id : Entity_Id) return Node_Id;
        --  Build message associated with the class-wide precondition of Subp_Id
        --  indicating the call that caused it.
  
!       function Build_Static_Check_Helper_Call return Node_Id;
        --  Build call to the helper runtime function of the nearest ancestor
!       --  of the target subprogram that dynamically evaluates the merged
!       --  or-else preconditions.
  
        function Class_Preconditions_Subprogram
          (Spec_Id : Entity_Id;
--- 8012,8025 ----
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Call_Node);
  
        function Build_Error_Message (Subp_Id : Entity_Id) return Node_Id;
        --  Build message associated with the class-wide precondition of Subp_Id
        --  indicating the call that caused it.
  
!       function Build_Helper_Call (Dynamic : Boolean) return Node_Id;
        --  Build call to the helper runtime function of the nearest ancestor
!       --  of the target subprogram that statically or dynamically (depending on
!       --  the Dynamic flag) evaluates the merged or-else preconditions.
  
        function Class_Preconditions_Subprogram
          (Spec_Id : Entity_Id;
*************** package body Exp_Ch6 is
*** 8320,8358 ****
        --  preconditions; return Empty when not available (which means that no
        --  preconditions check is required).
  
-       -------------------------------------
-       -- Build_Dynamic_Check_Helper_Call --
-       -------------------------------------
- 
-       function Build_Dynamic_Check_Helper_Call return Node_Id is
-          Spec_Id   : constant Entity_Id := Entity (Name (Call_Node));
-          CW_Subp   : constant Entity_Id :=
-                        Class_Preconditions_Subprogram (Spec_Id,
-                          Dynamic => True);
-          Helper_Id : constant Entity_Id :=
-                        Dynamic_Call_Helper (CW_Subp);
-          Actuals   : constant List_Id := New_List;
-          A         : Node_Id   := First_Actual (Call_Node);
- 
-       begin
-          while Present (A) loop
- 
-             --  Ensure that the evaluation of the actuals will not produce
-             --  side effects.
- 
-             Remove_Side_Effects (A);
- 
-             Append_To (Actuals, New_Copy_Tree (A));
- 
-             Next_Actual (A);
-          end loop;
- 
-          return
-            Make_Function_Call (Loc,
-              Name => New_Occurrence_Of (Helper_Id, Loc),
-              Parameter_Associations => Actuals);
-       end Build_Dynamic_Check_Helper_Call;
- 
        -------------------------
        -- Build_Error_Message --
        -------------------------
--- 8032,8037 ----
*************** package body Exp_Ch6 is
*** 8434,8444 ****
           return Make_String_Literal (Loc, Name_Buffer (1 .. Name_Len));
        end Build_Error_Message;
  
!       ------------------------------------
!       -- Build_Static_Check_Helper_Call --
!       ------------------------------------
  
!       function Build_Static_Check_Helper_Call return Node_Id is
           Actuals   : constant List_Id := New_List;
           A         : Node_Id;
           Helper_Id : Entity_Id;
--- 8113,8123 ----
           return Make_String_Literal (Loc, Name_Buffer (1 .. Name_Len));
        end Build_Error_Message;
  
!       -----------------------
!       -- Build_Helper_Call --
!       -----------------------
  
!       function Build_Helper_Call (Dynamic : Boolean) return Node_Id is
           Actuals   : constant List_Id := New_List;
           A         : Node_Id;
           Helper_Id : Entity_Id;
*************** package body Exp_Ch6 is
*** 8456,8466 ****
           --  Common case
  
           else
!             CW_Subp := Class_Preconditions_Subprogram (Spec_Id,
!                          Dynamic => False);
           end if;
  
!          Helper_Id := Static_Call_Helper (CW_Subp);
  
           F := First_Formal (Helper_Id);
           A := First_Actual (Call_Node);
--- 8135,8148 ----
           --  Common case
  
           else
!             CW_Subp := Class_Preconditions_Subprogram (Spec_Id, Dynamic);
           end if;
  
!          if Dynamic then
!             Helper_Id := Dynamic_Call_Helper (CW_Subp);
!          else
!             Helper_Id := Static_Call_Helper (CW_Subp);
!          end if;
  
           F := First_Formal (Helper_Id);
           A := First_Actual (Call_Node);
*************** package body Exp_Ch6 is
*** 8489,8495 ****
             Make_Function_Call (Loc,
               Name => New_Occurrence_Of (Helper_Id, Loc),
               Parameter_Associations => Actuals);
!       end Build_Static_Check_Helper_Call;
  
        ------------------------------------
        -- Class_Preconditions_Subprogram --
--- 8171,8177 ----
             Make_Function_Call (Loc,
               Name => New_Occurrence_Of (Helper_Id, Loc),
               Parameter_Associations => Actuals);
!       end Build_Helper_Call;
  
        ------------------------------------
        -- Class_Preconditions_Subprogram --
*************** package body Exp_Ch6 is
*** 8632,8642 ****
  
        --  Build and install the check
  
!       if Dynamic_Check then
!          Cond := Build_Dynamic_Check_Helper_Call;
!       else
!          Cond := Build_Static_Check_Helper_Call;
!       end if;
  
        if Exception_Locations_Suppressed then
           Fail :=
--- 8314,8320 ----
  
        --  Build and install the check
  
!       Cond := Build_Helper_Call (Dynamic_Check);
  
        if Exception_Locations_Suppressed then
           Fail :=
*************** package body Exp_Ch6 is
*** 8987,8998 ****
       (Allocator     : Node_Id;
        Function_Call : Node_Id)
     is
!       Acc_Type          : constant Entity_Id  := Etype (Allocator);
!       Loc               : constant Source_Ptr := Sloc (Function_Call);
!       Func_Call         : constant Node_Id    := Unqual_Conv (Function_Call);
        Ref_Func_Call     : Node_Id;
-       Function_Id       : Entity_Id;
-       Result_Subt       : Entity_Id;
        New_Allocator     : Node_Id;
        Return_Obj_Access : Entity_Id; -- temp for function result
        Temp_Init         : Node_Id; -- initial value of Return_Obj_Access
--- 8665,8677 ----
       (Allocator     : Node_Id;
        Function_Call : Node_Id)
     is
!       Acc_Type    : constant Entity_Id  := Etype (Allocator);
!       Loc         : constant Source_Ptr := Sloc (Function_Call);
!       Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
!       Func_Id     : constant Entity_Id  := Get_Function_Entity (Func_Call);
!       Result_Subt : constant Entity_Id  := Available_View (Etype (Func_Id));
! 
        Ref_Func_Call     : Node_Id;
        New_Allocator     : Node_Id;
        Return_Obj_Access : Entity_Id; -- temp for function result
        Temp_Init         : Node_Id; -- initial value of Return_Obj_Access
*************** package body Exp_Ch6 is
*** 9007,9026 ****
        pragma Assert (not Is_Expanded_Build_In_Place_Call (Func_Call));
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
-       if Is_Entity_Name (Name (Func_Call)) then
-          Function_Id := Entity (Name (Func_Call));
- 
-       elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
-          Function_Id := Etype (Name (Func_Call));
- 
-       else
-          raise Program_Error;
-       end if;
- 
        Warn_BIP (Func_Call);
  
-       Result_Subt := Available_View (Etype (Function_Id));
- 
        --  Create a temp for the function result. In the caller-allocates case,
        --  this will be initialized to the result of a new uninitialized
        --  allocator. Note: we do not use Allocator as the Related_Node of
--- 8686,8693 ----
*************** package body Exp_Ch6 is
*** 9036,9042 ****
        --  tagged, the called function itself must perform the allocation of
        --  the return object, so we pass parameters indicating that.
  
!       if Needs_BIP_Alloc_Form (Function_Id) then
           Temp_Init := Empty;
  
           --  Case of a user-defined storage pool. Pass an allocation parameter
--- 8703,8709 ----
        --  tagged, the called function itself must perform the allocation of
        --  the return object, so we pass parameters indicating that.
  
!       if Needs_BIP_Alloc_Form (Func_Id) then
           Temp_Init := Empty;
  
           --  Case of a user-defined storage pool. Pass an allocation parameter
*************** package body Exp_Ch6 is
*** 9057,9063 ****
           --  the function should allocate its result on the heap. When there is
           --  a finalization collection, a pool reference is required.
  
!          elsif Needs_BIP_Collection (Function_Id) then
              Alloc_Form  := Global_Heap;
              Pool_Actual :=
                Make_Attribute_Reference (Loc,
--- 8724,8730 ----
           --  the function should allocate its result on the heap. When there is
           --  a finalization collection, a pool reference is required.
  
!          elsif Needs_BIP_Collection (Func_Id) then
              Alloc_Form  := Global_Heap;
              Pool_Actual :=
                Make_Attribute_Reference (Loc,
*************** package body Exp_Ch6 is
*** 9211,9226 ****
  
        Add_Unconstrained_Actuals_To_Build_In_Place_Call
          (Func_Call,
!          Function_Id,
           Alloc_Form => Alloc_Form,
           Pool_Exp   => Pool_Actual);
  
        Add_Collection_Actual_To_Build_In_Place_Call
!         (Func_Call, Function_Id, Ptr_Typ => Acc_Type);
  
        Add_Task_Actuals_To_Build_In_Place_Call
          (Func_Call,
!          Function_Id,
           Master_Actual => Master_Id (Acc_Type),
           Chain => Chain);
  
--- 8878,8893 ----
  
        Add_Unconstrained_Actuals_To_Build_In_Place_Call
          (Func_Call,
!          Func_Id,
           Alloc_Form => Alloc_Form,
           Pool_Exp   => Pool_Actual);
  
        Add_Collection_Actual_To_Build_In_Place_Call
!         (Func_Call, Func_Id, Ptr_Typ => Acc_Type);
  
        Add_Task_Actuals_To_Build_In_Place_Call
          (Func_Call,
!          Func_Id,
           Master_Actual => Master_Id (Acc_Type),
           Chain => Chain);
  
*************** package body Exp_Ch6 is
*** 9230,9241 ****
        --  the access type of the allocator has a class-wide designated type.
  
        Add_Access_Actual_To_Build_In_Place_Call
!         (Func_Call, Function_Id, Return_Obj_Actual);
  
        --  If the allocation is done in the caller, create a custom Allocate
        --  procedure if need be.
  
!       if not Needs_BIP_Alloc_Form (Function_Id) then
           Build_Allocate_Deallocate_Proc
             (Declaration_Node (Return_Obj_Access), Mark => Allocator);
        end if;
--- 8897,8908 ----
        --  the access type of the allocator has a class-wide designated type.
  
        Add_Access_Actual_To_Build_In_Place_Call
!         (Func_Call, Func_Id, Return_Obj_Actual);
  
        --  If the allocation is done in the caller, create a custom Allocate
        --  procedure if need be.
  
!       if not Needs_BIP_Alloc_Form (Func_Id) then
           Build_Allocate_Deallocate_Proc
             (Declaration_Node (Return_Obj_Access), Mark => Allocator);
        end if;
*************** package body Exp_Ch6 is
*** 9246,9254 ****
  
        Analyze_And_Resolve (Allocator, Acc_Type);
  
!       pragma Assert (Returns_By_Ref (Function_Id));
!       pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
!       pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
     end Make_Build_In_Place_Call_In_Allocator;
  
     ---------------------------------------------------
--- 8913,8921 ----
  
        Analyze_And_Resolve (Allocator, Acc_Type);
  
!       pragma Assert (Returns_By_Ref (Func_Id));
!       pragma Assert (Check_Number_Of_Actuals (Func_Call, Func_Id));
!       pragma Assert (Check_BIP_Actuals (Func_Call, Func_Id));
     end Make_Build_In_Place_Call_In_Allocator;
  
     ---------------------------------------------------
*************** package body Exp_Ch6 is
*** 9260,9270 ****
     is
        Loc         : constant Source_Ptr := Sloc (Function_Call);
        Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
!       Function_Id : Entity_Id;
!       Has_Tasks   : Boolean;
!       Known_Size  : Boolean;
!       Needs_Fin   : Boolean;
!       Result_Subt : Entity_Id;
  
     begin
        --  If the call has already been processed to add build-in-place actuals
--- 8927,8938 ----
     is
        Loc         : constant Source_Ptr := Sloc (Function_Call);
        Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
!       Func_Id     : constant Entity_Id  := Get_Function_Entity (Func_Call);
!       Result_Subt : constant Entity_Id  := Available_View (Etype (Func_Id));
!       Has_Tasks   : constant Boolean    := Might_Have_Tasks (Result_Subt);
!       Needs_Fin   : constant Boolean    := Needs_Finalization (Result_Subt);
!       Known_Size  : constant Boolean
!                       := Caller_Known_Size (Func_Call, Result_Subt);
  
     begin
        --  If the call has already been processed to add build-in-place actuals
*************** package body Exp_Ch6 is
*** 9277,9299 ****
           return;
        end if;
  
-       if Is_Entity_Name (Name (Func_Call)) then
-          Function_Id := Entity (Name (Func_Call));
- 
-       elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
-          Function_Id := Etype (Name (Func_Call));
- 
-       else
-          raise Program_Error;
-       end if;
- 
        Warn_BIP (Func_Call);
  
-       Result_Subt := Etype (Function_Id);
-       Has_Tasks := Might_Have_Tasks (Result_Subt);
-       Known_Size := Caller_Known_Size (Func_Call, Result_Subt);
-       Needs_Fin := Needs_Finalization (Result_Subt);
- 
        --  If the build-in-place function returns a controlled object, then the
        --  object needs to be finalized immediately after the context is exited,
        --  which requires the creation of a transient scope and a named object.
--- 8945,8952 ----
*************** package body Exp_Ch6 is
*** 9349,9367 ****
           --  allocate its result on the secondary stack.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Alloc_Form => Secondary_Stack);
  
           Add_Collection_Actual_To_Build_In_Place_Call
!            (Func_Call, Function_Id);
  
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Make_Identifier (Loc, Name_uMaster));
  
           --  Pass a null value to the function since no return object is
           --  available on the caller side.
  
           Add_Access_Actual_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Empty);
  
           Establish_Transient_Scope (Func_Call, Manage_Sec_Stack => True);
  
--- 9002,9020 ----
           --  allocate its result on the secondary stack.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Alloc_Form => Secondary_Stack);
  
           Add_Collection_Actual_To_Build_In_Place_Call
!            (Func_Call, Func_Id);
  
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Make_Identifier (Loc, Name_uMaster));
  
           --  Pass a null value to the function since no return object is
           --  available on the caller side.
  
           Add_Access_Actual_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Empty);
  
           Establish_Transient_Scope (Func_Call, Manage_Sec_Stack => True);
  
*************** package body Exp_Ch6 is
*** 9369,9377 ****
  
           Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
!          pragma Assert (Returns_By_Ref (Function_Id));
!          pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
!          pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
        end if;
     end Make_Build_In_Place_Call_In_Anonymous_Context;
  
--- 9022,9030 ----
  
           Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
!          pragma Assert (Returns_By_Ref (Func_Id));
!          pragma Assert (Check_Number_Of_Actuals (Func_Call, Func_Id));
!          pragma Assert (Check_BIP_Actuals (Func_Call, Func_Id));
        end if;
     end Make_Build_In_Place_Call_In_Anonymous_Context;
  
*************** package body Exp_Ch6 is
*** 9383,9398 ****
       (Assign        : Node_Id;
        Function_Call : Node_Id)
     is
!       Func_Call    : constant Node_Id    := Unqual_Conv (Function_Call);
!       Lhs          : constant Node_Id    := Name (Assign);
!       Loc          : constant Source_Ptr := Sloc (Function_Call);
!       Func_Id      : Entity_Id;
        Obj_Decl     : Node_Id;
        Obj_Id       : Entity_Id;
        Ptr_Typ      : Entity_Id;
        Ptr_Typ_Decl : Node_Id;
        New_Expr     : Node_Id;
-       Result_Subt  : Entity_Id;
  
     begin
        --  Mark the call as processed as a build-in-place call
--- 9036,9052 ----
       (Assign        : Node_Id;
        Function_Call : Node_Id)
     is
!       Lhs         : constant Node_Id    := Name (Assign);
!       Loc         : constant Source_Ptr := Sloc (Function_Call);
!       Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
!       Func_Id     : constant Entity_Id  := Get_Function_Entity (Func_Call);
!       Result_Subt : constant Entity_Id  := Available_View (Etype (Func_Id));
! 
        Obj_Decl     : Node_Id;
        Obj_Id       : Entity_Id;
        Ptr_Typ      : Entity_Id;
        Ptr_Typ_Decl : Node_Id;
        New_Expr     : Node_Id;
  
     begin
        --  Mark the call as processed as a build-in-place call
*************** package body Exp_Ch6 is
*** 9400,9419 ****
        pragma Assert (not Is_Expanded_Build_In_Place_Call (Func_Call));
        Set_Is_Expanded_Build_In_Place_Call (Func_Call);
  
-       if Is_Entity_Name (Name (Func_Call)) then
-          Func_Id := Entity (Name (Func_Call));
- 
-       elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
-          Func_Id := Etype (Name (Func_Call));
- 
-       else
-          raise Program_Error;
-       end if;
- 
        Warn_BIP (Func_Call);
  
-       Result_Subt := Etype (Func_Id);
- 
        --  When the result subtype is unconstrained, an additional actual must
        --  be passed to indicate that the caller is providing the return object.
        --  This parameter must also be passed when the called function has a
--- 9054,9061 ----
*************** package body Exp_Ch6 is
*** 9485,9521 ****
       (Obj_Decl      : Node_Id;
        Function_Call : Node_Id)
     is
-       function Get_Function_Id (Func_Call : Node_Id) return Entity_Id;
-       --  Get the value of Function_Id, below
- 
-       ---------------------
-       -- Get_Function_Id --
-       ---------------------
- 
-       function Get_Function_Id (Func_Call : Node_Id) return Entity_Id is
-       begin
-          if Is_Entity_Name (Name (Func_Call)) then
-             return Entity (Name (Func_Call));
- 
-          elsif Nkind (Name (Func_Call)) = N_Explicit_Dereference then
-             return Etype (Name (Func_Call));
- 
-          else
-             raise Program_Error;
-          end if;
-       end Get_Function_Id;
- 
-       --  Local variables
- 
-       Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
-       Function_Id : constant Entity_Id  := Get_Function_Id (Func_Call);
        Loc         : constant Source_Ptr := Sloc (Function_Call);
        Marker      : constant Node_Id    := Next (Obj_Decl);
        Obj_Loc     : constant Source_Ptr := Sloc (Obj_Decl);
        Obj_Def_Id  : constant Entity_Id  := Defining_Identifier (Obj_Decl);
        Obj_Typ     : constant Entity_Id  := Etype (Obj_Def_Id);
        Encl_Func   : constant Entity_Id  := Enclosing_Subprogram (Obj_Def_Id);
!       Result_Subt : constant Entity_Id  := Etype (Function_Id);
  
        Call_Deref        : Node_Id;
        Caller_Object     : Node_Id;
--- 9127,9141 ----
       (Obj_Decl      : Node_Id;
        Function_Call : Node_Id)
     is
        Loc         : constant Source_Ptr := Sloc (Function_Call);
+       Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
+       Func_Id     : constant Entity_Id  := Get_Function_Entity (Func_Call);
        Marker      : constant Node_Id    := Next (Obj_Decl);
        Obj_Loc     : constant Source_Ptr := Sloc (Obj_Decl);
        Obj_Def_Id  : constant Entity_Id  := Defining_Identifier (Obj_Decl);
        Obj_Typ     : constant Entity_Id  := Etype (Obj_Def_Id);
        Encl_Func   : constant Entity_Id  := Enclosing_Subprogram (Obj_Def_Id);
!       Result_Subt : constant Entity_Id  := Available_View (Etype (Func_Id));
  
        Call_Deref        : Node_Id;
        Caller_Object     : Node_Id;
*************** package body Exp_Ch6 is
*** 9658,9664 ****
  
              Add_Unconstrained_Actuals_To_Build_In_Place_Call
                (Function_Call  => Func_Call,
!                Function_Id    => Function_Id,
                 Alloc_Form_Exp =>
                   New_Occurrence_Of
                     (Build_In_Place_Formal (Encl_Func, BIP_Alloc_Form), Loc),
--- 9278,9284 ----
  
              Add_Unconstrained_Actuals_To_Build_In_Place_Call
                (Function_Call  => Func_Call,
!                Function_Id    => Func_Id,
                 Alloc_Form_Exp =>
                   New_Occurrence_Of
                     (Build_In_Place_Formal (Encl_Func, BIP_Alloc_Form), Loc),
*************** package body Exp_Ch6 is
*** 9669,9675 ****
  
           else
              Add_Unconstrained_Actuals_To_Build_In_Place_Call
!               (Func_Call, Function_Id, Alloc_Form => Caller_Allocation);
           end if;
  
           if Needs_BIP_Collection (Encl_Func) then
--- 9289,9295 ----
  
           else
              Add_Unconstrained_Actuals_To_Build_In_Place_Call
!               (Func_Call, Func_Id, Alloc_Form => Caller_Allocation);
           end if;
  
           if Needs_BIP_Collection (Encl_Func) then
*************** package body Exp_Ch6 is
*** 9684,9690 ****
  
           Caller_Object :=
             Unchecked_Convert_To
!              (Etype (Build_In_Place_Formal (Function_Id, BIP_Object_Access)),
                New_Occurrence_Of
                  (Build_In_Place_Formal (Encl_Func, BIP_Object_Access), Loc));
  
--- 9304,9310 ----
  
           Caller_Object :=
             Unchecked_Convert_To
!              (Etype (Build_In_Place_Formal (Func_Id, BIP_Object_Access)),
                New_Occurrence_Of
                  (Build_In_Place_Formal (Encl_Func, BIP_Object_Access), Loc));
  
*************** package body Exp_Ch6 is
*** 9704,9710 ****
           --  functions with indefinite result subtypes.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Alloc_Form => Caller_Allocation);
  
        --  The allocation for indefinite library-level objects occurs on the
        --  heap as opposed to the secondary stack. This accommodates DLLs where
--- 9324,9330 ----
           --  functions with indefinite result subtypes.
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Alloc_Form => Caller_Allocation);
  
        --  The allocation for indefinite library-level objects occurs on the
        --  heap as opposed to the secondary stack. This accommodates DLLs where
*************** package body Exp_Ch6 is
*** 9718,9724 ****
           --  ensure that the heap allocation can properly chain the object
           --  and later finalize it when the library unit goes out of scope.
  
!          if Needs_BIP_Collection (Function_Id) then
              Build_Finalization_Collection
                (Typ            => Ptr_Typ,
                 For_Lib_Level  => True,
--- 9338,9344 ----
           --  ensure that the heap allocation can properly chain the object
           --  and later finalize it when the library unit goes out of scope.
  
!          if Needs_BIP_Collection (Func_Id) then
              Build_Finalization_Collection
                (Typ            => Ptr_Typ,
                 For_Lib_Level  => True,
*************** package body Exp_Ch6 is
*** 9742,9748 ****
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
             (Func_Call,
!             Function_Id,
              Alloc_Form => Global_Heap,
              Pool_Exp   => Pool_Actual);
           Caller_Object := Empty;
--- 9362,9368 ----
  
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
             (Func_Call,
!             Func_Id,
              Alloc_Form => Global_Heap,
              Pool_Exp   => Pool_Actual);
           Caller_Object := Empty;
*************** package body Exp_Ch6 is
*** 9754,9760 ****
  
        else
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Alloc_Form => Secondary_Stack);
           Caller_Object := Empty;
  
           Establish_Transient_Scope (Obj_Decl, Manage_Sec_Stack => True);
--- 9374,9380 ----
  
        else
           Add_Unconstrained_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Alloc_Form => Secondary_Stack);
           Caller_Object := Empty;
  
           Establish_Transient_Scope (Obj_Decl, Manage_Sec_Stack => True);
*************** package body Exp_Ch6 is
*** 9765,9792 ****
        --  an enclosing build-in-place function.
  
        Add_Collection_Actual_To_Build_In_Place_Call
!         (Func_Call, Function_Id, Collection_Exp => Collection_Actual);
  
        if Nkind (Parent (Obj_Decl)) = N_Extended_Return_Statement
!         and then Needs_BIP_Task_Actuals (Function_Id)
        then
           --  Here we're passing along the master that was passed in to this
           --  function.
  
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id,
              Master_Actual =>
                New_Occurrence_Of
                  (Build_In_Place_Formal (Encl_Func, BIP_Task_Master), Loc));
  
        else
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Function_Id, Make_Identifier (Loc, Name_uMaster));
        end if;
  
        Add_Access_Actual_To_Build_In_Place_Call
          (Func_Call,
!          Function_Id,
           Caller_Object,
           Is_Access => Pass_Caller_Acc);
  
--- 9385,9412 ----
        --  an enclosing build-in-place function.
  
        Add_Collection_Actual_To_Build_In_Place_Call
!         (Func_Call, Func_Id, Collection_Exp => Collection_Actual);
  
        if Nkind (Parent (Obj_Decl)) = N_Extended_Return_Statement
!         and then Needs_BIP_Task_Actuals (Func_Id)
        then
           --  Here we're passing along the master that was passed in to this
           --  function.
  
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id,
              Master_Actual =>
                New_Occurrence_Of
                  (Build_In_Place_Formal (Encl_Func, BIP_Task_Master), Loc));
  
        else
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id, Make_Identifier (Loc, Name_uMaster));
        end if;
  
        Add_Access_Actual_To_Build_In_Place_Call
          (Func_Call,
!          Func_Id,
           Caller_Object,
           Is_Access => Pass_Caller_Acc);
  
*************** package body Exp_Ch6 is
*** 9897,9905 ****
           end if;
        end if;
  
!       pragma Assert (Returns_By_Ref (Function_Id));
!       pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
!       pragma Assert (Check_BIP_Actuals (Func_Call, Function_Id));
     end Make_Build_In_Place_Call_In_Object_Declaration;
  
     -------------------------------------------------
--- 9517,9525 ----
           end if;
        end if;
  
!       pragma Assert (Returns_By_Ref (Func_Id));
!       pragma Assert (Check_Number_Of_Actuals (Func_Call, Func_Id));
!       pragma Assert (Check_BIP_Actuals (Func_Call, Func_Id));
     end Make_Build_In_Place_Call_In_Object_Declaration;
  
     -------------------------------------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch6.ads gcc-17-20260531/gcc/ada/exp_ch6.ads
*** gcc-17-20260524/gcc/ada/exp_ch6.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch6.ads	Sun May 31 22:32:04 2026
*************** package Exp_Ch6 is
*** 105,129 ****
     --  Create the extra actuals of the given call and add them to its
     --  actual parameters list.
  
-    procedure Apply_Access_Discrims_Accessibility_Check
-      (Exp : Node_Id; Func : Entity_Id);
-    --  Exp is an expression being returned from a function Func.
-    --  If the result type of the function has access discriminants, insert
-    --  checks that the accessibility level of each entity designated by an
-    --  access discriminant of the result is not deeper than the level of the
-    --  master of the call.
- 
-    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id);
-    --  Exp is an expression being returned from a function Func.
-    --  Ada 2005 (AI95-344): If the result type is class-wide, insert a check
-    --  that the level of the return expression's underlying type is not deeper
-    --  than the level of the master enclosing the function. Always generate the
-    --  check when the type of the return expression is class-wide, when it's a
-    --  type conversion, or when it's a formal parameter. Otherwise suppress the
-    --  check in the case where the return expression has a specific type whose
-    --  level is known not to be statically deeper than the result type of the
-    --  function.
- 
     function BIP_Formal_Suffix (Kind : BIP_Formal_Kind) return String;
     --  Ada 2005 (AI-318-02): Returns a string to be used as the suffix of names
     --  for build-in-place formal parameters of the given kind.
--- 105,110 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch8.adb gcc-17-20260531/gcc/ada/exp_ch8.adb
*** gcc-17-20260524/gcc/ada/exp_ch8.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch8.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Ch8 is
*** 160,168 ****
  
        --  Local variables
  
        Decl : Node_Id;
-       Nam  : constant Node_Id   := Name (N);
-       T    : constant Entity_Id := Etype (Defining_Identifier (N));
  
     --  Start of processing for Expand_N_Object_Renaming_Declaration
  
--- 160,170 ----
  
        --  Local variables
  
+       Def_Id : constant Entity_Id := Defining_Identifier (N);
+       Nam    : constant Node_Id   := Name (N);
+       T      : constant Entity_Id := Etype (Def_Id);
+ 
        Decl : Node_Id;
  
     --  Start of processing for Expand_N_Object_Renaming_Declaration
  
*************** package body Exp_Ch8 is
*** 171,177 ****
  
        if Evaluation_Required (Nam) then
           Evaluate_Name (Nam);
!          Set_Is_Renaming_Of_Object (Defining_Identifier (N));
        end if;
  
        --  Deal with construction of subtype in class-wide case
--- 173,179 ----
  
        if Evaluation_Required (Nam) then
           Evaluate_Name (Nam);
!          Set_Is_Renaming_Of_Object (Def_Id);
        end if;
  
        --  Deal with construction of subtype in class-wide case
*************** package body Exp_Ch8 is
*** 179,185 ****
        if Is_Class_Wide_Type (T) then
           Expand_Subtype_From_Expr (N, T, Subtype_Mark (N), Name (N));
           Find_Type (Subtype_Mark (N));
!          Set_Etype (Defining_Identifier (N), Entity (Subtype_Mark (N)));
  
           --  Freeze the class-wide subtype here to ensure that the subtype
           --  and equivalent type are frozen before the renaming.
--- 181,187 ----
        if Is_Class_Wide_Type (T) then
           Expand_Subtype_From_Expr (N, T, Subtype_Mark (N), Name (N));
           Find_Type (Subtype_Mark (N));
!          Set_Etype (Def_Id, Entity (Subtype_Mark (N)));
  
           --  Freeze the class-wide subtype here to ensure that the subtype
           --  and equivalent type are frozen before the renaming.
*************** package body Exp_Ch8 is
*** 200,205 ****
--- 202,238 ----
  
        elsif Present (Unqual_BIP_Iface_Function_Call (Nam)) then
           Make_Build_In_Place_Iface_Call_In_Anonymous_Context (Nam);
+ 
+       --  The renaming of a controlled function call declared at library level
+       --  must be turned into a regular object declaration if the result is not
+       --  returned on the secondary stack because, otherwise, the finalization
+       --  machinery of the library level would have the address of a temporary
+       --  created on the stack of the elaboration routine to hold the result.
+ 
+       elsif Nkind (Nam) = N_Function_Call
+         and then Is_Controlled (T)
+         and then not Needs_Secondary_Stack (T)
+         and then Is_Library_Level_Entity (Def_Id)
+       then
+          Rewrite (N,
+            Make_Object_Declaration (Sloc (N),
+              Defining_Identifier => Def_Id,
+              Constant_Present    => True,
+              Object_Definition   => New_Occurrence_Of (T, Sloc (N)),
+              Expression          => Nam));
+ 
+          --  We do not analyze this object declaration, because all its
+          --  components have already been analyzed, and if we were to go
+          --  ahead and analyze it, we would in effect be trying to generate
+          --  another declaration of Def_Id, which won't do.
+ 
+          Set_Analyzed (N);
+ 
+          --  Therefore we need to set the Has_Completion flag manually
+ 
+          Set_Has_Completion (Def_Id);
+ 
+          return;
        end if;
  
        --  Create renaming entry for debug information. Mark the entity as
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch9.adb gcc-17-20260531/gcc/ada/exp_ch9.adb
*** gcc-17-20260524/gcc/ada/exp_ch9.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch9.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Ch9 is
*** 1231,1238 ****
                 Asp_Copy := New_Copy_Tree (Aspect);
  
                 --  Force its analysis in the corresponding record to add
!                --  the pragma.
  
                 Set_Analyzed (Asp_Copy, False);
                 Append_To (Alist, Asp_Copy);
                 exit;
--- 1231,1241 ----
                 Asp_Copy := New_Copy_Tree (Aspect);
  
                 --  Force its analysis in the corresponding record to add
!                --  the pragma. Remove Aspect_Rep_Item left over from the
!                --  previous analysis.
  
+                pragma Assert (Present (Aspect_Rep_Item (Asp_Copy)));
+                Set_Aspect_Rep_Item (Asp_Copy, Empty);
                 Set_Analyzed (Asp_Copy, False);
                 Append_To (Alist, Asp_Copy);
                 exit;
*************** package body Exp_Ch9 is
*** 1345,1396 ****
        return Ecount;
     end Build_Entry_Count_Expression;
  
-    ------------------------------
-    -- Build_Master_Declaration --
-    ------------------------------
- 
-    function Build_Master_Declaration (Loc : Source_Ptr) return Node_Id is
-       Master_Decl : Node_Id;
- 
-    begin
-       --  Generate a dummy master if tasks or tasking hierarchies are
-       --  prohibited.
- 
-       --    _Master : constant Integer := Library_Task_Level;
- 
-       if not Tasking_Allowed
-         or else Restrictions.Set (No_Task_Hierarchy)
-         or else not RTE_Available (RE_Current_Master)
-       then
-          Master_Decl :=
-            Make_Object_Declaration (Loc,
-              Defining_Identifier =>
-                Make_Defining_Identifier (Loc, Name_uMaster),
-              Constant_Present    => True,
-              Object_Definition   =>
-                New_Occurrence_Of (Standard_Integer, Loc),
-              Expression          =>
-                Make_Integer_Literal (Loc, Library_Task_Level));
- 
-       --  Generate:
-       --    _master : constant Integer := Current_Master.all;
- 
-       else
-          Master_Decl :=
-            Make_Object_Declaration (Loc,
-              Defining_Identifier =>
-                Make_Defining_Identifier (Loc, Name_uMaster),
-              Constant_Present    => True,
-              Object_Definition   =>
-                New_Occurrence_Of (Standard_Integer, Loc),
-              Expression          =>
-                Make_Explicit_Dereference (Loc,
-                  New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
-       end if;
- 
-       return Master_Decl;
-    end Build_Master_Declaration;
- 
     ---------------------------
     -- Build_Parameter_Block --
     ---------------------------
--- 1348,1353 ----
*************** package body Exp_Ch9 is
*** 3027,3032 ****
--- 2984,3034 ----
            Handled_Statement_Sequence => Hand_Stmt_Seq);
     end Build_Lock_Free_Unprotected_Subprogram_Body;
  
+    ------------------------------
+    -- Build_Master_Declaration --
+    ------------------------------
+ 
+    function Build_Master_Declaration (Loc : Source_Ptr) return Node_Id is
+       Master_Decl : Node_Id;
+ 
+    begin
+       --  Generate a dummy master if tasks or tasking hierarchies are
+       --  prohibited:
+       --    _Master : constant Integer := Library_Task_Level;
+ 
+       if not Tasking_Allowed
+         or else Restrictions.Set (No_Task_Hierarchy)
+         or else not RTE_Available (RE_Current_Master)
+       then
+          Master_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Defining_Identifier (Loc, Name_uMaster),
+              Constant_Present    => True,
+              Object_Definition   =>
+                New_Occurrence_Of (Standard_Integer, Loc),
+              Expression          =>
+                Make_Integer_Literal (Loc, Library_Task_Level));
+ 
+       --  Generate:
+       --    _Master : constant Integer := Current_Master.all;
+ 
+       else
+          Master_Decl :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier =>
+                Make_Defining_Identifier (Loc, Name_uMaster),
+              Constant_Present    => True,
+              Object_Definition   =>
+                New_Occurrence_Of (Standard_Integer, Loc),
+              Expression          =>
+                Make_Explicit_Dereference (Loc,
+                  New_Occurrence_Of (RTE (RE_Current_Master), Loc)));
+       end if;
+ 
+       return Master_Decl;
+    end Build_Master_Declaration;
+ 
     -------------------------
     -- Build_Master_Entity --
     -------------------------
*************** package body Exp_Ch9 is
*** 3107,3112 ****
--- 3109,3143 ----
        end if;
     end Build_Master_Entity;
  
+    ---------------------------------------
+    -- Build_Master_Renaming_Declaration --
+    ---------------------------------------
+ 
+    function Build_Master_Renaming_Declaration
+      (Ptr_Typ : Entity_Id;
+       Loc     : Source_Ptr) return Node_Id
+    is
+       --  Generate:
+       --    <Ptr_Typ>M : Integer renames _Master;
+       --  and add a numeric suffix to the name to ensure that it is
+       --  unique in case other access types in nested constructs
+       --  are homonyms of this one.
+ 
+       Master_Id : constant Entity_Id :=
+         Make_Defining_Identifier (Loc,
+           New_External_Name (Chars (Ptr_Typ), 'M', -1));
+ 
+       Master_Decl : constant Node_Id :=
+         Make_Object_Renaming_Declaration (Loc,
+           Defining_Identifier => Master_Id,
+           Subtype_Mark        =>
+             New_Occurrence_Of (Standard_Integer, Loc),
+           Name                => Make_Identifier (Loc, Name_uMaster));
+ 
+    begin
+       return Master_Decl;
+    end Build_Master_Renaming_Declaration;
+ 
     ---------------------------
     -- Build_Master_Renaming --
     ---------------------------
*************** package body Exp_Ch9 is
*** 3115,3124 ****
       (Ptr_Typ : Entity_Id;
        Ins_Nod : Node_Id := Empty)
     is
!       Loc         : constant Source_Ptr := Sloc (Ptr_Typ);
        Context     : Node_Id;
        Master_Decl : Node_Id;
-       Master_Id   : Entity_Id;
  
     begin
        --  No action needed if the run-time has no tasking support
--- 3146,3155 ----
       (Ptr_Typ : Entity_Id;
        Ins_Nod : Node_Id := Empty)
     is
!       Loc : constant Source_Ptr := Sloc (Ptr_Typ);
! 
        Context     : Node_Id;
        Master_Decl : Node_Id;
  
     begin
        --  No action needed if the run-time has no tasking support
*************** package body Exp_Ch9 is
*** 3127,3132 ****
--- 3158,3165 ----
           return;
        end if;
  
+       Master_Decl := Build_Master_Renaming_Declaration (Ptr_Typ, Loc);
+ 
        --  Determine the proper context to insert the master renaming
  
        if Present (Ins_Nod) then
*************** package body Exp_Ch9 is
*** 3169,3196 ****
           Context := Parent (Ptr_Typ);
        end if;
  
-       --  Generate:
-       --    <Ptr_Typ>M : Master_Id renames _Master;
-       --  and add a numeric suffix to the name to ensure that it is
-       --  unique in case other access types in nested constructs
-       --  are homonyms of this one.
- 
-       Master_Id :=
-         Make_Defining_Identifier (Loc,
-           New_External_Name (Chars (Ptr_Typ), 'M', -1));
- 
-       Master_Decl :=
-         Make_Object_Renaming_Declaration (Loc,
-           Defining_Identifier => Master_Id,
-           Subtype_Mark        =>
-             New_Occurrence_Of (Standard_Integer, Loc),
-           Name                => Make_Identifier (Loc, Name_uMaster));
- 
        Insert_Action (Context, Master_Decl);
  
        --  The renamed master now services the access type
  
!       Set_Master_Id (Ptr_Typ, Master_Id);
     end Build_Master_Renaming;
  
     ---------------------------
--- 3202,3212 ----
           Context := Parent (Ptr_Typ);
        end if;
  
        Insert_Action (Context, Master_Decl);
  
        --  The renamed master now services the access type
  
!       Set_Master_Id (Ptr_Typ, Defining_Identifier (Master_Decl));
     end Build_Master_Renaming;
  
     ---------------------------
*************** package body Exp_Ch9 is
*** 5733,5738 ****
--- 5749,5778 ----
                       null;
                 end case;
  
+             when N_Attribute_Reference =>
+ 
+                --  Attribute Count has been already expanded to function call,
+                --  or it is illegal, or expansion is disabled and attribute
+                --  is legal, i.e. it is prefixed by a name of entry or by a
+                --  indexed entry family of the current protected object.
+ 
+                if Attribute_Name (N) = Name_Count then
+                   pragma Assert
+                     (if Serious_Errors_Detected = 0
+                      then not Expander_Active
+                      and then
+                        ((Is_Entity_Name (Prefix (N))
+                          and then Is_Entry (Entity (Prefix (N)))
+                          and then Scope (Entity (Prefix (N))) = Prot)
+                         or else
+                         (Nkind (Prefix (N)) = N_Indexed_Component
+                          and then Is_Entity_Name (Prefix (Prefix (N)))
+                          and then Is_Entry (Entity (Prefix (Prefix (N))))
+                          and then Scope (Entity (Prefix (Prefix (N)))) = Prot))
+                        );
+                   return Skip;
+                end if;
+ 
              when N_Function_Call =>
  
                 --  Function call checks are carried out as part of the analysis
*************** package body Exp_Ch9 is
*** 8250,8257 ****
        Op_Body := First (Declarations (N));
  
        --  The protected body is replaced with the bodies of its protected
!       --  operations, and the declarations for internal objects that may
!       --  have been created for entry family bounds.
  
        Rewrite (N, Make_Null_Statement (Sloc (N)));
        Analyze (N);
--- 8290,8297 ----
        Op_Body := First (Declarations (N));
  
        --  The protected body is replaced with the bodies of its protected
!       --  operations, and other things, such as pragmas and byproducts of
!       --  expansion.
  
        Rewrite (N, Make_Null_Statement (Sloc (N)));
        Analyze (N);
*************** package body Exp_Ch9 is
*** 8366,8385 ****
                 Current_Node := New_Op_Body;
                 Analyze (New_Op_Body);
  
!             when N_Implicit_Label_Declaration =>
!                null;
! 
!             when N_Call_Marker
!                | N_Itype_Reference
!             =>
!                New_Op_Body := New_Copy (Op_Body);
!                Insert_After (Current_Node, New_Op_Body);
!                Current_Node := New_Op_Body;
  
!             when N_Freeze_Entity =>
                 New_Op_Body := New_Copy (Op_Body);
  
!                if Present (Entity (Op_Body))
                   and then Freeze_Node (Entity (Op_Body)) = Op_Body
                 then
                    Set_Freeze_Node (Entity (Op_Body), New_Op_Body);
--- 8406,8419 ----
                 Current_Node := New_Op_Body;
                 Analyze (New_Op_Body);
  
!             --  Anything else, such as object declarations produced by
!             --  expansion, are copied.
  
!             when others =>
                 New_Op_Body := New_Copy (Op_Body);
  
!                if Nkind (Op_Body) = N_Freeze_Entity
!                  and then Present (Entity (Op_Body))
                   and then Freeze_Node (Entity (Op_Body)) = Op_Body
                 then
                    Set_Freeze_Node (Entity (Op_Body), New_Op_Body);
*************** package body Exp_Ch9 is
*** 8388,8409 ****
                 Insert_After (Current_Node, New_Op_Body);
                 Current_Node := New_Op_Body;
                 Analyze (New_Op_Body);
- 
-             when N_Pragma =>
-                New_Op_Body := New_Copy (Op_Body);
-                Insert_After (Current_Node, New_Op_Body);
-                Current_Node := New_Op_Body;
-                Analyze (New_Op_Body);
- 
-             when N_Object_Declaration =>
-                pragma Assert (not Comes_From_Source (Op_Body));
-                New_Op_Body := New_Copy (Op_Body);
-                Insert_After (Current_Node, New_Op_Body);
-                Current_Node := New_Op_Body;
-                Analyze (New_Op_Body);
- 
-             when others =>
-                raise Program_Error;
           end case;
  
           Next (Op_Body);
--- 8422,8427 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_ch9.ads gcc-17-20260531/gcc/ada/exp_ch9.ads
*** gcc-17-20260524/gcc/ada/exp_ch9.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_ch9.ads	Sun May 31 22:32:04 2026
*************** package Exp_Ch9 is
*** 54,76 ****
     --  For targets supporting tasks, generate:
     --      _Master : constant Integer := Current_Master.all;
     --  For targets where tasks or tasking hierarchies are prohibited, generate:
!    --      _Master : constant Master_Id := 3;
  
     procedure Build_Master_Entity (Obj_Or_Typ : Entity_Id);
     --  Given the name of an object or a type which is either a task, contains
!    --  tasks or designates tasks, create a _master in the appropriate scope
     --  which captures the value of Current_Master. Mark the nearest enclosing
     --  body or block as being a task master.
  
     procedure Build_Master_Renaming
       (Ptr_Typ : Entity_Id;
        Ins_Nod : Node_Id := Empty);
     --  Given an access type Ptr_Typ whose designated type is either a task or
     --  contains tasks, create a renaming of the form:
     --
!    --     <Ptr_Typ>M : Master_Id renames _Master;
     --
!    --  where _master denotes the task master of the enclosing context. Ins_Nod
     --  is used to provide a specific insertion node for the renaming.
  
     function Build_Protected_Sub_Specification
--- 54,82 ----
     --  For targets supporting tasks, generate:
     --      _Master : constant Integer := Current_Master.all;
     --  For targets where tasks or tasking hierarchies are prohibited, generate:
!    --      _Master : constant Integer := Library_Task_Level;
  
     procedure Build_Master_Entity (Obj_Or_Typ : Entity_Id);
     --  Given the name of an object or a type which is either a task, contains
!    --  tasks or designates tasks, create a _Master in the appropriate scope
     --  which captures the value of Current_Master. Mark the nearest enclosing
     --  body or block as being a task master.
  
+    function Build_Master_Renaming_Declaration
+      (Ptr_Typ : Entity_Id;
+       Loc     : Source_Ptr) return Node_Id;
+    --  Generate:
+    --     <Ptr_Typ>M : Integer renames _Master;
+ 
     procedure Build_Master_Renaming
       (Ptr_Typ : Entity_Id;
        Ins_Nod : Node_Id := Empty);
     --  Given an access type Ptr_Typ whose designated type is either a task or
     --  contains tasks, create a renaming of the form:
     --
!    --     <Ptr_Typ>M : Integer renames _Master;
     --
!    --  where _Master denotes the task master of the enclosing context. Ins_Nod
     --  is used to provide a specific insertion node for the renaming.
  
     function Build_Protected_Sub_Specification
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_disp.adb gcc-17-20260531/gcc/ada/exp_disp.adb
*** gcc-17-20260524/gcc/ada/exp_disp.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_disp.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Disp is
*** 1203,1212 ****
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       --  Suppress all checks during the analysis of the expanded code to avoid
!       --  the generation of spurious warnings under ZFP run-time.
! 
!       Analyze_And_Resolve (Call_Node, Call_Typ, Suppress => All_Checks);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
--- 1203,1209 ----
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       Analyze_And_Resolve (Call_Node, Call_Typ);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_imgv.adb gcc-17-20260531/gcc/ada/exp_imgv.adb
*** gcc-17-20260524/gcc/ada/exp_imgv.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_imgv.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Imgv is
*** 1047,1056 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
--- 1047,1055 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
*************** package body Exp_Imgv is
*** 1860,1869 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
--- 1859,1867 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
*************** package body Exp_Imgv is
*** 1970,1979 ****
           return;
        end if;
  
!       --  If Image should be transformed using Put_Image, then do so. See
!       --  Exp_Put_Image for details.
  
!       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve
--- 1968,1976 ----
           return;
        end if;
  
!       --  If Image must be turned into Put_Image, then do so
  
!       if Exp_Put_Image.Image_Must_Call_Put_Image (N) then
           Establish_Transient_Scope (N, Manage_Sec_Stack => True);
           Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
           Analyze_And_Resolve
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_prag.adb gcc-17-20260531/gcc/ada/exp_prag.adb
*** gcc-17-20260524/gcc/ada/exp_prag.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_prag.adb	Sun May 31 22:32:04 2026
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Casing;         use Casing;
  with Checks;         use Checks;
*************** package body Exp_Prag is
*** 145,151 ****
          or else (Prag_Id = Pragma_Default_Scalar_Storage_Order
                   and then Ignore_Rep_Clauses)
        then
!          Rewrite (N, Make_Null_Statement (Sloc (N)));
           return;
        end if;
  
--- 146,158 ----
          or else (Prag_Id = Pragma_Default_Scalar_Storage_Order
                   and then Ignore_Rep_Clauses)
        then
!          --  For a pragma specifying an ignored aspect, we want to leave
!          --  the unanalyzed pragma in the tree.
!          if Get_Aspect_Id (Chars (Pragma_Identifier (N)))
!            not in Ignored_Aspects
!          then
!             Rewrite (N, Make_Null_Statement (Sloc (N)));
!          end if;
           return;
        end if;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_put_image.adb gcc-17-20260531/gcc/ada/exp_put_image.adb
*** gcc-17-20260524/gcc/ada/exp_put_image.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_put_image.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Put_Image is
*** 1240,1250 ****
        return Make_Defining_Identifier (Loc, Sname);
     end Make_Put_Image_Name;
  
!    ---------------------------------
!    -- Image_Should_Call_Put_Image --
!    ---------------------------------
  
!    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean is
     begin
        if Ada_Version < Ada_2022 then
           return False;
--- 1240,1250 ----
        return Make_Defining_Identifier (Loc, Sname);
     end Make_Put_Image_Name;
  
!    -------------------------------
!    -- Image_Must_Call_Put_Image --
!    -------------------------------
  
!    function Image_Must_Call_Put_Image (N : Node_Id) return Boolean is
     begin
        if Ada_Version < Ada_2022 then
           return False;
*************** package body Exp_Put_Image is
*** 1282,1288 ****
  
           return False;
        end;
!    end Image_Should_Call_Put_Image;
  
     ----------------------
     -- Build_Image_Call --
--- 1282,1288 ----
  
           return False;
        end;
!    end Image_Must_Call_Put_Image;
  
     ----------------------
     -- Build_Image_Call --
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_put_image.ads gcc-17-20260531/gcc/ada/exp_put_image.ads
*** gcc-17-20260524/gcc/ada/exp_put_image.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_put_image.ads	Sun May 31 22:32:04 2026
*************** package Exp_Put_Image is
*** 82,90 ****
     function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id;
     --  Build a call to Put_Image_Unknown
  
!    function Image_Should_Call_Put_Image (N : Node_Id) return Boolean;
!    --  True if T'Image should call T'Put_Image. N is the attribute_reference
!    --  T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
--- 82,90 ----
     function Build_Unknown_Put_Image_Call (N : Node_Id) return Node_Id;
     --  Build a call to Put_Image_Unknown
  
!    function Image_Must_Call_Put_Image (N : Node_Id) return Boolean;
!    --  True if T'Image must be implemented by a call to T'Put_Image. N is the
!    --  attribute reference to T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
     --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_spark.adb gcc-17-20260531/gcc/ada/exp_spark.adb
*** gcc-17-20260524/gcc/ada/exp_spark.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_spark.adb	Sun May 31 22:32:04 2026
*************** package body Exp_SPARK is
*** 335,347 ****
                    elsif Is_Deep_Choice (Index, Typ) then
                       Apply_Range_Checks (Index);
  
                    --  Otherwise the index denotes a single expression where
                    --  range checks need to be applied or a subtype name
                    --  (without range constraints) where applying checks is
                    --  harmless.
-                   --
-                   --  In delta_aggregate and Update attribute on array the
-                   --  others_choice is not allowed.
  
                    else pragma Assert (Nkind (Index) in N_Subexpr);
                       Apply_Scalar_Range_Check (Index, Etype (Index_Typ));
--- 335,350 ----
                    elsif Is_Deep_Choice (Index, Typ) then
                       Apply_Range_Checks (Index);
  
+                   --  In delta_aggregate and Update attribute on array the
+                   --  others_choice is not allowed.
+ 
+                   elsif Nkind (Index) = N_Others_Choice then
+                      pragma Assert (Serious_Errors_Detected > 0);
+ 
                    --  Otherwise the index denotes a single expression where
                    --  range checks need to be applied or a subtype name
                    --  (without range constraints) where applying checks is
                    --  harmless.
  
                    else pragma Assert (Nkind (Index) in N_Subexpr);
                       Apply_Scalar_Range_Check (Index, Etype (Index_Typ));
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_unst.adb gcc-17-20260531/gcc/ada/exp_unst.adb
*** gcc-17-20260524/gcc/ada/exp_unst.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_unst.adb	Sun May 31 22:32:04 2026
*************** with Atree;          use Atree;
*** 27,33 ****
  with Debug;          use Debug;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
- with Elists;         use Elists;
  with Lib;            use Lib;
  with Namet;          use Namet;
  with Nlists;         use Nlists;
--- 27,32 ----
*************** package body Exp_Unst is
*** 55,60 ****
--- 54,66 ----
     -- Local Subprograms --
     -----------------------
  
+    function Maybe_Subp_Index (Sub : Entity_Id) return SI_Type;
+    --  Returns the subps index value if it has been set, 0 if not
+ 
+    procedure Nullify_Renamings (Renamings : Elist_Id);
+    --  Iterates over all renamings in the Renamings list and replace them with
+    --  null statements.
+ 
     procedure Unnest_Subprogram
       (Subp : Entity_Id; Subp_Body : Node_Id; For_Inline : Boolean := False);
     --  Subp is a library-level subprogram which has nested subprograms, and
*************** package body Exp_Unst is
*** 264,271 ****
     ----------------
  
     function Subp_Index (Sub : Entity_Id) return SI_Type is
!       E : Entity_Id := Sub;
  
     begin
        pragma Assert (Is_Subprogram (E));
  
--- 270,283 ----
     ----------------
  
     function Subp_Index (Sub : Entity_Id) return SI_Type is
!       Ret : constant SI_Type := Maybe_Subp_Index (Sub);
!    begin
!       pragma Assert (Ret /= 0);
!       return Ret;
!    end Subp_Index;
  
+    function Maybe_Subp_Index (Sub : Entity_Id) return SI_Type is
+       E : Entity_Id := Sub;
     begin
        pragma Assert (Is_Subprogram (E));
  
*************** package body Exp_Unst is
*** 283,291 ****
           end if;
        end if;
  
!       pragma Assert (Subps_Index (E) /= Uint_0);
!       return SI_Type (UI_To_Int (Subps_Index (E)));
!    end Subp_Index;
  
     -----------------------
     -- Unnest_Subprogram --
--- 295,348 ----
           end if;
        end if;
  
!       if not Field_Is_Initial_Zero (E, F_Subps_Index) then
!          return SI_Type (UI_To_Int (Subps_Index (E)));
!       else
!          --  Field has not been set, don't try to access it yet
!          return 0;
!       end if;
!    end Maybe_Subp_Index;
! 
!    procedure Nullify_Renamings (Renamings : Elist_Id) is
!       Iterator : Elmt_Id := First_Elmt (Renamings);
!       Nod : Node_Id;
!       F_Nod : Node_Id;
!    begin
!       if Debug_Flag_Dot_3 and then Present (Iterator) then
!          Nod := Node (Iterator);
!          Write_Str ("Dropping renamings for ");
!          Write_Name (Chars (Entity (Name (Nod))));
!          Write_Eol;
!       end if;
! 
!       while Present (Iterator) loop
!          Nod := Node (Iterator);
! 
!          if Debug_Flag_Dot_3 then
!             Write_Str (" -  ");
!             Write_Name (Chars (Defining_Unit_Name (Specification (Nod))));
!             Write_Eol;
!          end if;
! 
!          --  Remove the freeze node if there is one
! 
!          F_Nod := Freeze_Node (Defining_Unit_Name
!            (Specification (Nod)));
!          if Present (F_Nod) then
!             Rewrite (F_Nod,
!                      Make_Null_Statement (Sloc (Nod)));
!          end if;
! 
!          Rewrite (Nod,
!                   Make_Null_Statement (Sloc (Nod)));
! 
!          Next_Elmt (Iterator);
!       end loop;
! 
!       while Present (First_Elmt (Renamings)) loop
!          Remove_Last_Elmt (Renamings);
!       end loop;
!    end Nullify_Renamings;
  
     -----------------------
     -- Unnest_Subprogram --
*************** package body Exp_Unst is
*** 482,487 ****
--- 539,549 ----
              --  is an access type, check whether the designated type
              --  has dynamic bounds.
  
+             procedure Move_Pending_Renamings (Subp : Entity_Id;
+                                               Renamings : in out Elist_Id);
+             --  Move all pending renamings that are renaming Subp to its own
+             --  Renamings list.
+ 
              procedure Note_Uplevel_Ref
                (E      : Entity_Id;
                 N      : Node_Id;
*************** package body Exp_Unst is
*** 537,558 ****
                      (N : Node_Id) return Traverse_Result
                    is
                    begin
!                      --  Entity name case. Make sure that the entity is
!                      --  declared in a subprogram. This may not be the case for
!                      --  a type in a loop appearing in a precondition. Exclude
!                      --  explicitly discriminants (that can appear in bounds of
!                      --  discriminated components), enumeration literals and
!                      --  block.
  
                       if Is_Entity_Name (N) then
                          if Present (Entity (N))
                            and then not Is_Type (Entity (N))
-                           and then Present
-                             (Enclosing_Subprogram (Entity (N)))
                            and then
!                             Ekind (Entity (N))
!                               not in E_Discriminant | E_Enumeration_Literal
!                                 | E_Block
                          then
                             Note_Uplevel_Ref
                               (E      => Entity (N),
--- 599,617 ----
                      (N : Node_Id) return Traverse_Result
                    is
                    begin
!                      --  The main case is the name of an object entity declared
!                      --  in a subprogram.
  
                       if Is_Entity_Name (N) then
                          if Present (Entity (N))
                            and then not Is_Type (Entity (N))
                            and then
!                             Ekind (Entity (N)) not in E_Block
!                                                     | E_Discriminant
!                                                     | E_Enumeration_Literal
!                                                     | E_Package
!                           and then
!                             Present (Enclosing_Subprogram (Entity (N)))
                          then
                             Note_Uplevel_Ref
                               (E      => Entity (N),
*************** package body Exp_Unst is
*** 560,584 ****
                                Caller => Current_Subprogram,
                                Callee => Enclosing_Subprogram (Entity (N)));
                          end if;
-                      end if;
  
!                      --  N_Function_Call are handled later, don't touch them
!                      --  yet.
!                      if Nkind (N) in N_Function_Call
!                      then
                          return Skip;
  
!                      --  In N_Selected_Component and N_Expanded_Name, only the
!                      --  prefix may be referencing a uplevel entity.
  
!                      elsif Nkind (N) in N_Selected_Component
!                          | N_Expanded_Name
                       then
                          Do_Note_Uplevel_Bound (Prefix (N));
                          return Skip;
  
!                      --  The type of the prefix may be have an uplevel
!                      --  reference if this needs bounds.
  
                       elsif Nkind (N) = N_Attribute_Reference then
                          declare
--- 619,640 ----
                                Caller => Current_Subprogram,
                                Callee => Enclosing_Subprogram (Entity (N)));
                          end if;
  
!                      --  N_Function_Call is handled later
! 
!                      elsif Nkind (N) = N_Function_Call then
                          return Skip;
  
!                      --  For N_Expanded_Name and N_Selected_Component, only the
!                      --  prefix may have an uplevel reference.
  
!                      elsif Nkind (N) in N_Expanded_Name | N_Selected_Component
                       then
                          Do_Note_Uplevel_Bound (Prefix (N));
                          return Skip;
  
!                      --  For an attribute, the type of the prefix may have an
!                      --  uplevel reference if it contains bounds.
  
                       elsif Nkind (N) = N_Attribute_Reference then
                          declare
*************** package body Exp_Unst is
*** 587,596 ****
                             DT   : Boolean := False;
  
                          begin
!                            if Attr in
!                                 Attribute_First
!                                 | Attribute_Last
!                                 | Attribute_Length
                               and then Is_Constrained (Etype (Prefix (N)))
                             then
                                Check_Static_Type
--- 643,651 ----
                             DT   : Boolean := False;
  
                          begin
!                            if Attr in Attribute_First
!                                     | Attribute_Last
!                                     | Attribute_Length
                               and then Is_Constrained (Etype (Prefix (N)))
                             then
                                Check_Static_Type
*************** package body Exp_Unst is
*** 601,606 ****
--- 656,662 ----
  
                       return OK;
                    end Note_Uplevel_Bound_Trav;
+ 
                 begin
                    Do_Note_Uplevel_Bound (N);
                 end Note_Uplevel_Bound;
*************** package body Exp_Unst is
*** 759,775 ****
                 Urefs.Append ((N, Full_E, Caller, Callee));
              end Note_Uplevel_Ref;
  
              -------------------------
              -- Register_Subprogram --
              -------------------------
  
              procedure Register_Subprogram (E : Entity_Id; Bod : Node_Id) is
                 L : constant Nat := Get_Level (Subp, E);
! 
              begin
!                --  Subprograms declared in tasks and protected types cannot be
!                --  eliminated because calls to them may be in other units, so
!                --  they must be treated as reachable.
  
                 Subps.Append
                   ((Ent           => E,
--- 815,855 ----
                 Urefs.Append ((N, Full_E, Caller, Callee));
              end Note_Uplevel_Ref;
  
+             procedure Move_Pending_Renamings (Subp : Entity_Id;
+                                               Renamings : in out Elist_Id) is
+                Iterator : Elmt_Id := First_Elmt (Pending_Renamings);
+                Nod : Node_Id;
+             begin
+                while Present (Iterator) loop
+                   Nod := Node (Iterator);
+ 
+                   if Entity (Name (Nod)) = Subp then
+                      Append_New_Elmt (Nod, Renamings);
+                   end if;
+                   Next_Elmt (Iterator);
+                end loop;
+ 
+                Iterator := First_Elmt (Renamings);
+                while Present (Iterator) loop
+                   Remove (Pending_Renamings, Node (Iterator));
+                   Next_Elmt (Iterator);
+                end loop;
+             end Move_Pending_Renamings;
+ 
              -------------------------
              -- Register_Subprogram --
              -------------------------
  
              procedure Register_Subprogram (E : Entity_Id; Bod : Node_Id) is
                 L : constant Nat := Get_Level (Subp, E);
!                Renamings : Elist_Id := New_Elmt_List;
              begin
!                Move_Pending_Renamings (E, Renamings);
! 
!                --  Subprograms declared in tasks and protected types or whose
!                --  address is taken (through attribute Address or Access)
!                --  cannot be eliminated because calls to them may be in other
!                --  units, so they must be treated as reachable.
  
                 Subps.Append
                   ((Ent           => E,
*************** package body Exp_Unst is
*** 786,792 ****
                     ARECnT        => Empty,
                     ARECnPT       => Empty,
                     ARECnP        => Empty,
!                    ARECnU        => Empty));
  
                 Set_Subps_Index (E, UI_From_Int (Subps.Last));
  
--- 866,873 ----
                     ARECnT        => Empty,
                     ARECnPT       => Empty,
                     ARECnP        => Empty,
!                    ARECnU        => Empty,
!                    Renamings     => Renamings));
  
                 Set_Subps_Index (E, UI_From_Int (Subps.Last));
  
*************** package body Exp_Unst is
*** 1222,1227 ****
--- 1303,1356 ----
                       return Skip;
                    end if;
  
+                when N_Subprogram_Renaming_Declaration =>
+                   --  Record the subprogram renaming. If the reachability
+                   --  analysis decides to drop the procedure, we also need to
+                   --  drop all the associated renamings.
+ 
+                   if Nkind (Name (N)) in N_Has_Entity then
+                      declare
+                         E : constant Entity_Id := Entity (Name (N));
+                         SE : Subp_Entry;
+                      begin
+                         --  Do not record renamings for something not a
+                         --  subprogram. e.g.
+                         --    function t return boolean renames true;
+ 
+                         if Is_Subprogram (E) then
+                            if Maybe_Subp_Index (E) /= 0
+                              and then Enclosing_Subprogram (E) /= Empty
+                            then
+                               SE := Subps.Table (Subp_Index (E));
+                               Append_Elmt (N, SE.Renamings);
+ 
+                               if Debug_Flag_Dot_3 then
+                                  Write_Str ("Record renaming ");
+                                  Write_Name (Chars (Entity (Name (N))));
+                                  Write_Str (" for subp ");
+                                  Write_Name (Chars (SE.Ent));
+                                  Write_Str (" at ");
+                                  Write_Location (Sloc (E));
+                                  Write_Eol;
+                               end if;
+                            else
+                               Append_Elmt (N, Pending_Renamings);
+ 
+                               if Debug_Flag_Dot_3 then
+                                  Write_Str ("Record pending renaming ");
+                                  Write_Name (Chars (
+                                    Defining_Unit_Name (Specification (N))));
+                                  Write_Str (" for subp ");
+                                  Write_Name (Chars (E));
+                                  Write_Str (" at ");
+                                  Write_Location (Sloc (E));
+                                  Write_Eol;
+                               end if;
+                            end if;
+                         end if;
+                      end;
+                   end if;
+ 
                 --  Otherwise record an uplevel reference in a local identifier
  
                 when others =>
*************** package body Exp_Unst is
*** 1531,1536 ****
--- 1660,1667 ----
                    if Present (STJ.Bod) then
                       Spec := Corresponding_Spec (STJ.Bod);
  
+                      Nullify_Renamings (STJ.Renamings);
+ 
                       if Present (Spec) then
                          Decl := Parent (Declaration_Node (Spec));
                          Rewrite (Decl, Make_Null_Statement (Sloc (Decl)));
*************** package body Exp_Unst is
*** 2129,2146 ****
                                      Insert_After (Ins, Asn);
                                   end if;
  
!                                  --  Analyze the assignment statement. We do
!                                  --  not need to establish the relevant scope
!                                  --  stack entries here, because we have
!                                  --  already set the correct entity references,
!                                  --  so no name resolution is required, and no
!                                  --  new entities are created, so we don't even
!                                  --  need to set the current scope.
  
                                   --  We analyze with all checks suppressed
                                   --  (since we do not expect any exceptions).
! 
                                   Analyze (Asn, Suppress => All_Checks);
                                end;
  
                                Next_Elmt (Elmt);
--- 2260,2275 ----
                                      Insert_After (Ins, Asn);
                                   end if;
  
!                                  --  Analyze the assignment statement. We set
!                                  --  the scope of the current subprogram, so
!                                  --  that newly created entities go in the
!                                  --  right entity chain.
  
                                   --  We analyze with all checks suppressed
                                   --  (since we do not expect any exceptions).
!                                  Push_Scope (STJ.Ent);
                                   Analyze (Asn, Suppress => All_Checks);
+                                  Pop_Scope;
                                end;
  
                                Next_Elmt (Elmt);
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_unst.ads gcc-17-20260531/gcc/ada/exp_unst.ads
*** gcc-17-20260524/gcc/ada/exp_unst.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_unst.ads	Sun May 31 22:32:04 2026
***************
*** 27,32 ****
--- 27,33 ----
  
  with Table;
  with Types; use Types;
+ with Elists;         use Elists;
  
  package Exp_Unst is
  
*************** package Exp_Unst is
*** 696,703 ****
--- 697,715 ----
        --  activation record that references the ARECnF pointer (which points
        --  the activation record one level higher, thus forming the chain).
  
+       Renamings : Elist_Id;
+       --  This list contains all renamings of this subprogram. It is used when
+       --  the subprogram is dropped because it's unreachable: all renamings
+       --  must also be dropped.
+ 
     end record;
  
+    Pending_Renamings : Elist_Id := New_Elmt_List;
+    --  This is a list of subprogram renamings that are waiting for their
+    --  corresponding Subp_Entry to be created. Once the Subp_Entry is
+    --  available, the compiler moves the renaming entry from this list to
+    --  the Subp_Entry.Renamings list.
+ 
     package Subps is new Table.Table (
       Table_Component_Type => Subp_Entry,
       Table_Index_Type     => SI_Type,
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_util.adb gcc-17-20260531/gcc/ada/exp_util.adb
*** gcc-17-20260524/gcc/ada/exp_util.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_util.adb	Sun May 31 22:32:04 2026
*************** package body Exp_Util is
*** 1800,1805 ****
--- 1800,1932 ----
        Replace_Condition_Entities (Pragma_Or_Expr);
     end Build_Class_Wide_Expression;
  
+    --------------------------------
+    -- Build_Component_Assignment --
+    --------------------------------
+ 
+    function Build_Component_Assignment
+      (Loc                : Source_Ptr;
+       Prefix             : Node_Id;
+       Prefix_Type        : Entity_Id;
+       Proc_Id            : Entity_Id;
+       Component_Id       : Entity_Id;
+       Default_Expr       : Node_Id;
+       Is_Incomplete : Boolean := False) return List_Id
+    is
+       Default_Loc : constant Source_Ptr := Sloc (Default_Expr);
+       Typ         : constant Entity_Id :=
+         Underlying_Type (Etype (Component_Id));
+ 
+       Exp   : Node_Id;
+       Exp_Q : Node_Id;
+       Lhs   : Node_Id;
+       Res   : List_Id;
+ 
+    begin
+       Lhs :=
+         Make_Selected_Component (Default_Loc,
+           Prefix        => Prefix,
+           Selector_Name => New_Occurrence_Of (Component_Id, Default_Loc));
+       Set_Assignment_OK (Lhs);
+ 
+       --  Take copy of Default to ensure that later copies of this component
+       --  declaration in derived types see the original tree, not a node
+       --  rewritten during expansion. If the copy contains itypes, the scope of
+       --  the new itypes is the type being built.
+ 
+       declare
+          Map : Elist_Id := No_Elist;
+ 
+       begin
+          if Is_Incomplete then
+             --  Map the type to the first formal in order to handle "current
+             --  instance" references.
+ 
+             Map := New_Elmt_List
+                      (Elmt1 => Prefix_Type,
+                       Elmt2 => Defining_Identifier (First
+                                 (Parameter_Specifications
+                                    (Parent (Proc_Id)))));
+ 
+             --  If the type has an incomplete view, a current instance may have
+             --  an incomplete type. In that case, it must also be replaced by
+             --  the formal of the current procedure.
+ 
+             if Present (Incomplete_View (Prefix_Type)) then
+                Append_Elmt (
+                  N  => Incomplete_View (Prefix_Type),
+                  To => Map);
+                Append_Elmt (
+                  N  => Defining_Identifier
+                          (First
+                            (Parameter_Specifications
+                              (Parent (Proc_Id)))),
+                  To => Map);
+             end if;
+          end if;
+ 
+          Exp := New_Copy_Tree (Default_Expr, New_Scope => Proc_Id, Map => Map);
+       end;
+ 
+       Res := New_List (
+         Make_Assignment_Statement (Loc,
+           Name       => Lhs,
+           Expression => Exp));
+ 
+       Exp_Q := Unqualify (Exp);
+ 
+       --  Adjust the component if controlled, except if the expression is an
+       --  aggregate that will be expanded inline (but note that the case of
+       --  container aggregates does require component adjustment), or else a
+       --  function call whose result is adjusted in the called function.
+       --  Note that, when we don't inhibit component adjustment, the tag will
+       --  be automatically inserted by Make_Tag_Ctrl_Assignment in the tagged
+       --  case. Otherwise, we have to generate a tag assignment here.
+ 
+       if Needs_Finalization (Typ)
+         and then (Nkind (Exp_Q) not in N_Aggregate | N_Extension_Aggregate
+                    or else Is_Container_Aggregate (Exp_Q))
+         and then not Is_Build_In_Place_Function_Call (Exp)
+         and then not (Back_End_Return_Slot
+                        and then Nkind (Exp) = N_Function_Call)
+       then
+          Set_No_Finalize_Actions (First (Res));
+ 
+       else
+          Set_No_Ctrl_Actions (First (Res));
+ 
+          --  Adjust the tag if tagged because of possible view conversions
+ 
+          if Is_Tagged_Type (Typ)
+            and then Tagged_Type_Expansion
+            and then Nkind (Exp_Q) /= N_Raise_Expression
+          then
+             declare
+                Utyp : Entity_Id := Underlying_Type (Typ);
+ 
+             begin
+                --  Get the relevant type for Make_Tag_Assignment_From_Type,
+                --  which, for concurrent types is the corresponding record.
+ 
+                if Ekind (Utyp) in E_Protected_Type | E_Task_Type then
+                   Utyp := Corresponding_Record_Type (Utyp);
+                end if;
+ 
+                Append_To (Res,
+                  Make_Tag_Assignment_From_Type (Default_Loc,
+                    New_Copy_Tree (Lhs, New_Scope => Proc_Id),
+                    Utyp));
+             end;
+          end if;
+       end if;
+ 
+       return Res;
+ 
+    exception
+       when RE_Not_Available =>
+          return Empty_List;
+    end Build_Component_Assignment;
+ 
     --------------------
     -- Build_DIC_Call --
     --------------------
*************** package body Exp_Util is
*** 8955,8960 ****
--- 9082,9122 ----
          and then Expansion_Delayed (Unqual_N);
     end Is_Delayed_Conditional_Expression;
  
+    --------------------------------
+    -- Is_Distributable_Declaration --
+    --------------------------------
+ 
+    function Is_Distributable_Declaration (N : Node_Id) return Boolean is
+       Obj_Def : Node_Id;
+ 
+    begin
+       if Nkind (N) /= N_Object_Declaration then
+          return False;
+       end if;
+ 
+       Obj_Def := Object_Definition (N);
+ 
+       --  Current limitation: distribution is not implemented for CW types,
+       --  except for return objects which always live on the secondary stack.
+ 
+       if Is_Entity_Name (Obj_Def)
+         and then (Is_Class_Wide_Type (Entity (Obj_Def))
+                    and then not Is_Return_Object (Defining_Identifier (N)))
+       then
+          return False;
+       end if;
+ 
+       --  The declaration of a variable of an unconstrained definite nonlimited
+       --  subtype cannot be distributed because the variable is mutable and the
+       --  expansion of 'Constrained must statically return False for it.
+ 
+       return Constant_Present (N)
+         or else not Is_Entity_Name (Obj_Def)
+         or else Is_Constrained (Entity (Obj_Def))
+         or else not Is_Definite_Subtype (Entity (Obj_Def))
+         or else Is_Inherently_Limited_Type (Entity (Obj_Def));
+    end Is_Distributable_Declaration;
+ 
     --------------------------------------------------
     -- Is_Expanded_Class_Wide_Interface_Object_Decl --
     --------------------------------------------------
*************** package body Exp_Util is
*** 12415,12421 ****
                and then Is_Entity_Name (Name (Init_Call))
                and then Entity (Name (Init_Call)) = Init_Proc
              then
!                return Init_Call;
              end if;
  
              Next (Init_Call);
--- 12577,12591 ----
                and then Is_Entity_Name (Name (Init_Call))
                and then Entity (Name (Init_Call)) = Init_Proc
              then
!                declare
!                   Act : constant Node_Id :=
!                     Unqual_Conv (First (Parameter_Associations (Init_Call)));
! 
!                begin
!                   if Is_Entity_Name (Act) and then Entity (Act) = Var then
!                      return Init_Call;
!                   end if;
!                end;
              end if;
  
              Next (Init_Call);
*************** package body Exp_Util is
*** 12745,12751 ****
                     or else Nkind (Prefix (Exp)) /= N_Aggregate)
          and then not Is_Name_Reference (Prefix (Exp))
        then
!          Remove_Side_Effects (Prefix (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is an elementary or a small not-by-reference record type, and
--- 12915,12930 ----
                     or else Nkind (Prefix (Exp)) /= N_Aggregate)
          and then not Is_Name_Reference (Prefix (Exp))
        then
!          Remove_Side_Effects
!            (Exp                => Prefix (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => False,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => False,
!             Is_High_Bound      => False,
!             Discr_Number       => 0,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is an elementary or a small not-by-reference record type, and
*************** package body Exp_Util is
*** 12847,12853 ****
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then Nkind (Expression (Exp)) = N_Explicit_Dereference
        then
!          Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
--- 13026,13041 ----
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then Nkind (Expression (Exp)) = N_Explicit_Dereference
        then
!          Remove_Side_Effects
!            (Exp                => Expression (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is a type conversion, leave the type conversion and remove
*************** package body Exp_Util is
*** 12860,12866 ****
        elsif Nkind (Exp) = N_Type_Conversion
          and then Etype (Expression (Exp)) /= Universal_Integer
        then
!          Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  If this is an unchecked conversion that Gigi can't handle, make
--- 13048,13063 ----
        elsif Nkind (Exp) = N_Type_Conversion
          and then Etype (Expression (Exp)) /= Universal_Integer
        then
!          Remove_Side_Effects
!            (Exp                => Expression (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  If this is an unchecked conversion that Gigi can't handle, make
*************** package body Exp_Util is
*** 12941,12947 ****
          and then Nkind (Prefix (Exp)) = N_Function_Call
          and then Is_Array_Type (Und_Typ)
        then
!          Remove_Side_Effects (Prefix (Exp), Name_Req, Variable_Ref);
           goto Leave;
  
        --  Otherwise we generate a reference to the expression
--- 13138,13153 ----
          and then Nkind (Prefix (Exp)) = N_Function_Call
          and then Is_Array_Type (Und_Typ)
        then
!          Remove_Side_Effects
!            (Exp                => Prefix (Exp),
!             Name_Req           => Name_Req,
!             Renaming_Req       => Renaming_Req,
!             Variable_Ref       => Variable_Ref,
!             Related_Id         => Related_Id,
!             Is_Low_Bound       => Is_Low_Bound,
!             Is_High_Bound      => Is_High_Bound,
!             Discr_Number       => Discr_Number,
!             Check_Side_Effects => Check_Side_Effects);
           goto Leave;
  
        --  Otherwise we generate a reference to the expression
*************** package body Exp_Util is
*** 13808,13814 ****
        --  We do not analyze this renaming declaration, because all its
        --  components have already been analyzed, and if we were to go
        --  ahead and analyze it, we would in effect be trying to generate
!       --  another declaration of X, which won't do.
  
        Set_Renamed_Object (Def_Id, Nam);
        Set_Analyzed (N);
--- 14014,14020 ----
        --  We do not analyze this renaming declaration, because all its
        --  components have already been analyzed, and if we were to go
        --  ahead and analyze it, we would in effect be trying to generate
!       --  another declaration of Def_Id, which won't do.
  
        Set_Renamed_Object (Def_Id, Nam);
        Set_Analyzed (N);
diff -Nrcpad gcc-17-20260524/gcc/ada/exp_util.ads gcc-17-20260531/gcc/ada/exp_util.ads
*** gcc-17-20260524/gcc/ada/exp_util.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/exp_util.ads	Sun May 31 22:32:04 2026
*************** package Exp_Util is
*** 328,333 ****
--- 328,354 ----
     --  operation that has the condition. Adjust_Sloc is True when the sloc of
     --  nodes traversed should be adjusted for the inherited pragma.
  
+    function Build_Component_Assignment
+      (Loc           : Source_Ptr;
+       Prefix        : Entity_Id;
+       Prefix_Type   : Entity_Id;
+       Proc_Id       : Entity_Id;
+       Component_Id  : Entity_Id;
+       Default_Expr  : Node_Id;
+       Is_Incomplete : Boolean := False) return List_Id;
+    --  This helper function is used to build component assignment in
+    --  initialization procedures or constructor prologues. It builds an
+    --  assignment statement that assigns the default expression to its
+    --  corresponding record component, selected with the first formal for
+    --   visibility. The right-hand side of the assignment, cf. the default
+    --  expression, is scoped in the given procedure, the left-hand side is
+    --  marked Assignment_OK so that initialization of limited private records
+    --  works correctly. This routine may also build an adjustment call if the
+    --  component is controlled.
+    --  If Is_Incomplete is true, the entities in the default expression will
+    --  be mapped to the type of the first formal in order to handle "current
+    --  instance" references.
+ 
     function Build_DIC_Call
       (Loc      : Source_Ptr;
        Obj_Name : Node_Id;
*************** package Exp_Util is
*** 830,835 ****
--- 851,863 ----
     --  Return True if N is a type conversion, or a dereference thereof, or a
     --  reference to a formal parameter.
  
+    function Is_Distributable_Declaration (N : Node_Id) return Boolean;
+    --  Return True if N is an object declaration that can be distributed into
+    --  the dependent expressions of a conditional expression, given that the
+    --  conditional expression is the initialization expression of N. Such a
+    --  distribution avoids a copy operation and is required for limited types
+    --  and, more generally, desirable for all by-reference types.
+ 
     function Is_Expanded_Class_Wide_Interface_Object_Decl
        (N : Node_Id) return Boolean;
     --  Determine if N is the expanded code for a class-wide interface type
diff -Nrcpad gcc-17-20260524/gcc/ada/freeze.adb gcc-17-20260531/gcc/ada/freeze.adb
*** gcc-17-20260524/gcc/ada/freeze.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/freeze.adb	Sun May 31 22:32:04 2026
*************** package body Freeze is
*** 121,137 ****
     --  the flag if Debug_Info_Off is set. This procedure also ensures that
     --  subsidiary entities have the flag set as required.
  
-    procedure Check_Expression_Function (N : Node_Id; Nam : Entity_Id);
-    --  When an expression function is frozen by a use of it, the expression
-    --  itself is frozen. Check that the expression does not include references
-    --  to deferred constants without completion. We report this at the freeze
-    --  point of the function, to provide a better error message.
-    --
-    --  In most cases the expression itself is frozen by the time the function
-    --  itself is frozen, because the formals will be frozen by then. However,
-    --  Attribute references to outer types are freeze points for those types;
-    --  this routine generates the required freeze nodes for them.
- 
     procedure Check_Strict_Alignment (E : Entity_Id);
     --  E is a base type. If E is tagged or has a component that is aliased
     --  or tagged or contains something this is aliased or tagged, set
--- 121,126 ----
*************** package body Freeze is
*** 145,156 ****
     --  effect if the entity E is not a discrete or fixed-point type.
  
     procedure Freeze_And_Append
!      (Ent    : Entity_Id;
!       N      : Node_Id;
!       Result : in out List_Id);
     --  Freezes Ent using Freeze_Entity, and appends the resulting list of
!    --  nodes to Result, modifying Result from No_List if necessary. N has
!    --  the same usage as in Freeze_Entity.
  
     procedure Freeze_Enumeration_Type (Typ : Entity_Id);
     --  Freeze enumeration type. The Esize field is set as processing
--- 134,146 ----
     --  effect if the entity E is not a discrete or fixed-point type.
  
     procedure Freeze_And_Append
!      (Ent               : Entity_Id;
!       N                 : Node_Id;
!       Result            : in out List_Id;
!       Do_Freeze_Profile : Boolean := True);
     --  Freezes Ent using Freeze_Entity, and appends the resulting list of
!    --  nodes to Result, modifying Result from No_List if necessary. N and
!    --  Do_Freeze_Profile have the same usage as in Freeze_Entity.
  
     procedure Freeze_Enumeration_Type (Typ : Entity_Id);
     --  Freeze enumeration type. The Esize field is set as processing
*************** package body Freeze is
*** 159,164 ****
--- 149,165 ----
     --  that if a foreign convention is specified, and no specific size
     --  is given, then the size must be at least Integer'Size.
  
+    procedure Freeze_Expr_Types
+      (Expr   : Node_Id;
+       N      : Node_Id;
+       Def_Id : Entity_Id;
+       Result : in out List_Id;
+       Before : Boolean := False;
+       Typ    : Entity_Id := Empty);
+    --  Same as Freeze_Expr_Types_Before if Before is True, but appends the
+    --  resulting list of nodes to Result if Before is False, modifying Result
+    --  from No_List if necessary.
+ 
     procedure Freeze_Static_Object (E : Entity_Id);
     --  If an object is frozen which has Is_Statically_Allocated set, then
     --  all referenced types must also be marked with this flag. This routine
*************** package body Freeze is
*** 207,222 ****
     --  attribute definition clause occurs, then these two flags are reset in
     --  any case, so call will have no effect.
  
!    function Should_Freeze_Type
!      (Typ : Entity_Id;
!       E   : Entity_Id;
!       N   : Node_Id) return Boolean;
!    --  True if Typ should be frozen when the profile of E is being frozen at N.
! 
!    --  ??? Expression functions that are not completions shouldn't freeze types
!    --  but our current expansion and freezing model requires an early freezing
!    --  when the tag of Typ is needed or for an aggregate with a subtype of Typ,
!    --  so we return True in these cases.
  
     procedure Undelay_Type (T : Entity_Id);
     --  T is a type of a component that we know to be an Itype. We don't want
--- 208,215 ----
     --  attribute definition clause occurs, then these two flags are reset in
     --  any case, so call will have no effect.
  
!    function Should_Freeze_Type (Typ : Entity_Id; N : Node_Id) return Boolean;
!    --  True if Typ should be frozen when a profile is being frozen at N.
  
     procedure Undelay_Type (T : Entity_Id);
     --  T is a type of a component that we know to be an Itype. We don't want
*************** package body Freeze is
*** 1416,1493 ****
        end if;
     end Check_Debug_Info_Needed;
  
-    -------------------------------
-    -- Check_Expression_Function --
-    -------------------------------
- 
-    procedure Check_Expression_Function (N : Node_Id; Nam : Entity_Id) is
-       function Find_Constant (Nod : Node_Id) return Traverse_Result;
-       --  Function to search for deferred constant
- 
-       -------------------
-       -- Find_Constant --
-       -------------------
- 
-       function Find_Constant (Nod : Node_Id) return Traverse_Result is
-       begin
-          --  When a constant is initialized with the result of a dispatching
-          --  call, the constant declaration is rewritten as a renaming of the
-          --  displaced function result. This scenario is not a premature use of
-          --  a constant even though the Has_Completion flag is not set.
- 
-          if Is_Entity_Name (Nod)
-            and then Present (Entity (Nod))
-            and then Ekind (Entity (Nod)) = E_Constant
-            and then Scope (Entity (Nod)) = Current_Scope
-            and then Nkind (Declaration_Node (Entity (Nod))) =
-                                                          N_Object_Declaration
-            and then not Is_Imported (Entity (Nod))
-            and then not Has_Completion (Entity (Nod))
-            and then not (Present (Full_View (Entity (Nod)))
-                           and then Has_Completion (Full_View (Entity (Nod))))
-          then
-             Error_Msg_NE
-               ("premature use of& in call or instance", N, Entity (Nod));
- 
-          elsif Nkind (Nod) = N_Attribute_Reference then
-             Analyze (Prefix (Nod));
- 
-             if Is_Entity_Name (Prefix (Nod))
-               and then Is_Type (Entity (Prefix (Nod)))
-             then
-                if Expander_Active then
-                   Check_Fully_Declared (Entity (Prefix (Nod)), N);
-                end if;
- 
-                Freeze_Before (N, Entity (Prefix (Nod)));
-             end if;
-          end if;
- 
-          return OK;
-       end Find_Constant;
- 
-       procedure Check_Deferred is new Traverse_Proc (Find_Constant);
- 
-       --  Local variables
- 
-       Decl : Node_Id;
- 
-    --  Start of processing for Check_Expression_Function
- 
-    begin
-       Decl := Original_Node (Unit_Declaration_Node (Nam));
- 
-       --  The subprogram body created for the expression function is not
-       --  itself a freeze point.
- 
-       if Scope (Nam) = Current_Scope
-         and then Nkind (Decl) = N_Expression_Function
-         and then Nkind (N) /= N_Subprogram_Body
-       then
-          Check_Deferred (Expression (Decl));
-       end if;
-    end Check_Expression_Function;
- 
     --------------------------------
     -- Check_Inherited_Conditions --
     --------------------------------
--- 1409,1414 ----
*************** package body Freeze is
*** 2802,2818 ****
     -----------------------
  
     procedure Freeze_And_Append
!      (Ent    : Entity_Id;
!       N      : Node_Id;
!       Result : in out List_Id)
     is
!       --  Freezing an Expression_Function does not freeze its profile:
!       --  the formals will have been frozen otherwise before the E_F
!       --  can be called.
  
-       L : constant List_Id :=
-         Freeze_Entity
-           (Ent, N, Do_Freeze_Profile => not Is_Expression_Function (Ent));
     begin
        if Is_Non_Empty_List (L) then
           if Result = No_List then
--- 2723,2735 ----
     -----------------------
  
     procedure Freeze_And_Append
!      (Ent               : Entity_Id;
!       N                 : Node_Id;
!       Result            : in out List_Id;
!       Do_Freeze_Profile : Boolean := True)
     is
!       L : constant List_Id := Freeze_Entity (Ent, N, Do_Freeze_Profile);
  
     begin
        if Is_Non_Empty_List (L) then
           if Result = No_List then
*************** package body Freeze is
*** 2841,2850 ****
        Pack         : constant Entity_Id := Scope (T);
  
     begin
-       if Ekind (T) = E_Function then
-          Check_Expression_Function (N, T);
-       end if;
- 
        if Is_Non_Empty_List (Freeze_Nodes) then
  
           --  If the entity is a type declared in an inner package, it may be
--- 2758,2763 ----
*************** package body Freeze is
*** 2893,2899 ****
        Result : List_Id := No_List;
        --  List of freezing actions, left at No_List if none
  
!       Test_E : Entity_Id := E;
        --  A local temporary used to test if freezing is necessary for E, since
        --  its value can be set to something other than E in certain cases. For
        --  example, E cannot be used directly in cases such as when it is an
--- 2806,2812 ----
        Result : List_Id := No_List;
        --  List of freezing actions, left at No_List if none
  
!       Test_E : Entity_Id;
        --  A local temporary used to test if freezing is necessary for E, since
        --  its value can be set to something other than E in certain cases. For
        --  example, E cannot be used directly in cases such as when it is an
*************** package body Freeze is
*** 3194,3200 ****
                      A  => Aspect_No_Parts);
              end if;
  
!             --  Examine aspects specifications on private type declarations
  
              --  Should Find_Aspect be improved to handle this case ???
  
--- 3107,3113 ----
                      A  => Aspect_No_Parts);
              end if;
  
!             --  Examine aspect specifications on private type declarations
  
              --  Should Find_Aspect be improved to handle this case ???
  
*************** package body Freeze is
*** 4770,4776 ****
              end if;
  
              if not From_Limited_With (F_Type)
!               and then Should_Freeze_Type (F_Type, E, N)
              then
                 Freeze_And_Append (F_Type, N, Result);
              end if;
--- 4683,4689 ----
              end if;
  
              if not From_Limited_With (F_Type)
!               and then Should_Freeze_Type (F_Type, N)
              then
                 Freeze_And_Append (F_Type, N, Result);
              end if;
*************** package body Freeze is
*** 4942,4948 ****
                 Set_Etype (E, R_Type);
              end if;
  
!             if Should_Freeze_Type (R_Type, E, N) then
                 Freeze_And_Append (R_Type, N, Result);
              end if;
  
--- 4855,4861 ----
                 Set_Etype (E, R_Type);
              end if;
  
!             if Should_Freeze_Type (R_Type, N) then
                 Freeze_And_Append (R_Type, N, Result);
              end if;
  
*************** package body Freeze is
*** 6529,6534 ****
--- 6442,6450 ----
          and then Is_Record_Type (Underlying_Type (Scope (E)))
        then
           Test_E := Underlying_Type (Scope (E));
+ 
+       else
+          Test_E := E;
        end if;
  
        --  Do not freeze if already frozen since we only need one freeze node
*************** package body Freeze is
*** 8326,8363 ****
        if Is_Type (E) then
           Freeze_And_Append (First_Subtype (E), N, Result);
  
!          --  If we just froze a tagged non-class-wide record, then freeze the
!          --  corresponding class-wide type. This must be done after the tagged
!          --  type itself is frozen, because the class-wide type refers to the
!          --  tagged type which generates the class.
  
!          --  For a tagged type, freeze explicitly those primitive operations
!          --  that are expression functions, which otherwise have no clear
!          --  freeze point: these have to be frozen before the dispatch table
!          --  for the type is built, and before any explicit call to the
!          --  primitive, which would otherwise be the freeze point for it.
  
!          if Is_Tagged_Type (E)
!            and then not Is_Class_Wide_Type (E)
!            and then Present (Class_Wide_Type (E))
!          then
!             Freeze_And_Append (Class_Wide_Type (E), N, Result);
  
              declare
!                Ops  : constant Elist_Id := Primitive_Operations (E);
  
                 Elmt : Elmt_Id;
                 Subp : Entity_Id;
  
              begin
!                if Ops /= No_Elist  then
                    Elmt := First_Elmt (Ops);
                    while Present (Elmt) loop
                       Subp := Node (Elmt);
                       if Is_Expression_Function (Subp) then
!                         Freeze_And_Append (Subp, N, Result);
                       end if;
- 
                       Next_Elmt (Elmt);
                    end loop;
                 end if;
--- 8242,8285 ----
        if Is_Type (E) then
           Freeze_And_Append (First_Subtype (E), N, Result);
  
!          --  When a tagged type is frozen, the corresponding class-wide type
!          --  is frozen as well (RM 13.14(15)). This must be done after the
!          --  tagged type itself is frozen, because the class-wide type refers
!          --  to the tagged type which generates the class.
  
!          --  When a tagged type is frozen, the primitive subprograms of the
!          --  type are frozen; for each such subprogram that is an expression
!          --  function, its expression causes freezing (RM 13.14(15.1)).
  
!          --  Note that we explicitly freeze only expression functions here for
!          --  historical reasons; other primitive subprograms are frozen later,
!          --  by means of other freezing mechanisms.
  
+          if Is_Tagged_Type (E) and then not Is_Class_Wide_Type (E) then
              declare
!                Ops : constant Elist_Id := Primitive_Operations (E);
  
                 Elmt : Elmt_Id;
                 Subp : Entity_Id;
  
              begin
!                if Present (Class_Wide_Type (E)) then
!                   Freeze_And_Append (Class_Wide_Type (E), N, Result);
!                end if;
! 
!                if Present (Ops) then
                    Elmt := First_Elmt (Ops);
                    while Present (Elmt) loop
                       Subp := Node (Elmt);
                       if Is_Expression_Function (Subp) then
!                         Freeze_And_Append
!                           (Subp, N, Result, Do_Freeze_Profile => False);
!                         Freeze_Expr_Types
!                           (Expr   => Expression_Of_Expression_Function (Subp),
!                            N      => N,
!                            Def_Id => Subp,
!                            Result => Result);
                       end if;
                       Next_Elmt (Elmt);
                    end loop;
                 end if;
*************** package body Freeze is
*** 8616,8621 ****
--- 8538,8550 ----
           then
              return True;
  
+          --  This is the body of a Default_Initial_Condition procedure
+ 
+          elsif Present (Corresponding_Spec (P))
+            and then Is_DIC_Procedure (Corresponding_Spec (P))
+          then
+             return True;
+ 
           --  This is the body of a helper/wrapper built for CW preconditions
  
           elsif Present (Corresponding_Spec (P))
*************** package body Freeze is
*** 8757,8767 ****
                     or else not Comes_From_Source (Entity (N)))
        then
           Nam := Entity (N);
- 
-          if Present (Nam) and then Ekind (Nam) = E_Function then
-             Check_Expression_Function (N, Nam);
-          end if;
- 
        else
           Nam := Empty;
        end if;
--- 8686,8691 ----
*************** package body Freeze is
*** 9299,9304 ****
--- 9223,9237 ----
  
        if Present (Nam) then
           Freeze_Before (P, Nam);
+ 
+          --  Freeze types in expression function (RM 13.14(10.1, 10.2, 10.3))
+ 
+          if Is_Expression_Function (Nam) then
+             Freeze_Expr_Types_Before
+               (N      => P,
+                Expr   => Expression_Of_Expression_Function (Nam),
+                Def_Id => Nam);
+          end if;
        end if;
  
        --  Restore In_Spec_Expression flag
*************** package body Freeze is
*** 9311,9325 ****
     -----------------------
  
     procedure Freeze_Expr_Types
!      (Def_Id : Entity_Id;
!       Typ    : Entity_Id;
!       Expr   : Node_Id;
!       N      : Node_Id)
     is
        function Cloned_Expression return Node_Id;
        --  Build a duplicate of the expression of the return statement that has
        --  no defining entities shared with the original expression.
  
        function Freeze_Type_Refs (Node : Node_Id) return Traverse_Result;
        --  Freeze all types referenced in the subtree rooted at Node
  
--- 9244,9266 ----
     -----------------------
  
     procedure Freeze_Expr_Types
!      (Expr   : Node_Id;
!       N      : Node_Id;
!       Def_Id : Entity_Id;
!       Result : in out List_Id;
!       Before : Boolean := False;
!       Typ    : Entity_Id := Empty)
     is
        function Cloned_Expression return Node_Id;
        --  Build a duplicate of the expression of the return statement that has
        --  no defining entities shared with the original expression.
  
+       procedure Explain_Error;
+       --  Output an explanation of the error as continuation messages
+ 
+       procedure Find_Incomplete_Constant (Node : Node_Id);
+       --  Search for a deferred constant without completion
+ 
        function Freeze_Type_Refs (Node : Node_Id) return Traverse_Result;
        --  Freeze all types referenced in the subtree rooted at Node
  
*************** package body Freeze is
*** 9377,9382 ****
--- 9318,9388 ----
           return Dup_Expr;
        end Cloned_Expression;
  
+       -------------------
+       -- Explain_Error --
+       -------------------
+ 
+       procedure Explain_Error is
+       begin
+          Error_Msg_NE
+            ("\\because expression of function& is frozen here", N, Def_Id);
+          if Nkind (N) = N_Object_Declaration
+            and then Is_Dispatching_Operation (Def_Id)
+          then
+             declare
+                Typ : constant Entity_Id :=
+                        (if Present (Expression (N))
+                         then Etype (Expression (N))
+                         else Etype (Defining_Identifier (N)));
+             begin
+                if Present (Typ) then
+                   Error_Msg_NE
+                     ("\\as a primitive operation of type& frozen here",
+                      N, Typ);
+                end if;
+             end;
+          end if;
+          if Nkind (N) /= N_Expression_Function then
+             Error_Msg_Sloc := Sloc (Def_Id);
+             Error_Msg_NE ("\\expression function& is declared#", N, Def_Id);
+          end if;
+       end Explain_Error;
+ 
+       ------------------------------
+       -- Find_Incomplete_Constant --
+       ------------------------------
+ 
+       procedure Find_Incomplete_Constant (Node : Node_Id) is
+       begin
+          --  When a constant is initialized with the result of a dispatching
+          --  call, the constant declaration is rewritten as a renaming of the
+          --  displaced function result. This scenario is not a premature use of
+          --  a constant even though the Has_Completion flag is not set.
+ 
+          if Is_Entity_Name (Node)
+            and then Present (Entity (Node))
+            and then Ekind (Entity (Node)) = E_Constant
+            and then Scope (Entity (Node)) = Current_Scope
+            and then Nkind (Declaration_Node (Entity (Node))) =
+                                                          N_Object_Declaration
+            and then not Is_Imported (Entity (Node))
+            and then not Has_Completion (Entity (Node))
+            and then not
+              (Present (Full_View (Entity (Node)))
+                and then (Has_Completion (Full_View (Entity (Node)))
+                           or else
+                             Declaration_Node (Full_View (Entity (Node))) = N))
+          then
+             Error_Msg_NE
+               ("deferred constant& is frozen before completion",
+                N, Entity (Node));
+ 
+             Explain_Error;
+ 
+             Set_Is_Frozen (Entity (Node));
+          end if;
+       end Find_Incomplete_Constant;
+ 
        ----------------------
        -- Freeze_Type_Refs --
        ----------------------
*************** package body Freeze is
*** 9391,9396 ****
--- 9397,9406 ----
  
           procedure Check_And_Freeze_Type (Typ : Entity_Id) is
           begin
+             if Is_Frozen (Typ) then
+                return;
+             end if;
+ 
              --  Skip Itypes created by the preanalysis, and itypes whose
              --  scope is another type (i.e. component subtypes that depend
              --  on a discriminant),
*************** package body Freeze is
*** 9406,9422 ****
              --  whose compilation fails much later. Refine the error message if
              --  possible.
  
!             Check_Fully_Declared (Typ, Node);
  
!             if Error_Posted (Node) then
                 if Has_Private_Component (Typ)
                   and then not Is_Private_Type (Typ)
                 then
!                   Error_Msg_NE ("\type& has private component", Node, Typ);
                 end if;
  
!             else
                 Freeze_Before (N, Typ);
              end if;
           end Check_And_Freeze_Type;
  
--- 9416,9437 ----
              --  whose compilation fails much later. Refine the error message if
              --  possible.
  
!             Check_Fully_Declared (Typ, N);
  
!             if Error_Posted (N) then
                 if Has_Private_Component (Typ)
                   and then not Is_Private_Type (Typ)
                 then
!                   Error_Msg_NE ("\\type& has private component", N, Typ);
                 end if;
  
!                Explain_Error;
! 
!             elsif Before then
                 Freeze_Before (N, Typ);
+ 
+             else
+                Freeze_And_Append (Typ, N, Result);
              end if;
           end Check_And_Freeze_Type;
  
*************** package body Freeze is
*** 9498,9503 ****
--- 9513,9520 ----
              end;
           end if;
  
+          Find_Incomplete_Constant (Node);
+ 
           --  No point in posting several errors on the same expression
  
           if Serious_Errors_Detected > 0 then
*************** package body Freeze is
*** 9509,9520 ****
  
        procedure Freeze_References is new Traverse_Proc (Freeze_Type_Refs);
  
-       --  Local variables
- 
-       Saved_First_Entity : constant Entity_Id := First_Entity (Def_Id);
-       Saved_Last_Entity  : constant Entity_Id := Last_Entity  (Def_Id);
-       Dup_Expr           : constant Node_Id   := Cloned_Expression;
- 
     --  Start of processing for Freeze_Expr_Types
  
     begin
--- 9526,9531 ----
*************** package body Freeze is
*** 9531,9561 ****
        --  And_Resolve for the sake of consistency with Analyze_Expression_
        --  Function.
  
!       if Def_Id /= Current_Scope then
!          Push_Scope (Def_Id);
!          Install_Formals (Def_Id);
!          Preanalyze_And_Resolve_Spec_Expression (Dup_Expr, Typ);
!          End_Scope;
!       else
!          Preanalyze_And_Resolve_Spec_Expression (Dup_Expr, Typ);
!       end if;
  
!       --  Restore certain attributes of Def_Id since the preanalysis may
!       --  have introduced itypes to this scope, thus modifying attributes
!       --  First_Entity and Last_Entity.
  
!       Set_First_Entity (Def_Id, Saved_First_Entity);
!       Set_Last_Entity  (Def_Id, Saved_Last_Entity);
  
!       if Present (Last_Entity (Def_Id)) then
!          Set_Next_Entity (Last_Entity (Def_Id), Empty);
!       end if;
  
!       --  Freeze all types referenced in the expression
  
!       Freeze_References (Dup_Expr);
     end Freeze_Expr_Types;
  
     -----------------------------
     -- Freeze_Fixed_Point_Type --
     -----------------------------
--- 9542,9606 ----
        --  And_Resolve for the sake of consistency with Analyze_Expression_
        --  Function.
  
!       if Present (Typ) then
!          declare
!             Saved_First_Entity : constant Entity_Id := First_Entity (Def_Id);
!             Saved_Last_Entity  : constant Entity_Id := Last_Entity  (Def_Id);
!             Dup_Expr           : constant Node_Id   := Cloned_Expression;
  
!          begin
!             if Def_Id /= Current_Scope then
!                Push_Scope (Def_Id);
!                Install_Formals (Def_Id);
!                Preanalyze_And_Resolve_Spec_Expression (Dup_Expr, Typ);
!                End_Scope;
!             else
!                Preanalyze_And_Resolve_Spec_Expression (Dup_Expr, Typ);
!             end if;
  
!             --  Restore certain attributes of Def_Id since the preanalysis may
!             --  have introduced itypes to this scope, thus modifying attributes
!             --  First_Entity and Last_Entity.
  
!             Set_First_Entity (Def_Id, Saved_First_Entity);
!             Set_Last_Entity  (Def_Id, Saved_Last_Entity);
  
!             if Present (Last_Entity (Def_Id)) then
!                Set_Next_Entity (Last_Entity (Def_Id), Empty);
!             end if;
  
!             --  Freeze all types referenced in the expression
! 
!             Freeze_References (Dup_Expr);
!          end;
! 
!       else
!          Freeze_References (Expr);
!       end if;
     end Freeze_Expr_Types;
  
+    ------------------------------
+    -- Freeze_Expr_Types_Before --
+    ------------------------------
+ 
+    procedure Freeze_Expr_Types_Before
+      (N      : Node_Id;
+       Expr   : Node_Id;
+       Def_Id : Entity_Id;
+       Typ    : Entity_Id := Empty)
+    is
+       Dummy : List_Id := No_List;
+ 
+    begin
+       Freeze_Expr_Types
+         (Expr   => Expr,
+          N      => N,
+          Def_Id => Def_Id,
+          Result => Dummy,
+          Before => True,
+          Typ    => Typ);
+    end Freeze_Expr_Types_Before;
+ 
     -----------------------------
     -- Freeze_Fixed_Point_Type --
     -----------------------------
*************** package body Freeze is
*** 11047,11147 ****
     -- Should_Freeze_Type --
     ------------------------
  
!    function Should_Freeze_Type
!      (Typ : Entity_Id;
!       E   : Entity_Id;
!       N   : Node_Id) return Boolean
!    is
!       Decl : constant Node_Id :=
!         (if Ekind (E) = E_Subprogram_Type and then No (Parent (E))
!           then Empty
!           else Original_Node (Unit_Declaration_Node (E)));
! 
!       function Is_Dispatching_Call_Or_Tagged_Result_Or_Aggregate
!         (N : Node_Id) return Traverse_Result;
!       --  Return Abandon if N is a dispatching call to a subprogram
!       --  declared in the same scope as Typ, or a tagged result that
!       --  needs specific expansion, or an aggregate whose type is Typ.
! 
!       function Check_Freezing is new
!         Traverse_Func (Is_Dispatching_Call_Or_Tagged_Result_Or_Aggregate);
!       --  Return Abandon if the input expression requires freezing Typ
! 
!       function Within_Simple_Return_Statement (N : Node_Id) return Boolean;
!       --  Determine whether N is the expression of a simple return statement,
!       --  or the dependent expression of a conditional expression which is
!       --  the expression of a simple return statement, including recursively.
! 
!       -------------------------------------------------------
!       -- Is_Dispatching_Call_Or_Tagged_Result_Or_Aggregate --
!       -------------------------------------------------------
! 
!       function Is_Dispatching_Call_Or_Tagged_Result_Or_Aggregate
!         (N : Node_Id) return Traverse_Result
!       is
!       begin
!          if Nkind (N) = N_Function_Call
!            and then Present (Controlling_Argument (N))
!            and then Scope (Entity (Original_Node (Name (N)))) = Scope (Typ)
!          then
!             return Abandon;
! 
!          --  The expansion done in Expand_Simple_Function_Return will assign
!          --  the tag to the result in this case.
! 
!          elsif Is_Conversion_Or_Reference_To_Formal (N)
!            and then Within_Simple_Return_Statement (N)
!            and then Etype (N) = Typ
!            and then Is_Tagged_Type (Typ)
!            and then not Is_Class_Wide_Type (Typ)
!          then
!             return Abandon;
! 
!          elsif Nkind (N) in N_Aggregate
!                           | N_Delta_Aggregate
!                           | N_Extension_Aggregate
!            and then Base_Type (Etype (N)) = Base_Type (Typ)
!          then
!             return Abandon;
! 
!          else
!             return OK;
!          end if;
!       end Is_Dispatching_Call_Or_Tagged_Result_Or_Aggregate;
! 
!       ------------------------------------
!       -- Within_Simple_Return_Statement --
!       ------------------------------------
! 
!       function Within_Simple_Return_Statement (N : Node_Id) return Boolean is
!          Par : constant Node_Id := Parent (N);
! 
!       begin
!          if Nkind (Par) = N_Simple_Return_Statement then
!             return True;
! 
!          elsif Nkind (Par) = N_Case_Expression_Alternative then
!             return Within_Simple_Return_Statement (Parent (Par));
! 
!          elsif Nkind (Par) = N_If_Expression
!            and then N /= First (Expressions (Par))
!          then
!             return Within_Simple_Return_Statement (Par);
! 
!          else
!             return False;
!          end if;
!       end Within_Simple_Return_Statement;
! 
!    --  Start of processing for Should_Freeze_Type
! 
     begin
        return Within_Scope (Typ, Current_Scope)
          or else (Nkind (N) = N_Subprogram_Renaming_Declaration
!                   and then Present (Corresponding_Formal_Spec (N)))
!         or else (Present (Decl)
!                   and then Nkind (Decl) = N_Expression_Function
!                   and then Check_Freezing (Expression (Decl)) = Abandon);
     end Should_Freeze_Type;
  
     ------------------
--- 11092,11102 ----
     -- Should_Freeze_Type --
     ------------------------
  
!    function Should_Freeze_Type (Typ : Entity_Id; N : Node_Id) return Boolean is
     begin
        return Within_Scope (Typ, Current_Scope)
          or else (Nkind (N) = N_Subprogram_Renaming_Declaration
!                   and then Present (Corresponding_Formal_Spec (N)));
     end Should_Freeze_Type;
  
     ------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/freeze.ads gcc-17-20260531/gcc/ada/freeze.ads
*** gcc-17-20260524/gcc/ada/freeze.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/freeze.ads	Sun May 31 22:32:04 2026
*************** package Freeze is
*** 226,241 ****
     --  so need to be similarly treated. Freeze_Expression takes care of
     --  determining the proper insertion point for generated freeze actions.
  
!    procedure Freeze_Expr_Types
!      (Def_Id : Entity_Id;
!       Typ    : Entity_Id;
        Expr   : Node_Id;
!       N      : Node_Id);
!    --  N is the body constructed for an expression function that is a
!    --  completion, and Def_Id is the function being completed.
     --  This procedure freezes before N all the types referenced in Expr,
!    --  which is either the expression of the expression function, or
!    --  the expression in a pre/post aspect that applies to Def_Id;
  
     procedure Freeze_Fixed_Point_Type (Typ : Entity_Id);
     --  Freeze fixed point type. For fixed-point types, we have to defer
--- 226,246 ----
     --  so need to be similarly treated. Freeze_Expression takes care of
     --  determining the proper insertion point for generated freeze actions.
  
!    procedure Freeze_Expr_Types_Before
!      (N      : Node_Id;
        Expr   : Node_Id;
!       Def_Id : Entity_Id;
!       Typ    : Entity_Id := Empty);
     --  This procedure freezes before N all the types referenced in Expr,
!    --  which is either the expression of the expression function Def_Id,
!    --  or the expression in a pre/post aspect that applies to Def_Id.
! 
!    --  If Typ is present, it is the type used to preanalyze and resolve a
!    --  copy of Expr; if it is not, Expr is assumed to be already analyzed.
! 
!    --  Check that the expression does not include references to deferred
!    --  constants without completion. We report this at the freeze point of
!    --  the function, to provide a better error message.
  
     procedure Freeze_Fixed_Point_Type (Typ : Entity_Id);
     --  Freeze fixed point type. For fixed-point types, we have to defer
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/Make-lang.in gcc-17-20260531/gcc/ada/gcc-interface/Make-lang.in
*** gcc-17-20260524/gcc/ada/gcc-interface/Make-lang.in	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/Make-lang.in	Sun May 31 22:32:04 2026
*************** GNAT_ADA_OBJS =	\
*** 331,336 ****
--- 331,337 ----
   ada/err_vars.o	\
   ada/errid.o \
   ada/errid-diagnostic_repository.o \
+  ada/errid-restriction_repository.o \
   ada/errid-switch_repository.o \
   ada/errout.o	\
   ada/erroutc.o	\
*************** GNATBIND_OBJS = \
*** 623,628 ****
--- 624,630 ----
   ada/err_vars.o   \
   ada/errid.o      \
   ada/errid-diagnostic_repository.o \
+  ada/errid-restriction_repository.o \
   ada/errid-switch_repository.o \
   ada/errout.o     \
   ada/erroutc.o    \
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/Makefile.in gcc-17-20260531/gcc/ada/gcc-interface/Makefile.in
*** gcc-17-20260524/gcc/ada/gcc-interface/Makefile.in	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/Makefile.in	Sun May 31 22:32:04 2026
*************** GNATMAKE_OBJS = a-except.o ali.o ali-uti
*** 332,342 ****
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
!  switch.o switch-m.o table.o targparm.o tempdir.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o warnsw.o \
   seinfo.o einfo-entities.o einfo-utils.o sinfo-nodes.o sinfo-utils.o \
   errid.o \
   errid-diagnostic_repository.o \
   errid-switch_repository.o \
   erroutc-pretty_emitter.o \
   erroutc-sarif_emitter.o \
--- 332,343 ----
   s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
!  switch.o switch-m.o table.o targparm.o types.o uintp.o \
   uname.o urealp.o usage.o widechar.o warnsw.o \
   seinfo.o einfo-entities.o einfo-utils.o sinfo-nodes.o sinfo-utils.o \
   errid.o \
   errid-diagnostic_repository.o \
+  errid-restriction_repository.o \
   errid-switch_repository.o \
   erroutc-pretty_emitter.o \
   erroutc-sarif_emitter.o \
*************** $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib
*** 642,649 ****
  	    $(OSCONS_EXTRACT) ; \
  	    ../bldtools/oscons/xoscons s-oscons)
  
! gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
  	test -f $(RTSDIR)/s-oscons.ads || exit 1
  # C files
  	$(MAKE) -C $(RTSDIR) \
  		CC="$(GCC_FOR_ADA_RTS)" \
--- 643,657 ----
  	    $(OSCONS_EXTRACT) ; \
  	    ../bldtools/oscons/xoscons s-oscons)
  
! $(RTSDIR)/a-intnam.ads: ../stamp-gnatlib1-$(RTSDIR)
! 	touch $@
! 
! $(RTSDIR)/s-intnam.ads: $(fsrcdir)/ada/xsintnam.sed $(RTSDIR)/a-intnam.ads
! 	sed -f $(fsrcdir)/ada/xsintnam.sed $(RTSDIR)/a-intnam.ads > $@
! 
! gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads $(RTSDIR)/s-intnam.ads
  	test -f $(RTSDIR)/s-oscons.ads || exit 1
+ 	test -f $(RTSDIR)/s-intnam.ads || exit 1
  # C files
  	$(MAKE) -C $(RTSDIR) \
  		CC="$(GCC_FOR_ADA_RTS)" \
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/decl.cc gcc-17-20260531/gcc/ada/gcc-interface/decl.cc
*** gcc-17-20260524/gcc/ada/gcc-interface/decl.cc	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/decl.cc	Sun May 31 22:32:04 2026
*************** components_to_record (Node_Id gnat_compo
*** 8919,8925 ****
       self-referential/variable offset or misaligned.  Note, in the latter
       case, that this can only happen in packed record types so the alignment
       is effectively capped to the byte for the whole record.  But we don't
!      do it for packed record types if not all fixed-size fiels can be packed
       and for non-packed record types if pragma Optimize_Alignment (Space) is
       specified, because this can prevent alignment gaps from being filled.
  
--- 8919,8925 ----
       self-referential/variable offset or misaligned.  Note, in the latter
       case, that this can only happen in packed record types so the alignment
       is effectively capped to the byte for the whole record.  But we don't
!      do it for packed record types if not all fixed-size fields can be packed
       and for non-packed record types if pragma Optimize_Alignment (Space) is
       specified, because this can prevent alignment gaps from being filled.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/misc.cc gcc-17-20260531/gcc/ada/gcc-interface/misc.cc
*** gcc-17-20260524/gcc/ada/gcc-interface/misc.cc	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/misc.cc	Sun May 31 22:32:04 2026
*************** gnat_get_array_descr_info (const_tree co
*** 912,921 ****
  
        if (is_array)
  	{
! 	  /* GDB does not handle very well the self-referencial bound
  	     expressions we are able to generate here for XUA types (they are
  	     used only by XUP encodings) so avoid them in this case.  Note that
! 	     there are two cases where we generate self-referencial bound
  	     expressions:  arrays that are constrained by record discriminants
  	     and XUA types.  */
  	  if (TYPE_CONTEXT (first_dimen)
--- 912,921 ----
  
        if (is_array)
  	{
! 	  /* GDB does not handle very well the self-referential bound
  	     expressions we are able to generate here for XUA types (they are
  	     used only by XUP encodings) so avoid them in this case.  Note that
! 	     there are two cases where we generate self-referential bound
  	     expressions:  arrays that are constrained by record discriminants
  	     and XUA types.  */
  	  if (TYPE_CONTEXT (first_dimen)
*************** get_array_bit_stride (tree comp_type)
*** 1021,1027 ****
    if (RECORD_OR_UNION_TYPE_P (comp_type) && !TYPE_FAT_POINTER_P (comp_type))
      return TYPE_ADA_SIZE (comp_type);
  
!   /* The gnat_get_array_descr_info debug hook expects a debug tyoe.  */
    comp_type = maybe_debug_type (comp_type);
  
    /* Otherwise, see if this is an array we can analyze; if it's not, punt.  */
--- 1021,1027 ----
    if (RECORD_OR_UNION_TYPE_P (comp_type) && !TYPE_FAT_POINTER_P (comp_type))
      return TYPE_ADA_SIZE (comp_type);
  
!   /* The gnat_get_array_descr_info debug hook expects a debug type.  */
    comp_type = maybe_debug_type (comp_type);
  
    /* Otherwise, see if this is an array we can analyze; if it's not, punt.  */
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/trans.cc gcc-17-20260531/gcc/ada/gcc-interface/trans.cc
*** gcc-17-20260524/gcc/ada/gcc-interface/trans.cc	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/trans.cc	Sun May 31 22:32:04 2026
*************** Loop_Statement_to_gnu (Node_Id gnat_node
*** 3224,3230 ****
        gnat_pushlevel ();
  
        /* If we use the special induction variable, create it and set it to
! 	 its initial value.  Morever, the regular iteration variable cannot
  	 itself be initialized, lest the initial value wrapped around.  */
        if (use_iv)
  	{
--- 3224,3230 ----
        gnat_pushlevel ();
  
        /* If we use the special induction variable, create it and set it to
! 	 its initial value.  Moreover, the regular iteration variable cannot
  	 itself be initialized, lest the initial value wrapped around.  */
        if (use_iv)
  	{
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8439,8445 ****
  	  /* Get the value to use as the address and save it as the equivalent
  	     for the object; when it is frozen, gnat_to_gnu_entity will do the
  	     right thing.  For a subprogram, put the naked address but build a
! 	     meaningfull expression for an object in case its address is taken
  	     before the Freeze node is encountered; this can happen if the type
  	     of the object is limited and it is initialized with the result of
  	     a function call.  */
--- 8439,8445 ----
  	  /* Get the value to use as the address and save it as the equivalent
  	     for the object; when it is frozen, gnat_to_gnu_entity will do the
  	     right thing.  For a subprogram, put the naked address but build a
! 	     meaningful expression for an object in case its address is taken
  	     before the Freeze node is encountered; this can happen if the type
  	     of the object is limited and it is initialized with the result of
  	     a function call.  */
diff -Nrcpad gcc-17-20260524/gcc/ada/gcc-interface/utils.cc gcc-17-20260531/gcc/ada/gcc-interface/utils.cc
*** gcc-17-20260524/gcc/ada/gcc-interface/utils.cc	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gcc-interface/utils.cc	Sun May 31 22:32:04 2026
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 937,943 ****
    /* Mark functions really nested in another function, that is to say defined
       there as opposed to imported from elsewhere, as initially needing a static
       chain for the sake of uniformity (lower_nested_functions will recompute it
!      exacly later) and as private to the translation unit (the static chain may
       be clobbered by calling conventions used across translation units).  */
    if (TREE_CODE (decl) == FUNCTION_DECL
        && !DECL_EXTERNAL (decl)
--- 937,943 ----
    /* Mark functions really nested in another function, that is to say defined
       there as opposed to imported from elsewhere, as initially needing a static
       chain for the sake of uniformity (lower_nested_functions will recompute it
!      exactly later) and as private to the translation unit (the static chain may
       be clobbered by calling conventions used across translation units).  */
    if (TREE_CODE (decl) == FUNCTION_DECL
        && !DECL_EXTERNAL (decl)
*************** maybe_pad_type (tree type, tree size, un
*** 1857,1863 ****
  	}
  
        /* There is no need to show what we are a subtype of when outputting as
! 	 few encodings as possible: regular debugging infomation makes this
  	 redundant.  */
        if (gnat_encodings == DWARF_GNAT_ENCODINGS_ALL)
  	{
--- 1857,1863 ----
  	}
  
        /* There is no need to show what we are a subtype of when outputting as
! 	 few encodings as possible: regular debugging information makes this
  	 redundant.  */
        if (gnat_encodings == DWARF_GNAT_ENCODINGS_ALL)
  	{
*************** finish_record_type (tree record_type, tr
*** 2383,2389 ****
  	     the REP part of a record with a variant part for which the
  	     variant part has a rep clause but not the fixed part, in
  	     which case this REP part may contain overlapping fields
! 	     and thus needs to be treated like a union tyoe above, so
  	     use a MAX in that case.  Also, if this field is a variant
  	     part, we need to take into account the previous size in
  	     the case of empty variants.  */
--- 2383,2389 ----
  	     the REP part of a record with a variant part for which the
  	     variant part has a rep clause but not the fixed part, in
  	     which case this REP part may contain overlapping fields
! 	     and thus needs to be treated like a union type above, so
  	     use a MAX in that case.  Also, if this field is a variant
  	     part, we need to take into account the previous size in
  	     the case of empty variants.  */
*************** process_deferred_decl_context (bool forc
*** 3588,3594 ****
  	  processed = true;
  	}
  
!       /* If this node has been successfuly processed, remove it from the
  	 queue.  Then move to the next node.  */
        if (processed)
  	{
--- 3588,3594 ----
  	  processed = true;
  	}
  
!       /* If this node has been successfully processed, remove it from the
  	 queue.  Then move to the next node.  */
        if (processed)
  	{
diff -Nrcpad gcc-17-20260524/gcc/ada/gen_il-fields.ads gcc-17-20260531/gcc/ada/gen_il-fields.ads
*** gcc-17-20260524/gcc/ada/gen_il-fields.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gen_il-fields.ads	Sun May 31 22:32:04 2026
*************** package Gen_IL.Fields is
*** 233,239 ****
        Is_Accessibility_Actual,
        Is_Analyzed_Pragma,
        Is_Asynchronous_Call_Block,
-       Is_Boolean_Aspect,
        Is_Checked,
        Is_Checked_Ghost_Pragma,
        Is_Component_Left_Opnd,
--- 233,238 ----
*************** package Gen_IL.Fields is
*** 384,389 ****
--- 383,389 ----
        SCIL_Tag_Value,
        SCIL_Target_Prim,
        Scope,
+       Scope_Link,
        Select_Alternatives,
        Selector_Name,
        Selector_Names,
diff -Nrcpad gcc-17-20260524/gcc/ada/gen_il-gen-gen_entities.adb gcc-17-20260531/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-17-20260524/gcc/ada/gen_il-gen-gen_entities.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gen_il-gen-gen_entities.adb	Sun May 31 22:32:04 2026
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 942,948 ****
          Sm (Extra_Accessibility_Of_Result, Node_Id),
          Sm (Extra_Formals, Node_Id),
          Sm (Extra_Formals_Known, Flag),
!         Sm (Needs_No_Actuals, Flag)));
  
     Ab (Overloadable_Kind, Entity_Kind,
         (Sm (Renamed_Or_Alias, Node_Id),
--- 942,949 ----
          Sm (Extra_Accessibility_Of_Result, Node_Id),
          Sm (Extra_Formals, Node_Id),
          Sm (Extra_Formals_Known, Flag),
!         Sm (Needs_No_Actuals, Flag),
!         Sm (Scope_Depth_Value, Unat)));
  
     Ab (Overloadable_Kind, Entity_Kind,
         (Sm (Renamed_Or_Alias, Node_Id),
diff -Nrcpad gcc-17-20260524/gcc/ada/gen_il-gen-gen_nodes.adb gcc-17-20260531/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-17-20260524/gcc/ada/gen_il-gen-gen_nodes.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gen_il-gen-gen_nodes.adb	Sun May 31 22:32:04 2026
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 364,370 ****
  
     Cc (N_Expression_With_Actions, N_Subexpr,
         (Sy (Actions, List_Id, Default_No_List),
!         Sy (Expression, Node_Id, Default_Empty)));
  
     Cc (N_External_Initializer, N_Subexpr,
         (Sy (File_Index, Source_File_Index)));
--- 364,371 ----
  
     Cc (N_Expression_With_Actions, N_Subexpr,
         (Sy (Actions, List_Id, Default_No_List),
!         Sy (Expression, Node_Id, Default_Empty),
!         Sm (Scope_Link, Node_Id)));
  
     Cc (N_External_Initializer, N_Subexpr,
         (Sy (File_Index, Source_File_Index)));
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1143,1149 ****
          Sm (Aspect_Subprograms, Elist_Id),
          Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity
          Sm (Expression_Copy, Node_Id),
-         Sm (Is_Boolean_Aspect, Flag),
          Sm (Is_Checked, Flag),
          Sm (Is_Delayed_Aspect, Flag),
          Sm (Is_Disabled, Flag),
--- 1144,1149 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/ghost.adb gcc-17-20260531/gcc/ada/ghost.adb
*** gcc-17-20260524/gcc/ada/ghost.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/ghost.adb	Sun May 31 22:32:04 2026
*************** package body Ghost is
*** 334,341 ****
  
              --  Local variables
  
!             Subp_Decl : Node_Id;
!             Subp_Id   : Entity_Id;
  
           --  Start of processing for Is_OK_Declaration
  
--- 334,340 ----
  
              --  Local variables
  
!             Subp_Id : Entity_Id;
  
           --  Start of processing for Is_OK_Declaration
  
*************** package body Ghost is
*** 398,414 ****
                    elsif Is_Predicate_Function (Subp_Id) then
                       return True;
  
!                   else
!                      Subp_Decl :=
!                        Original_Node (Unit_Declaration_Node (Subp_Id));
! 
!                      --  The original context is an expression function that
!                      --  has been split into a spec and a body. The context is
!                      --  OK as long as the initial declaration is Ghost.
  
!                      if Nkind (Subp_Decl) = N_Expression_Function then
!                         return Is_Ghost_Declaration (Subp_Decl);
!                      end if;
                    end if;
  
                 --  Otherwise this is either an internal body or an internal
--- 397,409 ----
                    elsif Is_Predicate_Function (Subp_Id) then
                       return True;
  
!                   --  The original context is an expression function that
!                   --  has been split into a spec and a body. The context is
!                   --  OK as long as the initial declaration is Ghost.
  
!                   elsif Is_Expression_Function (Subp_Id) then
!                      return Is_Ghost_Declaration
!                              (Original_Node (Unit_Declaration_Node (Subp_Id)));
                    end if;
  
                 --  Otherwise this is either an internal body or an internal
*************** package body Ghost is
*** 810,816 ****
--- 805,816 ----
           --  Local variables
  
           Applic_Policy : Ghost_Mode_Type := Ghost_Config.Ghost_Mode;
+          Asp_Entity : Entity_Id := Empty;
+          Asp_Entity_Level : Entity_Id := Empty;
           Ghost_Region  : constant Node_Id := Ghost_Config.Current_Region;
+          Region_Level    : constant Entity_Id :=
+            Ghost_Config.Ghost_Mode_Assertion_Level;
+          Id_Level  : constant Entity_Id := Ghost_Assertion_Level (Id);
  
        --  Start of processing for Check_Ghost_Policy
  
*************** package body Ghost is
*** 849,861 ****
              Error_Msg_NE ("\& used # with ghost policy `Ignore`", Ref, Id);
           end if;
  
!          --  A ghost entity E shall not be referenced within an aspect
!          --  specification [(including an aspect-specifying pragma)] which
!          --  specifies an aspect of an entity that is either non-ghost or not
!          --  assertion-level-dependent on E except in the following cases the
!          --  specified aspect is either Global, Depends, Refined_Global,
!          --  Refined_Depends, Initializes, Refined_State, or Iterable (SPARK RM
!          --  6.9(14)).
  
           if No (Ghost_Region)
             or else (Nkind (Ghost_Region) = N_Pragma
--- 849,860 ----
              Error_Msg_NE ("\& used # with ghost policy `Ignore`", Ref, Id);
           end if;
  
!          --  If the assertion policy applicable to the declaration of a Ghost
!          --  entity is Ignore, then the assertion policy applicable to any
!          --  reference to that entity shall be Ignore except if the reference
!          --  occurs in an aspect specification for the aspects Global, Depends,
!          --  Refined_Global, Refined_Depends, Initializes, or Refined_State
!          --  (SPARK RM 6.9(18)).
  
           if No (Ghost_Region)
             or else (Nkind (Ghost_Region) = N_Pragma
*************** package body Ghost is
*** 878,883 ****
--- 877,925 ----
              Error_Msg_Sloc := Sloc (Ref);
              Error_Msg_NE ("\& used # with ghost policy `Check`", Ref, Id);
           end if;
+ 
+          --  A ghost entity E shall not be referenced within an aspect
+          --  specification [(including an aspect-specifying pragma)] which
+          --  specifies an aspect of an entity that is either non-ghost or not
+          --  assertion-level-dependent on E except in the following cases the
+          --  specified aspect is either Global, Depends, Refined_Global,
+          --  Refined_Depends, Initializes, Refined_State, or Iterable (SPARK RM
+          --  6.9(14)).
+ 
+          if No (Region_Level)
+            or else No (Id_Level)
+            or else Nkind (Ghost_Region) /= N_Pragma
+            or else No (Corresponding_Aspect (Ghost_Region))
+          then
+             return;
+          end if;
+ 
+          Asp_Entity := Entity (Corresponding_Aspect (Ghost_Region));
+ 
+          if Present (Asp_Entity) then
+             Asp_Entity_Level := Ghost_Assertion_Level (Asp_Entity);
+          end if;
+ 
+          --  The level of the aspect should be compatible with the identifier
+          --  unless it is already compatible with entity attached to the
+          --  aspect. This is because if that entity is ignored then also all of
+          --  the aspects attached to it are also ignored.
+ 
+          if not Is_Assertion_Level_Dependent (Region_Level, Id_Level)
+            and then
+              (No (Asp_Entity)
+               or else No (Asp_Entity_Level)
+               or else
+                 not Is_Assertion_Level_Dependent (Asp_Entity_Level, Id_Level))
+          then
+             Error_Msg_N (Assertion_Level_Error_Msg, Ref);
+             Error_Msg_Name_1 := Chars (Id_Level);
+             Error_Msg_NE ("\& has assertion level %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\& is used within a region with %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\assertion level of & should depend on %", Ref, Id);
+          end if;
        end Check_Ghost_Policy;
  
        -----------------------------------
*************** package body Ghost is
*** 1025,1080 ****
        end if;
     end Check_Ghost_Context_In_Generic_Association;
  
!    -----------------------------------
!    -- Check_Valid_Ghost_Declaration --
!    -----------------------------------
! 
!    procedure Check_Valid_Ghost_Declaration (N : Node_Id) is
!       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id);
!       --  Check that the the assertion level of the declared entity is
!       --  compatible with assertion level of the ghost region.
! 
!       ---------------------------------
!       -- Check_Valid_Assertion_Level --
!       ---------------------------------
  
!       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id) is
!          Id_Level     : constant Entity_Id := Ghost_Assertion_Level (Id);
!          Region_Level : constant Entity_Id :=
!            Ghost_Config.Ghost_Mode_Assertion_Level;
!       begin
!          --  This check is not applied for generic isntantiations
  
!          if Is_Generic_Instance (Id) then
!             return;
!          end if;
  
!          if not Is_Assertion_Level_Dependent (Id_Level, Region_Level) then
!             Error_Msg_Sloc := Sloc (Ref);
  
!             Error_Msg_N (Assertion_Level_Error_Msg, Ref);
!             Error_Msg_Name_1 := Chars (Id_Level);
!             Error_Msg_NE ("\& has assertion level %", Ref, Id);
!             Error_Msg_Name_1 := Chars (Region_Level);
!             Error_Msg_NE ("\& is declared within a region with %", Ref, Id);
!             Error_Msg_Name_1 := Chars (Region_Level);
!             Error_Msg_NE ("\assertion level of & should depend on %", Ref, Id);
!          end if;
!       end Check_Valid_Assertion_Level;
  
!       --  Local variables
  
!       Id : constant Entity_Id := Defining_Entity (N);
  
!    --  Start of processing for Check_Valid_Ghost_Declaration
!    begin
!       if not Is_Ghost_Entity (Id) or else Ghost_Config.Ghost_Mode = None
!       then
!          return;
        end if;
! 
!       Check_Valid_Assertion_Level (Id, N);
!    end Check_Valid_Ghost_Declaration;
  
     ---------------------------------------------
     -- Check_Ghost_Formal_Procedure_Or_Package --
--- 1067,1105 ----
        end if;
     end Check_Ghost_Context_In_Generic_Association;
  
!    -----------------------------
!    -- Check_Ghost_Equality_Op --
!    -----------------------------
  
!    procedure Check_Ghost_Equality_Op (Eq_Op : Entity_Id; Typ : Entity_Id) is
!    begin
!       if not Is_Ghost_Entity (Eq_Op) then
!          return;
!       end if;
  
!       if not Is_Record_Type (Typ) or else Is_Limited_Record (Typ) then
!          return;
!       end if;
  
!       if not Is_Ghost_Entity (Typ) then
!          Error_Msg_N ("incompatible primitive equaility operation", Eq_Op);
  
!          Error_Msg_N ("\equality operation is defined as ghost", Eq_Op);
  
!          Error_Msg_Sloc := Sloc (Typ);
!          Error_Msg_N ("\but applied to a non-ghost record type #", Eq_Op);
!       elsif Ghost_Assertion_Level (Eq_Op) /= Ghost_Assertion_Level (Typ) then
!          Error_Msg_N (Assertion_Level_Error_Msg, Eq_Op);
  
!          Error_Msg_Name_1 := Chars (Ghost_Assertion_Level (Eq_Op));
!          Error_Msg_N ("\equality operator declared with %", Eq_Op);
  
!          Error_Msg_Name_1 := Chars (Ghost_Assertion_Level (Typ));
!          Error_Msg_Sloc := Sloc (Typ);
!          Error_Msg_NE ("\record type & declared # with %", Eq_Op, Typ);
!          Error_Msg_N ("\& should have the same assertion level", Eq_Op);
        end if;
!    end Check_Ghost_Equality_Op;
  
     ---------------------------------------------
     -- Check_Ghost_Formal_Procedure_Or_Package --
*************** package body Ghost is
*** 1431,1436 ****
--- 1456,1512 ----
        end if;
     end Check_Ghost_Type;
  
+    -----------------------------------
+    -- Check_Valid_Ghost_Declaration --
+    -----------------------------------
+ 
+    procedure Check_Valid_Ghost_Declaration (N : Node_Id) is
+       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id);
+       --  Check that the the assertion level of the declared entity is
+       --  compatible with assertion level of the ghost region.
+ 
+       ---------------------------------
+       -- Check_Valid_Assertion_Level --
+       ---------------------------------
+ 
+       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id) is
+          Id_Level     : constant Entity_Id := Ghost_Assertion_Level (Id);
+          Region_Level : constant Entity_Id :=
+            Ghost_Config.Ghost_Mode_Assertion_Level;
+       begin
+          --  This check is not applied for generic isntantiations
+ 
+          if Is_Generic_Instance (Id) then
+             return;
+          end if;
+ 
+          if not Is_Assertion_Level_Dependent (Id_Level, Region_Level) then
+             Error_Msg_Sloc := Sloc (Ref);
+ 
+             Error_Msg_N (Assertion_Level_Error_Msg, Ref);
+             Error_Msg_Name_1 := Chars (Id_Level);
+             Error_Msg_NE ("\& has assertion level %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\& is declared within a region with %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\assertion level of & should depend on %", Ref, Id);
+          end if;
+       end Check_Valid_Assertion_Level;
+ 
+       --  Local variables
+ 
+       Id : constant Entity_Id := Defining_Entity (N);
+ 
+    --  Start of processing for Check_Valid_Ghost_Declaration
+    begin
+       if not Is_Ghost_Entity (Id) or else Ghost_Config.Ghost_Mode = None
+       then
+          return;
+       end if;
+ 
+       Check_Valid_Assertion_Level (Id, N);
+    end Check_Valid_Ghost_Declaration;
+ 
     ----------------------
     -- Get_Ghost_Aspect --
     ----------------------
*************** package body Ghost is
*** 2026,2032 ****
  
        Check_Ghost_Completion (Prev_Id => Spec_Id, Compl_Id => Body_Id);
  
!       --  Mark the body as its formals as Ghost
  
        Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
  
--- 2102,2108 ----
  
        Check_Ghost_Completion (Prev_Id => Spec_Id, Compl_Id => Body_Id);
  
!       --  Mark the body and its formals as Ghost
  
        Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
  
*************** package body Ghost is
*** 2035,2040 ****
--- 2111,2146 ----
        Install_Ghost_Region (Policy, N, Level);
     end Mark_And_Set_Ghost_Body;
  
+    ----------------------------------------------------
+    -- Mark_And_Set_Ghost_Body_Of_Expression_Function --
+    ----------------------------------------------------
+ 
+    procedure Mark_And_Set_Ghost_Body_Of_Expression_Function
+      (N       : Node_Id;
+       Spec_Id : Entity_Id)
+    is
+       Level : constant Entity_Id := Ghost_Assertion_Level (Spec_Id);
+ 
+       Policy : Name_Id;
+ 
+    begin
+       if Is_Checked_Ghost_Entity (Spec_Id) then
+          Policy := Name_Check;
+       elsif Is_Ignored_Ghost_Entity (Spec_Id) then
+          Policy := Name_Ignore;
+       else
+          Policy := No_Name;
+       end if;
+ 
+       --  Mark the body and its formals as Ghost
+ 
+       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
+ 
+       --  Install the appropriate Ghost region
+ 
+       Install_Ghost_Region (Policy, N, Level);
+    end Mark_And_Set_Ghost_Body_Of_Expression_Function;
+ 
     -----------------------------------
     -- Mark_And_Set_Ghost_Completion --
     -----------------------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/ghost.ads gcc-17-20260531/gcc/ada/ghost.ads
*** gcc-17-20260524/gcc/ada/ghost.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/ghost.ads	Sun May 31 22:32:04 2026
*************** package Ghost is
*** 61,66 ****
--- 61,71 ----
     --  Check that if Actual contains references to ghost entities, generic
     --  formal parameter Formal is ghost (SPARK RM 6.9(13)).
  
+    procedure Check_Ghost_Equality_Op (Eq_Op : Entity_Id; Typ : Entity_Id);
+    --  A user-defined primitive equality operation on a
+    --  non-ghost record type shall not be ghost, unless the
+    --  record type has only limited views. (SPARK RM 6.9(23))
+ 
     procedure Check_Ghost_Formal_Procedure_Or_Package
       (N          : Node_Id;
        Actual     : Entity_Id;
*************** package Ghost is
*** 180,185 ****
--- 185,199 ----
     --
     --  Install the Ghost mode of the body. This routine starts a Ghost region
     --  and must be used with routine Restore_Ghost_Region.
+ 
+    procedure Mark_And_Set_Ghost_Body_Of_Expression_Function
+      (N       : Node_Id;
+       Spec_Id : Entity_Id);
+    --  Mark the subprogram body N generated for an expression function Spec_Id
+    --  that is not a completion as Ghost when Spec_Id is a Ghost entity.
+    --
+    --  Install the Ghost mode of the body. This routine starts a Ghost region
+    --  and must be used with routine Restore_Ghost_Region.
  
     procedure Mark_And_Set_Ghost_Completion
       (N       : Node_Id;
diff -Nrcpad gcc-17-20260524/gcc/ada/gnat1drv.adb gcc-17-20260531/gcc/ada/gnat1drv.adb
*** gcc-17-20260524/gcc/ada/gnat1drv.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gnat1drv.adb	Sun May 31 22:32:04 2026
*************** procedure Gnat1drv is
*** 527,538 ****
                 Warnsw.Warning_Doc_Switch,
               others => False));
  
-          --  Suppress the generation of name tables for enumerations, which are
-          --  not needed for formal verification, and fall outside the SPARK
-          --  subset (use of pointers).
- 
-          Global_Discard_Names := True;
- 
           --  Suppress the expansion of tagged types and dispatching calls,
           --  which lead to the generation of non-SPARK code (use of pointers),
           --  which is more complex to formally verify than the original source.
--- 527,532 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/gnat_rm.texi gcc-17-20260531/gcc/ada/gnat_rm.texi
*** gcc-17-20260524/gcc/ada/gnat_rm.texi	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gnat_rm.texi	Sun May 31 22:32:04 2026
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Jan 09, 2026
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , May 19, 2026
  
  AdaCore
  
*************** included in the section entitled @ref{1,
*** 67,72 ****
--- 67,73 ----
  * Implementation Defined Attributes:: 
  * Standard and Implementation Defined Restrictions:: 
  * Implementation Advice:: 
+ * GNAT Implementation Mode (the -gnatg switch): GNAT Implementation Mode the -gnatg switch. 
  * Implementation Defined Characteristics:: 
  * Intrinsic Subprograms:: 
  * Representation Clauses and Pragmas:: 
*************** Implementation Advice
*** 638,643 ****
--- 639,657 ----
  * RM G.2.6(15); Complex Arithmetic Accuracy: RM G 2 6 15 Complex Arithmetic Accuracy. 
  * RM H.6(15/2); Pragma Partition_Elaboration_Policy: RM H 6 15/2 Pragma Partition_Elaboration_Policy. 
  
+ GNAT Implementation Mode (the -gnatg switch)
+ 
+ * Language & Semantic Changes:: 
+ 
+ Language & Semantic Changes
+ 
+ * Ada Version and Identifier Rules:: 
+ * Limited Types:: 
+ * Preelaboration and Categorization:: 
+ * Overflow:: 
+ * Miscellaneous:: 
+ * ALI Files and Recompilation:: 
+ 
  Intrinsic Subprograms
  
  * Intrinsic Operators:: 
*************** Curated Extensions
*** 912,917 ****
--- 926,932 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  * Generalized Finalization:: 
  
  Deep delta Aggregates
*************** follow since it cannot be provided on al
*** 1088,1149 ****
  undesirable on some systems.
  
  @item 
! @ref{b,,Implementation Defined Characteristics}, provides a guide to
  minimizing implementation dependent features.
  
  @item 
! @ref{c,,Intrinsic Subprograms}, describes the intrinsic subprograms
  implemented by GNAT, and how they can be imported into user
  application programs.
  
  @item 
! @ref{d,,Representation Clauses and Pragmas}, describes in detail the
  way that GNAT represents data, and in particular the exact set
  of representation clauses and pragmas that is accepted.
  
  @item 
! @ref{e,,Standard Library Routines}, provides a listing of packages and a
  brief description of the functionality that is provided by Ada’s
  extensive set of standard library routines as implemented by GNAT.
  
  @item 
! @ref{f,,The Implementation of Standard I/O}, details how the GNAT
  implementation of the input-output facilities.
  
  @item 
! @ref{10,,The GNAT Library}, is a catalog of packages that complement
  the Ada predefined library.
  
  @item 
! @ref{11,,Interfacing to Other Languages}, describes how programs
  written in Ada using GNAT can be interfaced to other programming
  languages.
  
  @item 
! @ref{12,,Specialized Needs Annexes}, describes the GNAT implementation of all
  of the specialized needs annexes.
  
  @item 
! @ref{13,,Implementation of Specific Ada Features}, discusses issues related
  to GNAT’s implementation of machine code insertions, tasking, and several
  other features.
  
  @item 
! @ref{14,,Implementation of Ada 2022 Features}, describes the status of the
  GNAT implementation of the Ada 2022 language standard.
  
  @item 
! @ref{15,,Security Hardening Features} documents GNAT extensions aimed
  at security hardening.
  
  @item 
! @ref{16,,Obsolescent Features} documents implementation dependent features,
  including pragmas and attributes, which are considered obsolescent, since
  there are other preferred ways of achieving the same results. These
  obsolescent forms are retained for backwards compatibility.
  
  @item 
! @ref{17,,Compatibility and Porting Guide} presents some guidelines for
  developing portable Ada code, describes the compatibility issues that
  may arise between GNAT and other Ada compilation systems (including those
  for Ada 83), and shows how GNAT can expedite porting applications
--- 1103,1168 ----
  undesirable on some systems.
  
  @item 
! @ref{b,,GNAT Implementation Mode (the -gnatg switch)} details the features and restrictions that
! are enabled while building the compiler and its runtime libraries.
! 
! @item 
! @ref{c,,Implementation Defined Characteristics}, provides a guide to
  minimizing implementation dependent features.
  
  @item 
! @ref{d,,Intrinsic Subprograms}, describes the intrinsic subprograms
  implemented by GNAT, and how they can be imported into user
  application programs.
  
  @item 
! @ref{e,,Representation Clauses and Pragmas}, describes in detail the
  way that GNAT represents data, and in particular the exact set
  of representation clauses and pragmas that is accepted.
  
  @item 
! @ref{f,,Standard Library Routines}, provides a listing of packages and a
  brief description of the functionality that is provided by Ada’s
  extensive set of standard library routines as implemented by GNAT.
  
  @item 
! @ref{10,,The Implementation of Standard I/O}, details how the GNAT
  implementation of the input-output facilities.
  
  @item 
! @ref{11,,The GNAT Library}, is a catalog of packages that complement
  the Ada predefined library.
  
  @item 
! @ref{12,,Interfacing to Other Languages}, describes how programs
  written in Ada using GNAT can be interfaced to other programming
  languages.
  
  @item 
! @ref{13,,Specialized Needs Annexes}, describes the GNAT implementation of all
  of the specialized needs annexes.
  
  @item 
! @ref{14,,Implementation of Specific Ada Features}, discusses issues related
  to GNAT’s implementation of machine code insertions, tasking, and several
  other features.
  
  @item 
! @ref{15,,Implementation of Ada 2022 Features}, describes the status of the
  GNAT implementation of the Ada 2022 language standard.
  
  @item 
! @ref{16,,Security Hardening Features} documents GNAT extensions aimed
  at security hardening.
  
  @item 
! @ref{17,,Obsolescent Features} documents implementation dependent features,
  including pragmas and attributes, which are considered obsolescent, since
  there are other preferred ways of achieving the same results. These
  obsolescent forms are retained for backwards compatibility.
  
  @item 
! @ref{18,,Compatibility and Porting Guide} presents some guidelines for
  developing portable Ada code, describes the compatibility issues that
  may arise between GNAT and other Ada compilation systems (including those
  for Ada 83), and shows how GNAT can expedite porting applications
*************** All three reference manuals are included
*** 1166,1172 ****
  package.
  
  @node Conventions,Related Information,What This Reference Manual Contains,About This Guide
! @anchor{gnat_rm/about_this_guide conventions}@anchor{18}
  @section Conventions
  
  
--- 1185,1191 ----
  package.
  
  @node Conventions,Related Information,What This Reference Manual Contains,About This Guide
! @anchor{gnat_rm/about_this_guide conventions}@anchor{19}
  @section Conventions
  
  
*************** comprising the @code{$} character follow
*** 1213,1219 ****
  @end itemize
  
  @node Related Information,,Conventions,About This Guide
! @anchor{gnat_rm/about_this_guide related-information}@anchor{19}
  @section Related Information
  
  
--- 1232,1238 ----
  @end itemize
  
  @node Related Information,,Conventions,About This Guide
! @anchor{gnat_rm/about_this_guide related-information}@anchor{1a}
  @section Related Information
  
  
*************** compiler system.
*** 1259,1265 ****
  @end itemize
  
  @node Implementation Defined Pragmas,Implementation Defined Aspects,About This Guide,Top
! @anchor{gnat_rm/implementation_defined_pragmas doc}@anchor{1a}@anchor{gnat_rm/implementation_defined_pragmas id1}@anchor{1b}@anchor{gnat_rm/implementation_defined_pragmas implementation-defined-pragmas}@anchor{7}
  @chapter Implementation Defined Pragmas
  
  
--- 1278,1284 ----
  @end itemize
  
  @node Implementation Defined Pragmas,Implementation Defined Aspects,About This Guide,Top
! @anchor{gnat_rm/implementation_defined_pragmas doc}@anchor{1b}@anchor{gnat_rm/implementation_defined_pragmas id1}@anchor{1c}@anchor{gnat_rm/implementation_defined_pragmas implementation-defined-pragmas}@anchor{7}
  @chapter Implementation Defined Pragmas
  
  
*************** consideration, the use of these pragmas
*** 1493,1499 ****
  @end menu
  
  @node Pragma Abort_Defer,Pragma Abstract_State,,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-abort-defer}@anchor{1c}
  @section Pragma Abort_Defer
  
  
--- 1512,1518 ----
  @end menu
  
  @node Pragma Abort_Defer,Pragma Abstract_State,,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-abort-defer}@anchor{1d}
  @section Pragma Abort_Defer
  
  
*************** end;
*** 1526,1532 ****
  @end example
  
  @node Pragma Abstract_State,Pragma Ada_83,Pragma Abort_Defer,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id2}@anchor{1d}@anchor{gnat_rm/implementation_defined_pragmas pragma-abstract-state}@anchor{1e}
  @section Pragma Abstract_State
  
  
--- 1545,1551 ----
  @end example
  
  @node Pragma Abstract_State,Pragma Ada_83,Pragma Abort_Defer,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id2}@anchor{1e}@anchor{gnat_rm/implementation_defined_pragmas pragma-abstract-state}@anchor{1f}
  @section Pragma Abstract_State
  
  
*************** For the semantics of this pragma, see th
*** 1576,1582 ****
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  @node Pragma Ada_83,Pragma Ada_95,Pragma Abstract_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-83}@anchor{1f}
  @section Pragma Ada_83
  
  
--- 1595,1601 ----
  the SPARK 2014 Reference Manual, section 7.1.4.
  
  @node Pragma Ada_83,Pragma Ada_95,Pragma Abstract_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-83}@anchor{20}
  @section Pragma Ada_83
  
  
*************** by GNAT in Ada 83 mode will in fact comp
*** 1610,1616 ****
  required by Ada 83.
  
  @node Pragma Ada_95,Pragma Ada_05,Pragma Ada_83,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-95}@anchor{20}
  @section Pragma Ada_95
  
  
--- 1629,1635 ----
  required by Ada 83.
  
  @node Pragma Ada_95,Pragma Ada_05,Pragma Ada_83,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-95}@anchor{21}
  @section Pragma Ada_95
  
  
*************** package body (see RM 10.1.5(8)); it must
*** 1634,1640 ****
  package body.
  
  @node Pragma Ada_05,Pragma Ada_2005,Pragma Ada_95,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-05}@anchor{21}
  @section Pragma Ada_05
  
  
--- 1653,1659 ----
  package body.
  
  @node Pragma Ada_05,Pragma Ada_2005,Pragma Ada_95,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-05}@anchor{22}
  @section Pragma Ada_05
  
  
*************** otherwise legal pre-Ada_2005 programs. T
*** 1668,1674 ****
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2005,Pragma Ada_12,Pragma Ada_05,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2005}@anchor{22}
  @section Pragma Ada_2005
  
  
--- 1687,1693 ----
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2005,Pragma Ada_12,Pragma Ada_05,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2005}@anchor{23}
  @section Pragma Ada_2005
  
  
*************** This configuration pragma is a synonym f
*** 1682,1688 ****
  same syntax and effect.
  
  @node Pragma Ada_12,Pragma Ada_2012,Pragma Ada_2005,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-12}@anchor{23}
  @section Pragma Ada_12
  
  
--- 1701,1707 ----
  same syntax and effect.
  
  @node Pragma Ada_12,Pragma Ada_2012,Pragma Ada_2005,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-12}@anchor{24}
  @section Pragma Ada_12
  
  
*************** otherwise legal pre-Ada_2012 programs. T
*** 1718,1724 ****
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2012,Pragma Ada_2022,Pragma Ada_12,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{24}
  @section Pragma Ada_2012
  
  
--- 1737,1743 ----
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Ada_2012,Pragma Ada_2022,Pragma Ada_12,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{25}
  @section Pragma Ada_2012
  
  
*************** This configuration pragma is a synonym f
*** 1732,1738 ****
  same syntax and effect.
  
  @node Pragma Ada_2022,Pragma Aggregate_Individually_Assign,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2022}@anchor{25}
  @section Pragma Ada_2022
  
  
--- 1751,1757 ----
  same syntax and effect.
  
  @node Pragma Ada_2022,Pragma Aggregate_Individually_Assign,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2022}@anchor{26}
  @section Pragma Ada_2022
  
  
*************** otherwise legal pre-Ada_2022 programs. T
*** 1768,1774 ****
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2022,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{26}
  @section Pragma Aggregate_Individually_Assign
  
  
--- 1787,1793 ----
  intended for exclusive use in the GNAT run-time library.
  
  @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2022,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{27}
  @section Pragma Aggregate_Individually_Assign
  
  
*************** this behavior so that record aggregates
*** 1784,1790 ****
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Always_Terminates,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{27}
  @section Pragma Allow_Integer_Address
  
  
--- 1803,1809 ----
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Always_Terminates,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{28}
  @section Pragma Allow_Integer_Address
  
  
*************** rather than rejected to allow common set
*** 1834,1840 ****
  in the two situations.
  
  @node Pragma Always_Terminates,Pragma Annotate,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{28}@anchor{gnat_rm/implementation_defined_pragmas pragma-always-terminates}@anchor{29}
  @section Pragma Always_Terminates
  
  
--- 1853,1859 ----
  in the two situations.
  
  @node Pragma Always_Terminates,Pragma Annotate,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{29}@anchor{gnat_rm/implementation_defined_pragmas pragma-always-terminates}@anchor{2a}
  @section Pragma Always_Terminates
  
  
*************** For the semantics of this pragma, see th
*** 1848,1854 ****
  in the SPARK 2014 Reference Manual, section 6.1.11.
  
  @node Pragma Annotate,Pragma Assert,Pragma Always_Terminates,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{2a}@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{2b}
  @section Pragma Annotate
  
  
--- 1867,1873 ----
  in the SPARK 2014 Reference Manual, section 6.1.11.
  
  @node Pragma Annotate,Pragma Assert,Pragma Always_Terminates,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{2b}@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{2c}
  @section Pragma Annotate
  
  
*************** external tools. The use of pragma Annota
*** 1882,1888 ****
  process in any way. This pragma may be used as a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2c}
  @section Pragma Assert
  
  
--- 1901,1907 ----
  process in any way. This pragma may be used as a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2d}
  @section Pragma Assert
  
  
*************** with an assertion level. See SPARK 2014
*** 1952,1958 ****
  11.4.2.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Level,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2d}
  @section Pragma Assert_And_Cut
  
  
--- 1971,1977 ----
  11.4.2.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Level,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2e}
  @section Pragma Assert_And_Cut
  
  
*************** except that in an @code{Assertion_Policy
*** 1970,1976 ****
  (or disabled).
  
  The intention is that this be used within a subprogram when the
! given test expresion sums up all the work done so far in the
  subprogram, so that the rest of the subprogram can be verified
  (informally or formally) using only the entry preconditions,
  and the expression in this pragma. This allows dividing up
--- 1989,1995 ----
  (or disabled).
  
  The intention is that this be used within a subprogram when the
! given test expression sums up all the work done so far in the
  subprogram, so that the rest of the subprogram can be verified
  (informally or formally) using only the entry preconditions,
  and the expression in this pragma. This allows dividing up
*************** with an assertion level. See SPARK 2014
*** 1983,1989 ****
  11.4.2.
  
  @node Pragma Assertion_Level,Pragma Assertion_Policy,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-level}@anchor{2e}
  @section Pragma Assertion_Level
  
  
--- 2002,2008 ----
  11.4.2.
  
  @node Pragma Assertion_Level,Pragma Assertion_Policy,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-level}@anchor{2f}
  @section Pragma Assertion_Level
  
  
*************** For the semantics of this pragma, see th
*** 2002,2008 ****
  section 11.4.3.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assertion_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2f}
  @section Pragma Assertion_Policy
  
  
--- 2021,2027 ----
  section 11.4.3.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assertion_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{30}
  @section Pragma Assertion_Policy
  
  
*************** applies to @code{Assert}, @code{Assert_A
*** 2093,2099 ****
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{30}
  @section Pragma Assume
  
  
--- 2112,2118 ----
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{31}
  @section Pragma Assume
  
  
*************** with an assertion level. See SPARK 2014
*** 2131,2137 ****
  11.4.2.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{31}
  @section Pragma Assume_No_Invalid_Values
  
  
--- 2150,2156 ----
  11.4.2.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{32}
  @section Pragma Assume_No_Invalid_Values
  
  
*************** is erroneous so there are no guarantees
*** 2184,2190 ****
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{32}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{33}
  @section Pragma Async_Readers
  
  
--- 2203,2209 ----
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{33}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{34}
  @section Pragma Async_Readers
  
  
*************** For the semantics of this pragma, see th
*** 2198,2204 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{34}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{35}
  @section Pragma Async_Writers
  
  
--- 2217,2223 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{35}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{36}
  @section Pragma Async_Writers
  
  
*************** For the semantics of this pragma, see th
*** 2212,2218 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{36}
  @section Pragma Attribute_Definition
  
  
--- 2231,2237 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{37}
  @section Pragma Attribute_Definition
  
  
*************** code to be written that takes advantage
*** 2238,2244 ****
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{37}
  @section Pragma C_Pass_By_Copy
  
  
--- 2257,2263 ----
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{38}
  @section Pragma C_Pass_By_Copy
  
  
*************** You can also pass records by copy by spe
*** 2282,2288 ****
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{38}
  @section Pragma Check
  
  
--- 2301,2307 ----
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{39}
  @section Pragma Check
  
  
*************** of these identifiers in @code{Assertion_
*** 2321,2327 ****
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{39}
  @section Pragma Check_Float_Overflow
  
  
--- 2340,2346 ----
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{3a}
  @section Pragma Check_Float_Overflow
  
  
*************** This mode can also be set by use of the
*** 2377,2383 ****
  switch `-gnateF'.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{3a}
  @section Pragma Check_Name
  
  
--- 2396,2402 ----
  switch `-gnateF'.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{3b}
  @section Pragma Check_Name
  
  
*************** Check names introduced by this pragma ar
*** 2413,2419 ****
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{3b}
  @section Pragma Check_Policy
  
  
--- 2432,2438 ----
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{3c}
  @section Pragma Check_Policy
  
  
*************** policy setting @code{DISABLE} causes the
*** 2493,2499 ****
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{3c}
  @section Pragma Comment
  
  
--- 2512,2518 ----
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{3d}
  @section Pragma Comment
  
  
*************** anywhere in the main source unit), and i
*** 2512,2518 ****
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3d}
  @section Pragma Common_Object
  
  
--- 2531,2537 ----
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3e}
  @section Pragma Common_Object
  
  
*************** indicating that the necessary attribute
*** 2544,2550 ****
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas compile-time-error}@anchor{3e}@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3f}
  @section Pragma Compile_Time_Error
  
  
--- 2563,2569 ----
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas compile-time-error}@anchor{3f}@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{40}
  @section Pragma Compile_Time_Error
  
  
*************** the value given as the second argument.
*** 2571,2577 ****
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Complete_Representation,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{40}
  @section Pragma Compile_Time_Warning
  
  
--- 2590,2596 ----
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Complete_Representation,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{41}
  @section Pragma Compile_Time_Warning
  
  
*************** for example that it is not fully impleme
*** 2598,2608 ****
  
  In previous versions of the compiler, combining `-gnatwe' with
  Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
! a warning. You can use @ref{3e,,Pragma Compile_Time_Error} to force the generation of
  an error.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{41}
  @section Pragma Complete_Representation
  
  
--- 2617,2627 ----
  
  In previous versions of the compiler, combining `-gnatwe' with
  Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
! a warning. You can use @ref{3f,,Pragma Compile_Time_Error} to force the generation of
  an error.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{42}
  @section Pragma Complete_Representation
  
  
*************** complete, and that this invariant is mai
*** 2621,2627 ****
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{42}
  @section Pragma Complex_Representation
  
  
--- 2640,2646 ----
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{43}
  @section Pragma Complex_Representation
  
  
*************** records by pointer, and the use of this
*** 2643,2649 ****
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{43}
  @section Pragma Component_Alignment
  
  
--- 2662,2668 ----
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{44}
  @section Pragma Component_Alignment
  
  
*************** pragma @code{Pack}, pragma @code{Compone
*** 2734,2740 ****
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{44}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{45}
  @section Pragma Constant_After_Elaboration
  
  
--- 2753,2759 ----
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{45}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{46}
  @section Pragma Constant_After_Elaboration
  
  
*************** For the semantics of this pragma, see th
*** 2748,2754 ****
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{46}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{47}
  @section Pragma Contract_Cases
  
  
--- 2767,2773 ----
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{47}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{48}
  @section Pragma Contract_Cases
  
  
*************** with an assertion level. See SPARK 2014
*** 2837,2843 ****
  11.4.2.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{48}
  @section Pragma Convention_Identifier
  
  
--- 2856,2862 ----
  11.4.2.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{49}
  @section Pragma Convention_Identifier
  
  
*************** define a convention identifier @code{Lib
*** 2873,2879 ****
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{49}
  @section Pragma CPP_Class
  
  
--- 2892,2898 ----
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{4a}
  @section Pragma CPP_Class
  
  
*************** functions (see pragma @code{CPP_Construc
*** 2898,2911 ****
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{4b}
  @section Pragma CPP_Constructor
  
  
--- 2917,2930 ----
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{4b,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{4c}
  @section Pragma CPP_Constructor
  
  
*************** on the Ada side and the type is implicit
*** 2956,2962 ****
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{4a,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
--- 2975,2981 ----
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{4b,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
*************** because the imported C++ constructors al
*** 2965,2971 ****
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4c}
  @section Pragma CPP_Virtual
  
  
--- 2984,2990 ----
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{4d}
  @section Pragma CPP_Virtual
  
  
*************** purposes. It used to be required to ensu
*** 2978,2987 ****
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4d}
  @section Pragma CPP_Vtable
  
  
--- 2997,3006 ----
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4b,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4e}
  @section Pragma CPP_Vtable
  
  
*************** It used to be required to ensure compati
*** 2993,3002 ****
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4a,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4e}
  @section Pragma CPU
  
  
--- 3012,3021 ----
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{4b,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4f}
  @section Pragma CPU
  
  
*************** versions of Ada as an implementation-def
*** 3011,3017 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Deadline_Floor,Pragma Debug,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4f}
  @section Pragma Deadline_Floor
  
  
--- 3030,3036 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Deadline_Floor,Pragma Debug,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{50}
  @section Pragma Deadline_Floor
  
  
*************** deadline inherited by a task when the ta
*** 3026,3032 ****
  It is effective only when the EDF scheduling policy is used.
  
  @node Pragma Debug,Pragma Debug_Policy,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{50}
  @section Pragma Debug
  
  
--- 3045,3051 ----
  It is effective only when the EDF scheduling policy is used.
  
  @node Pragma Debug,Pragma Debug_Policy,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{51}
  @section Pragma Debug
  
  
*************** with an assertion level. See SPARK 2014
*** 3058,3064 ****
  11.4.2.
  
  @node Pragma Debug_Policy,Pragma Default_Initial_Condition,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{51}
  @section Pragma Debug_Policy
  
  
--- 3077,3083 ----
  11.4.2.
  
  @node Pragma Debug_Policy,Pragma Default_Initial_Condition,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{52}
  @section Pragma Debug_Policy
  
  
*************** with a first argument of @code{Debug}. I
*** 3073,3079 ****
  compatibility reasons.
  
  @node Pragma Default_Initial_Condition,Pragma Default_Scalar_Storage_Order,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{52}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{53}
  @section Pragma Default_Initial_Condition
  
  
--- 3092,3098 ----
  compatibility reasons.
  
  @node Pragma Default_Initial_Condition,Pragma Default_Scalar_Storage_Order,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{53}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{54}
  @section Pragma Default_Initial_Condition
  
  
*************** with an assertion level. See SPARK 2014
*** 3091,3097 ****
  11.4.2.
  
  @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{54}
  @section Pragma Default_Scalar_Storage_Order
  
  
--- 3110,3116 ----
  11.4.2.
  
  @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{55}
  @section Pragma Default_Scalar_Storage_Order
  
  
*************** it may significantly degrade the run-tim
*** 3164,3170 ****
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{55}
  @section Pragma Default_Storage_Pool
  
  
--- 3183,3189 ----
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{56}
  @section Pragma Default_Storage_Pool
  
  
*************** versions of Ada as an implementation-def
*** 3181,3187 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{56}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{57}
  @section Pragma Depends
  
  
--- 3200,3206 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{57}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{58}
  @section Pragma Depends
  
  
*************** For the semantics of this pragma, see th
*** 3214,3220 ****
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{58}
  @section Pragma Detect_Blocking
  
  
--- 3233,3239 ----
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{59}
  @section Pragma Detect_Blocking
  
  
*************** blocking operations within a protected o
*** 3232,3238 ****
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{59}
  @section Pragma Disable_Atomic_Synchronization
  
  
--- 3251,3257 ----
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{5a}
  @section Pragma Disable_Atomic_Synchronization
  
  
*************** until the end of the scope. If an @code{
*** 3261,3267 ****
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{5a}
  @section Pragma Dispatching_Domain
  
  
--- 3280,3286 ----
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{5b}
  @section Pragma Dispatching_Domain
  
  
*************** versions of Ada as an implementation-def
*** 3276,3282 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5b}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5c}
  @section Pragma Effective_Reads
  
  
--- 3295,3301 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5c}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{5d}
  @section Pragma Effective_Reads
  
  
*************** For the semantics of this pragma, see th
*** 3290,3296 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{5d}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5e}
  @section Pragma Effective_Writes
  
  
--- 3309,3315 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{5e}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5f}
  @section Pragma Effective_Writes
  
  
*************** For the semantics of this pragma, see th
*** 3304,3310 ****
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5f}
  @section Pragma Elaboration_Checks
  
  
--- 3323,3329 ----
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{60}
  @section Pragma Elaboration_Checks
  
  
*************** effect. If the pragma argument is @code{
*** 3341,3347 ****
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{60}
  @section Pragma Eliminate
  
  
--- 3360,3366 ----
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{61}
  @section Pragma Eliminate
  
  
*************** pragma Eliminate (Q, Proc,
*** 3508,3514 ****
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Exceptional_Cases,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{61}
  @section Pragma Enable_Atomic_Synchronization
  
  
--- 3527,3533 ----
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Exceptional_Cases,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{62}
  @section Pragma Enable_Atomic_Synchronization
  
  
*************** Reenables atomic synchronization; see @c
*** 3524,3530 ****
  for details.
  
  @node Pragma Exceptional_Cases,Pragma Exit_Cases,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-exceptional-cases}@anchor{62}
  @section Pragma Exceptional_Cases
  
  
--- 3543,3549 ----
  for details.
  
  @node Pragma Exceptional_Cases,Pragma Exit_Cases,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-exceptional-cases}@anchor{63}
  @section Pragma Exceptional_Cases
  
  
*************** For the semantics of this aspect, see th
*** 3544,3550 ****
  6.1.9.
  
  @node Pragma Exit_Cases,Pragma Export_Function,Pragma Exceptional_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-exit-cases}@anchor{63}
  @section Pragma Exit_Cases
  
  
--- 3563,3569 ----
  6.1.9.
  
  @node Pragma Exit_Cases,Pragma Export_Function,Pragma Exceptional_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-exit-cases}@anchor{64}
  @section Pragma Exit_Cases
  
  
*************** For the semantics of this aspect, see th
*** 3568,3574 ****
  6.1.10.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Exit_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{64}
  @section Pragma Export_Function
  
  
--- 3587,3593 ----
  6.1.10.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Exit_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{65}
  @section Pragma Export_Function
  
  
*************** string. In this case, no external name i
*** 3640,3646 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{65}
  @section Pragma Export_Object
  
  
--- 3659,3665 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{66}
  @section Pragma Export_Object
  
  
*************** of portability), but it is not required.
*** 3665,3671 ****
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Valued_Procedure,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{66}
  @section Pragma Export_Procedure
  
  
--- 3684,3690 ----
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Valued_Procedure,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{67}
  @section Pragma Export_Procedure
  
  
*************** string. In this case, no external name i
*** 3718,3724 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{67}
  @section Pragma Export_Valued_Procedure
  
  
--- 3737,3743 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{68}
  @section Pragma Export_Valued_Procedure
  
  
*************** string. In this case, no external name i
*** 3776,3782 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{68}
  @section Pragma Extend_System
  
  
--- 3795,3801 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{69}
  @section Pragma Extend_System
  
  
*************** for compiling System units, as explained
*** 3827,3833 ****
  GNAT User’s Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{69}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{6a}
  @section Pragma Extensions_Allowed
  
  
--- 3846,3852 ----
  GNAT User’s Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6a}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{6b}
  @section Pragma Extensions_Allowed
  
  
*************** pragma takes precedence over the @code{-
*** 3848,3861 ****
  If an argument of @code{"On"} is specified, the latest version of the Ada language
  is implemented (currently Ada 2022) and, in addition, a curated set of GNAT
  specific extensions are recognized. (See the list here
! @ref{6b,,here})
  
  An argument of @code{"All_Extensions"} has the same effect except that some extra
  experimental extensions are enabled (See the list here
! @ref{6c,,here})
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6d}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{6e}
  @section Pragma Extensions_Visible
  
  
--- 3867,3880 ----
  If an argument of @code{"On"} is specified, the latest version of the Ada language
  is implemented (currently Ada 2022) and, in addition, a curated set of GNAT
  specific extensions are recognized. (See the list here
! @ref{6c,,here})
  
  An argument of @code{"All_Extensions"} has the same effect except that some extra
  experimental extensions are enabled (See the list here
! @ref{6d,,here})
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6e}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{6f}
  @section Pragma Extensions_Visible
  
  
*************** For the semantics of this pragma, see th
*** 3869,3875 ****
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{6f}
  @section Pragma External
  
  
--- 3888,3894 ----
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{70}
  @section Pragma External
  
  
*************** used this pragma for exactly the same pu
*** 3890,3896 ****
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{70}
  @section Pragma External_Name_Casing
  
  
--- 3909,3915 ----
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{71}
  @section Pragma External_Name_Casing
  
  
*************** pragma External_Name_Casing (Uppercase,
*** 3979,3985 ****
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{71}
  @section Pragma Fast_Math
  
  
--- 3998,4004 ----
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{72}
  @section Pragma Fast_Math
  
  
*************** under control of the pragma, rather than
*** 4008,4014 ****
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{72}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{73}
  @section Pragma Favor_Top_Level
  
  
--- 4027,4033 ----
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{73}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{74}
  @section Pragma Favor_Top_Level
  
  
*************** When this pragma is used, dynamically ge
*** 4027,4033 ****
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{74}
  @section Pragma Finalize_Storage_Only
  
  
--- 4046,4052 ----
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{75}
  @section Pragma Finalize_Storage_Only
  
  
*************** name. Note that this pragma does not sup
*** 4047,4053 ****
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{75}
  @section Pragma Float_Representation
  
  
--- 4066,4072 ----
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{76}
  @section Pragma Float_Representation
  
  
*************** No other value of digits is permitted.
*** 4082,4088 ****
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{76}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{77}
  @section Pragma Ghost
  
  
--- 4101,4107 ----
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{77}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{78}
  @section Pragma Ghost
  
  
*************** For the semantics of this pragma, see th
*** 4096,4102 ****
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{78}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{79}
  @section Pragma Global
  
  
--- 4115,4121 ----
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{79}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{7a}
  @section Pragma Global
  
  
*************** For the semantics of this pragma, see th
*** 4121,4127 ****
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{7a}
  @section Pragma Ident
  
  
--- 4140,4146 ----
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{7b}
  @section Pragma Ident
  
  
*************** This pragma is identical in effect to pr
*** 4135,4141 ****
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{7b}
  @section Pragma Ignore_Pragma
  
  
--- 4154,4160 ----
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{7c}
  @section Pragma Ignore_Pragma
  
  
*************** pragma allows such pragmas to be ignored
*** 4157,4163 ****
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{7c}
  @section Pragma Implementation_Defined
  
  
--- 4176,4182 ----
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{7d}
  @section Pragma Implementation_Defined
  
  
*************** for the purpose of implementing the No_I
*** 4184,4190 ****
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{7d}
  @section Pragma Implemented
  
  
--- 4203,4209 ----
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{7e}
  @section Pragma Implemented
  
  
*************** By_Any shares the behavior of By_Entry a
*** 4230,4236 ****
  the target’s overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{7e}
  @section Pragma Implicit_Packing
  
  
--- 4249,4255 ----
  the target’s overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{7f}
  @section Pragma Implicit_Packing
  
  
*************** sufficient. The use of pragma Implicit_P
*** 4284,4290 ****
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{7f}
  @section Pragma Import_Function
  
  
--- 4303,4309 ----
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{80}
  @section Pragma Import_Function
  
  
*************** notation.  If the mechanism is not speci
*** 4349,4355 ****
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{80}
  @section Pragma Import_Object
  
  
--- 4368,4374 ----
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{81}
  @section Pragma Import_Object
  
  
*************** point of view).  @code{size} is syntax c
*** 4375,4381 ****
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{81}
  @section Pragma Import_Procedure
  
  
--- 4394,4400 ----
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{82}
  @section Pragma Import_Procedure
  
  
*************** applies to a procedure rather than a fun
*** 4415,4421 ****
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{82}
  @section Pragma Import_Valued_Procedure
  
  
--- 4434,4440 ----
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{83}
  @section Pragma Import_Valued_Procedure
  
  
*************** pragma Import that specifies the desired
*** 4468,4474 ****
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{83}
  @section Pragma Independent
  
  
--- 4487,4493 ----
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{84}
  @section Pragma Independent
  
  
*************** constraints on the representation of the
*** 4490,4496 ****
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{84}
  @section Pragma Independent_Components
  
  
--- 4509,4515 ----
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{85}
  @section Pragma Independent_Components
  
  
*************** constraints on the representation of the
*** 4511,4517 ****
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{85}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{86}
  @section Pragma Initial_Condition
  
  
--- 4530,4536 ----
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{86}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{87}
  @section Pragma Initial_Condition
  
  
*************** with an assertion level. See SPARK 2014
*** 4529,4535 ****
  11.4.2.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{87}
  @section Pragma Initialize_Scalars
  
  
--- 4548,4554 ----
  11.4.2.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{88}
  @section Pragma Initialize_Scalars
  
  
*************** good idea to turn on stack checking (see
*** 4638,4644 ****
  GNAT User’s Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{88}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{89}
  @section Pragma Initializes
  
  
--- 4657,4663 ----
  GNAT User’s Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{89}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{8a}
  @section Pragma Initializes
  
  
*************** For the semantics of this pragma, see th
*** 4665,4671 ****
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{8a}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{8b}
  @section Pragma Inline_Always
  
  
--- 4684,4690 ----
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{8b}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{8c}
  @section Pragma Inline_Always
  
  
*************** apply this pragma to a primitive operati
*** 4684,4690 ****
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{8c}
  @section Pragma Inline_Generic
  
  
--- 4703,4709 ----
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{8d}
  @section Pragma Inline_Generic
  
  
*************** than to check that the given names are a
*** 4702,4708 ****
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{8d}
  @section Pragma Interface
  
  
--- 4721,4727 ----
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{8e}
  @section Pragma Interface
  
  
*************** maintaining Ada 83/Ada 95 compatibility
*** 4729,4735 ****
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{8e}
  @section Pragma Interface_Name
  
  
--- 4748,4754 ----
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{8f}
  @section Pragma Interface_Name
  
  
*************** for an interfaced subprogram, and is pro
*** 4748,4754 ****
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{8f}
  @section Pragma Interrupt_Handler
  
  
--- 4767,4773 ----
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{90}
  @section Pragma Interrupt_Handler
  
  
*************** This program unit pragma is supported fo
*** 4762,4768 ****
  as described in Annex C of the Ada Reference Manual.
  
  @node Pragma Interrupt_State,Pragma Interrupts_System_By_Default,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{90}
  @section Pragma Interrupt_State
  
  
--- 4781,4787 ----
  as described in Annex C of the Ada Reference Manual.
  
  @node Pragma Interrupt_State,Pragma Interrupts_System_By_Default,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{91}
  @section Pragma Interrupt_State
  
  
*************** with an application’s runtime behavior
*** 4848,4854 ****
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Interrupts_System_By_Default,Pragma Invariant,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupts-system-by-default}@anchor{91}
  @section Pragma Interrupts_System_By_Default
  
  
--- 4867,4873 ----
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Interrupts_System_By_Default,Pragma Invariant,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupts-system-by-default}@anchor{92}
  @section Pragma Interrupts_System_By_Default
  
  
*************** Default all interrupts to the System sta
*** 4862,4868 ****
  @code{Interrupt_State}. This is a configuration pragma.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupts_System_By_Default,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{92}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{93}
  @section Pragma Invariant
  
  
--- 4881,4887 ----
  @code{Interrupt_State}. This is a configuration pragma.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupts_System_By_Default,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{93}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{94}
  @section Pragma Invariant
  
  
*************** with an assertion level. See SPARK 2014
*** 4905,4911 ****
  11.4.2.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{94}
  @section Pragma Keep_Names
  
  
--- 4924,4930 ----
  11.4.2.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{95}
  @section Pragma Keep_Names
  
  
*************** use a @code{Discard_Names} pragma in the
*** 4925,4931 ****
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{95}
  @section Pragma License
  
  
--- 4944,4950 ----
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{96}
  @section Pragma License
  
  
*************** GPL, but no warning for @code{GNAT.Socke
*** 5020,5026 ****
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{96}
  @section Pragma Link_With
  
  
--- 5039,5045 ----
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{97}
  @section Pragma Link_With
  
  
*************** separate arguments to the linker. In add
*** 5044,5050 ****
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{97}
  @section Pragma Linker_Alias
  
  
--- 5063,5069 ----
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{98}
  @section Pragma Linker_Alias
  
  
*************** end p;
*** 5085,5091 ****
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{98}
  @section Pragma Linker_Constructor
  
  
--- 5104,5110 ----
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{99}
  @section Pragma Linker_Constructor
  
  
*************** listed above. Where possible, the use of
*** 5115,5121 ****
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{99}
  @section Pragma Linker_Destructor
  
  
--- 5134,5140 ----
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{9a}
  @section Pragma Linker_Destructor
  
  
*************** See @code{pragma Linker_Constructor} for
*** 5138,5144 ****
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9a}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{9b}
  @section Pragma Linker_Section
  
  
--- 5157,5163 ----
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9b}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{9c}
  @section Pragma Linker_Section
  
  
*************** end IO_Card;
*** 5212,5218 ****
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9c}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{9d}
  @section Pragma Lock_Free
  
  
--- 5231,5237 ----
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9d}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{9e}
  @section Pragma Lock_Free
  
  
*************** Ada RM D.3) are not performed when a pro
*** 5275,5281 ****
  unit is executed.
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{9e}
  @section Pragma Loop_Invariant
  
  
--- 5294,5300 ----
  unit is executed.
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{9f}
  @section Pragma Loop_Invariant
  
  
*************** with an assertion level. See SPARK 2014
*** 5312,5318 ****
  11.4.2.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{9f}
  @section Pragma Loop_Optimize
  
  
--- 5331,5337 ----
  11.4.2.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{a0}
  @section Pragma Loop_Optimize
  
  
*************** compiler in order to enable the relevant
*** 5374,5380 ****
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{a0}
  @section Pragma Loop_Variant
  
  
--- 5393,5399 ----
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{a1}
  @section Pragma Loop_Variant
  
  
*************** with an assertion level. See SPARK 2014
*** 5425,5431 ****
  11.4.2.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{a1}
  @section Pragma Machine_Attribute
  
  
--- 5444,5450 ----
  11.4.2.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{a2}
  @section Pragma Machine_Attribute
  
  
*************** which may make this pragma unusable for
*** 5451,5457 ****
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{a2}
  @section Pragma Main
  
  
--- 5470,5476 ----
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{a3}
  @section Pragma Main
  
  
*************** This pragma is provided for compatibilit
*** 5471,5477 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{a3}
  @section Pragma Main_Storage
  
  
--- 5490,5496 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{a4}
  @section Pragma Main_Storage
  
  
*************** This pragma is provided for compatibilit
*** 5490,5496 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a4}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a5}
  @section Pragma Max_Queue_Length
  
  
--- 5509,5515 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a5}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{a6}
  @section Pragma Max_Queue_Length
  
  
*************** entry.
*** 5508,5514 ****
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a6}
  @section Pragma No_Body
  
  
--- 5527,5533 ----
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{a7}
  @section Pragma No_Body
  
  
*************** dummy body with a No_Body pragma ensures
*** 5531,5537 ****
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a7}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a8}
  @section Pragma No_Caching
  
  
--- 5550,5556 ----
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a8}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{a9}
  @section Pragma No_Caching
  
  
*************** For the semantics of this pragma, see th
*** 5545,5551 ****
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a9}
  @section Pragma No_Component_Reordering
  
  
--- 5564,5570 ----
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{aa}
  @section Pragma No_Component_Reordering
  
  
*************** declared in units to which the pragma ap
*** 5564,5570 ****
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{aa}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{ab}
  @section Pragma No_Elaboration_Code_All
  
  
--- 5583,5589 ----
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{ab}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{ac}
  @section Pragma No_Elaboration_Code_All
  
  
*************** current unit, it must also have the @cit
*** 5583,5589 ****
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{ac}
  @section Pragma No_Heap_Finalization
  
  
--- 5602,5608 ----
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{ad}
  @section Pragma No_Heap_Finalization
  
  
*************** lose its @code{No_Heap_Finalization} pra
*** 5615,5621 ****
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Raise,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ad}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{ae}
  @section Pragma No_Inline
  
  
--- 5634,5640 ----
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Raise,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ae}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{af}
  @section Pragma No_Inline
  
  
*************** in particular it is not subject to the u
*** 5633,5639 ****
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Raise,Pragma No_Return,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{af}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-raise}@anchor{b0}
  @section Pragma No_Raise
  
  
--- 5652,5658 ----
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Raise,Pragma No_Return,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b0}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-raise}@anchor{b1}
  @section Pragma No_Raise
  
  
*************** An implementation-defined check named @c
*** 5650,5656 ****
  pragma, and @cite{Program_Error} is raised upon its failure (see RM 11.5(19/5)).
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Raise,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{b1}
  @section Pragma No_Return
  
  
--- 5669,5675 ----
  pragma, and @cite{Program_Error} is raised upon its failure (see RM 11.5(19/5)).
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Raise,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{b2}
  @section Pragma No_Return
  
  
*************** available in all earlier versions of Ada
*** 5677,5683 ****
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{b2}
  @section Pragma No_Strict_Aliasing
  
  
--- 5696,5702 ----
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{b3}
  @section Pragma No_Strict_Aliasing
  
  
*************** in the @cite{GNAT User’s Guide}.
*** 5699,5705 ****
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b3}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{b4}
  @section Pragma No_Tagged_Streams
  
  
--- 5718,5724 ----
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b4}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{b5}
  @section Pragma No_Tagged_Streams
  
  
*************** with empty strings. This is useful to av
*** 5738,5744 ****
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{b5}
  @section Pragma Normalize_Scalars
  
  
--- 5757,5763 ----
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{b6}
  @section Pragma Normalize_Scalars
  
  
*************** will always generate an invalid value if
*** 5820,5826 ****
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{b6}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{b7}
  @section Pragma Obsolescent
  
  
--- 5839,5845 ----
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{b7}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{b8}
  @section Pragma Obsolescent
  
  
*************** So if you specify @code{Entity =>} for t
*** 5916,5922 ****
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b8}
  @section Pragma Optimize_Alignment
  
  
--- 5935,5941 ----
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{b9}
  @section Pragma Optimize_Alignment
  
  
*************** latter are compiled by default in pragma
*** 6002,6008 ****
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{b9}
  @section Pragma Ordered
  
  
--- 6021,6027 ----
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{ba}
  @section Pragma Ordered
  
  
*************** For additional information please refer
*** 6094,6100 ****
  `-gnatw.u' switch in the GNAT User’s Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{ba}
  @section Pragma Overflow_Mode
  
  
--- 6113,6119 ----
  `-gnatw.u' switch in the GNAT User’s Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{bb}
  @section Pragma Overflow_Mode
  
  
*************** The pragma @code{Unsuppress (Overflow_Ch
*** 6133,6139 ****
  overflow checking, but does not affect the overflow mode.
  
  @node Pragma Overriding_Renamings,Pragma Part_Of,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{bb}
  @section Pragma Overriding_Renamings
  
  
--- 6152,6158 ----
  overflow checking, but does not affect the overflow mode.
  
  @node Pragma Overriding_Renamings,Pragma Part_Of,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{bc}
  @section Pragma Overriding_Renamings
  
  
*************** RM 8.3 (15) stipulates that an overridde
*** 6168,6174 ****
  declaration of the overriding operation.
  
  @node Pragma Part_Of,Pragma Partition_Elaboration_Policy,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{bc}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{bd}
  @section Pragma Part_Of
  
  
--- 6187,6193 ----
  declaration of the overriding operation.
  
  @node Pragma Part_Of,Pragma Partition_Elaboration_Policy,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{bd}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{be}
  @section Pragma Part_Of
  
  
*************** For the semantics of this pragma, see th
*** 6184,6190 ****
  SPARK 2014 Reference Manual, section 7.2.6.
  
  @node Pragma Partition_Elaboration_Policy,Pragma Passive,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{be}
  @section Pragma Partition_Elaboration_Policy
  
  
--- 6203,6209 ----
  SPARK 2014 Reference Manual, section 7.2.6.
  
  @node Pragma Partition_Elaboration_Policy,Pragma Passive,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{bf}
  @section Pragma Partition_Elaboration_Policy
  
  
*************** versions of Ada as an implementation-def
*** 6201,6207 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Passive,Pragma Persistent_BSS,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{bf}
  @section Pragma Passive
  
  
--- 6220,6226 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Passive,Pragma Persistent_BSS,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{c0}
  @section Pragma Passive
  
  
*************** For more information on the subject of p
*** 6225,6231 ****
  ‘Passive Task Optimization’ in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{c0}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{c1}
  @section Pragma Persistent_BSS
  
  
--- 6244,6250 ----
  ‘Passive Task Optimization’ in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{c1}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{c2}
  @section Pragma Persistent_BSS
  
  
*************** If this pragma is used on a target where
*** 6256,6262 ****
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{c2}
  @section Pragma Post
  
  
--- 6275,6281 ----
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{c3}
  @section Pragma Post
  
  
*************** with an assertion level. See SPARK 2014
*** 6285,6291 ****
  11.4.2.
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{c3}
  @section Pragma Postcondition
  
  
--- 6304,6310 ----
  11.4.2.
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{c4}
  @section Pragma Postcondition
  
  
*************** checking is enabled.
*** 6442,6448 ****
  
  Note that pragma @code{Postcondition} differs from the language-defined
  @code{Post} aspect (and corresponding @code{Post} pragma) in allowing
! multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier @code{Check}. Historically, pragma
  @code{Postcondition} was implemented prior to the development of
--- 6461,6467 ----
  
  Note that pragma @code{Postcondition} differs from the language-defined
  @code{Post} aspect (and corresponding @code{Post} pragma) in allowing
! multiple occurrences, allowing occurrences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier @code{Check}. Historically, pragma
  @code{Postcondition} was implemented prior to the development of
*************** with an assertion level. See SPARK 2014
*** 6454,6460 ****
  11.4.2.
  
  @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{c4}
  @section Pragma Post_Class
  
  
--- 6473,6479 ----
  11.4.2.
  
  @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{c5}
  @section Pragma Post_Class
  
  
*************** with an assertion level. See SPARK 2014
*** 6493,6499 ****
  11.4.2.
  
  @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c5}
  @section Pragma Pre
  
  
--- 6512,6518 ----
  11.4.2.
  
  @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{c6}
  @section Pragma Pre
  
  
*************** with an assertion level. See SPARK 2014
*** 6522,6528 ****
  11.4.2.
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c6}
  @section Pragma Precondition
  
  
--- 6541,6547 ----
  11.4.2.
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{c7}
  @section Pragma Precondition
  
  
*************** checking is enabled.
*** 6573,6579 ****
  
  Note that pragma @code{Precondition} differs from the language-defined
  @code{Pre} aspect (and corresponding @code{Pre} pragma) in allowing
! multiple occurrences, allowing occurences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier @code{Check}. Historically, pragma
  @code{Precondition} was implemented prior to the development of
--- 6592,6598 ----
  
  Note that pragma @code{Precondition} differs from the language-defined
  @code{Pre} aspect (and corresponding @code{Pre} pragma) in allowing
! multiple occurrences, allowing occurrences in the body even if there
  is a separate spec, and allowing a second string parameter, and the
  use of the pragma identifier @code{Check}. Historically, pragma
  @code{Precondition} was implemented prior to the development of
*************** with an assertion level. See SPARK 2014
*** 6585,6591 ****
  11.4.2.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{c7}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c8}
  @section Pragma Predicate
  
  
--- 6604,6610 ----
  11.4.2.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{c8}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{c9}
  @section Pragma Predicate
  
  
*************** with an assertion level. See SPARK 2014
*** 6643,6649 ****
  11.4.2.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{c9}
  @section Pragma Predicate_Failure
  
  
--- 6662,6668 ----
  11.4.2.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{ca}
  @section Pragma Predicate_Failure
  
  
*************** the language-defined
*** 6660,6666 ****
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{ca}
  @section Pragma Preelaborable_Initialization
  
  
--- 6679,6685 ----
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{cb}
  @section Pragma Preelaborable_Initialization
  
  
*************** versions of Ada as an implementation-def
*** 6675,6681 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{cb}
  @section Pragma Prefix_Exception_Messages
  
  
--- 6694,6700 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{cc}
  @section Pragma Prefix_Exception_Messages
  
  
*************** prefixing in this case, you can always c
*** 6706,6712 ****
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{cc}
  @section Pragma Pre_Class
  
  
--- 6725,6731 ----
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{cd}
  @section Pragma Pre_Class
  
  
*************** with an assertion level. See SPARK 2014
*** 6745,6751 ****
  11.4.2.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{cd}
  @section Pragma Priority_Specific_Dispatching
  
  
--- 6764,6770 ----
  11.4.2.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{ce}
  @section Pragma Priority_Specific_Dispatching
  
  
*************** versions of Ada as an implementation-def
*** 6769,6775 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{ce}
  @section Pragma Profile
  
  
--- 6788,6794 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{cf}
  @section Pragma Profile
  
  
*************** conforming Ada constructs.  The profile
*** 7048,7054 ****
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Program_Exit,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{cf}
  @section Pragma Profile_Warnings
  
  
--- 7067,7073 ----
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Program_Exit,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{d0}
  @section Pragma Profile_Warnings
  
  
*************** violations of the profile generate warni
*** 7066,7072 ****
  of error messages.
  
  @node Pragma Program_Exit,Pragma Propagate_Exceptions,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d0}@anchor{gnat_rm/implementation_defined_pragmas pragma-program-exit}@anchor{d1}
  @section Pragma Program_Exit
  
  
--- 7085,7091 ----
  of error messages.
  
  @node Pragma Program_Exit,Pragma Propagate_Exceptions,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d1}@anchor{gnat_rm/implementation_defined_pragmas pragma-program-exit}@anchor{d2}
  @section Pragma Program_Exit
  
  
*************** For the semantics of this pragma, see th
*** 7080,7086 ****
  in the SPARK 2014 Reference Manual, section 6.1.10.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Program_Exit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{d2}
  @section Pragma Propagate_Exceptions
  
  
--- 7099,7105 ----
  in the SPARK 2014 Reference Manual, section 6.1.10.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Program_Exit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{d3}
  @section Pragma Propagate_Exceptions
  
  
*************** purposes. It used to be used in connecti
*** 7099,7105 ****
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{d3}
  @section Pragma Provide_Shift_Operators
  
  
--- 7118,7124 ----
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{d4}
  @section Pragma Provide_Shift_Operators
  
  
*************** including the function declarations for
*** 7119,7125 ****
  with the pragma Import (Intrinsic, …) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{d4}
  @section Pragma Psect_Object
  
  
--- 7138,7144 ----
  with the pragma Import (Intrinsic, …) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{d5}
  @section Pragma Psect_Object
  
  
*************** EXTERNAL_SYMBOL ::=
*** 7139,7145 ****
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{d6}
  @section Pragma Pure_Function
  
  
--- 7158,7164 ----
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d6}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{d7}
  @section Pragma Pure_Function
  
  
*************** unit is not a Pure unit in the categoriz
*** 7201,7207 ****
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d7}
  @section Pragma Rational
  
  
--- 7220,7226 ----
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{d8}
  @section Pragma Rational
  
  
*************** pragma Profile (Rational);
*** 7219,7225 ****
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d8}
  @section Pragma Ravenscar
  
  
--- 7238,7244 ----
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{d9}
  @section Pragma Ravenscar
  
  
*************** pragma Profile (Ravenscar);
*** 7239,7245 ****
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d9}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{da}
  @section Pragma Refined_Depends
  
  
--- 7258,7264 ----
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{da}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{db}
  @section Pragma Refined_Depends
  
  
*************** For the semantics of this pragma, see th
*** 7272,7278 ****
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{db}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{dc}
  @section Pragma Refined_Global
  
  
--- 7291,7297 ----
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{dc}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{dd}
  @section Pragma Refined_Global
  
  
*************** For the semantics of this pragma, see th
*** 7297,7303 ****
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{dd}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{de}
  @section Pragma Refined_Post
  
  
--- 7316,7322 ----
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{de}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{df}
  @section Pragma Refined_Post
  
  
*************** with an assertion level. See SPARK 2014
*** 7315,7321 ****
  11.4.2.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{df}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{e0}
  @section Pragma Refined_State
  
  
--- 7334,7340 ----
  11.4.2.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e0}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{e1}
  @section Pragma Refined_State
  
  
*************** For the semantics of this pragma, see th
*** 7341,7347 ****
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{e1}
  @section Pragma Relative_Deadline
  
  
--- 7360,7366 ----
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{e2}
  @section Pragma Relative_Deadline
  
  
*************** versions of Ada as an implementation-def
*** 7356,7362 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e2}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{e3}
  @section Pragma Remote_Access_Type
  
  
--- 7375,7381 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e3}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{e4}
  @section Pragma Remote_Access_Type
  
  
*************** pertaining to remote access to class-wid
*** 7382,7388 ****
  actual type must be a remote access to class-wide type.
  
  @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{e4}
  @section Pragma Rename_Pragma
  
  
--- 7401,7407 ----
  actual type must be a remote access to class-wide type.
  
  @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{e5}
  @section Pragma Rename_Pragma
  
  
*************** Pragma Inline_Only will not necessarily
*** 7421,7427 ****
  compiler; it’s up to you to make sure the semantics are close enough.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{e5}
  @section Pragma Restricted_Run_Time
  
  
--- 7440,7446 ----
  compiler; it’s up to you to make sure the semantics are close enough.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{e6}
  @section Pragma Restricted_Run_Time
  
  
*************** which is the preferred method of setting
*** 7442,7448 ****
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{e6}
  @section Pragma Restriction_Warnings
  
  
--- 7461,7467 ----
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{e7}
  @section Pragma Restriction_Warnings
  
  
*************** generating a warning, but any other use
*** 7480,7486 ****
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{e7}
  @section Pragma Reviewable
  
  
--- 7499,7505 ----
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{e8}
  @section Pragma Reviewable
  
  
*************** comprehensive messages identifying possi
*** 7584,7590 ****
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e8}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{e9}
  @section Pragma Secondary_Stack_Size
  
  
--- 7603,7609 ----
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{ea}
  @section Pragma Secondary_Stack_Size
  
  
*************** Note the pragma cannot appear when the r
*** 7620,7626 ****
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{ea}
  @section Pragma Share_Generic
  
  
--- 7639,7645 ----
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{eb}
  @section Pragma Share_Generic
  
  
*************** than to check that the given names are a
*** 7638,7644 ****
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{eb}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{ec}
  @section Pragma Shared
  
  
--- 7657,7663 ----
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{ec}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{ed}
  @section Pragma Shared
  
  
*************** This pragma is provided for compatibilit
*** 7646,7652 ****
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{ed}
  @section Pragma Short_Circuit_And_Or
  
  
--- 7665,7671 ----
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{ee}
  @section Pragma Short_Circuit_And_Or
  
  
*************** See also the pragma @code{Unevaluated_Us
*** 7685,7691 ****
  with @code{Short_Circuit_And_Or}.
  
  @node Pragma Short_Descriptors,Pragma Side_Effects,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{ee}
  @section Pragma Short_Descriptors
  
  
--- 7704,7710 ----
  with @code{Short_Circuit_And_Or}.
  
  @node Pragma Short_Descriptors,Pragma Side_Effects,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{ef}
  @section Pragma Short_Descriptors
  
  
*************** This pragma is provided for compatibilit
*** 7699,7705 ****
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Side_Effects,Pragma Simple_Storage_Pool_Type,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{ef}@anchor{gnat_rm/implementation_defined_pragmas pragma-side-effects}@anchor{f0}
  @section Pragma Side_Effects
  
  
--- 7718,7724 ----
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Side_Effects,Pragma Simple_Storage_Pool_Type,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f0}@anchor{gnat_rm/implementation_defined_pragmas pragma-side-effects}@anchor{f1}
  @section Pragma Side_Effects
  
  
*************** For the semantics of this pragma, see th
*** 7713,7719 ****
  @code{Side_Effects} in the SPARK Reference Manual, section 6.1.12.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Side_Effects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f1}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{f2}
  @section Pragma Simple_Storage_Pool_Type
  
  
--- 7732,7738 ----
  @code{Side_Effects} in the SPARK Reference Manual, section 6.1.12.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Side_Effects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f2}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{f3}
  @section Pragma Simple_Storage_Pool_Type
  
  
*************** storage-management discipline).
*** 7767,7773 ****
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{f3,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
--- 7786,7792 ----
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{f4,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
*************** type Acc is access My_Data_Type;
*** 7777,7787 ****
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{f3,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f4}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{f5}
  @section Pragma Source_File_Name
  
  
--- 7796,7806 ----
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{f4,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f5}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{f6}
  @section Pragma Source_File_Name
  
  
*************** aware of these pragmas, and so other too
*** 7873,7892 ****
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{f6,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User’s Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{f7}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{f6}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{f5,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
--- 7892,7911 ----
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{f7,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User’s Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{f8}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{f7}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{f6,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
*************** Source_File_Name or Source_File_Name_Pro
*** 7898,7904 ****
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{f8}
  @section Pragma Source_Reference
  
  
--- 7917,7923 ----
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{f9}
  @section Pragma Source_Reference
  
  
*************** string expression other than a string li
*** 7922,7928 ****
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{f9}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{fa}
  @section Pragma SPARK_Mode
  
  
--- 7941,7947 ----
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{fb}
  @section Pragma SPARK_Mode
  
  
*************** SPARK_Mode (@code{Off}), then that pragm
*** 8004,8010 ****
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{fb}
  @section Pragma Static_Elaboration_Desired
  
  
--- 8023,8029 ----
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{fc}
  @section Pragma Static_Elaboration_Desired
  
  
*************** construction of larger aggregates with s
*** 8028,8034 ****
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{fc}
  @section Pragma Stream_Convert
  
  
--- 8047,8053 ----
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{fd}
  @section Pragma Stream_Convert
  
  
*************** the pragma is silently ignored, and the
*** 8105,8111 ****
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subprogram_Variant,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{fd}
  @section Pragma Style_Checks
  
  
--- 8124,8130 ----
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subprogram_Variant,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{fe}
  @section Pragma Style_Checks
  
  
*************** Rf2 : Integer := ARG;      -- OK, no err
*** 8251,8257 ****
  @end example
  
  @node Pragma Subprogram_Variant,Pragma Subtitle,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subprogram-variant}@anchor{fe}
  @section Pragma Subprogram_Variant
  
  
--- 8270,8276 ----
  @end example
  
  @node Pragma Subprogram_Variant,Pragma Subtitle,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subprogram-variant}@anchor{ff}
  @section Pragma Subprogram_Variant
  
  
*************** with an assertion level. See SPARK 2014
*** 8287,8293 ****
  11.4.2.
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Subprogram_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{ff}
  @section Pragma Subtitle
  
  
--- 8306,8312 ----
  11.4.2.
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Subprogram_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{100}
  @section Pragma Subtitle
  
  
*************** This pragma is recognized for compatibil
*** 8301,8307 ****
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{100}
  @section Pragma Suppress
  
  
--- 8320,8326 ----
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{101}
  @section Pragma Suppress
  
  
*************** Of course, run-time checks are omitted w
*** 8371,8377 ****
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{101}
  @section Pragma Suppress_All
  
  
--- 8390,8396 ----
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{102}
  @section Pragma Suppress_All
  
  
*************** The use of the standard Ada pragma @code
*** 8390,8396 ****
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{102}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{103}
  @section Pragma Suppress_Debug_Info
  
  
--- 8409,8415 ----
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{103}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{104}
  @section Pragma Suppress_Debug_Info
  
  
*************** for the specified entity. It is intended
*** 8405,8411 ****
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{104}
  @section Pragma Suppress_Exception_Locations
  
  
--- 8424,8430 ----
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{105}
  @section Pragma Suppress_Exception_Locations
  
  
*************** a partition, so it is fine to have some
*** 8428,8434 ****
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{106}
  @section Pragma Suppress_Initialization
  
  
--- 8447,8453 ----
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{107}
  @section Pragma Suppress_Initialization
  
  
*************** is suppressed, just as though its subtyp
*** 8473,8479 ****
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{107}
  @section Pragma Task_Name
  
  
--- 8492,8498 ----
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{108}
  @section Pragma Task_Name
  
  
*************** end;
*** 8529,8535 ****
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{108}
  @section Pragma Task_Storage
  
  
--- 8548,8554 ----
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{109}
  @section Pragma Task_Storage
  
  
*************** created, depending on the target.  This
*** 8549,8555 ****
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{109}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{10a}
  @section Pragma Test_Case
  
  
--- 8568,8574 ----
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{10b}
  @section Pragma Test_Case
  
  
*************** postcondition. Mode @code{Robustness} in
*** 8605,8611 ****
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10b}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{10c}
  @section Pragma Thread_Local_Storage
  
  
--- 8624,8630 ----
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10c}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{10d}
  @section Pragma Thread_Local_Storage
  
  
*************** If this pragma is used on a system where
*** 8643,8649 ****
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{10d}
  @section Pragma Time_Slice
  
  
--- 8662,8668 ----
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{10e}
  @section Pragma Time_Slice
  
  
*************** It is ignored if it is used in a system
*** 8659,8665 ****
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{10e}
  @section Pragma Title
  
  
--- 8678,8684 ----
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{10f}
  @section Pragma Title
  
  
*************** notation is used, and named and position
*** 8684,8690 ****
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{10f}
  @section Pragma Type_Invariant
  
  
--- 8703,8709 ----
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{110}
  @section Pragma Type_Invariant
  
  
*************** with an assertion level. See SPARK 2014
*** 8709,8715 ****
  11.4.2.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{110}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{111}
  @section Pragma Type_Invariant_Class
  
  
--- 8728,8734 ----
  11.4.2.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{111}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{112}
  @section Pragma Type_Invariant_Class
  
  
*************** with an assertion level. See SPARK 2014
*** 8740,8746 ****
  11.4.2.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{112}
  @section Pragma Unchecked_Union
  
  
--- 8759,8765 ----
  11.4.2.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{113}
  @section Pragma Unchecked_Union
  
  
*************** version in all language modes (Ada 83, A
*** 8760,8766 ****
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma User_Aspect_Definition,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{113}
  @section Pragma Unevaluated_Use_Of_Old
  
  
--- 8779,8785 ----
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma User_Aspect_Definition,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{114}
  @section Pragma Unevaluated_Use_Of_Old
  
  
*************** uses up to the end of the corresponding
*** 8815,8821 ****
  sequence of package declarations.
  
  @node Pragma User_Aspect_Definition,Pragma Unimplemented_Unit,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{114}
  @section Pragma User_Aspect_Definition
  
  
--- 8834,8840 ----
  sequence of package declarations.
  
  @node Pragma User_Aspect_Definition,Pragma Unimplemented_Unit,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-user-aspect-definition}@anchor{115}
  @section Pragma User_Aspect_Definition
  
  
*************** pragma. If multiple definitions are visi
*** 8847,8853 ****
  then the definitions must agree. A predefined aspect cannot be redefined.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma User_Aspect_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{115}
  @section Pragma Unimplemented_Unit
  
  
--- 8866,8872 ----
  then the definitions must agree. A predefined aspect cannot be redefined.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma User_Aspect_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{116}
  @section Pragma Unimplemented_Unit
  
  
*************** The abort only happens if code is being
*** 8867,8873 ****
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{117}
  @section Pragma Universal_Aliasing
  
  
--- 8886,8892 ----
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{117}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{118}
  @section Pragma Universal_Aliasing
  
  
*************** they need to be suppressed, see the sect
*** 8885,8891 ****
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{118}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{119}
  @section Pragma Unmodified
  
  
--- 8904,8910 ----
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{119}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{11a}
  @section Pragma Unmodified
  
  
*************** Thus it is never necessary to use @code{
*** 8919,8925 ****
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{11b}
  @section Pragma Unreferenced
  
  
--- 8938,8944 ----
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{11b}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{11c}
  @section Pragma Unreferenced
  
  
*************** Note that if a warning is desired for al
*** 8965,8971 ****
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{b7,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
--- 8984,8990 ----
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{b8,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
*************** Thus it is never necessary to use @code{
*** 8981,8987 ****
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11c}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{11d}
  @section Pragma Unreferenced_Objects
  
  
--- 9000,9006 ----
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11d}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{11e}
  @section Pragma Unreferenced_Objects
  
  
*************** compiler will automatically suppress unw
*** 9006,9012 ****
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{11e}
  @section Pragma Unreserve_All_Interrupts
  
  
--- 9025,9031 ----
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{11f}
  @section Pragma Unreserve_All_Interrupts
  
  
*************** handled, see pragma @code{Interrupt_Stat
*** 9042,9048 ****
  of the @code{Unreserve_All_Interrupts} pragma.
  
  @node Pragma Unsuppress,Pragma Unused,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{11f}
  @section Pragma Unsuppress
  
  
--- 9061,9067 ----
  of the @code{Unreserve_All_Interrupts} pragma.
  
  @node Pragma Unsuppress,Pragma Unused,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{120}
  @section Pragma Unsuppress
  
  
*************** number of implementation-defined check n
*** 9078,9084 ****
  @code{Suppress} for full details.
  
  @node Pragma Unused,Pragma Use_VADS_Size,Pragma Unsuppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{120}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{121}
  @section Pragma Unused
  
  
--- 9097,9103 ----
  @code{Suppress} for full details.
  
  @node Pragma Unused,Pragma Use_VADS_Size,Pragma Unsuppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id57}@anchor{121}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{122}
  @section Pragma Unused
  
  
*************** Thus it is never necessary to use @code{
*** 9112,9118 ****
  variables, though it is harmless to do so.
  
  @node Pragma Use_VADS_Size,Pragma Validity_Checks,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{122}
  @section Pragma Use_VADS_Size
  
  
--- 9131,9137 ----
  variables, though it is harmless to do so.
  
  @node Pragma Use_VADS_Size,Pragma Validity_Checks,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{123}
  @section Pragma Use_VADS_Size
  
  
*************** as implemented in the VADS compiler.  Se
*** 9136,9142 ****
  attribute for further details.
  
  @node Pragma Validity_Checks,Pragma Volatile,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{123}
  @section Pragma Validity_Checks
  
  
--- 9155,9161 ----
  attribute for further details.
  
  @node Pragma Validity_Checks,Pragma Volatile,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{124}
  @section Pragma Validity_Checks
  
  
*************** A := C;                       -- C will
*** 9192,9198 ****
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{124}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{125}
  @section Pragma Volatile
  
  
--- 9211,9217 ----
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id58}@anchor{125}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{126}
  @section Pragma Volatile
  
  
*************** implementation of pragma Volatile is upw
*** 9210,9216 ****
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{126}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{127}
  @section Pragma Volatile_Full_Access
  
  
--- 9229,9235 ----
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id59}@anchor{127}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{128}
  @section Pragma Volatile_Full_Access
  
  
*************** is not to the whole object; the compiler
*** 9236,9242 ****
  access only part of the object in this case.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id60}@anchor{128}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{129}
  @section Pragma Volatile_Function
  
  
--- 9255,9261 ----
  access only part of the object in this case.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id60}@anchor{129}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{12a}
  @section Pragma Volatile_Function
  
  
*************** For the semantics of this pragma, see th
*** 9250,9256 ****
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{12a}
  @section Pragma Warning_As_Error
  
  
--- 9269,9275 ----
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{12b}
  @section Pragma Warning_As_Error
  
  
*************** you can use multiple pragma Warning_As_E
*** 9290,9296 ****
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{12b,,Pragma Warnings}.
  By using a single full `-Wxxx' switch in the pragma, such warnings
  can also be treated as errors.
  
--- 9309,9315 ----
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{12c,,Pragma Warnings}.
  By using a single full `-Wxxx' switch in the pragma, such warnings
  can also be treated as errors.
  
*************** the tag is changed from “warning:” t
*** 9340,9346 ****
  “[warning-as-error]” is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id61}@anchor{12c}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{12b}
  @section Pragma Warnings
  
  
--- 9359,9365 ----
  “[warning-as-error]” is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id61}@anchor{12d}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{12c}
  @section Pragma Warnings
  
  
*************** selectively for each tool, and as a cons
*** 9496,9502 ****
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{12d}
  @section Pragma Weak_External
  
  
--- 9515,9521 ----
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{12e}
  @section Pragma Weak_External
  
  
*************** end External_Module;
*** 9547,9553 ****
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{12e}
  @section Pragma Wide_Character_Encoding
  
  
--- 9566,9572 ----
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{12f}
  @section Pragma Wide_Character_Encoding
  
  
*************** encoding within that file, and does not
*** 9578,9584 ****
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects doc}@anchor{12f}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{130}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{131}
  @chapter Implementation Defined Aspects
  
  
--- 9597,9603 ----
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects doc}@anchor{130}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{131}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{132}
  @chapter Implementation Defined Aspects
  
  
*************** or attribute definition clause.
*** 9710,9734 ****
  @end menu
  
  @node Aspect Abstract_State,Aspect Always_Terminates,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{132}
  @section Aspect Abstract_State
  
  
  @geindex Abstract_State
  
! This aspect is equivalent to @ref{1e,,pragma Abstract_State}.
  
  @node Aspect Always_Terminates,Aspect Annotate,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{133}
  @section Aspect Always_Terminates
  
  
  @geindex Always_Terminates
  
! This boolean aspect is equivalent to @ref{29,,pragma Always_Terminates}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Always_Terminates,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{134}
  @section Aspect Annotate
  
  
--- 9729,9753 ----
  @end menu
  
  @node Aspect Abstract_State,Aspect Always_Terminates,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{133}
  @section Aspect Abstract_State
  
  
  @geindex Abstract_State
  
! This aspect is equivalent to @ref{1f,,pragma Abstract_State}.
  
  @node Aspect Always_Terminates,Aspect Annotate,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-always-terminates}@anchor{134}
  @section Aspect Always_Terminates
  
  
  @geindex Always_Terminates
  
! This boolean aspect is equivalent to @ref{2a,,pragma Always_Terminates}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Always_Terminates,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{135}
  @section Aspect Annotate
  
  
*************** This boolean aspect is equivalent to @re
*** 9736,9742 ****
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{2b,,pragma Annotate}.
  
  
  @table @asis
--- 9755,9761 ----
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{2c,,pragma Annotate}.
  
  
  @table @asis
*************** Equivalent to @code{pragma Annotate (ID,
*** 9755,9817 ****
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{135}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{33,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{136}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{35,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{137}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{45,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{138}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{47,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{139}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{57,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{13a}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{53,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{13b}
  @section Aspect Dimension
  
  
--- 9774,9836 ----
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{136}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{34,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{137}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{36,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{138}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{46,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{139}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{48,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{13a}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{58,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{13b}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{54,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{13c}
  @section Aspect Dimension
  
  
*************** Note that when the dimensioned type is a
*** 9847,9853 ****
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{13c}
  @section Aspect Dimension_System
  
  
--- 9866,9872 ----
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{13d}
  @section Aspect Dimension_System
  
  
*************** See section ‘Performing Dimensionality
*** 9907,9913 ****
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{13d}
  @section Aspect Disable_Controlled
  
  
--- 9926,9932 ----
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{13e}
  @section Aspect Disable_Controlled
  
  
*************** where for example you might want a recor
*** 9920,9944 ****
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{13e}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{5c,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Exceptional_Cases,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{13f}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5e,,pragma Effective_Writes}.
  
  @node Aspect Exceptional_Cases,Aspect Exit_Cases,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{140}
  @section Aspect Exceptional_Cases
  
  
--- 9939,9963 ----
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{13f}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{5d,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Exceptional_Cases,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{140}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5f,,pragma Effective_Writes}.
  
  @node Aspect Exceptional_Cases,Aspect Exit_Cases,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-exceptional-cases}@anchor{141}
  @section Aspect Exceptional_Cases
  
  
*************** For the syntax and semantics of this asp
*** 9953,9959 ****
  Manual, section 6.1.9.
  
  @node Aspect Exit_Cases,Aspect Extended_Access,Aspect Exceptional_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-exit-cases}@anchor{141}
  @section Aspect Exit_Cases
  
  
--- 9972,9978 ----
  Manual, section 6.1.9.
  
  @node Aspect Exit_Cases,Aspect Extended_Access,Aspect Exceptional_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-exit-cases}@anchor{142}
  @section Aspect Exit_Cases
  
  
*************** For the syntax and semantics of this asp
*** 9968,9974 ****
  Manual, section 6.1.10.
  
  @node Aspect Extended_Access,Aspect Extensions_Visible,Aspect Exit_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extended-access}@anchor{142}
  @section Aspect Extended_Access
  
  
--- 9987,9993 ----
  Manual, section 6.1.10.
  
  @node Aspect Extended_Access,Aspect Extensions_Visible,Aspect Exit_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extended-access}@anchor{143}
  @section Aspect Extended_Access
  
  
*************** Sneaky_2 : Small_Ptr := Make (Str => Big
*** 10065,10098 ****
  for the same reason given above in the case of an explicit type conversion.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Extended_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{143}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{6e,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{144}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{73,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{145}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{77,,pragma Ghost}.
  
  @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{146}
  @section Aspect Ghost_Predicate
  
  
--- 10084,10117 ----
  for the same reason given above in the case of an explicit type conversion.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Extended_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{144}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{6f,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{145}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{74,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{146}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{78,,pragma Ghost}.
  
  @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{147}
  @section Aspect Ghost_Predicate
  
  
*************** For the detailed semantics of this aspec
*** 10105,10169 ****
  in the SPARK Reference Manual, section 3.2.4.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{147}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{79,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{148}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{86,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{149}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{89,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{14a}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{8b,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{14b}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{93,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{14c}
  @section Aspect Invariant’Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{111,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{14d}
  @section Aspect Iterable
  
  
--- 10124,10188 ----
  in the SPARK Reference Manual, section 3.2.4.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{148}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{7a,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{149}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{87,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{14a}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{8a,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{14b}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{8c,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{14c}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{94,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{14d}
  @section Aspect Invariant’Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{112,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{14e}
  @section Aspect Iterable
  
  
*************** function Get_Element (Cont : Container;
*** 10247,10262 ****
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{14e}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{9b,,pragma Linker_Section}.
  
  @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{14f}
  @section Aspect Local_Restrictions
  
  
--- 10266,10281 ----
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{14f}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{9c,,pragma Linker_Section}.
  
  @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{150}
  @section Aspect Local_Restrictions
  
  
*************** case of a declaration that occurs within
*** 10310,10382 ****
  a Local_Restrictions specification).
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{150}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{9d,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{151}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{a5,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{152}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{a8,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{153}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{ab,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Raise,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{154}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{ae,,pragma No_Inline}.
  
  @node Aspect No_Raise,Aspect No_Tagged_Streams,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-raise}@anchor{155}
  @section Aspect No_Raise
  
  
  @geindex No_Raise
  
! This boolean aspect is equivalent to @ref{b0,,pragma No_Raise}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Raise,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{156}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{b4,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{157}
  @section Aspect No_Task_Parts
  
  
--- 10329,10401 ----
  a Local_Restrictions specification).
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{151}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{9e,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{152}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{a6,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{153}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{a9,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{154}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{ac,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Raise,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{155}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{af,,pragma No_Inline}.
  
  @node Aspect No_Raise,Aspect No_Tagged_Streams,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-raise}@anchor{156}
  @section Aspect No_Raise
  
  
  @geindex No_Raise
  
! This boolean aspect is equivalent to @ref{b1,,pragma No_Raise}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Raise,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{157}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{b5,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{158}
  @section Aspect No_Task_Parts
  
  
*************** away certain tasking-related code that w
*** 10392,10436 ****
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{158}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{159,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{15a}
  @section Aspect Obsolescent
  
  
  @geindex Obsolescent
  
! This aspect is equivalent to @ref{b7,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{15b}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{bd,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Potentially_Invalid,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{15c}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{c1,,pragma Persistent_BSS}.
  
  @node Aspect Potentially_Invalid,Aspect Predicate,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-potentially-invalid}@anchor{15d}
  @section Aspect Potentially_Invalid
  
  
--- 10411,10455 ----
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{159}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{15a,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{15b}
  @section Aspect Obsolescent
  
  
  @geindex Obsolescent
  
! This aspect is equivalent to @ref{b8,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{15c}
  @section Aspect Part_Of
  
  
  @geindex Part_Of
  
! This aspect is equivalent to @ref{be,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Potentially_Invalid,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{15d}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{c2,,pragma Persistent_BSS}.
  
  @node Aspect Potentially_Invalid,Aspect Predicate,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-potentially-invalid}@anchor{15e}
  @section Aspect Potentially_Invalid
  
  
*************** For the syntax and semantics of this asp
*** 10440,10452 ****
  Manual, section 13.9.1.
  
  @node Aspect Predicate,Aspect Program_Exit,Aspect Potentially_Invalid,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{15e}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{c8,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
--- 10459,10471 ----
  Manual, section 13.9.1.
  
  @node Aspect Predicate,Aspect Program_Exit,Aspect Potentially_Invalid,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{15f}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{c9,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
*************** expression. It is also separately contro
*** 10454,10514 ****
  @code{Assertion_Policy}.
  
  @node Aspect Program_Exit,Aspect Pure_Function,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-program-exit}@anchor{15f}
  @section Aspect Program_Exit
  
  
  @geindex Program_Exit
  
! This boolean aspect is equivalent to @ref{d1,,pragma Program_Exit}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Program_Exit,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{160}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{d6,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{161}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{da,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{162}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{dc,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{163}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{de,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{164}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{e0,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{165}
  @section Aspect Relaxed_Initialization
  
  
--- 10473,10533 ----
  @code{Assertion_Policy}.
  
  @node Aspect Program_Exit,Aspect Pure_Function,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-program-exit}@anchor{160}
  @section Aspect Program_Exit
  
  
  @geindex Program_Exit
  
! This boolean aspect is equivalent to @ref{d2,,pragma Program_Exit}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Program_Exit,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{161}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{d7,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{162}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{db,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{163}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{dd,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{164}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{df,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{165}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{e1,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{166}
  @section Aspect Relaxed_Initialization
  
  
*************** For the syntax and semantics of this asp
*** 10518,10599 ****
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{166}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{e3,,pragma Remote_Access_Type}.
  
  @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{167}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{168,,attribute Scalar_Storage_Order}.
  
  @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{169}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{e9,,pragma Secondary_Stack_Size}.
  
  @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{16a}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{ec,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{16b}
  @section Aspect Side_Effects
  
  
  @geindex Side_Effects
  
! This aspect is equivalent to @ref{f0,,pragma Side_Effects}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{16c}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{f3,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{16d}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{f2,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{16e}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{fa,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{16f}
  @section Aspect Subprogram_Variant
  
  
--- 10537,10618 ----
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{167}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{e4,,pragma Remote_Access_Type}.
  
  @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{168}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{169,,attribute Scalar_Storage_Order}.
  
  @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{16a}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{ea,,pragma Secondary_Stack_Size}.
  
  @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{16b}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{ed,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{16c}
  @section Aspect Side_Effects
  
  
  @geindex Side_Effects
  
! This aspect is equivalent to @ref{f1,,pragma Side_Effects}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{16d}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{f4,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{16e}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{f3,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{16f}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{fb,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{170}
  @section Aspect Subprogram_Variant
  
  
*************** For the syntax and semantics of this asp
*** 10603,10685 ****
  Manual, section 6.1.8.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{170}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{103,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{171}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{106,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{172}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{10a,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{173}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{10c,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{174}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{117,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{175}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{119,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{176}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{11b,,pragma Unreferenced}.
  
  When using the @code{-gnat2022} switch, this aspect is also supported on formal
  parameters, which is in particular the only form possible for expression
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{177}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{11d,,pragma Unreferenced_Objects}.
  
  @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{178}
  @section Aspect User_Aspect
  
  
--- 10622,10704 ----
  Manual, section 6.1.8.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{171}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{104,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{172}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{107,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{173}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{10b,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{174}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{10d,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{175}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{118,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{176}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{11a,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{177}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{11c,,pragma Unreferenced}.
  
  When using the @code{-gnat2022} switch, this aspect is also supported on formal
  parameters, which is in particular the only form possible for expression
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{178}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{11e,,pragma Unreferenced_Objects}.
  
  @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{179}
  @section Aspect User_Aspect
  
  
*************** replicating the set of aspect specificat
*** 10692,10736 ****
  pragma-defined aspect.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{179}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{17a,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{17b}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{127,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{17c}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{129,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{17d}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{12b,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{17e}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{17f}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
--- 10711,10755 ----
  pragma-defined aspect.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{17a}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{17b,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{17c}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{128,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{17d}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{12a,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{17e}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{12c,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{17f}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{180}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
*************** consideration, you should minimize the u
*** 10837,10843 ****
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{180}
  @section Attribute Abort_Signal
  
  
--- 10856,10862 ----
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{181}
  @section Attribute Abort_Signal
  
  
*************** completely outside the normal semantics
*** 10851,10857 ****
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{181}
  @section Attribute Address_Size
  
  
--- 10870,10876 ----
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{182}
  @section Attribute Address_Size
  
  
*************** reference to System.Address’Size is no
*** 10867,10873 ****
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{182}
  @section Attribute Asm_Input
  
  
--- 10886,10892 ----
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{183}
  @section Attribute Asm_Input
  
  
*************** to be a static expression, and is the co
*** 10881,10890 ****
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{183,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{184}
  @section Attribute Asm_Output
  
  
--- 10900,10909 ----
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{184,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{185}
  @section Attribute Asm_Output
  
  
*************** result.  The possible values for constra
*** 10900,10909 ****
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{183,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{185}
  @section Attribute Atomic_Always_Lock_Free
  
  
--- 10919,10928 ----
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{184,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{186}
  @section Attribute Atomic_Always_Lock_Free
  
  
*************** result indicates whether atomic operatio
*** 10914,10920 ****
  for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{186}
  @section Attribute Bit
  
  
--- 10933,10939 ----
  for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{187}
  @section Attribute Bit
  
  
*************** This attribute is designed to be compati
*** 10945,10951 ****
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{187}
  @section Attribute Bit_Position
  
  
--- 10964,10970 ----
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{188}
  @section Attribute Bit_Position
  
  
*************** type `universal_integer'.  The value dep
*** 10960,10966 ****
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{188}
  @section Attribute Code_Address
  
  
--- 10979,10985 ----
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{189}
  @section Attribute Code_Address
  
  
*************** the same value as is returned by the cor
*** 11003,11009 ****
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{189}
  @section Attribute Compiler_Version
  
  
--- 11022,11028 ----
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{18a}
  @section Attribute Compiler_Version
  
  
*************** prefix) yields a static string identifyi
*** 11014,11020 ****
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{18a}
  @section Attribute Constrained
  
  
--- 11033,11039 ----
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{18b}
  @section Attribute Constrained
  
  
*************** record type without discriminants is alw
*** 11029,11035 ****
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{18b}
  @section Attribute Default_Bit_Order
  
  
--- 11048,11054 ----
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{18c}
  @section Attribute Default_Bit_Order
  
  
*************** as a @code{Pos} value (0 for @code{High_
*** 11046,11052 ****
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{18c}
  @section Attribute Default_Scalar_Storage_Order
  
  
--- 11065,11071 ----
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{18d}
  @section Attribute Default_Scalar_Storage_Order
  
  
*************** equal to @code{Default_Bit_Order} if uns
*** 11063,11069 ****
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{18d}
  @section Attribute Deref
  
  
--- 11082,11088 ----
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{18e}
  @section Attribute Deref
  
  
*************** a named access-to-@cite{typ} type, excep
*** 11076,11082 ****
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{18e}
  @section Attribute Descriptor_Size
  
  
--- 11095,11101 ----
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{18f}
  @section Attribute Descriptor_Size
  
  
*************** since @code{Positive} has an alignment o
*** 11105,11111 ****
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{18f}
  @section Attribute Elaborated
  
  
--- 11124,11130 ----
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{190}
  @section Attribute Elaborated
  
  
*************** units has been completed.  An exception
*** 11120,11126 ****
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{190}
  @section Attribute Elab_Body
  
  
--- 11139,11145 ----
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{191}
  @section Attribute Elab_Body
  
  
*************** e.g., if it is necessary to do selective
*** 11136,11142 ****
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{191}
  @section Attribute Elab_Spec
  
  
--- 11155,11161 ----
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{192}
  @section Attribute Elab_Spec
  
  
*************** Ada code, e.g., if it is necessary to do
*** 11152,11158 ****
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{192}
  @section Attribute Elab_Subp_Body
  
  
--- 11171,11177 ----
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{193}
  @section Attribute Elab_Subp_Body
  
  
*************** elaboration procedure by the binder in C
*** 11166,11172 ****
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{193}
  @section Attribute Emax
  
  
--- 11185,11191 ----
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{194}
  @section Attribute Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 11179,11185 ****
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{194}
  @section Attribute Enabled
  
  
--- 11198,11204 ----
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{195}
  @section Attribute Enabled
  
  
*************** a @code{pragma Suppress} or @code{pragma
*** 11203,11209 ****
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{195}
  @section Attribute Enum_Rep
  
  
--- 11222,11228 ----
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{196}
  @section Attribute Enum_Rep
  
  
*************** integer calculation is done at run time,
*** 11243,11249 ****
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{196}
  @section Attribute Enum_Val
  
  
--- 11262,11268 ----
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{197}
  @section Attribute Enum_Val
  
  
*************** absence of an enumeration representation
*** 11269,11275 ****
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{197}
  @section Attribute Epsilon
  
  
--- 11288,11294 ----
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{198}
  @section Attribute Epsilon
  
  
*************** the Ada 83 reference manual for an exact
*** 11282,11288 ****
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{198}
  @section Attribute Fast_Math
  
  
--- 11301,11307 ----
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{199}
  @section Attribute Fast_Math
  
  
*************** prefix) yields a static Boolean value th
*** 11293,11317 ****
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{199}
  @section Attribute Finalization_Size
  
  
  @geindex Finalization_Size
  
  The prefix of attribute @code{Finalization_Size} must be an object or
! a non-class-wide type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
  the attribute is `universal_integer'.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
  class-wide type whose tag denotes a type with no controlled parts.
  
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Address,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{19a}
  @section Attribute Fixed_Value
  
  
--- 11312,11338 ----
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{19a}
  @section Attribute Finalization_Size
  
  
  @geindex Finalization_Size
  
  The prefix of attribute @code{Finalization_Size} must be an object or
! a type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
  the attribute is `universal_integer'.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
  class-wide type whose tag denotes a type with no controlled parts.
+ For a class-wide type, @code{Finalization_Size} yields a non-zero value except
+ if a No_Finalization restriction is in effect, in which case it yields zero.
  
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Address,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{19b}
  @section Attribute Fixed_Value
  
  
*************** This attribute is primarily intended for
*** 11338,11344 ****
  input-output functions for fixed-point values.
  
  @node Attribute From_Address,Attribute From_Any,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-address}@anchor{19b}
  @section Attribute From_Address
  
  
--- 11359,11365 ----
  input-output functions for fixed-point values.
  
  @node Attribute From_Address,Attribute From_Any,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-address}@anchor{19c}
  @section Attribute From_Address
  
  
*************** end)
*** 11378,11384 ****
  @end example
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute From_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{19c}
  @section Attribute From_Any
  
  
--- 11399,11405 ----
  @end example
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute From_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{19d}
  @section Attribute From_Any
  
  
*************** This internal attribute is used for the
*** 11388,11394 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{19d}
  @section Attribute Has_Access_Values
  
  
--- 11409,11415 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{19e}
  @section Attribute Has_Access_Values
  
  
*************** definitions.  If the attribute is applie
*** 11406,11412 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{19e}
  @section Attribute Has_Discriminants
  
  
--- 11427,11433 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{19f}
  @section Attribute Has_Discriminants
  
  
*************** definitions.  If the attribute is applie
*** 11422,11428 ****
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{19f}
  @section Attribute Has_Tagged_Values
  
  
--- 11443,11449 ----
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{1a0}
  @section Attribute Has_Tagged_Values
  
  
*************** definitions. If the attribute is applied
*** 11439,11445 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{1a0}
  @section Attribute Img
  
  
--- 11460,11466 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{1a1}
  @section Attribute Img
  
  
*************** that returns the appropriate string when
*** 11469,11475 ****
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{1a1}
  @section Attribute Initialized
  
  
--- 11490,11496 ----
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{1a2}
  @section Attribute Initialized
  
  
*************** For the syntax and semantics of this att
*** 11479,11485 ****
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{1a2}
  @section Attribute Integer_Value
  
  
--- 11500,11506 ----
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{1a3}
  @section Attribute Integer_Value
  
  
*************** This attribute is primarily intended for
*** 11507,11513 ****
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{1a3}
  @section Attribute Invalid_Value
  
  
--- 11528,11534 ----
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{1a4}
  @section Attribute Invalid_Value
  
  
*************** including the ability to modify the valu
*** 11521,11527 ****
  relevant environment variables at run time.
  
  @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{1a4}
  @section Attribute Large
  
  
--- 11542,11548 ----
  relevant environment variables at run time.
  
  @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{1a5}
  @section Attribute Large
  
  
*************** the Ada 83 reference manual for an exact
*** 11534,11540 ****
  this attribute.
  
  @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{1a5}
  @section Attribute Library_Level
  
  
--- 11555,11561 ----
  this attribute.
  
  @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{1a6}
  @section Attribute Library_Level
  
  
*************** end Gen;
*** 11560,11566 ****
  @end example
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{1a6}
  @section Attribute Loop_Entry
  
  
--- 11581,11587 ----
  @end example
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{1a7}
  @section Attribute Loop_Entry
  
  
*************** entry. This copy is not performed if the
*** 11593,11599 ****
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{1a7}
  @section Attribute Machine_Size
  
  
--- 11614,11620 ----
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{1a8}
  @section Attribute Machine_Size
  
  
*************** This attribute is identical to the @code
*** 11603,11609 ****
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{1a8}
  @section Attribute Mantissa
  
  
--- 11624,11630 ----
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{1a9}
  @section Attribute Mantissa
  
  
*************** the Ada 83 reference manual for an exact
*** 11616,11622 ****
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{1a9}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{1aa}
  @section Attribute Maximum_Alignment
  
  
--- 11637,11643 ----
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{1aa}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{1ab}
  @section Attribute Maximum_Alignment
  
  
*************** value dependent on the target, but may r
*** 11633,11639 ****
  are not needed up to @code{Standard'Maximum_Alignment}.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1ab}
  @section Attribute Max_Integer_Size
  
  
--- 11654,11660 ----
  are not needed up to @code{Standard'Maximum_Alignment}.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1ac}
  @section Attribute Max_Integer_Size
  
  
*************** prefix) provides the size of the largest
*** 11644,11650 ****
  the target. The result is a static constant.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{1ac}
  @section Attribute Mechanism_Code
  
  
--- 11665,11671 ----
  the target. The result is a static constant.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{1ad}
  @section Attribute Mechanism_Code
  
  
*************** by reference
*** 11675,11681 ****
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1ad}
  @section Attribute Null_Parameter
  
  
--- 11696,11702 ----
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1ae}
  @section Attribute Null_Parameter
  
  
*************** There is no way of indicating this witho
*** 11700,11706 ****
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{159}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1ae}
  @section Attribute Object_Size
  
  
--- 11721,11727 ----
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{15a}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1af}
  @section Attribute Object_Size
  
  
*************** Similar additional checks are performed
*** 11770,11776 ****
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1af}
  @section Attribute Old
  
  
--- 11791,11797 ----
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1b0}
  @section Attribute Old
  
  
*************** definition are allowed under control of
*** 11785,11791 ****
  implementation defined pragma @code{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1b0}
  @section Attribute Passed_By_Reference
  
  
--- 11806,11812 ----
  implementation defined pragma @code{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1b1}
  @section Attribute Passed_By_Reference
  
  
*************** passed by copy in calls.  For scalar typ
*** 11801,11807 ****
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1b1}
  @section Attribute Pool_Address
  
  
--- 11822,11828 ----
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1b2}
  @section Attribute Pool_Address
  
  
*************** For an object created by @code{new}, @co
*** 11823,11829 ****
  what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1b2}
  @section Attribute Range_Length
  
  
--- 11844,11850 ----
  what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1b3}
  @section Attribute Range_Length
  
  
*************** applied to the index subtype of a one di
*** 11836,11842 ****
  same result as @code{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1b3}
  @section Attribute Restriction_Set
  
  
--- 11857,11863 ----
  same result as @code{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1b4}
  @section Attribute Restriction_Set
  
  
*************** to set this restriction (if some unit do
*** 11901,11912 ****
  the binder will refuse to bind the partition).
  
  Technical note: The restriction name and the unit name are
! intepreted entirely syntactically, as in the corresponding
  Restrictions pragma, they are not analyzed semantically,
  so they do not have a type.
  
  @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1b4}
  @section Attribute Result
  
  
--- 11922,11933 ----
  the binder will refuse to bind the partition).
  
  Technical note: The restriction name and the unit name are
! interpreted entirely syntactically, as in the corresponding
  Restrictions pragma, they are not analyzed semantically,
  so they do not have a type.
  
  @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1b5}
  @section Attribute Result
  
  
*************** For a further discussion of the use of t
*** 11919,11925 ****
  see the description of pragma Postcondition.
  
  @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1b5}
  @section Attribute Round
  
  
--- 11940,11946 ----
  see the description of pragma Postcondition.
  
  @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1b6}
  @section Attribute Round
  
  
*************** also permits the use of the @code{'Round
*** 11930,11936 ****
  fixed point types.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1b6}
  @section Attribute Safe_Emax
  
  
--- 11951,11957 ----
  fixed point types.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1b7}
  @section Attribute Safe_Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 11943,11949 ****
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1b7}
  @section Attribute Safe_Large
  
  
--- 11964,11970 ----
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1b8}
  @section Attribute Safe_Large
  
  
*************** the Ada 83 reference manual for an exact
*** 11956,11962 ****
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1b8}
  @section Attribute Safe_Small
  
  
--- 11977,11983 ----
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1b9}
  @section Attribute Safe_Small
  
  
*************** the Ada 83 reference manual for an exact
*** 11969,11975 ****
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{168}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1b9}
  @section Attribute Scalar_Storage_Order
  
  
--- 11990,11996 ----
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{169}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1ba}
  @section Attribute Scalar_Storage_Order
  
  
*************** inheritance in the case of a derived typ
*** 12079,12085 ****
  the native ordering of the target, but this default can be overridden using
  pragma @code{Default_Scalar_Storage_Order}.
  
! If a component of @code{T} is itself of a record or array type, the specfied
  @code{Scalar_Storage_Order} does `not' apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
--- 12100,12106 ----
  the native ordering of the target, but this default can be overridden using
  pragma @code{Default_Scalar_Storage_Order}.
  
! If a component of @code{T} is itself of a record or array type, the specified
  @code{Scalar_Storage_Order} does `not' apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
*************** Note that debuggers may be unable to dis
*** 12132,12138 ****
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{f3}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1ba}
  @section Attribute Simple_Storage_Pool
  
  
--- 12153,12159 ----
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{f4}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1bb}
  @section Attribute Simple_Storage_Pool
  
  
*************** as defined in section 13.11.2 of the Ada
*** 12195,12201 ****
  term `simple storage pool' is substituted for `storage pool'.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1bb}
  @section Attribute Small
  
  
--- 12216,12222 ----
  term `simple storage pool' is substituted for `storage pool'.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1bc}
  @section Attribute Small
  
  
*************** the Ada 83 reference manual for an exact
*** 12211,12217 ****
  this attribute when applied to floating-point types.
  
  @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1bc}
  @section Attribute Small_Denominator
  
  
--- 12232,12238 ----
  this attribute when applied to floating-point types.
  
  @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1bd}
  @section Attribute Small_Denominator
  
  
*************** denominator in the representation of @co
*** 12224,12230 ****
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1bd}
  @section Attribute Small_Numerator
  
  
--- 12245,12251 ----
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1be}
  @section Attribute Small_Numerator
  
  
*************** numerator in the representation of @code
*** 12237,12243 ****
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1be}
  @section Attribute Storage_Unit
  
  
--- 12258,12264 ----
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1bf}
  @section Attribute Storage_Unit
  
  
*************** with coprime factors (i.e. as an irreduc
*** 12247,12253 ****
  prefix) provides the same value as @code{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1bf}
  @section Attribute Stub_Type
  
  
--- 12268,12274 ----
  prefix) provides the same value as @code{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1c0}
  @section Attribute Stub_Type
  
  
*************** unit @code{System.Partition_Interface}.
*** 12271,12277 ****
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1c0}
  @section Attribute System_Allocator_Alignment
  
  
--- 12292,12298 ----
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1c1}
  @section Attribute System_Allocator_Alignment
  
  
*************** with alignment too large or to enable a
*** 12288,12294 ****
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1c1}
  @section Attribute Target_Name
  
  
--- 12309,12315 ----
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1c2}
  @section Attribute Target_Name
  
  
*************** standard gcc target name without the ter
*** 12301,12307 ****
  example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”).
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1c2}
  @section Attribute To_Address
  
  
--- 12322,12328 ----
  example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”).
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1c3}
  @section Attribute To_Address
  
  
*************** static expression and where the function
*** 12319,12330 ****
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
  -(2**(m-1)) .. 2**m-1, where m is the memory size
! (typically 32 or 64). Negative values are intepreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1c3}
  @section Attribute To_Any
  
  
--- 12340,12351 ----
  (since the function call is always nonstatic, even if its
  argument is static). The argument must be in the range
  -(2**(m-1)) .. 2**m-1, where m is the memory size
! (typically 32 or 64). Negative values are interpreted in a
  modular manner (e.g., -1 means the same as 16#FFFF_FFFF# on
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1c4}
  @section Attribute To_Any
  
  
*************** This internal attribute is used for the
*** 12334,12340 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1c4}
  @section Attribute Type_Class
  
  
--- 12355,12361 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1c5}
  @section Attribute Type_Class
  
  
*************** applies to all concurrent types.  This a
*** 12364,12370 ****
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1c5}
  @section Attribute Type_Key
  
  
--- 12385,12391 ----
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1c6}
  @section Attribute Type_Key
  
  
*************** about the type or subtype. This provides
*** 12376,12382 ****
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1c6}
  @section Attribute TypeCode
  
  
--- 12397,12403 ----
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1c7}
  @section Attribute TypeCode
  
  
*************** This internal attribute is used for the
*** 12386,12392 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1c7}
  @section Attribute Unconstrained_Array
  
  
--- 12407,12413 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1c8}
  @section Attribute Unconstrained_Array
  
  
*************** still static, and yields the result of a
*** 12400,12406 ****
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1c8}
  @section Attribute Universal_Literal_String
  
  
--- 12421,12427 ----
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1c9}
  @section Attribute Universal_Literal_String
  
  
*************** end;
*** 12428,12434 ****
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1c9}
  @section Attribute Unrestricted_Access
  
  
--- 12449,12455 ----
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1ca}
  @section Attribute Unrestricted_Access
  
  
*************** In general this is a risky approach. It
*** 12615,12621 ****
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ca}
  @section Attribute Update
  
  
--- 12636,12642 ----
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1cb}
  @section Attribute Update
  
  
*************** Rvar2 : Rec := Rvar1'Update (B => 20);
*** 12662,12668 ****
  @end example
  
  yields a value for @code{Rvar2} of (A => 1, B => 20, C => 3),
! with @code{Rvar1} being unmodifed.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
--- 12683,12689 ----
  @end example
  
  yields a value for @code{Rvar2} of (A => 1, B => 20, C => 3),
! with @code{Rvar1} being unmodified.
  Note that the value of the attribute reference is computed
  completely before it is used. This means that if you write:
  
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 12696,12702 ****
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1cb}
  @section Attribute Valid_Value
  
  
--- 12717,12723 ----
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1cc}
  @section Attribute Valid_Value
  
  
*************** a function that takes a String, and retu
*** 12708,12714 ****
  returns True if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1cc}
  @section Attribute Valid_Scalars
  
  
--- 12729,12735 ----
  returns True if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1cd}
  @section Attribute Valid_Scalars
  
  
*************** write a function with a single use of th
*** 12742,12748 ****
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1cd}
  @section Attribute VADS_Size
  
  
--- 12763,12769 ----
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1ce}
  @section Attribute VADS_Size
  
  
*************** gives the result that would be obtained
*** 12762,12768 ****
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{17a}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1ce}
  @section Attribute Value_Size
  
  
--- 12783,12789 ----
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{17b}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1cf}
  @section Attribute Value_Size
  
  
*************** a value of the given subtype.  It is the
*** 12776,12782 ****
  but, unlike @code{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1cf}
  @section Attribute Wchar_T_Size
  
  
--- 12797,12803 ----
  but, unlike @code{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1d0}
  @section Attribute Wchar_T_Size
  
  
*************** primarily for constructing the definitio
*** 12788,12794 ****
  package @code{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1d0}
  @section Attribute Word_Size
  
  
--- 12809,12815 ----
  package @code{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1d1}
  @section Attribute Word_Size
  
  
*************** prefix) provides the value @code{System.
*** 12799,12805 ****
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1d1}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1d2}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}
  @chapter Standard and Implementation Defined Restrictions
  
  
--- 12820,12826 ----
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1d2}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1d3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}
  @chapter Standard and Implementation Defined Restrictions
  
  
*************** language defined or GNAT-specific, are l
*** 12828,12834 ****
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1d3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1d4}
  @section Partition-Wide Restrictions
  
  
--- 12849,12855 ----
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1d4}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1d5}
  @section Partition-Wide Restrictions
  
  
*************** then all compilation units in the partit
*** 12921,12927 ****
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1d5}
  @subsection Immediate_Reclamation
  
  
--- 12942,12948 ----
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1d6}
  @subsection Immediate_Reclamation
  
  
*************** deallocation, any storage reserved at ru
*** 12933,12939 ****
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1d6}
  @subsection Max_Asynchronous_Select_Nesting
  
  
--- 12954,12960 ----
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1d7}
  @subsection Max_Asynchronous_Select_Nesting
  
  
*************** detected at compile time. Violations of
*** 12945,12951 ****
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1d7}
  @subsection Max_Entry_Queue_Length
  
  
--- 12966,12972 ----
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1d8}
  @subsection Max_Entry_Queue_Length
  
  
*************** compatibility purposes (and a warning wi
*** 12966,12972 ****
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1d8}
  @subsection Max_Protected_Entries
  
  
--- 12987,12993 ----
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1d9}
  @subsection Max_Protected_Entries
  
  
*************** bounds of every entry family of a protec
*** 12977,12983 ****
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1d9}
  @subsection Max_Select_Alternatives
  
  
--- 12998,13004 ----
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1da}
  @subsection Max_Select_Alternatives
  
  
*************** defined by a discriminant of a subtype w
*** 12986,12992 ****
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1da}
  @subsection Max_Storage_At_Blocking
  
  
--- 13007,13013 ----
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1db}
  @subsection Max_Storage_At_Blocking
  
  
*************** Storage_Size that can be retained by a b
*** 12997,13003 ****
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1db}
  @subsection Max_Task_Entries
  
  
--- 13018,13024 ----
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1dc}
  @subsection Max_Task_Entries
  
  
*************** defined by a discriminant of a subtype w
*** 13010,13016 ****
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1dc}
  @subsection Max_Tasks
  
  
--- 13031,13037 ----
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1dd}
  @subsection Max_Tasks
  
  
*************** zero are detected for library-level task
*** 13024,13030 ****
  not detected for local tasks at all.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1dd}
  @subsection No_Abort_Statements
  
  
--- 13045,13051 ----
  not detected for local tasks at all.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1de}
  @subsection No_Abort_Statements
  
  
*************** not detected for local tasks at all.
*** 13034,13040 ****
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1de}
  @subsection No_Access_Parameter_Allocators
  
  
--- 13055,13061 ----
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1df}
  @subsection No_Access_Parameter_Allocators
  
  
*************** occurrences of an allocator as the actua
*** 13045,13051 ****
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1df}
  @subsection No_Access_Subprograms
  
  
--- 13066,13072 ----
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1e0}
  @subsection No_Access_Subprograms
  
  
*************** parameter.
*** 13055,13061 ****
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1e0}
  @subsection No_Allocators
  
  
--- 13076,13082 ----
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1e1}
  @subsection No_Allocators
  
  
*************** declarations of access-to-subprogram typ
*** 13065,13071 ****
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1e1}
  @subsection No_Anonymous_Allocators
  
  
--- 13086,13092 ----
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1e2}
  @subsection No_Anonymous_Allocators
  
  
*************** occurrences of an allocator.
*** 13075,13081 ****
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1e2}
  @subsection No_Asynchronous_Control
  
  
--- 13096,13102 ----
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1e3}
  @subsection No_Asynchronous_Control
  
  
*************** occurrences of an allocator of anonymous
*** 13085,13091 ****
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1e3}
  @subsection No_Calendar
  
  
--- 13106,13112 ----
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1e4}
  @subsection No_Calendar
  
  
*************** dependences on the predefined package As
*** 13095,13101 ****
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1e4}
  @subsection No_Coextensions
  
  
--- 13116,13122 ----
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1e5}
  @subsection No_Coextensions
  
  
*************** dependences on package Calendar.
*** 13105,13111 ****
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1e5}
  @subsection No_Default_Initialization
  
  
--- 13126,13132 ----
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1e6}
  @subsection No_Default_Initialization
  
  
*************** is to prohibit all cases of variables de
*** 13122,13128 ****
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1e6}
  @subsection No_Delay
  
  
--- 13143,13149 ----
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1e7}
  @subsection No_Delay
  
  
*************** initializer (including the case of OUT s
*** 13132,13138 ****
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1e7}
  @subsection No_Dependence
  
  
--- 13153,13159 ----
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1e8}
  @subsection No_Dependence
  
  
*************** to support specific constructs of the la
*** 13162,13168 ****
  @code{System.Memory_Copy}: memory copy routine (aka @code{memcpy} for C),
  
  @item 
! @code{System.Memory_Move}: memoy move routine (aka @code{memmove} for C),
  
  @item 
  @code{System.Memory_Set}: memory set routine (aka @code{memset} for C),
--- 13183,13189 ----
  @code{System.Memory_Copy}: memory copy routine (aka @code{memcpy} for C),
  
  @item 
! @code{System.Memory_Move}: memory move routine (aka @code{memmove} for C),
  
  @item 
  @code{System.Memory_Set}: memory set routine (aka @code{memset} for C),
*************** to support specific constructs of the la
*** 13175,13181 ****
  @end itemize
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1e8}
  @subsection No_Direct_Boolean_Operators
  
  
--- 13196,13202 ----
  @end itemize
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1e9}
  @subsection No_Direct_Boolean_Operators
  
  
*************** protocol requires the use of short-circu
*** 13188,13194 ****
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1e9}
  @subsection No_Dispatch
  
  
--- 13209,13215 ----
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1ea}
  @subsection No_Dispatch
  
  
*************** composite boolean operations.
*** 13198,13204 ****
  occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1ea}
  @subsection No_Dispatching_Calls
  
  
--- 13219,13225 ----
  occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1eb}
  @subsection No_Dispatching_Calls
  
  
*************** end Example;
*** 13259,13265 ****
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1eb}
  @subsection No_Dynamic_Attachment
  
  
--- 13280,13286 ----
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1ec}
  @subsection No_Dynamic_Attachment
  
  
*************** compatibility purposes (and a warning wi
*** 13278,13284 ****
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1ec}
  @subsection No_Dynamic_Priorities
  
  
--- 13299,13305 ----
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1ed}
  @subsection No_Dynamic_Priorities
  
  
*************** warnings on obsolescent features are act
*** 13287,13293 ****
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1ed}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
--- 13308,13314 ----
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1ee}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
*************** restriction, the compiler can assume tha
*** 13299,13305 ****
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1ee}
  @subsection No_Enumeration_Maps
  
  
--- 13320,13326 ----
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1ef}
  @subsection No_Enumeration_Maps
  
  
*************** enumeration maps are used (that is Image
*** 13310,13316 ****
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1ef}
  @subsection No_Exception_Handlers
  
  
--- 13331,13337 ----
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1f0}
  @subsection No_Exception_Handlers
  
  
*************** the raise statement generated by the com
*** 13335,13341 ****
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1f0}
  @subsection No_Exception_Propagation
  
  
--- 13356,13362 ----
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1f1}
  @subsection No_Exception_Propagation
  
  
*************** the package GNAT.Current_Exception is no
*** 13352,13358 ****
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1f1}
  @subsection No_Exception_Registration
  
  
--- 13373,13379 ----
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1f2}
  @subsection No_Exception_Registration
  
  
*************** code is simplified by omitting the other
*** 13366,13372 ****
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1f2}
  @subsection No_Exceptions
  
  
--- 13387,13393 ----
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1f3}
  @subsection No_Exceptions
  
  
*************** raise statements and no exception handle
*** 13377,13383 ****
  generation of language-defined run-time checks.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1f3}
  @subsection No_Finalization
  
  
--- 13398,13404 ----
  generation of language-defined run-time checks.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1f4}
  @subsection No_Finalization
  
  
*************** object or a nested component, either dec
*** 13418,13424 ****
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1f4}
  @subsection No_Fixed_Point
  
  
--- 13439,13445 ----
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1f5}
  @subsection No_Fixed_Point
  
  
*************** deallocation of a controlled object no l
*** 13428,13434 ****
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1f5}
  @subsection No_Floating_Point
  
  
--- 13449,13455 ----
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1f6}
  @subsection No_Floating_Point
  
  
*************** occurrences of fixed point types and ope
*** 13438,13444 ****
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1f6}
  @subsection No_Implicit_Conditionals
  
  
--- 13459,13465 ----
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1f7}
  @subsection No_Implicit_Conditionals
  
  
*************** normal manner. Constructs generating imp
*** 13454,13460 ****
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1f7}
  @subsection No_Implicit_Dynamic_Code
  
  
--- 13475,13481 ----
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1f8}
  @subsection No_Implicit_Dynamic_Code
  
  
*************** foreign-language convention; primitive o
*** 13484,13490 ****
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1f8}
  @subsection No_Implicit_Heap_Allocations
  
  
--- 13505,13511 ----
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1f9}
  @subsection No_Implicit_Heap_Allocations
  
  
*************** types.
*** 13493,13499 ****
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1f9}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
--- 13514,13520 ----
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1fa}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
*************** types.
*** 13503,13509 ****
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1fa}
  @subsection No_Implicit_Task_Allocations
  
  
--- 13524,13530 ----
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1fb}
  @subsection No_Implicit_Task_Allocations
  
  
*************** protected object.
*** 13512,13518 ****
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1fb}
  @subsection No_Initialize_Scalars
  
  
--- 13533,13539 ----
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1fc}
  @subsection No_Initialize_Scalars
  
  
*************** code, and in particular eliminates dummy
*** 13524,13530 ****
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1fc}
  @subsection No_IO
  
  
--- 13545,13551 ----
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1fd}
  @subsection No_IO
  
  
*************** dependences on any of the library units
*** 13535,13541 ****
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1fd}
  @subsection No_Local_Allocators
  
  
--- 13556,13562 ----
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1fe}
  @subsection No_Local_Allocators
  
  
*************** occurrences of an allocator in subprogra
*** 13546,13552 ****
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1fe}
  @subsection No_Local_Protected_Objects
  
  
--- 13567,13573 ----
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1ff}
  @subsection No_Local_Protected_Objects
  
  
*************** and entry bodies.
*** 13556,13562 ****
  only declared at the library level.
  
  @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1ff}
  @subsection No_Local_Tagged_Types
  
  
--- 13577,13583 ----
  only declared at the library level.
  
  @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{200}
  @subsection No_Local_Tagged_Types
  
  
*************** only declared at the library level.
*** 13566,13572 ****
  declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{200}
  @subsection No_Local_Timing_Events
  
  
--- 13587,13593 ----
  declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{201}
  @subsection No_Local_Timing_Events
  
  
*************** declared at the library level.
*** 13576,13582 ****
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{201}
  @subsection No_Long_Long_Integers
  
  
--- 13597,13603 ----
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{202}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 13588,13594 ****
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{202}
  @subsection No_Multiple_Elaboration
  
  
--- 13609,13615 ----
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{203}
  @subsection No_Multiple_Elaboration
  
  
*************** possible, including non-Ada main program
*** 13604,13610 ****
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{203}
  @subsection No_Nested_Finalization
  
  
--- 13625,13631 ----
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{204}
  @subsection No_Nested_Finalization
  
  
*************** permitted and will be diagnosed by the b
*** 13613,13619 ****
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{204}
  @subsection No_Protected_Type_Allocators
  
  
--- 13634,13640 ----
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{205}
  @subsection No_Protected_Type_Allocators
  
  
*************** permitted and will be diagnosed by the b
*** 13623,13629 ****
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{205}
  @subsection No_Protected_Types
  
  
--- 13644,13650 ----
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{206}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 13633,13639 ****
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{206}
  @subsection No_Recursion
  
  
--- 13654,13660 ----
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{207}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 13643,13649 ****
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{207}
  @subsection No_Reentrancy
  
  
--- 13664,13670 ----
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{208}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 13653,13659 ****
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{208}
  @subsection No_Relative_Delay
  
  
--- 13674,13680 ----
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{209}
  @subsection No_Relative_Delay
  
  
*************** relative statements and prevents express
*** 13664,13670 ****
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{209}
  @subsection No_Requeue_Statements
  
  
--- 13685,13691 ----
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{20a}
  @subsection No_Requeue_Statements
  
  
*************** compatibility purposes (and a warning wi
*** 13682,13688 ****
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{20a}
  @subsection No_Secondary_Stack
  
  
--- 13703,13709 ----
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{20b}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 13695,13701 ****
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{20b}
  @subsection No_Select_Statements
  
  
--- 13716,13722 ----
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{20c}
  @subsection No_Select_Statements
  
  
*************** secondary stacks for tasks (excluding th
*** 13705,13711 ****
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{20c}
  @subsection No_Specific_Termination_Handlers
  
  
--- 13726,13732 ----
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{20d}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 13715,13721 ****
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{20d}
  @subsection No_Specification_of_Aspect
  
  
--- 13736,13742 ----
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{20e}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 13726,13732 ****
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{20e}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
--- 13747,13753 ----
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{20f}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 13738,13744 ****
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{20f}
  @subsection No_Standard_Storage_Pools
  
  
--- 13759,13765 ----
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{210}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 13750,13756 ****
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{210}
  @subsection No_Stream_Optimizations
  
  
--- 13771,13777 ----
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{211}
  @subsection No_Stream_Optimizations
  
  
*************** due to their superior performance. When
*** 13763,13769 ****
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{211}
  @subsection No_Streams
  
  
--- 13784,13790 ----
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{212}
  @subsection No_Streams
  
  
*************** configuration pragmas to avoid exposing
*** 13790,13796 ****
  entire partition.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{212}
  @subsection No_Tagged_Type_Registration
  
  
--- 13811,13817 ----
  entire partition.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{213}
  @subsection No_Tagged_Type_Registration
  
  
*************** are declared. This restriction may be ne
*** 13805,13811 ****
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{213}
  @subsection No_Task_Allocators
  
  
--- 13826,13832 ----
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{214}
  @subsection No_Task_Allocators
  
  
*************** the No_Elaboration_Code restriction.
*** 13815,13821 ****
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{214}
  @subsection No_Task_At_Interrupt_Priority
  
  
--- 13836,13842 ----
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{215}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 13827,13833 ****
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{215}
  @subsection No_Task_Attributes_Package
  
  
--- 13848,13854 ----
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{216}
  @subsection No_Task_Attributes_Package
  
  
*************** compatibility purposes (and a warning wi
*** 13844,13850 ****
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{216}
  @subsection No_Task_Hierarchy
  
  
--- 13865,13871 ----
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{217}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 13854,13860 ****
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{217}
  @subsection No_Task_Termination
  
  
--- 13875,13881 ----
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{218}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 13863,13869 ****
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{218}
  @subsection No_Tasking
  
  
--- 13884,13890 ----
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{219}
  @subsection No_Tasking
  
  
*************** and cause an error message to be output
*** 13876,13882 ****
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{219}
  @subsection No_Terminate_Alternatives
  
  
--- 13897,13903 ----
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{21a}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 13885,13891 ****
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{21a}
  @subsection No_Unchecked_Access
  
  
--- 13906,13912 ----
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{21b}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 13895,13901 ****
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{21b}
  @subsection No_Unchecked_Conversion
  
  
--- 13916,13922 ----
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{21c}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 13905,13911 ****
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{21c}
  @subsection No_Unchecked_Deallocation
  
  
--- 13926,13932 ----
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{21d}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 13915,13921 ****
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{21d}
  @subsection No_Use_Of_Attribute
  
  
--- 13936,13942 ----
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{21e}
  @subsection No_Use_Of_Attribute
  
  
*************** dependences on the predefined generic pr
*** 13925,13931 ****
  earlier versions of Ada.
  
  @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{21e}
  @subsection No_Use_Of_Entity
  
  
--- 13946,13952 ----
  earlier versions of Ada.
  
  @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{21f}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13945,13951 ****
  @end example
  
  @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{21f}
  @subsection No_Use_Of_Pragma
  
  
--- 13966,13972 ----
  @end example
  
  @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{220}
  @subsection No_Use_Of_Pragma
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13955,13961 ****
  earlier versions of Ada.
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{220}
  @subsection Pure_Barriers
  
  
--- 13976,13982 ----
  earlier versions of Ada.
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{221}
  @subsection Pure_Barriers
  
  
*************** but still ensures absence of side effect
*** 14006,14012 ****
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{221}
  @subsection Simple_Barriers
  
  
--- 14027,14033 ----
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{222}
  @subsection Simple_Barriers
  
  
*************** compatibility purposes (and a warning wi
*** 14025,14031 ****
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{222}
  @subsection Static_Priorities
  
  
--- 14046,14052 ----
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{223}
  @subsection Static_Priorities
  
  
*************** are static, and that there are no depend
*** 14036,14042 ****
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{223}
  @subsection Static_Storage_Size
  
  
--- 14057,14063 ----
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{224}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 14046,14052 ****
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{224}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{225}
  @section Program Unit Level Restrictions
  
  
--- 14067,14073 ----
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{225}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{226}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 14077,14083 ****
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{226}
  @subsection No_Elaboration_Code
  
  
--- 14098,14104 ----
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{227}
  @subsection No_Elaboration_Code
  
  
*************** associated with the unit. This counter i
*** 14133,14139 ****
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{227}
  @subsection No_Dynamic_Accessibility_Checks
  
  
--- 14154,14160 ----
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{228}
  @subsection No_Dynamic_Accessibility_Checks
  
  
*************** In all other cases, the level of T is as
*** 14182,14188 ****
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{228}
  @subsection No_Dynamic_Sized_Objects
  
  
--- 14203,14209 ----
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{229}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 14200,14206 ****
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{229}
  @subsection No_Entry_Queue
  
  
--- 14221,14227 ----
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{22a}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 14213,14219 ****
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{22a}
  @subsection No_Implementation_Aspect_Specifications
  
  
--- 14234,14240 ----
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{22b}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 14224,14230 ****
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{22b}
  @subsection No_Implementation_Attributes
  
  
--- 14245,14251 ----
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{22c}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 14236,14242 ****
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{22c}
  @subsection No_Implementation_Identifiers
  
  
--- 14257,14263 ----
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{22d}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 14247,14253 ****
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{22d}
  @subsection No_Implementation_Pragmas
  
  
--- 14268,14274 ----
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{22e}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 14258,14264 ****
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{22e}
  @subsection No_Implementation_Restrictions
  
  
--- 14279,14285 ----
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{22f}
  @subsection No_Implementation_Restrictions
  
  
*************** are present.  With this restriction, the
*** 14270,14276 ****
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{22f}
  @subsection No_Implementation_Units
  
  
--- 14291,14297 ----
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{230}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 14281,14287 ****
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{230}
  @subsection No_Implicit_Aliasing
  
  
--- 14302,14308 ----
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{231}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 14296,14302 ****
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{231}
  @subsection No_Implicit_Loops
  
  
--- 14317,14323 ----
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{232}
  @subsection No_Implicit_Loops
  
  
*************** arrays larger than about 5000 scalar com
*** 14313,14319 ****
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{232}
  @subsection No_Obsolescent_Features
  
  
--- 14334,14340 ----
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{233}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 14323,14329 ****
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{233}
  @subsection No_Wide_Characters
  
  
--- 14344,14350 ----
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{234}
  @subsection No_Wide_Characters
  
  
*************** appear in the program (that is literals
*** 14337,14343 ****
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{234}
  @subsection Static_Dispatch_Tables
  
  
--- 14358,14364 ----
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{235}
  @subsection Static_Dispatch_Tables
  
  
*************** type @code{Character}).
*** 14347,14353 ****
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{235}
  @subsection SPARK_05
  
  
--- 14368,14374 ----
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{236}
  @subsection SPARK_05
  
  
*************** or equivalently:
*** 14369,14376 ****
  gnatprove -P project.gpr --mode=check_all
  @end example
  
! @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{236}@anchor{gnat_rm/implementation_advice id1}@anchor{237}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
--- 14390,14397 ----
  gnatprove -P project.gpr --mode=check_all
  @end example
  
! @node Implementation Advice,GNAT Implementation Mode the -gnatg switch,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{237}@anchor{gnat_rm/implementation_advice id1}@anchor{238}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 14468,14474 ****
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{238}
  @section RM 1.1.3(20): Error Detection
  
  
--- 14489,14495 ----
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{239}
  @section RM 1.1.3(20): Error Detection
  
  
*************** or diagnosed at compile time.
*** 14485,14491 ****
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{239}
  @section RM 1.1.3(31): Child Units
  
  
--- 14506,14512 ----
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{23a}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 14501,14507 ****
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{23a}
  @section RM 1.1.5(12): Bounded Errors
  
  
--- 14522,14528 ----
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{23b}
  @section RM 1.1.5(12): Bounded Errors
  
  
*************** runtime.
*** 14518,14524 ****
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{23b}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{23c}
  @section RM 2.8(16): Pragmas
  
  
--- 14539,14545 ----
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{23c}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{23d}
  @section RM 2.8(16): Pragmas
  
  
*************** that this advice not be followed.  For d
*** 14631,14637 ****
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{23d}
  @section RM 2.8(17-19): Pragmas
  
  
--- 14652,14658 ----
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{23e}
  @section RM 2.8(17-19): Pragmas
  
  
*************** replacing @code{library_items}.”
*** 14652,14665 ****
  @end itemize
  @end quotation
  
! See @ref{23c,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{23e}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
--- 14673,14686 ----
  @end itemize
  @end quotation
  
! See @ref{23d,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{23f}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
*************** there is no such restriction.
*** 14687,14693 ****
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{23f}
  @section RM 3.5.4(28): Integer Types
  
  
--- 14708,14714 ----
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{240}
  @section RM 3.5.4(28): Integer Types
  
  
*************** are supported for convenient interface t
*** 14706,14712 ****
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{240}
  @section RM 3.5.4(29): Integer Types
  
  
--- 14727,14733 ----
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{241}
  @section RM 3.5.4(29): Integer Types
  
  
*************** Followed.
*** 14722,14728 ****
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{241}
  @section RM 3.5.5(8): Enumeration Values
  
  
--- 14743,14749 ----
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{242}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 14742,14748 ****
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{242}
  @section RM 3.5.7(17): Float Types
  
  
--- 14763,14769 ----
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{243}
  @section RM 3.5.7(17): Float Types
  
  
*************** is a software rather than a hardware for
*** 14772,14778 ****
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{243}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
--- 14793,14799 ----
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{244}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** Followed.
*** 14790,14796 ****
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{244}
  @section RM 9.6(30-31): Duration’Small
  
  
--- 14811,14817 ----
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{245}
  @section RM 9.6(30-31): Duration’Small
  
  
*************** it need not be the same time base as use
*** 14811,14817 ****
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{245}
  @section RM 10.2.1(12): Consistent Representation
  
  
--- 14832,14838 ----
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{246}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 14833,14839 ****
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{246}
  @section RM 11.4.1(19): Exception Information
  
  
--- 14854,14860 ----
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{247}
  @section RM 11.4.1(19): Exception Information
  
  
*************** Pragma @code{Discard_Names}.
*** 14864,14870 ****
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{247}
  @section RM 11.5(28): Suppression of Checks
  
  
--- 14885,14891 ----
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{248}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 14879,14885 ****
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{248}
  @section RM 13.1 (21-24): Representation Clauses
  
  
--- 14900,14906 ----
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{249}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** Followed.
*** 14931,14937 ****
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{249}
  @section RM 13.2(6-8): Packed Types
  
  
--- 14952,14958 ----
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{24a}
  @section RM 13.2(6-8): Packed Types
  
  
*************** subcomponent of the packed type.
*** 14962,14968 ****
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{24a}
  @section RM 13.3(14-19): Address Clauses
  
  
--- 14983,14989 ----
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{24b}
  @section RM 13.3(14-19): Address Clauses
  
  
*************** Followed.
*** 15015,15021 ****
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{24b}
  @section RM 13.3(29-35): Alignment Clauses
  
  
--- 15036,15042 ----
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{24c}
  @section RM 13.3(29-35): Alignment Clauses
  
  
*************** Followed.
*** 15072,15078 ****
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{24c}
  @section RM 13.3(42-43): Size Clauses
  
  
--- 15093,15099 ----
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{24d}
  @section RM 13.3(42-43): Size Clauses
  
  
*************** object’s @code{Alignment} (if the @cod
*** 15090,15096 ****
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{24d}
  @section RM 13.3(50-56): Size Clauses
  
  
--- 15111,15117 ----
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{24e}
  @section RM 13.3(50-56): Size Clauses
  
  
*************** Followed.
*** 15141,15147 ****
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{24e}
  @section RM 13.3(71-73): Component Size Clauses
  
  
--- 15162,15168 ----
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{24f}
  @section RM 13.3(71-73): Component Size Clauses
  
  
*************** Followed.
*** 15175,15181 ****
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{24f}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
--- 15196,15202 ----
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{250}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** Followed.
*** 15197,15203 ****
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{250}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
--- 15218,15224 ----
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{251}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
*************** and all mentioned features are implement
*** 15257,15263 ****
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{251}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
--- 15278,15284 ----
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{252}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 15277,15283 ****
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{252}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
--- 15298,15304 ----
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{253}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Followed.
*** 15295,15301 ****
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{253}
  @section RM 13.7(37): Address as Private
  
  
--- 15316,15322 ----
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{254}
  @section RM 13.7(37): Address as Private
  
  
*************** Followed.
*** 15313,15319 ****
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{254}
  @section RM 13.7.1(16): Address Operations
  
  
--- 15334,15340 ----
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{255}
  @section RM 13.7.1(16): Address Operations
  
  
*************** operation raises @code{Program_Error}, s
*** 15331,15337 ****
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{255}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
--- 15352,15358 ----
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{256}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
*************** Followed.
*** 15375,15381 ****
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{256}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
--- 15396,15402 ----
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{257}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 15426,15432 ****
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{257}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
--- 15447,15453 ----
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{258}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
*************** Followed.
*** 15441,15447 ****
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{258}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
--- 15462,15468 ----
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{259}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
*************** scalar types. This XDR alternative can b
*** 15472,15478 ****
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{259}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
--- 15493,15499 ----
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{25a}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 15490,15496 ****
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{25a}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
--- 15511,15517 ----
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{25b}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
*************** Followed.  GNAT provides no such localiz
*** 15507,15513 ****
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{25b}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
--- 15528,15534 ----
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{25c}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 15522,15528 ****
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{25c}
  @section RM A.5.2(46-47): Random Number Generation
  
  
--- 15543,15549 ----
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{25d}
  @section RM A.5.2(46-47): Random Number Generation
  
  
*************** condition here to hold true.
*** 15551,15557 ****
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{25d}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
--- 15572,15578 ----
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{25e}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
*************** this functionality.
*** 15575,15581 ****
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{25e}
  @section RM A.18: @code{Containers}
  
  
--- 15596,15602 ----
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{25f}
  @section RM A.18: @code{Containers}
  
  
*************** follow the implementation advice.
*** 15596,15602 ****
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{25f}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
--- 15617,15623 ----
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{260}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
*************** Followed.
*** 15644,15650 ****
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{260}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
--- 15665,15671 ----
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{261}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
*************** Followed.  GNAT provides all the package
*** 15674,15680 ****
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{261}
  @section RM B.3(63-71): Interfacing with C
  
  
--- 15695,15701 ----
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{262}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 15762,15768 ****
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{262}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
--- 15783,15789 ----
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{263}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 15803,15809 ****
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{263}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
--- 15824,15830 ----
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{264}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 15854,15860 ****
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{264}
  @section RM C.1(3-5): Access to Machine Operations
  
  
--- 15875,15881 ----
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{265}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** object that is specified as exported.”
*** 15889,15895 ****
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{265}
  @section RM C.1(10-16): Access to Machine Operations
  
  
--- 15910,15916 ----
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{266}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 15950,15956 ****
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{266}
  @section RM C.3(28): Interrupt Support
  
  
--- 15971,15977 ----
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{267}
  @section RM C.3(28): Interrupt Support
  
  
*************** of interrupt blocking.
*** 15968,15974 ****
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{267}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
--- 15989,15995 ----
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{268}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** Followed.  Compile time warnings are giv
*** 15994,16000 ****
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{268}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
--- 16015,16021 ----
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{269}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
*************** Followed.
*** 16012,16018 ****
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{269}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
--- 16033,16039 ----
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{26a}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 16028,16034 ****
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{26a}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
--- 16049,16055 ----
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{26b}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
*************** Followed.
*** 16046,16052 ****
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{26b}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
--- 16067,16073 ----
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{26c}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** Not followed.  This implementation is no
*** 16067,16073 ****
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{26c}
  @section RM D.3(17): Locking Policies
  
  
--- 16088,16094 ----
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{26d}
  @section RM D.3(17): Locking Policies
  
  
*************** whose names (@code{Inheritance_Locking}
*** 16084,16090 ****
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{26d}
  @section RM D.4(16): Entry Queuing Policies
  
  
--- 16105,16111 ----
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{26e}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 16099,16105 ****
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{26e}
  @section RM D.6(9-10): Preemptive Abort
  
  
--- 16120,16126 ----
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{26f}
  @section RM D.6(9-10): Preemptive Abort
  
  
*************** Followed.
*** 16125,16131 ****
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{26f}
  @section RM D.7(21): Tasking Restrictions
  
  
--- 16146,16152 ----
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{270}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** pragma @code{Profile (Restricted)} for m
*** 16144,16150 ****
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{270}
  @section RM D.8(47-49): Monotonic Time
  
  
--- 16165,16171 ----
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{271}
  @section RM D.8(47-49): Monotonic Time
  
  
*************** Followed.
*** 16179,16185 ****
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{271}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
--- 16200,16206 ----
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{272}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** should allow them to block until the cor
*** 16191,16197 ****
  returns.”
  @end quotation
  
! A separately supplied PCS that can be used with GNAT when combined with the PolyORB product (NB! See the note in @ref{272,,PolyORB} regarding the lifetime
  of this product).
  
  @quotation
--- 16212,16218 ----
  returns.”
  @end quotation
  
! A separately supplied PCS that can be used with GNAT when combined with the PolyORB product (NB! See the note in @ref{273,,PolyORB} regarding the lifetime
  of this product).
  
  @quotation
*************** write the @code{Item} into the stream.�
*** 16204,16210 ****
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{273}
  @section RM F(7): COBOL Support
  
  
--- 16225,16231 ----
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{274}
  @section RM F(7): COBOL Support
  
  
*************** Followed.
*** 16224,16230 ****
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{274}
  @section RM F.1(2): Decimal Radix Support
  
  
--- 16245,16251 ----
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{275}
  @section RM F.1(2): Decimal Radix Support
  
  
*************** representations.
*** 16240,16246 ****
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{275}
  @section RM G: Numerics
  
  
--- 16261,16267 ----
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{276}
  @section RM G: Numerics
  
  
*************** Followed.
*** 16260,16266 ****
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{276}
  @section RM G.1.1(56-58): Complex Types
  
  
--- 16281,16287 ----
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{277}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Followed.
*** 16322,16328 ****
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{277}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
--- 16343,16349 ----
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{278}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
*************** Followed.
*** 16344,16350 ****
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{278}
  @section RM G.2.4(19): Accuracy Requirements
  
  
--- 16365,16371 ----
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{279}
  @section RM G.2.4(19): Accuracy Requirements
  
  
*************** Followed.
*** 16368,16374 ****
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{279}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
--- 16389,16395 ----
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{27a}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
*************** Followed.
*** 16386,16392 ****
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{27a}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
--- 16407,16413 ----
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{27b}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
*************** immediately terminated.”
*** 16400,16407 ****
  
  Not followed.
  
! @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{27b}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{27c}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}
  @chapter Implementation Defined Characteristics
  
  
--- 16421,16593 ----
  
  Not followed.
  
! @node GNAT Implementation Mode the -gnatg switch,Implementation Defined Characteristics,Implementation Advice,Top
! @anchor{gnat_rm/gnat_implementation_mode doc}@anchor{27c}@anchor{gnat_rm/gnat_implementation_mode gnat-implementation-mode}@anchor{b}@anchor{gnat_rm/gnat_implementation_mode gnat-implementation-mode-the-gnatg-switch}@anchor{27d}
! @chapter GNAT Implementation Mode (the @code{-gnatg} switch)
! 
! 
! @code{-gnatg} enables `GNAT implementation mode', the internal compilation mode
! used when building GNAT itself and its runtime libraries. It is not intended
! for user application programs.
! 
! It implies @code{-gnatw.ge} (extended warning set, treated as errors) and
! @code{-gnatyg} (GNAT style checks).
! 
! @menu
! * Language & Semantic Changes:: 
! 
! @end menu
! 
! @node Language & Semantic Changes,,,GNAT Implementation Mode the -gnatg switch
! @anchor{gnat_rm/gnat_implementation_mode language-semantic-changes}@anchor{27e}
! @section Language & Semantic Changes
! 
! 
! @menu
! * Ada Version and Identifier Rules:: 
! * Limited Types:: 
! * Preelaboration and Categorization:: 
! * Overflow:: 
! * Miscellaneous:: 
! * ALI Files and Recompilation:: 
! 
! @end menu
! 
! @node Ada Version and Identifier Rules,Limited Types,,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode ada-version-and-identifier-rules}@anchor{27f}
! @subsection Ada Version and Identifier Rules
! 
! 
! 
! @itemize *
! 
! @item 
! `Ada version is fixed at Ada 2012', regardless of other switches.
! 
! @item 
! `Identifier character set is restricted to 7-bit ASCII';
! extended characters are disallowed.
! 
! @item 
! `Identifiers are allowed to start with underscore' to avoid conflicts
! between global symbols in the runtime and those defined in the user code.
! @end itemize
! 
! @node Limited Types,Preelaboration and Categorization,Ada Version and Identifier Rules,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode limited-types}@anchor{280}
! @subsection Limited Types
! 
! 
! 
! @itemize *
! 
! @item 
! Copying limited objects is `permitted' (normally illegal).
! 
! @item 
! Initializing limited types emits a `warning' rather than an error.
! 
! @item 
! Returning objects of limited types is `permitted'.
! @end itemize
! 
! @node Preelaboration and Categorization,Overflow,Limited Types,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode preelaboration-and-categorization}@anchor{281}
! @subsection Preelaboration and Categorization
! 
! 
! 
! @itemize *
! 
! @item 
! Categorization errors (pure/preelaborated unit violations) are downgraded
! to `warnings'.
! 
! @item 
! Statements in preelaborated units emit a `warning' rather than an error.
! 
! @item 
! Private objects and non-static constants/calls in preelaborated units emit
! `warnings' rather than errors.
! 
! @item 
! Calls to non-preelaborable subprograms in preelaborated packages are
! demoted to `suppressible warnings' (RM 10.2.1), allowing the runtime to
! include elaboration code that would otherwise be forbidden.
! 
! @item 
! Assignment statements to library-level variables are `excluded' from
! access-before-elaboration (ABE) analysis, on the assumption that the
! predefined runtime manages its own elaboration order correctly.
! @end itemize
! 
! @node Overflow,Miscellaneous,Preelaboration and Categorization,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode overflow}@anchor{282}
! @subsection Overflow
! 
! 
! Overflow checks are `suppressed' but the overflow checking mode is set to
! `Strict' (for assertion purposes).
! 
! @node Miscellaneous,ALI Files and Recompilation,Overflow,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode miscellaneous}@anchor{283}
! @subsection Miscellaneous
! 
! 
! 
! @itemize *
! 
! @item 
! @code{Scalar_Storage_Order} attribute applies to `generic types' (normally
! it does not).
! 
! @item 
! Only the @code{--!} special comment sequence is recognized; all others are
! disallowed.
! 
! @item 
! The @code{Priority} aspect/attribute on protected types accepts the
! unconstrained type @code{Any_Priority} rather than the subtype
! @code{System.Priority} (a subrange of @code{Integer}), giving GNAT’s own
! protected objects access to the full implementation-defined priority range.
! 
! @item 
! @code{pragma Extend_System} is `ignored' (prevents circularities in System).
! Exception: predefined renaming units (@code{Text_IO}, @code{Direct_IO}, etc.) are
! compiled without GNAT implementation mode so that @code{Extend_System} still
! works for them.
! 
! @item 
! Importing a non-pure external function (@code{pragma Import}) into a @code{Pure}
! unit does `not' produce a purity warning, on the assumption that the
! runtime knows the purity properties of the C functions it imports.
! 
! @item 
! @code{pragma Style_Checks ("All_Checks")} activates the stricter @code{-gnatyg}
! rule set rather than the default @code{-gnaty} set.
! @end itemize
! 
! @node ALI Files and Recompilation,,Miscellaneous,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode ali-files-and-recompilation}@anchor{284}
! @subsection ALI Files and Recompilation
! 
! 
! 
! @itemize *
! 
! @item 
! ALI files are always generated for predefined generic packages.
! 
! @item 
! Compiling a unit whose top-level name is @code{Ada}, @code{Interfaces}, or
! @code{System} as the main unit is permitted; the RM reserves these as
! hierarchical library-unit name prefixes, but the diagnostic is suppressed
! to let GNAT compile its own predefined library (@code{Ada.Text_IO},
! @code{System.Storage_Elements}, etc.) as main units.
! @end itemize
! 
! @node Implementation Defined Characteristics,Intrinsic Subprograms,GNAT Implementation Mode the -gnatg switch,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{285}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{286}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{c}
  @chapter Implementation Defined Characteristics
  
  
*************** may have been set by a call to @code{Ada
*** 17042,17048 ****
  “The mechanisms for building and running partitions.  See 10.2(24).”
  @end itemize
  
! GNAT itself supports programs with only a single partition. The PolyORB product (which also includes an implementation of the PCS) provides a completely flexible method for building and running programs consisting of multiple partitions. `NB!' See the note in @ref{272,,PolyORB} regarding the lifetime
  of this product.
  
  
--- 17228,17234 ----
  “The mechanisms for building and running partitions.  See 10.2(24).”
  @end itemize
  
! GNAT itself supports programs with only a single partition. The PolyORB product (which also includes an implementation of the PCS) provides a completely flexible method for building and running programs consisting of multiple partitions. `NB!' See the note in @ref{273,,PolyORB} regarding the lifetime
  of this product.
  
  
*************** implementation.  See 10.2(28).”
*** 17064,17070 ****
  @end itemize
  
  Passive partitions are supported on targets where shared memory is
! provided by the operating system. `NB!' See the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
--- 17250,17256 ----
  @end itemize
  
  Passive partitions are supported on targets where shared memory is
! provided by the operating system. `NB!' See the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** See separate section on data representat
*** 17247,17253 ****
  such aspects and the legality rules for such aspects.  See 13.1.1(38).”
  @end itemize
  
! See @ref{131,,Implementation Defined Aspects}.
  
  
  @itemize *
--- 17433,17439 ----
  such aspects and the legality rules for such aspects.  See 13.1.1(38).”
  @end itemize
  
! See @ref{132,,Implementation Defined Aspects}.
  
  
  @itemize *
*************** These names are interpreted consistently
*** 17654,17660 ****
  @itemize *
  
  @item 
! “The maxium value for a file size in Directories.  See A.16(87).”
  @end itemize
  
  Directories.File_Size’Last is equal to Long_Long_Integer’Last .
--- 17840,17846 ----
  @itemize *
  
  @item 
! “The maximum value for a file size in Directories.  See A.16(87).”
  @end itemize
  
  Directories.File_Size’Last is equal to Long_Long_Integer’Last .
*************** When the @code{Pattern} parameter is not
*** 17691,17697 ****
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{27d,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
--- 17877,17883 ----
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{287,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
*************** programs.  See E(5).”
*** 18450,18456 ****
  @end itemize
  
  The PolyORB product provides means creating and executing
! distributed programs. `NB!' See the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
--- 18636,18642 ----
  @end itemize
  
  The PolyORB product provides means creating and executing
! distributed programs. `NB!' See the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** inaccessible.  See E.1(7).”
*** 18461,18467 ****
  @end itemize
  
  See the PolyORB user guide for full details on such events.
! `NB!' Consider the note in @ref{272,,PolyORB} regarding the lifetime
  of this product.
  
  
--- 18647,18653 ----
  @end itemize
  
  See the PolyORB user guide for full details on such events.
! `NB!' Consider the note in @ref{273,,PolyORB} regarding the lifetime
  of this product.
  
  
*************** shared resources between partitions in c
*** 18473,18479 ****
  @end itemize
  
  See the PolyORB user guide for full details on these aspects of
! multi-partition execution. `NB!' Consider the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
--- 18659,18665 ----
  @end itemize
  
  See the PolyORB user guide for full details on these aspects of
! multi-partition execution. `NB!' Consider the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** immediately aborted as a result of cance
*** 18484,18490 ****
  @end itemize
  
  See the PolyORB user guide for details on the effect of abort in
! a distributed application.  `NB!' Consider the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
--- 18670,18676 ----
  @end itemize
  
  See the PolyORB user guide for details on the effect of abort in
! a distributed application.  `NB!' Consider the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** System.RPC.Partition_ID’Last is Intege
*** 18503,18509 ****
  @end itemize
  
  See the PolyORB user guide for a full description of all
! implementation defined interfaces.  `NB!' See the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
--- 18689,18695 ----
  @end itemize
  
  See the PolyORB user guide for a full description of all
! implementation defined interfaces.  `NB!' See the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** Information on those subjects is not yet
*** 18791,18797 ****
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{27f}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}
  @chapter Intrinsic Subprograms
  
  
--- 18977,18983 ----
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{288}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{289}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{d}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 18829,18835 ****
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{281}
  @section Intrinsic Operators
  
  
--- 19015,19021 ----
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{28a}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{28b}
  @section Intrinsic Operators
  
  
*************** It is also possible to specify such oper
*** 18860,18866 ****
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{283}
  @section Compilation_ISO_Date
  
  
--- 19046,19052 ----
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{28c}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{28d}
  @section Compilation_ISO_Date
  
  
*************** application program should simply call t
*** 18874,18880 ****
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{285}
  @section Compilation_Date
  
  
--- 19060,19066 ----
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{28e}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{28f}
  @section Compilation_Date
  
  
*************** Same as Compilation_ISO_Date, except the
*** 18884,18890 ****
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{287}
  @section Compilation_Time
  
  
--- 19070,19076 ----
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{290}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{291}
  @section Compilation_Time
  
  
*************** application program should simply call t
*** 18898,18904 ****
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{288}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{289}
  @section Enclosing_Entity
  
  
--- 19084,19090 ----
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{292}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{293}
  @section Enclosing_Entity
  
  
*************** application program should simply call t
*** 18912,18918 ****
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{28a}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{28b}
  @section Exception_Information
  
  
--- 19098,19104 ----
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{294}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{295}
  @section Exception_Information
  
  
*************** so an application program should simply
*** 18926,18932 ****
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{28c}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{28d}
  @section Exception_Message
  
  
--- 19112,19118 ----
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{296}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{297}
  @section Exception_Message
  
  
*************** so an application program should simply
*** 18940,18946 ****
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{28e}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{28f}
  @section Exception_Name
  
  
--- 19126,19132 ----
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{298}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{299}
  @section Exception_Name
  
  
*************** so an application program should simply
*** 18954,18960 ****
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{290}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{291}
  @section File
  
  
--- 19140,19146 ----
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{29a}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{29b}
  @section File
  
  
*************** application program should simply call t
*** 18968,18974 ****
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{292}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{293}
  @section Line
  
  
--- 19154,19160 ----
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{29c}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{29d}
  @section Line
  
  
*************** application program should simply call t
*** 18982,18988 ****
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{294}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{295}
  @section Shifts and Rotates
  
  
--- 19168,19174 ----
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{29e}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{29f}
  @section Shifts and Rotates
  
  
*************** corresponding operator for modular type.
*** 19025,19031 ****
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{296}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{297}
  @section Source_Location
  
  
--- 19211,19217 ----
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{2a0}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{2a1}
  @section Source_Location
  
  
*************** application program should simply call t
*** 19039,19045 ****
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}
  @chapter Representation Clauses and Pragmas
  
  
--- 19225,19231 ----
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{2a3}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{e}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 19085,19091 ****
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{29b}
  @section Alignment Clauses
  
  
--- 19271,19277 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{2a5}
  @section Alignment Clauses
  
  
*************** For elementary types, the alignment is t
*** 19107,19113 ****
  objects of the type divided by @code{Storage_Unit},
  and the maximum default alignment supported by the target.
  (This maximum default alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{1a9,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
--- 19293,19299 ----
  objects of the type divided by @code{Storage_Unit},
  and the maximum default alignment supported by the target.
  (This maximum default alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{1aa,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
*************** assumption is non-portable, and other co
*** 19215,19221 ****
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{29d}
  @section Size Clauses
  
  
--- 19401,19407 ----
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{2a7}
  @section Size Clauses
  
  
*************** if it is known that a Size value can be
*** 19292,19298 ****
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{29f}
  @section Storage_Size Clauses
  
  
--- 19478,19484 ----
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{2a9}
  @section Storage_Size Clauses
  
  
*************** Of course in practice, there will not be
*** 19365,19371 ****
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{2a1}
  @section Size of Variant Record Objects
  
  
--- 19551,19557 ----
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{2ab}
  @section Size of Variant Record Objects
  
  
*************** the maximum size, regardless of the curr
*** 19475,19481 ****
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{2a3}
  @section Biased Representation
  
  
--- 19661,19667 ----
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{2ad}
  @section Biased Representation
  
  
*************** biased representation can be used for al
*** 19513,19519 ****
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{2a5}
  @section Value_Size and Object_Size Clauses
  
  
--- 19699,19705 ----
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{2af}
  @section Value_Size and Object_Size Clauses
  
  
*************** definition clause forces biased represen
*** 19829,19835 ****
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{2a7}
  @section Component_Size Clauses
  
  
--- 20015,20021 ----
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{2b0}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{2b1}
  @section Component_Size Clauses
  
  
*************** and a pragma Pack for the same array typ
*** 19877,19883 ****
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{2a9}
  @section Bit_Order Clauses
  
  
--- 20063,20069 ----
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{2b2}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{2b3}
  @section Bit_Order Clauses
  
  
*************** if desired.  The following section conta
*** 19983,19989 ****
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{2ab}
  @section Effect of Bit_Order on Byte Ordering
  
  
--- 20169,20175 ----
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{2b4}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{2b5}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** to set the boolean constant @code{Master
*** 20240,20246 ****
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2ad}
  @section Pragma Pack for Arrays
  
  
--- 20426,20432 ----
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{2b6}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2b7}
  @section Pragma Pack for Arrays
  
  
*************** Here 31-bit packing is achieved as requi
*** 20360,20366 ****
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2af}
  @section Pragma Pack for Records
  
  
--- 20546,20552 ----
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2b8}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2b9}
  @section Pragma Pack for Records
  
  
*************** array that is longer than 64 bits, so it
*** 20444,20450 ****
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2b0}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2b1}
  @section Record Representation Clauses
  
  
--- 20630,20636 ----
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2ba}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2bb}
  @section Record Representation Clauses
  
  
*************** end record;
*** 20523,20529 ****
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2b2}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2b3}
  @section Handling of Records with Holes
  
  
--- 20709,20715 ----
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2bc}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2bd}
  @section Handling of Records with Holes
  
  
*************** for Hrec'Size use 64;
*** 20599,20605 ****
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2b4}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2b5}
  @section Enumeration Clauses
  
  
--- 20785,20791 ----
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2be}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2bf}
  @section Enumeration Clauses
  
  
*************** the overhead of converting representatio
*** 20642,20648 ****
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2b6}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2b7}
  @section Address Clauses
  
  
--- 20828,20834 ----
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2c0}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2c1}
  @section Address Clauses
  
  
*************** then the program compiles without the wa
*** 20981,20987 ****
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2b8}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2b9}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
--- 21167,21173 ----
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2c2}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2c3}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** provides the pragma @code{Volatile_Full_
*** 21039,21045 ****
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2ba}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2bb}
  @section Effect of Convention on Representation
  
  
--- 21225,21231 ----
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2c4}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2c5}
  @section Effect of Convention on Representation
  
  
*************** when one of these values is read, any no
*** 21117,21123 ****
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2bc}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2bd}
  @section Conventions and Anonymous Access Types
  
  
--- 21303,21309 ----
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2c6}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2c7}
  @section Conventions and Anonymous Access Types
  
  
*************** done for the case of anonymous access-to
*** 21133,21139 ****
  In GNAT, we decide that if an explicit Convention is applied
  to an object or component, and its type is such an anonymous type,
  then the convention will apply to this anonymous type as well. This
! seems to make sense since it is anomolous in any case to have a
  different convention for an object and its type, and there is clearly
  no way to explicitly specify a convention for an anonymous type, since
  it doesn’t have a name to specify!
--- 21319,21325 ----
  In GNAT, we decide that if an explicit Convention is applied
  to an object or component, and its type is such an anonymous type,
  then the convention will apply to this anonymous type as well. This
! seems to make sense since it is anomalous in any case to have a
  different convention for an object and its type, and there is clearly
  no way to explicitly specify a convention for an anonymous type, since
  it doesn’t have a name to specify!
*************** package ConvComp is
*** 21193,21199 ****
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2be}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2bf}
  @section Determining the Representations chosen by GNAT
  
  
--- 21379,21385 ----
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2c8}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2c9}
  @section Determining the Representations chosen by GNAT
  
  
*************** generated by the compiler into the origi
*** 21345,21351 ****
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{2c0}@anchor{gnat_rm/standard_library_routines id1}@anchor{2c1}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}
  @chapter Standard Library Routines
  
  
--- 21531,21537 ----
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{2ca}@anchor{gnat_rm/standard_library_routines id1}@anchor{2cb}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{f}
  @chapter Standard Library Routines
  
  
*************** purposes the description in the Ada Refe
*** 21359,21365 ****
  text book, will be sufficient for making use of these facilities.
  
  In the case of the input-output facilities,
! @ref{f,,The Implementation of Standard I/O},
  gives details on exactly how GNAT interfaces to the
  file system.  For the remaining packages, the Ada Reference Manual
  should be sufficient.  The following is a list of the packages included,
--- 21545,21551 ----
  text book, will be sufficient for making use of these facilities.
  
  In the case of the input-output facilities,
! @ref{10,,The Implementation of Standard I/O},
  gives details on exactly how GNAT interfaces to the
  file system.  For the remaining packages, the Ada Reference Manual
  should be sufficient.  The following is a list of the packages included,
*************** For packages in Interfaces and System, a
*** 22172,22178 ****
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}
  @chapter The Implementation of Standard I/O
  
  
--- 22358,22364 ----
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{10}
  @chapter The Implementation of Standard I/O
  
  
*************** these additional facilities are also des
*** 22224,22230 ****
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2c5}
  @section Standard I/O Packages
  
  
--- 22410,22416 ----
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2cf}
  @section Standard I/O Packages
  
  
*************** flush the common I/O streams and in part
*** 22295,22301 ****
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2c7}
  @section FORM Strings
  
  
--- 22481,22487 ----
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2d1}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 22321,22327 ****
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2c9}
  @section Direct_IO
  
  
--- 22507,22513 ----
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2d3}
  @section Direct_IO
  
  
*************** There is no limit on the size of Direct_
*** 22340,22346 ****
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2cb}
  @section Sequential_IO
  
  
--- 22526,22532 ----
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2d5}
  @section Sequential_IO
  
  
*************** using Stream_IO, and this is the preferr
*** 22387,22393 ****
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2cd}
  @section Text_IO
  
  
--- 22573,22579 ----
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2d7}
  @section Text_IO
  
  
*************** the file.
*** 22470,22476 ****
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2cf}
  @subsection Stream Pointer Positioning
  
  
--- 22656,22662 ----
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2d9}
  @subsection Stream Pointer Positioning
  
  
*************** between two Ada files, then the differen
*** 22506,22512 ****
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2d1}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22692,22698 ----
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2db}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** to read data past that end of
*** 22557,22563 ****
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2d3}
  @subsection Get_Immediate
  
  
--- 22743,22749 ----
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2dd}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 22575,22581 ****
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2d5}
  @subsection Treating Text_IO Files as Streams
  
  
--- 22761,22767 ----
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2df}
  @subsection Treating Text_IO Files as Streams
  
  
*************** skipped and the effect is similar to tha
*** 22591,22597 ****
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2d7}
  @subsection Text_IO Extensions
  
  
--- 22777,22783 ----
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2e1}
  @subsection Text_IO Extensions
  
  
*************** the string is to be read.
*** 22619,22625 ****
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2d9}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
--- 22805,22811 ----
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2e3}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** files @code{a-szuzti.ads} and @code{a-sz
*** 22667,22673 ****
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2db}
  @section Wide_Text_IO
  
  
--- 22853,22859 ----
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2e5}
  @section Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 22914,22925 ****
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2dd}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2cd,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
--- 23100,23111 ----
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2e6}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2e7}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2d7,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
*************** to a normal program using @code{Wide_Tex
*** 22938,22944 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2df}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 23124,23130 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2e8}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2e9}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22949,22955 ****
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2e1}
  @section Wide_Wide_Text_IO
  
  
--- 23135,23141 ----
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2ea}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2eb}
  @section Wide_Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 23118,23129 ****
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2e3}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2cd,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
--- 23304,23315 ----
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2ec}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2ed}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2d7,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
*************** to a normal program using @code{Wide_Wid
*** 23142,23148 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2e5}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 23328,23334 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2ee}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2ef}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 23153,23159 ****
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2e6}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2e7}
  @section Stream_IO
  
  
--- 23339,23345 ----
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2f0}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2f1}
  @section Stream_IO
  
  
*************** manner described for stream attributes.
*** 23175,23181 ****
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2e8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2e9}
  @section Text Translation
  
  
--- 23361,23367 ----
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2f2}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2f3}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 23209,23215 ****
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2ea}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2eb}
  @section Shared Files
  
  
--- 23395,23401 ----
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2f4}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2f5}
  @section Shared Files
  
  
*************** heterogeneous input-output.  Although th
*** 23272,23278 ****
  for this purpose (using the stream attributes).
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2ec}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2ed}
  @section Filenames encoding
  
  
--- 23458,23464 ----
  for this purpose (using the stream attributes).
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2f6}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2f7}
  @section Filenames encoding
  
  
*************** platform. On the other Operating Systems
*** 23312,23318 ****
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2ee}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2ef}
  @section File content encoding
  
  
--- 23498,23504 ----
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2f8}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2f9}
  @section File content encoding
  
  
*************** Unicode 8-bit encoding
*** 23345,23351 ****
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2f0}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2f1}
  @section Open Modes
  
  
--- 23531,23537 ----
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2fa}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2fb}
  @section Open Modes
  
  
*************** subsequently requires switching from rea
*** 23448,23454 ****
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2f2}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2f3}
  @section Operations on C Streams
  
  
--- 23634,23640 ----
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2fc}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2fd}
  @section Operations on C Streams
  
  
*************** end Interfaces.C_Streams;
*** 23608,23614 ****
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2f4}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2f5}
  @section Interfacing to C Streams
  
  
--- 23794,23800 ----
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2fe}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2ff}
  @section Interfacing to C Streams
  
  
*************** imported from a C program, allowing an A
*** 23701,23707 ****
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id1}@anchor{2f7}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}
  @chapter The GNAT Library
  
  
--- 23887,23893 ----
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{300}@anchor{gnat_rm/the_gnat_library id1}@anchor{301}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{11}
  @chapter The GNAT Library
  
  
*************** of GNAT, and will generate a warning mes
*** 23887,23893 ****
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id2}@anchor{2f9}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
--- 24073,24079 ----
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id2}@anchor{303}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23904,23910 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id3}@anchor{2fb}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
--- 24090,24096 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id3}@anchor{305}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23921,23927 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id4}@anchor{2fd}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
--- 24107,24113 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id4}@anchor{307}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23938,23944 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id5}@anchor{2ff}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
--- 24124,24130 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id5}@anchor{309}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23955,23961 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id6}@anchor{301}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
--- 24141,24147 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id6}@anchor{30b}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23972,23978 ****
  (RM A.3.3(27)).
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id7}@anchor{303}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
--- 24158,24164 ----
  (RM A.3.3(27)).
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id7}@anchor{30d}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
*************** This child of @code{Ada.Containers} defi
*** 23984,23990 ****
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id8}@anchor{305}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
--- 24170,24176 ----
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id8}@anchor{30f}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
*************** provides a mechanism for obtaining envir
*** 23997,24003 ****
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id9}@anchor{307}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
--- 24183,24189 ----
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id9}@anchor{311}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
*************** to further calls to the subprograms in @
*** 24015,24021 ****
  will not see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id10}@anchor{309}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
--- 24201,24207 ----
  will not see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id10}@anchor{313}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
*************** Using a response file allow passing a se
*** 24035,24041 ****
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id11}@anchor{30b}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
--- 24221,24227 ----
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id11}@anchor{315}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24050,24056 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id12}@anchor{30d}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
--- 24236,24242 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id12}@anchor{317}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
*************** exception occurrence (@code{Null_Occurre
*** 24064,24070 ****
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id13}@anchor{30f}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
--- 24250,24256 ----
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id13}@anchor{319}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
*************** exceptions (hence the name last chance),
*** 24078,24084 ****
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id14}@anchor{311}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
--- 24264,24270 ----
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id14}@anchor{31b}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
*************** give a traceback array of addresses base
*** 24091,24097 ****
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id15}@anchor{313}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
--- 24277,24283 ----
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id15}@anchor{31d}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24106,24112 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id16}@anchor{315}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
--- 24292,24298 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id16}@anchor{31f}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24121,24127 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id17}@anchor{317}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
--- 24307,24313 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id17}@anchor{321}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
*************** strings, avoiding the necessity for an i
*** 24138,24144 ****
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id18}@anchor{319}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
--- 24324,24330 ----
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id18}@anchor{323}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
*************** wide strings, avoiding the necessity for
*** 24155,24161 ****
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id19}@anchor{31b}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
--- 24341,24347 ----
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id19}@anchor{325}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
*************** wide wide strings, avoiding the necessit
*** 24172,24178 ****
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id20}@anchor{31d}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
--- 24358,24364 ----
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id20}@anchor{327}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
*************** parameterless procedures. Note that such
*** 24184,24190 ****
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id21}@anchor{31f}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
--- 24370,24376 ----
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id21}@anchor{329}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24199,24205 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id22}@anchor{321}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
--- 24385,24391 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id22}@anchor{32b}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
*************** execution (for example a standard input
*** 24214,24220 ****
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id23}@anchor{323}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
--- 24400,24406 ----
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id23}@anchor{32d}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
*************** This package provides subprograms that a
*** 24227,24233 ****
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id24}@anchor{325}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
--- 24413,24419 ----
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id24}@anchor{32f}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24242,24248 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id25}@anchor{327}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
--- 24428,24434 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id25}@anchor{331}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
*************** execution (for example a standard input
*** 24257,24263 ****
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id26}@anchor{329}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
--- 24443,24449 ----
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id26}@anchor{333}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
*************** This package provides subprograms that a
*** 24270,24276 ****
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id27}@anchor{32b}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
--- 24456,24462 ----
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id27}@anchor{335}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24285,24291 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id28}@anchor{32d}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
--- 24471,24477 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id28}@anchor{337}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
*************** change during execution (for example a s
*** 24300,24306 ****
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id29}@anchor{32f}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
--- 24486,24492 ----
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id29}@anchor{339}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
*************** definitions of constants and types commo
*** 24313,24319 ****
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id30}@anchor{331}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
--- 24499,24505 ----
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id30}@anchor{33b}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
*************** binding.
*** 24324,24330 ****
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id31}@anchor{333}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
--- 24510,24516 ----
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id31}@anchor{33d}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
*************** library. The hard binding is provided as
*** 24338,24344 ****
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id32}@anchor{335}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
--- 24524,24530 ----
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id32}@anchor{33f}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
*************** This package exposes the various vector
*** 24350,24356 ****
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id33}@anchor{337}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
--- 24536,24542 ----
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id33}@anchor{341}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
*************** vector elements and provides a simple wa
*** 24365,24371 ****
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id34}@anchor{339}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
--- 24551,24557 ----
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id34}@anchor{343}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
*************** an array wherever the separators appear,
*** 24378,24384 ****
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id35}@anchor{33b}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
--- 24564,24570 ----
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id35}@anchor{345}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
*************** or more files containing formatted data.
*** 24393,24399 ****
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id36}@anchor{33d}
  @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
  
  
--- 24579,24585 ----
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id36}@anchor{347}
  @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
  
  
*************** Allow binary search of a sorted array (o
*** 24405,24411 ****
  the generic does not reference the array directly).
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id37}@anchor{33f}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
--- 24591,24597 ----
  the generic does not reference the array directly).
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id37}@anchor{349}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
*************** These associations can be specified usin
*** 24418,24424 ****
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id38}@anchor{341}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
--- 24604,24610 ----
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id38}@anchor{34b}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
*************** line switch.
*** 24429,24435 ****
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id39}@anchor{343}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
--- 24615,24621 ----
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id39}@anchor{34d}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
*************** useful directly or as parts of the imple
*** 24444,24450 ****
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id40}@anchor{345}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
--- 24630,24636 ----
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id40}@anchor{34f}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
*************** such as mailboxes.
*** 24457,24463 ****
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id41}@anchor{347}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
--- 24643,24649 ----
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id41}@anchor{351}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
*************** data items.  Exchange and comparison pro
*** 24472,24478 ****
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id42}@anchor{349}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
--- 24658,24664 ----
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id42}@anchor{353}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
*************** access-to-procedure values. This is an o
*** 24488,24494 ****
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id43}@anchor{34b}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
--- 24674,24680 ----
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id43}@anchor{355}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24504,24510 ****
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id44}@anchor{34d}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
--- 24690,24696 ----
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id44}@anchor{357}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
*************** multiple instantiations.
*** 24512,24518 ****
  
  @geindex UTF-8 representation
  
! @geindex Wide characte representations
  
  Provides a routine which given a string, reads the start of the string to
  see whether it is one of the standard byte order marks (BOM’s) which signal
--- 24698,24704 ----
  
  @geindex UTF-8 representation
  
! @geindex Wide character representations
  
  Provides a routine which given a string, reads the start of the string to
  see whether it is one of the standard byte order marks (BOM’s) which signal
*************** the encoding of the string. The routine
*** 24520,24526 ****
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT C_Time g-c_time ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id45}@anchor{34f}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
--- 24706,24712 ----
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT C_Time g-c_time ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id45}@anchor{359}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
*************** General routines for swapping the bytes
*** 24534,24540 ****
  Machine-specific implementations are available in some cases.
  
  @node GNAT C_Time g-c_time ads,GNAT Calendar g-calend ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-c-time-g-c-time-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id46}@anchor{351}
  @section @code{GNAT.C_Time} (@code{g-c_time.ads})
  
  
--- 24720,24726 ----
  Machine-specific implementations are available in some cases.
  
  @node GNAT C_Time g-c_time ads,GNAT Calendar g-calend ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-c-time-g-c-time-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id46}@anchor{35b}
  @section @code{GNAT.C_Time} (@code{g-c_time.ads})
  
  
*************** Provides the time_t, timeval and timespe
*** 24546,24552 ****
  types defined by the OS, as well as various conversion functions.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT C_Time g-c_time ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id47}@anchor{353}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
--- 24732,24738 ----
  types defined by the OS, as well as various conversion functions.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT C_Time g-c_time ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id47}@anchor{35d}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
*************** Extends the facilities provided by @code
*** 24558,24564 ****
  of days of the week, an extended @code{Split} and @code{Time_Of} capability.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id48}@anchor{355}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
--- 24744,24750 ----
  of days of the week, an extended @code{Split} and @code{Time_Of} capability.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id48}@anchor{35f}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
*************** of days of the week, an extended @code{S
*** 24569,24575 ****
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id49}@anchor{357}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
--- 24755,24761 ----
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id49}@anchor{361}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
*************** of this algorithm see
*** 24586,24592 ****
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id50}@anchor{359}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
--- 24772,24778 ----
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id50}@anchor{363}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
*************** without the overhead of the full casing
*** 24601,24607 ****
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id51}@anchor{35b}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
--- 24787,24793 ----
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id51}@anchor{365}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
*************** builds a table whose index is the key an
*** 24616,24622 ****
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id52}@anchor{35d}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
--- 24802,24808 ----
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id52}@anchor{367}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
*************** Common Gateway Interface (CGI).  It expo
*** 24631,24637 ****
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id53}@anchor{35f}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
--- 24817,24823 ----
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id53}@anchor{369}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
*************** This is a package to help debugging CGI
*** 24643,24649 ****
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id54}@anchor{361}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
--- 24829,24835 ----
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id54}@anchor{36b}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
*************** including the ability to scan for named
*** 24656,24662 ****
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id55}@anchor{363}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
--- 24842,24848 ----
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id55}@anchor{36d}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
*************** of the compiler if a consistent tool set
*** 24674,24680 ****
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id56}@anchor{365}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
--- 24860,24866 ----
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id56}@anchor{36f}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
*************** of a partition).
*** 24685,24691 ****
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id57}@anchor{367}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
--- 24871,24877 ----
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id57}@anchor{371}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
*************** This is particularly useful in simulatin
*** 24702,24708 ****
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id58}@anchor{369}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
--- 24888,24894 ----
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id58}@anchor{373}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
*************** problems.
*** 24719,24725 ****
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id59}@anchor{36b}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
--- 24905,24911 ----
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id59}@anchor{375}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
*************** to and from string images of address val
*** 24732,24738 ****
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id60}@anchor{36d}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
--- 24918,24924 ----
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id60}@anchor{377}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
*************** Useful in conjunction with Unicode chara
*** 24756,24762 ****
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id61}@anchor{36f}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
--- 24942,24948 ----
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id61}@anchor{379}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
*************** preinstantiation for UTF-8. See next ent
*** 24777,24783 ****
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id62}@anchor{371}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
--- 24963,24969 ----
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id62}@anchor{37b}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
*************** the current directory, making new direct
*** 24790,24796 ****
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id63}@anchor{373}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
--- 24976,24982 ----
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id63}@anchor{37d}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
*************** A child unit of GNAT.Directory_Operation
*** 24802,24808 ****
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id64}@anchor{375}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
--- 24988,24994 ----
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id64}@anchor{37f}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
*************** dynamic instances of the hash table, whi
*** 24820,24826 ****
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id65}@anchor{377}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
--- 25006,25012 ----
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id65}@anchor{381}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
*************** dynamic instances of the table, while an
*** 24840,24846 ****
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id66}@anchor{379}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
--- 25026,25032 ----
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id66}@anchor{383}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
*************** encoding method. Useful in conjunction w
*** 24862,24868 ****
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id67}@anchor{37b}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
--- 25048,25054 ----
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id67}@anchor{385}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
*************** Note there is a preinstantiation for UTF
*** 24883,24889 ****
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id68}@anchor{37d}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
--- 25069,25075 ----
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id68}@anchor{387}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
*************** for specific exceptions, or when any exc
*** 24896,24902 ****
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id69}@anchor{37f}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
--- 25082,25088 ----
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id69}@anchor{389}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
*************** Provides an interface allowing to contro
*** 24910,24916 ****
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id70}@anchor{381}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
--- 25096,25102 ----
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id70}@anchor{38b}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
*************** predefined exceptions, and for example a
*** 24931,24937 ****
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id71}@anchor{383}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
--- 25117,25123 ----
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id71}@anchor{38d}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
*************** It is not implemented for cross ports, a
*** 24947,24953 ****
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id72}@anchor{385}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
--- 25133,25139 ----
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id72}@anchor{38f}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
*************** ports. It is not implemented for cross p
*** 24959,24965 ****
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id73}@anchor{387}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
--- 25145,25151 ----
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id73}@anchor{391}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
*************** library calls may cause this mode to be
*** 24973,24979 ****
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id74}@anchor{389}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
--- 25159,25165 ----
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id74}@anchor{393}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
*************** derived from Integer, Float or enumerati
*** 24988,24994 ****
  formatted string.
  
  @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id75}@anchor{38b}
  @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
  
  
--- 25174,25180 ----
  formatted string.
  
  @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id75}@anchor{395}
  @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
  
  
*************** have a vector implementation that can be
*** 25006,25012 ****
  compiler when auto-vectorization is enabled.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id76}@anchor{38d}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
--- 25192,25198 ----
  compiler when auto-vectorization is enabled.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id76}@anchor{397}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
*************** access-to-procedure values.  The algorit
*** 25020,25026 ****
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id77}@anchor{38f}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
--- 25206,25212 ----
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id77}@anchor{399}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
*************** This differs from @code{GNAT.Heap_Sort}
*** 25036,25042 ****
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id78}@anchor{391}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
--- 25222,25228 ----
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id78}@anchor{39b}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 25050,25056 ****
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id79}@anchor{393}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
--- 25236,25242 ----
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id79}@anchor{39d}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
*************** data.  Provides two approaches, one a si
*** 25063,25069 ****
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id80}@anchor{395}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
--- 25249,25255 ----
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id80}@anchor{39f}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
*************** Standard_Input, and writing characters,
*** 25079,25085 ****
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id81}@anchor{397}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
--- 25265,25271 ----
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id81}@anchor{3a1}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
*************** Provides some auxiliary functions for us
*** 25093,25099 ****
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id82}@anchor{399}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
--- 25279,25285 ----
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id82}@anchor{3a3}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
*************** Provides a general interface for using f
*** 25107,25113 ****
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id83}@anchor{39b}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
--- 25293,25299 ----
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id83}@anchor{3a5}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
*************** The original implementation of @code{Ada
*** 25119,25125 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id84}@anchor{39d}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
--- 25305,25311 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id84}@anchor{3a7}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
*************** The original implementation of @code{Ada
*** 25131,25137 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id85}@anchor{39f}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
--- 25317,25323 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id85}@anchor{3a9}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
*************** the HMAC-MD5 message authentication func
*** 25144,25150 ****
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id86}@anchor{3a1}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
--- 25330,25336 ----
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id86}@anchor{3ab}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
*************** standard output or standard error files.
*** 25157,25163 ****
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id87}@anchor{3a3}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
--- 25343,25349 ----
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id87}@anchor{3ad}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
*************** various logging purposes, including dupl
*** 25171,25177 ****
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id88}@anchor{3a5}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
--- 25357,25363 ----
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id88}@anchor{3af}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
*************** including a portable spawn procedure, an
*** 25187,25193 ****
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id89}@anchor{3a7}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
--- 25373,25379 ----
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id89}@anchor{3b1}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
*************** hashcode are in the same order. These ha
*** 25205,25211 ****
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id90}@anchor{3a9}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
--- 25391,25397 ----
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id90}@anchor{3b3}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
*************** however NOT suitable for situations requ
*** 25219,25225 ****
  randomness.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{27d}@anchor{gnat_rm/the_gnat_library id91}@anchor{3aa}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
--- 25405,25411 ----
  randomness.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{287}@anchor{gnat_rm/the_gnat_library id91}@anchor{3b4}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
*************** simplest of the three pattern matching p
*** 25235,25241 ****
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id92}@anchor{3ac}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
--- 25421,25427 ----
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id92}@anchor{3b6}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
*************** registry API, but at a lower level of ab
*** 25249,25255 ****
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id93}@anchor{3ae}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
--- 25435,25441 ----
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id93}@anchor{3b8}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
*************** from the original V7 style regular expre
*** 25264,25270 ****
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id94}@anchor{3b0}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
--- 25450,25456 ----
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id94}@anchor{3ba}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
*************** full content to be processed is not load
*** 25278,25284 ****
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id95}@anchor{3b2}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
--- 25464,25470 ----
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id95}@anchor{3bc}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
*************** Provides the capability to query the hig
*** 25290,25296 ****
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id96}@anchor{3b4}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
--- 25476,25482 ----
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id96}@anchor{3be}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
*************** secondary stack.
*** 25301,25307 ****
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id97}@anchor{3b6}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
--- 25487,25493 ----
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id97}@anchor{3c0}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
*************** Provides a simple interface to send and
*** 25313,25319 ****
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id98}@anchor{3b8}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
--- 25499,25505 ----
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id98}@anchor{3c2}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
*************** and RFC 3174, and the HMAC-SHA1 message
*** 25326,25332 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id99}@anchor{3ba}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
--- 25512,25518 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id99}@anchor{3c4}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
*************** and the HMAC-SHA224 message authenticati
*** 25339,25345 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id100}@anchor{3bc}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
--- 25525,25531 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id100}@anchor{3c6}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
*************** and the HMAC-SHA256 message authenticati
*** 25352,25358 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id101}@anchor{3be}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
--- 25538,25544 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id101}@anchor{3c8}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
*************** and the HMAC-SHA384 message authenticati
*** 25365,25371 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id102}@anchor{3c0}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
--- 25551,25557 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id102}@anchor{3ca}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
*************** and the HMAC-SHA512 message authenticati
*** 25378,25384 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id103}@anchor{3c2}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
--- 25564,25570 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id103}@anchor{3cc}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
*************** Provides the ability to manipulate the b
*** 25390,25396 ****
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id104}@anchor{3c4}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
--- 25576,25582 ----
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id104}@anchor{3ce}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
*************** on all native GNAT ports and on VxWorks
*** 25405,25411 ****
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id105}@anchor{3c6}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
--- 25591,25597 ----
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id105}@anchor{3d0}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
*************** subprograms yielding the date and time o
*** 25419,25425 ****
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id106}@anchor{3c8}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
--- 25605,25611 ----
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id106}@anchor{3d2}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
*************** Provides a function for determining whet
*** 25431,25437 ****
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id107}@anchor{3ca}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
--- 25617,25623 ----
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id107}@anchor{3d4}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
*************** determining whether one string is a plau
*** 25444,25450 ****
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id108}@anchor{3cc}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
--- 25630,25636 ----
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id108}@anchor{3d6}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
*************** the SNOBOL4 dynamic pattern construction
*** 25460,25466 ****
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ce}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
--- 25646,25652 ----
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id109}@anchor{3d8}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
*************** useful for constructing arbitrary mappin
*** 25475,25481 ****
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id110}@anchor{3d0}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
--- 25661,25667 ----
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id110}@anchor{3da}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
*************** for type @code{Standard.Boolean}, giving
*** 25490,25496 ****
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id111}@anchor{3d2}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
--- 25676,25682 ----
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id111}@anchor{3dc}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
*************** for type @code{Standard.Integer}, giving
*** 25507,25513 ****
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id112}@anchor{3d4}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
--- 25693,25699 ----
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id112}@anchor{3de}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
*************** a variable length string type, giving an
*** 25524,25530 ****
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id113}@anchor{3d6}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
--- 25710,25716 ----
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id113}@anchor{3e0}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
*************** targets.  It exposes vector component ty
*** 25536,25542 ****
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id114}@anchor{3d8}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
--- 25722,25728 ----
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id114}@anchor{3e2}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
*************** introduction to the binding contents and
*** 25545,25551 ****
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id115}@anchor{3da}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
--- 25731,25737 ----
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id115}@anchor{3e4}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
*************** Provides a generic hash function working
*** 25557,25563 ****
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id116}@anchor{3dc}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
--- 25743,25749 ----
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3e5}@anchor{gnat_rm/the_gnat_library id116}@anchor{3e6}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
*************** Common String access types and related s
*** 25567,25573 ****
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id117}@anchor{3de}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
--- 25753,25759 ----
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id117}@anchor{3e8}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
*************** to the resulting slices. This package is
*** 25581,25587 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id118}@anchor{3e0}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
--- 25767,25773 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id118}@anchor{3ea}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
*************** while an instantiation of @code{GNAT.Dyn
*** 25601,25607 ****
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id119}@anchor{3e2}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
--- 25787,25793 ----
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id119}@anchor{3ec}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
*************** single global task lock.  Appropriate fo
*** 25618,25624 ****
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id120}@anchor{3e4}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
--- 25804,25810 ----
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id120}@anchor{3ee}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
*************** represents the current date and time in
*** 25633,25639 ****
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3e5}@anchor{gnat_rm/the_gnat_library id121}@anchor{3e6}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
--- 25819,25825 ----
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3ef}@anchor{gnat_rm/the_gnat_library id121}@anchor{3f0}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
*************** further details if your program has thre
*** 25650,25656 ****
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id122}@anchor{3e8}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
--- 25836,25842 ----
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id122}@anchor{3f2}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
*************** Provides a facility for obtaining non-sy
*** 25662,25668 ****
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id123}@anchor{3ea}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
--- 25848,25854 ----
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3f3}@anchor{gnat_rm/the_gnat_library id123}@anchor{3f4}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
*************** in various debugging situations.
*** 25671,25677 ****
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id124}@anchor{3ec}
  @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
--- 25857,25863 ----
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id124}@anchor{3f6}
  @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
*************** lower case to upper case fold routine co
*** 25690,25696 ****
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id125}@anchor{3ee}
  @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
--- 25876,25882 ----
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3f7}@anchor{gnat_rm/the_gnat_library id125}@anchor{3f8}
  @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
*************** near misspelling of another wide wide st
*** 25703,25709 ****
  using the UTF_32_String type defined in System.Wch_Cnv.
  
  @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3ef}@anchor{gnat_rm/the_gnat_library id126}@anchor{3f0}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
--- 25889,25895 ----
  using the UTF_32_String type defined in System.Wch_Cnv.
  
  @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3f9}@anchor{gnat_rm/the_gnat_library id126}@anchor{3fa}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
*************** Provides a function for determining whet
*** 25715,25721 ****
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id127}@anchor{3f2}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
--- 25901,25907 ----
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3fb}@anchor{gnat_rm/the_gnat_library id127}@anchor{3fc}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25729,25735 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3f3}@anchor{gnat_rm/the_gnat_library id128}@anchor{3f4}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
--- 25915,25921 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3fd}@anchor{gnat_rm/the_gnat_library id128}@anchor{3fe}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
*************** Provides a function for determining whet
*** 25741,25747 ****
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3f5}@anchor{gnat_rm/the_gnat_library id129}@anchor{3f6}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
--- 25927,25933 ----
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3ff}@anchor{gnat_rm/the_gnat_library id129}@anchor{400}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25755,25761 ****
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3f7}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3f8}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
--- 25941,25947 ----
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{401}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{402}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
*************** for use with either manually or automati
*** 25766,25772 ****
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{3f9}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3fa}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
--- 25952,25958 ----
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{403}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{404}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
*************** This package is a binding for the most c
*** 25779,25785 ****
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id132}@anchor{3fb}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3fc}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
--- 25965,25971 ----
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id132}@anchor{405}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{406}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
*************** from a packed decimal format compatible
*** 25794,25800 ****
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id133}@anchor{3fd}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3fe}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
--- 25980,25986 ----
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id133}@anchor{407}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{408}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
*************** mainframes.
*** 25808,25814 ****
  This package provides a limited binding to the VxWorks API.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id134}@anchor{3ff}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{400}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
--- 25994,26000 ----
  This package provides a limited binding to the VxWorks API.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id134}@anchor{409}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{40a}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
*************** function codes. A particular use of this
*** 25831,25837 ****
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id135}@anchor{401}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{402}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
--- 26017,26023 ----
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id135}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{40c}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
*************** function that gives an (implementation d
*** 25847,25853 ****
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id136}@anchor{403}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{404}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
--- 26033,26039 ----
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id136}@anchor{40d}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{40e}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
*************** by an run-time assertion failure, as wel
*** 25863,25869 ****
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{405}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{406}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
--- 26049,26055 ----
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{40f}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{410}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
*************** on most targets, including all Alpha, AA
*** 25877,25883 ****
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{407}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{408}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
--- 26063,26069 ----
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{411}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{412}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
*************** calls to this unit may be made for low l
*** 25895,25901 ****
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{409}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{40a}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
--- 26081,26087 ----
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{413}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{414}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25908,25914 ****
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{40c}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
--- 26094,26100 ----
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{415}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{416}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25921,25927 ****
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{40d}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{40e}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
--- 26107,26113 ----
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{417}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{418}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
*************** technically an implementation-defined ad
*** 25931,25941 ****
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! with @code{PolyORB}.  `NB!' See the note in @ref{272,,PolyORB} regarding
  the lifetime of this product.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{40f}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{410}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
--- 26117,26127 ----
  
  This package provides facilities for partition interfacing.  It
  is used primarily in a distribution context when using Annex E
! with @code{PolyORB}.  `NB!' See the note in @ref{273,,PolyORB} regarding
  the lifetime of this product.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{419}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{41a}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
*************** declared. It uses malloc/free to allocat
*** 25952,25958 ****
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{411}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{412}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
--- 26138,26144 ----
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{41b}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{41c}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
*************** a list of allocated blocks, so that all
*** 25969,25975 ****
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{413}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{414}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
--- 26155,26161 ----
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{41d}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{41e}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
*************** compiler determined information on which
*** 25985,25991 ****
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{415}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{416}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
--- 26171,26177 ----
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{41f}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{420}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
*************** since the necessary instantiation is inc
*** 26001,26007 ****
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{417}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{418}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
--- 26187,26193 ----
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{421}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{422}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
*************** stream attributes are applied to string
*** 26017,26023 ****
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{419}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{41a}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
--- 26203,26209 ----
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{423}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{424}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
*************** also contains some related definitions f
*** 26030,26036 ****
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{41b}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{41c}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
--- 26216,26222 ----
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{425}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{426}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
*************** encoding method.  It uses definitions in
*** 26051,26057 ****
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{41d}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{41e}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
--- 26237,26243 ----
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{427}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{428}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
*************** in ordinary strings.  These definitions
*** 26063,26069 ****
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{41f}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{420}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}
  @chapter Interfacing to Other Languages
  
  
--- 26249,26255 ----
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{429}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{42a}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{12}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 26081,26087 ****
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{421}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{422}
  @section Interfacing to C
  
  
--- 26267,26273 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{42b}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{42c}
  @section Interfacing to C
  
  
*************** of the length corresponding to the @code
*** 26221,26227 ****
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{4a}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{423}
  @section Interfacing to C++
  
  
--- 26407,26413 ----
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{4b}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{42d}
  @section Interfacing to C++
  
  
*************** exception
*** 26423,26429 ****
  end;
  @end example
  
! The calls marked with @code{NO ERROR DETECTED!} will compile sucessfully,
  even though the types specified in the specializations of the generic
  function do not match the type of the exception object that the
  function is expected to return. Mismatches between derived and base
--- 26609,26615 ----
  end;
  @end example
  
! The calls marked with @code{NO ERROR DETECTED!} will compile successfully,
  even though the types specified in the specializations of the generic
  function do not match the type of the exception object that the
  function is expected to return. Mismatches between derived and base
*************** builds an opaque @code{Type_Info_Ptr} to
*** 26438,26444 ****
  object at a given @code{System.Address}.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{424}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{425}
  @section Interfacing to COBOL
  
  
--- 26624,26630 ----
  object at a given @code{System.Address}.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{42e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{42f}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 26446,26452 ****
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{426}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{427}
  @section Interfacing to Fortran
  
  
--- 26632,26638 ----
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{430}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{431}
  @section Interfacing to Fortran
  
  
*************** multi-dimensional array causes the array
*** 26456,26462 ****
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{428}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{429}
  @section Interfacing to non-GNAT Ada code
  
  
--- 26642,26648 ----
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{432}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{433}
  @section Interfacing to non-GNAT Ada code
  
  
*************** values or simple record types without va
*** 26480,26486 ****
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{42a}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{42b}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}
  @chapter Specialized Needs Annexes
  
  
--- 26666,26672 ----
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{434}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{435}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{13}
  @chapter Specialized Needs Annexes
  
  
*************** The Real-Time Systems Annex is fully imp
*** 26501,26507 ****
  
  Stub generation is fully implemented in the GNAT compiler.  In addition,
  a complete compatible PCS is available as part of @code{PolyORB},
! a separate product. `NB!' See the note in @ref{272,,PolyORB} regarding the lifetime of this product.
  
  @item `Information Systems (Annex F)'
  
--- 26687,26693 ----
  
  Stub generation is fully implemented in the GNAT compiler.  In addition,
  a complete compatible PCS is available as part of @code{PolyORB},
! a separate product. `NB!' See the note in @ref{273,,PolyORB} regarding the lifetime of this product.
  
  @item `Information Systems (Annex F)'
  
*************** in Ada 2005) is fully implemented.
*** 26518,26524 ****
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2022 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}
  @chapter Implementation of Specific Ada Features
  
  
--- 26704,26710 ----
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2022 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{437}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{14}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 26537,26543 ****
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{183}
  @section Machine Code Insertions
  
  
--- 26723,26729 ----
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{184}
  @section Machine Code Insertions
  
  
*************** according to normal visibility rules. In
*** 26705,26711 ****
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{430}
  @section GNAT Implementation of Tasking
  
  
--- 26891,26897 ----
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{439}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{43a}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 26721,26727 ****
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{431}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{432}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
--- 26907,26913 ----
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{43b}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{43c}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 26790,26796 ****
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{433}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{434}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
--- 26976,26982 ----
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{43d}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{43e}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** placed at the end.
*** 26841,26847 ****
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{435}
  @subsection Support for Locking Policies
  
  
--- 27027,27033 ----
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{43f}
  @subsection Support for Locking Policies
  
  
*************** then ceiling locking is used.
*** 26875,26881 ****
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{437}
  @section GNAT Implementation of Shared Passive Packages
  
  
--- 27061,27067 ----
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{440}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{441}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** This is used to provide the required loc
*** 26973,26979 ****
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{439}
  @section Code Generation for Array Aggregates
  
  
--- 27159,27165 ----
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{442}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{443}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 27004,27010 ****
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{43a}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{43b}
  @subsection Static constant aggregates with static bounds
  
  
--- 27190,27196 ----
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{444}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{445}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 27051,27057 ****
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{43c}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{43d}
  @subsection Constant aggregates with unconstrained nominal types
  
  
--- 27237,27243 ----
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{446}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{447}
  @subsection Constant aggregates with unconstrained nominal types
  
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 27066,27072 ****
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{43e}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{43f}
  @subsection Aggregates with static bounds
  
  
--- 27252,27258 ----
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{448}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{449}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 27094,27100 ****
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{440}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{441}
  @subsection Aggregates with nonstatic bounds
  
  
--- 27280,27286 ----
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{44a}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{44b}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 27105,27111 ****
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{442}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{443}
  @subsection Aggregates in assignment statements
  
  
--- 27291,27297 ----
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{44c}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{44d}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 27147,27153 ****
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{444}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{445}
  @section The Size of Discriminated Records with Default Discriminants
  
  
--- 27333,27339 ----
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{44e}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{44f}
  @section The Size of Discriminated Records with Default Discriminants
  
  
*************** say) must be consistent, so it is impera
*** 27227,27233 ****
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{446}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{447}
  @section Image Values For Nonscalar Types
  
  
--- 27413,27419 ----
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{450}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{451}
  @section Image Values For Nonscalar Types
  
  
*************** control of image text is required for so
*** 27247,27253 ****
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{448}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{449}
  @section Strict Conformance to the Ada Reference Manual
  
  
--- 27433,27439 ----
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{452}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{453}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** behavior (although at the cost of a sign
*** 27274,27280 ****
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2022 Features,GNAT language extensions,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2022_features doc}@anchor{44a}@anchor{gnat_rm/implementation_of_ada_2022_features id1}@anchor{44b}@anchor{gnat_rm/implementation_of_ada_2022_features implementation-of-ada-2022-features}@anchor{14}
  @chapter Implementation of Ada 2022 Features
  
  
--- 27460,27466 ----
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2022 Features,GNAT language extensions,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2022_features doc}@anchor{454}@anchor{gnat_rm/implementation_of_ada_2022_features id1}@anchor{455}@anchor{gnat_rm/implementation_of_ada_2022_features implementation-of-ada-2022-features}@anchor{15}
  @chapter Implementation of Ada 2022 Features
  
  
*************** Ada issue AI12-061 introduces a new cons
*** 27788,27794 ****
  component associations to be parameterized by a loop variable, for example:
  
  @example
! Array (1 .. 10) of Integer :=
    (for I in 1 .. 10 => I ** 2);
  type Matrix is
  array
--- 27974,27980 ----
  component associations to be parameterized by a loop variable, for example:
  
  @example
! array (1 .. 10) of Integer :=
    (for I in 1 .. 10 => I ** 2);
  type Matrix is
  array
*************** RM references: 3.03 (23.2/3) 8.05.01 (4.
*** 30625,30631 ****
  
  @itemize *
  
! @item
  `AI12-0402 Master of a function call with elementary result type (2026-01-07)'
  
  This AI restricts the rule that makes the master of a function call, which
--- 30811,30817 ----
  
  @itemize *
  
! @item 
  `AI12-0402 Master of a function call with elementary result type (2026-01-07)'
  
  This AI restricts the rule that makes the master of a function call, which
*************** RM references: 3.02.04 (31/5) 4.06 (51.1
*** 30721,30727 ****
  @end itemize
  
  @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2022 Features,Top
! @anchor{gnat_rm/gnat_language_extensions doc}@anchor{44c}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{44d}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{44e}
  @chapter GNAT language extensions
  
  
--- 30907,30913 ----
  @end itemize
  
  @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2022 Features,Top
! @anchor{gnat_rm/gnat_language_extensions doc}@anchor{456}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{457}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{458}
  @chapter GNAT language extensions
  
  
*************** These features might be removed or heavi
*** 30753,30759 ****
  @end menu
  
  @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{44f}
  @section How to activate the extended GNAT Ada superset
  
  
--- 30939,30945 ----
  @end menu
  
  @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{459}
  @section How to activate the extended GNAT Ada superset
  
  
*************** There are two ways to activate the exten
*** 30763,30769 ****
  @itemize *
  
  @item 
! The @ref{6a,,Pragma Extensions_Allowed}. To activate
  the curated set of extensions, you should use
  @end itemize
  
--- 30949,30955 ----
  @itemize *
  
  @item 
! The @ref{6b,,Pragma Extensions_Allowed}. To activate
  the curated set of extensions, you should use
  @end itemize
  
*************** for use in playground experiments.
*** 30794,30800 ****
  @end cartouche
  
  @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{450}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{6b}
  @section Curated Extensions
  
  
--- 30980,30986 ----
  @end cartouche
  
  @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{45a}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{6c}
  @section Curated Extensions
  
  
*************** Features activated via @code{-gnatX} or
*** 30811,30822 ****
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
  * Generalized Finalization:: 
  
  @end menu
  
  @node Local Declarations Without Block,Deep delta Aggregates,,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{451}
  @subsection Local Declarations Without Block
  
  
--- 30997,31009 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  * Generalized Finalization:: 
  
  @end menu
  
  @node Local Declarations Without Block,Deep delta Aggregates,,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{45b}
  @subsection Local Declarations Without Block
  
  
*************** And as such the second `@w{`}A`@w{`} dec
*** 30909,30915 ****
  @end cartouche
  
  @node Deep delta Aggregates,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions deep-delta-aggregates}@anchor{452}
  @subsection Deep delta Aggregates
  
  
--- 31096,31102 ----
  @end cartouche
  
  @node Deep delta Aggregates,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions deep-delta-aggregates}@anchor{45c}
  @subsection Deep delta Aggregates
  
  
*************** The syntax of delta aggregates in the ex
*** 30931,30937 ****
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{453}
  @subsubsection Syntax
  
  
--- 31118,31124 ----
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{45d}
  @subsubsection Syntax
  
  
*************** array_subcomponent_choice ::=
*** 30977,30983 ****
  @end example
  
  @node Legality Rules,Dynamic Semantics,Syntax,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions legality-rules}@anchor{454}
  @subsubsection Legality Rules
  
  
--- 31164,31170 ----
  @end example
  
  @node Legality Rules,Dynamic Semantics,Syntax,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions legality-rules}@anchor{45e}
  @subsubsection Legality Rules
  
  
*************** the object denoted by the base_expressio
*** 31014,31020 ****
  @end enumerate
  
  @node Dynamic Semantics,Examples,Legality Rules,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions dynamic-semantics}@anchor{455}
  @subsubsection Dynamic Semantics
  
  
--- 31201,31207 ----
  @end enumerate
  
  @node Dynamic Semantics,Examples,Legality Rules,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions dynamic-semantics}@anchor{45f}
  @subsubsection Dynamic Semantics
  
  
*************** and assigned to the corresponding subcom
*** 31071,31077 ****
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{456}
  @subsubsection Examples
  
  
--- 31258,31264 ----
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{460}
  @subsubsection Examples
  
  
*************** declare
*** 31087,31095 ****
     S : Segment := (1 .. 2 => (0, 0));
     T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
  begin
!    S := (S with delta (1).X | (2).Y => 12, (1).Y => 15);
  
!    pragma Assert (S (1).X = 12);
     pragma Assert (S (2).Y = 12);
     pragma Assert (S (1).Y = 15);
  
--- 31274,31282 ----
     S : Segment := (1 .. 2 => (0, 0));
     T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
  begin
!    S := (S with delta (1).X => 11, (2).Y => 12, (1).Y => 15);
  
!    pragma Assert (S (1).X = 11);
     pragma Assert (S (2).Y = 12);
     pragma Assert (S (1).Y = 15);
  
*************** end;
*** 31099,31105 ****
  @end example
  
  @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Deep delta Aggregates,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{457}
  @subsection Fixed lower bounds for array types and subtypes
  
  
--- 31286,31292 ----
  @end example
  
  @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Deep delta Aggregates,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{461}
  @subsection Fixed lower bounds for array types and subtypes
  
  
*************** lower bound of unconstrained array forma
*** 31150,31156 ****
  ranges with static fixed lower bounds.
  
  @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{458}
  @subsection Prefixed-view notation for calls to primitive subprograms of untagged types
  
  
--- 31337,31343 ----
  ranges with static fixed lower bounds.
  
  @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{462}
  @subsection Prefixed-view notation for calls to primitive subprograms of untagged types
  
  
*************** pragma Assert (V.Nth_Element(1) = 42);
*** 31200,31206 ****
  @end example
  
  @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{459}
  @subsection Expression defaults for generic formal functions
  
  
--- 31387,31393 ----
  @end example
  
  @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{463}
  @subsection Expression defaults for generic formal functions
  
  
*************** If the default is used (i.e. there is no
*** 31231,31237 ****
  then calls to Copy in the instance will simply return Item.
  
  @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{45a}
  @subsection String interpolation
  
  
--- 31418,31424 ----
  then calls to Copy in the instance will simply return Item.
  
  @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{464}
  @subsection String interpolation
  
  
*************** a double quote is " and an open brace is
*** 31398,31404 ****
  @end example
  
  @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{45b}
  @subsection Constrained attribute for generic objects
  
  
--- 31585,31591 ----
  @end example
  
  @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{465}
  @subsection Constrained attribute for generic objects
  
  
*************** The @code{Constrained} attribute is perm
*** 31406,31412 ****
  result indicates whether the corresponding actual is constrained.
  
  @node Static aspect on intrinsic functions,First Controlling Parameter,Constrained attribute for generic objects,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{45c}
  @subsection @code{Static} aspect on intrinsic functions
  
  
--- 31593,31599 ----
  result indicates whether the corresponding actual is constrained.
  
  @node Static aspect on intrinsic functions,First Controlling Parameter,Constrained attribute for generic objects,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{466}
  @subsection @code{Static} aspect on intrinsic functions
  
  
*************** The Ada 202x @code{Static} aspect can be
*** 31414,31421 ****
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,Generalized Finalization,Static aspect on intrinsic functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{45d}
  @subsection First Controlling Parameter
  
  
--- 31601,31608 ----
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,Unsigned_Base_Range aspect,Static aspect on intrinsic functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{467}
  @subsection First Controlling Parameter
  
  
*************** overriding a primitive or creating new o
*** 31514,31521 ****
  The result of a function is never a controlling result.
  @end itemize
  
! @node Generalized Finalization,,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{45e}
  @subsection Generalized Finalization
  
  
--- 31701,31734 ----
  The result of a function is never a controlling result.
  @end itemize
  
! @node Unsigned_Base_Range aspect,Generalized Finalization,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions unsigned-base-range-aspect}@anchor{468}
! @subsection @code{Unsigned_Base_Range} aspect
! 
! 
! A new pragma/aspect, @code{Unsigned_Base_Range}, is introduced to explicitly
! enforce the use of an unsigned base type for signed integer types.
! RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
! requirement often requires the use of larger data types for arithmetic
! operations, potentially introducing undesirable run-time overhead and
! performance penalties, particularly in embedded systems. For instance,
! on a 64-bit architecture, a 64-bit multiplication can be performed with
! a single hardware instruction, whereas a 128-bit multiplication requires
! multiple instructions and intermediate steps.
! 
! Here is an example of this feature:
! 
! @example
! type Uns_64 is range 0 .. 2 ** 64 - 1
!   with Size => 64,
!        Unsigned_Base_Range => True;
! @end example
! 
! It ensures that arithmetic operations of type @code{Uns_64} are carried
! out using 64 bits.
! 
! @node Generalized Finalization,,Unsigned_Base_Range aspect,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{469}
  @subsection Generalized Finalization
  
  
*************** procedure Finalize   (Obj : in out T);
*** 31543,31550 ****
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures have the same profile, with a single @code{in out} parameter,
! and also have the same dynamic semantics as for controlled types:
  
  @quotation
  
--- 31756,31764 ----
  procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures must be primitive operations of @code{T} and have a single
! @code{in out} parameter. They need not be all specified by the aspect. If they
! are specified, they have the same dynamic semantics as for controlled types:
  
  @quotation
  
*************** in this case.
*** 31586,31592 ****
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{45f,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
--- 31800,31806 ----
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{46a,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
*************** end P;
*** 31647,31653 ****
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{460}
  @subsubsection Finalizable tagged types
  
  
--- 31861,31867 ----
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{46b}
  @subsubsection Finalizable tagged types
  
  
*************** dispatching whenever it makes sense, i.e
*** 31657,31663 ****
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{461}
  @subsubsection Composite types
  
  
--- 31871,31877 ----
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{46c}
  @subsubsection Composite types
  
  
*************** in order to call the primitives of their
*** 31667,31673 ****
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{462}
  @subsubsection Interoperability with controlled types
  
  
--- 31881,31887 ----
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{46d}
  @subsubsection Interoperability with controlled types
  
  
*************** versa, but the stricter dynamic semantic
*** 31677,31683 ****
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6c}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{463}
  @section Experimental Language Extensions
  
  
--- 31891,31897 ----
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6d}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{46e}
  @section Experimental Language Extensions
  
  
*************** Features activated via @code{-gnatX0} or
*** 31703,31709 ****
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{464}
  @subsection Conditional when constructs
  
  
--- 31917,31923 ----
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{46f}
  @subsection Conditional when constructs
  
  
*************** end;
*** 31772,31778 ****
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{465}
  @subsection Implicit With
  
  
--- 31986,31992 ----
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{470}
  @subsection Implicit With
  
  
*************** end;
*** 31789,31795 ****
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{466}
  @subsection Storage Model
  
  
--- 32003,32009 ----
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{471}
  @subsection Storage Model
  
  
*************** memory models, in particular to support
*** 31806,31812 ****
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{467}
  @subsubsection Aspect Storage_Model_Type
  
  
--- 32020,32026 ----
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{472}
  @subsubsection Aspect Storage_Model_Type
  
  
*************** end CUDA_Memory;
*** 31940,31946 ****
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{468}
  @subsubsection Aspect Designated_Storage_Model
  
  
--- 32154,32160 ----
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{473}
  @subsubsection Aspect Designated_Storage_Model
  
  
*************** begin
*** 32018,32024 ****
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{469}
  @subsubsection Legacy Storage Pools
  
  
--- 32232,32238 ----
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{474}
  @subsubsection Legacy Storage Pools
  
  
*************** type Acc is access Integer_Array with St
*** 32069,32075 ****
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{46a}
  @subsection Attribute Super
  
  
--- 32283,32289 ----
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{475}
  @subsection Attribute Super
  
  
*************** end;
*** 32104,32110 ****
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{46b}
  @subsection Simpler Accessibility Model
  
  
--- 32318,32324 ----
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{476}
  @subsection Simpler Accessibility Model
  
  
*************** All of the refined rules are compatible
*** 32135,32141 ****
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{46c}
  @subsubsection Stand-alone objects
  
  
--- 32349,32355 ----
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{477}
  @subsubsection Stand-alone objects
  
  
*************** of the RM 4.6 rule “The accessibility
*** 32183,32189 ****
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{46d}
  @subsubsection Subprogram parameters
  
  
--- 32397,32403 ----
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{478}
  @subsubsection Subprogram parameters
  
  
*************** end;
*** 32276,32282 ****
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{46e}
  @subsubsection Function results
  
  
--- 32490,32496 ----
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{479}
  @subsubsection Function results
  
  
*************** end;
*** 32404,32410 ****
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{46f}
  @subsection Case pattern matching
  
  
--- 32618,32624 ----
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{47a}
  @subsection Case pattern matching
  
  
*************** message generated in such cases is usual
*** 32534,32540 ****
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{470}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
--- 32748,32754 ----
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{47b}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
*************** shall have a Size that does not exceed t
*** 32561,32567 ****
  
  @item 
  shall have a (possibly inherited) @code{Size'Class} aspect that does not exceed
! the specifed value; and
  
  @item 
  shall be undiscriminated; and
--- 32775,32781 ----
  
  @item 
  shall have a (possibly inherited) @code{Size'Class} aspect that does not exceed
! the specified value; and
  
  @item 
  shall be undiscriminated; and
*************** parameter exists (that is, before leavin
*** 32705,32711 ****
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{471}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{45f}
  @subsection No_Raise aspect
  
  
--- 32919,32925 ----
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{47c}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{46a}
  @subsection No_Raise aspect
  
  
*************** be raised during the execution of the su
*** 32715,32721 ****
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{472}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 32929,32935 ----
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{47d}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 32792,32798 ****
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{473}
  @subsection External_Initialization Aspect
  
  
--- 33006,33012 ----
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{47e}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 32833,32839 ****
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{474}
  @subsection Finally construct
  
  
--- 33047,33053 ----
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{47f}
  @subsection Finally construct
  
  
*************** another sequence of statements is comple
*** 32842,32847 ****
--- 33056,33064 ----
  
  This feature is similar to the one with the same name in other languages such as Java.
  
+ Note that @code{finally} is a keyword but it is not a reserved word. This is a
+ configuration that does not exist in standard Ada.
+ 
  @menu
  * Syntax: Syntax<2>. 
  * Legality Rules: Legality Rules<2>. 
*************** This feature is similar to the one with
*** 32850,32856 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{475}
  @subsubsection Syntax
  
  
--- 33067,33073 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{480}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 32865,32871 ****
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{476}
  @subsubsection Legality Rules
  
  
--- 33082,33088 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{481}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 32875,32881 ****
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{477}
  @subsubsection Dynamic Semantics
  
  
--- 33092,33098 ----
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{482}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 32890,32896 ****
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{478}
  @subsection Continue statement
  
  
--- 33107,33113 ----
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{483}
  @subsection Continue statement
  
  
*************** Note that @code{continue} is a keyword b
*** 32908,32919 ****
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{479}
  @subsection Destructors
  
  
  The @code{Destructor} extension adds a new finalization mechanism that
! significantly differs standard Ada in how it interacts with type derivation.
  
  New syntax is introduced to make it possible to define “destructors” for record
  types, tagged or untagged. Here’s a simple example:
--- 33125,33137 ----
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{484}
  @subsection Destructors
  
  
  The @code{Destructor} extension adds a new finalization mechanism that
! significantly differs from standard Ada in how it interacts with type
! derivation.
  
  New syntax is introduced to make it possible to define “destructors” for record
  types, tagged or untagged. Here’s a simple example:
*************** When an object of type @code{T2} is fina
*** 32962,32968 ****
  @code{T2'Destructor}, and then a call to @code{T1'Destructor} on the object.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{47a}
  @subsection Structural Generic Instantiation
  
  
--- 33180,33186 ----
  @code{T2'Destructor}, and then a call to @code{T1'Destructor} on the object.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{485}
  @subsection Structural Generic Instantiation
  
  
*************** where a name is accepted by the language
*** 32988,32994 ****
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{47b}
  @subsubsection Syntax
  
  
--- 33206,33212 ----
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{486}
  @subsubsection Syntax
  
  
*************** structural_generic_instance_name ::= nam
*** 33000,33006 ****
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{47c}
  @subsubsection Legality Rules
  
  
--- 33218,33224 ----
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{487}
  @subsubsection Legality Rules
  
  
*************** generic subprogram may be present in a s
*** 33026,33032 ****
  whole-partition optimization is performed (e.g., via LTO).
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{47d}
  @subsubsection Static Semantics
  
  
--- 33244,33250 ----
  whole-partition optimization is performed (e.g., via LTO).
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{488}
  @subsubsection Static Semantics
  
  
*************** actual parameters. This instance is uniq
*** 33036,33042 ****
  generic subprogram instantiation is automatically demoted to a local
  instantiation as described under Legality Rules.
  
- 
  Example:
  
  @example
--- 33254,33259 ----
*************** package Q is
*** 33073,33083 ****
  end Q;
  @end example
  
! The reason is that @code{Ada.Containers.Vectors}, @code{Positive} and @code{Q.T}
! being library-level entities, the structural instance @code{Ada.Containers.Vectors(Positive,T)} is a library unit with a dependence
  on @code{Q} and, therefore, cannot be referenced from within @code{Q}. This
! restriction applies to structural instantiations of generic packages. The simple
! way out is to declare a traditional instantiation in this case:
  
  @example
  with Ada.Containers.Vectors;
--- 33290,33300 ----
  end Q;
  @end example
  
! The reason is that @code{Ada.Containers.Vectors}, @code{Positive} and @code{Q.T} being
! library-level entities, the structural instance @code{Ada.Containers.Vectors(Positive,T)} is a library unit with a dependence
  on @code{Q} and, therefore, cannot be referenced from within @code{Q}. This
! restriction applies to structural instantiations of generic packages. The
! simple way out is to declare a traditional instantiation in this case:
  
  @example
  with Ada.Containers.Vectors;
*************** package body Q is
*** 33133,33143 ****
  end Q;
  @end example
  
! is legal: since @code{T} and @code{T_Access} are local entities of @code{Q},
! the structural instantiation of @code{Ada.Unchecked_Deallocation} is demoted
! to a local instantiation rather than producing an error. Note that the
! uniqueness guarantee no longer holds in this case and several instances of
! the generic subprogram may be present in a single partition.
  
  The first example can be rewritten in a less verbose manner:
  
--- 33350,33360 ----
  end Q;
  @end example
  
! is legal: since @code{T} and @code{T_Access} are local entities of @code{Q}, the
! structural instantiation of @code{Ada.Unchecked_Deallocation} is demoted to a
! local instantiation rather than producing an error. Note that the uniqueness
! guarantee no longer holds in this case and several instances of the generic
! subprogram may be present in a single partition.
  
  The first example can be rewritten in a less verbose manner:
  
*************** end;
*** 33171,33177 ****
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{47e}@anchor{gnat_rm/security_hardening_features id1}@anchor{47f}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 33388,33394 ----
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{489}@anchor{gnat_rm/security_hardening_features id1}@anchor{48a}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{16}
  @chapter Security Hardening Features
  
  
*************** These features are supported only by the
*** 33195,33201 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{480}
  @section Register Scrubbing
  
  
--- 33412,33418 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{48b}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 33231,33237 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{481}
  @section Stack Scrubbing
  
  
--- 33448,33454 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{48c}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 33375,33381 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{482}
  @section Hardened Conditionals
  
  
--- 33592,33598 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{48d}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 33465,33471 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{483}
  @section Hardened Booleans
  
  
--- 33682,33688 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{48e}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 33526,33532 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{484}
  @section Control Flow Redundancy
  
  
--- 33743,33749 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{48f}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 33694,33700 ****
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{485}@anchor{gnat_rm/obsolescent_features id1}@anchor{486}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 33911,33917 ----
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{490}@anchor{gnat_rm/obsolescent_features id1}@anchor{491}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{17}
  @chapter Obsolescent Features
  
  
*************** historical compatibility purposes.
*** 33714,33720 ****
  @end menu
  
  @node PolyORB,pragma No_Run_Time,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{487}@anchor{gnat_rm/obsolescent_features polyorb}@anchor{272}
  @section PolyORB
  
  
--- 33931,33937 ----
  @end menu
  
  @node PolyORB,pragma No_Run_Time,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{492}@anchor{gnat_rm/obsolescent_features polyorb}@anchor{273}
  @section PolyORB
  
  
*************** release 28. After this release, there wi
*** 33723,33729 ****
  product. Contact AdaCore support to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{488}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{489}
  @section pragma No_Run_Time
  
  
--- 33940,33946 ----
  product. Contact AdaCore support to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{493}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{494}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 33736,33742 ****
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{48a}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{48b}
  @section pragma Ravenscar
  
  
--- 33953,33959 ----
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{495}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{496}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 33745,33751 ****
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{48c}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{48d}
  @section pragma Restricted_Run_Time
  
  
--- 33962,33968 ----
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{497}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{498}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 33755,33761 ****
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id6}@anchor{48e}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{48f}
  @section pragma Task_Info
  
  
--- 33972,33978 ----
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id6}@anchor{499}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{49a}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 33781,33787 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{490}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{491}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 33998,34004 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{49b}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{49c}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 33791,33797 ****
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{492}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{493}
  @chapter Compatibility and Porting Guide
  
  
--- 34008,34014 ----
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{49d}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{18}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{49e}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 33813,33819 ****
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{494}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{495}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 34030,34036 ----
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{49f}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{4a0}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 33935,33941 ****
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{496}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{497}
  @section Compatibility with Ada 83
  
  
--- 34152,34158 ----
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{4a1}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{4a2}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 33963,33969 ****
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{498}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{499}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 34180,34186 ----
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{4a3}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{4a4}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 34063,34069 ****
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{49b}
  @subsection More deterministic semantics
  
  
--- 34280,34286 ----
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{4a5}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{4a6}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 34091,34097 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{49c}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{49d}
  @subsection Changed semantics
  
  
--- 34308,34314 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{4a7}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{4a8}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 34133,34139 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{49e}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{49f}
  @subsection Other language compatibility issues
  
  
--- 34350,34356 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{4a9}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{4aa}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 34166,34172 ****
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{4a0}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{4a1}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 34383,34389 ----
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{4ab}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{4ac}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 34238,34244 ****
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{4a2}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4a3}
  @section Implementation-dependent characteristics
  
  
--- 34455,34461 ----
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{4ad}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4ae}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 34261,34267 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4a4}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4a5}
  @subsection Implementation-defined pragmas
  
  
--- 34478,34484 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4af}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4b0}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 34283,34289 ****
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4a6}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4a7}
  @subsection Implementation-defined attributes
  
  
--- 34500,34506 ----
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4b1}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4b2}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 34297,34303 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4a8}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4a9}
  @subsection Libraries
  
  
--- 34514,34520 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4b3}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4b4}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 34326,34332 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4aa}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4ab}
  @subsection Elaboration order
  
  
--- 34543,34549 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4b5}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4b6}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 34362,34368 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4ac}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4ad}
  @subsection Target-specific aspects
  
  
--- 34579,34585 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4b7}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4b8}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 34375,34384 ****
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4ae,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4af}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4b0}
  @section Compatibility with Other Ada Systems
  
  
--- 34592,34601 ----
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4b9,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4ba}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4bb}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 34421,34427 ****
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4b1}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4ae}
  @section Representation Clauses
  
  
--- 34638,34644 ----
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4bc}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4b9}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 34514,34520 ****
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4b2}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4b3}
  @section Compatibility with HP Ada 83
  
  
--- 34731,34737 ----
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4bd}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4be}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 34544,34550 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4b4}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4b5}
  @chapter GNU Free Documentation License
  
  
--- 34761,34767 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4bf}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4c0}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-17-20260524/gcc/ada/gnat_ugn.texi gcc-17-20260531/gcc/ada/gnat_ugn.texi
*** gcc-17-20260524/gcc/ada/gnat_ugn.texi	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gnat_ugn.texi	Sun May 31 22:32:04 2026
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Jan 09, 2026
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , May 19, 2026
  
  AdaCore
  
*************** An exception occurs if the file name gen
*** 1553,1559 ****
  with one of the characters
  @code{a}, @code{g}, @code{i}, or @code{s} and the second character is a
  hyphen. In this case, the character tilde is used in place
! of the hypen. This special rule avoids clashes with
  the standard names for child units of the packages @code{System}, @code{Ada},
  @code{Interfaces}, and @code{GNAT}, which use the prefixes
  @code{s-}, @code{a-}, @code{i-}, and @code{g-},
--- 1553,1559 ----
  with one of the characters
  @code{a}, @code{g}, @code{i}, or @code{s} and the second character is a
  hyphen. In this case, the character tilde is used in place
! of the hyphen. This special rule avoids clashes with
  the standard names for child units of the packages @code{System}, @code{Ada},
  @code{Interfaces}, and @code{GNAT}, which use the prefixes
  @code{s-}, @code{a-}, @code{i-}, and @code{g-},
*************** a few more parameters to the link comman
*** 5822,5828 ****
  mechanism used.
  
  If you are using the @code{setjmp} / @code{longjmp} exception mechanism, you need only
! inclue the paths to the @code{libgcc} libraries:
  
  @example
  $ cat ./my_script
--- 5822,5828 ----
  mechanism used.
  
  If you are using the @code{setjmp} / @code{longjmp} exception mechanism, you need only
! include the paths to the @code{libgcc} libraries:
  
  @example
  $ cat ./my_script
*************** blank lines.
*** 9195,9201 ****
  @item @code{-gnateH}
  
  Set the threshold from which the RM 13.5.1(13.3/2) clause applies to 64.
! This is useful only on 64-bit plaforms where this threshold is 128, but
  used to be 64 in earlier versions of the compiler.
  @end table
  
--- 9195,9201 ----
  @item @code{-gnateH}
  
  Set the threshold from which the RM 13.5.1(13.3/2) clause applies to 64.
! This is useful only on 64-bit platforms where this threshold is 128, but
  used to be 64 in earlier versions of the compiler.
  @end table
  
*************** char **gnat_argv;
*** 16826,16834 ****
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no `n' present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the `n' switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
--- 16826,16834 ----
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no @code{-n} present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the @code{-n} switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
*************** the source file.
*** 19158,19164 ****
  @subsection Naming Conventions for GNAT Source Files
  
  
! In order to bettter understand the workings of the GNAT system, the following
  brief description of its organization may be helpful:
  
  
--- 19158,19164 ----
  @subsection Naming Conventions for GNAT Source Files
  
  
! In order to better understand the workings of the GNAT system, the following
  brief description of its organization may be helpful:
  
  
*************** aliasing optimizations are automatically
*** 21080,21086 ****
  
  If it’s not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
! source type is not visible in that unit), the second possibiliy is for you to
  use pragma @code{No_Strict_Aliasing} for the type. You must place this pragma
  in the same declarative part as the declaration of the access type:
  
--- 21080,21086 ----
  
  If it’s not practical to move the unchecked conversion to the same unit
  in which the destination access type is declared (perhaps because the
! source type is not visible in that unit), the second possibility is for you to
  use pragma @code{No_Strict_Aliasing} for the type. You must place this pragma
  in the same declarative part as the declaration of the access type:
  
*************** optimizations that assume the variable c
*** 21256,21262 ****
  means that the above example will in fact “work” reliably, that is, it
  will produce the expected results. However, you should nevertheless
  avoid code such as this if possible because it’s not portable and may not
! functin as you expect with all compilers.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
  @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{197}
--- 21256,21262 ----
  means that the above example will in fact “work” reliably, that is, it
  will produce the expected results. However, you should nevertheless
  avoid code such as this if possible because it’s not portable and may not
! function as you expect with all compilers.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
  @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{197}
*************** for code that is to be exported to some
*** 21972,21978 ****
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
  example, @code{A+B+C} parses as though it were @code{(A+B)+C}, but
! the compiler can reintepret this as @code{A+(B+C)}, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
  expression @code{A+B+C} will be evaluated as @code{(A+B)+C}.
--- 21972,21978 ----
  The Ada standard allows the reassociation of expressions at
  the same precedence level if no parentheses are present. For
  example, @code{A+B+C} parses as though it were @code{(A+B)+C}, but
! the compiler can reinterpret this as @code{A+(B+C)}, possibly
  introducing or eliminating an overflow exception. The GNAT
  compiler never takes advantage of this freedom, and the
  expression @code{A+B+C} will be evaluated as @code{(A+B)+C}.
*************** $ set GNAT_STACK_LIMIT 1600
*** 22600,22606 ****
  would specify to the analyzer that the environment task stack has a limit
  of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
  
! This is not suppored by the LLVM back end.
  
  The package @code{GNAT.Task_Stack_Usage} provides facilities to get
  stack-usage reports at run time. See its body for the details.
--- 22600,22606 ----
  would specify to the analyzer that the environment task stack has a limit
  of 1.6 megabytes. Any stack usage beyond this will be ignored by the analysis.
  
! This is not supported by the LLVM back end.
  
  The package @code{GNAT.Task_Stack_Usage} provides facilities to get
  stack-usage reports at run time. See its body for the details.
*************** This gets the effective user id and if i
*** 23700,23706 ****
  Program_Error. Note that if you’re running the code in a container, this may
  not be sufficient as you may have sufficient privilege on the container,
  but not on the host machine running the container, so check that you also
! have sufficient priviledge for running the container image.
  
  @node A GNU/Linux Debug Quirk,,Choosing the Scheduling Policy with GNU/Linux,GNU/Linux Topics
  @anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1cd}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1ce}
--- 23700,23706 ----
  Program_Error. Note that if you’re running the code in a container, this may
  not be sufficient as you may have sufficient privilege on the container,
  but not on the host machine running the container, so check that you also
! have sufficient privilege for running the container image.
  
  @node A GNU/Linux Debug Quirk,,Choosing the Scheduling Policy with GNU/Linux,GNU/Linux Topics
  @anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1cd}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1ce}
*************** least the following data:
*** 24041,24047 ****
  @end example
  
  Without the manifest file, the socket timeout will be overcorrected on
! these Windows Server versions and the actual time wil be 500
  milliseconds shorter than what was set with
  @code{GNAT.Sockets.Set_Socket_Option}.  Note that on Microsoft Windows
  versions where correction is necessary, there is no way to set a
--- 24041,24047 ----
  @end example
  
  Without the manifest file, the socket timeout will be overcorrected on
! these Windows Server versions and the actual time will be 500
  milliseconds shorter than what was set with
  @code{GNAT.Sockets.Set_Socket_Option}.  Note that on Microsoft Windows
  versions where correction is necessary, there is no way to set a
*************** The list of ALI and object files used to
*** 25254,25259 ****
--- 25254,25265 ----
  @code{file}, instead of being given in the command line. Each line in
  @code{file} contains the name of an ALI or object file.
  
+ @geindex -m (gnatdll)
+ 
+ @item @code{-m}
+ 
+ Generate map file
+ 
  @geindex -n (gnatdll)
  
  @item @code{-n}
diff -Nrcpad gcc-17-20260524/gcc/ada/gnathtml.pl gcc-17-20260531/gcc/ada/gnathtml.pl
*** gcc-17-20260524/gcc/ada/gnathtml.pl	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gnathtml.pl	Sun May 31 22:32:04 2026
***************
*** 24,33 ****
  #-----------------------------------------------------------------------------
  
  ## This script converts an Ada file (and its dependency files) to Html.
! ## Keywords, comments and strings are color-hilighted. If the cross-referencing
! ## information provided by Gnat (when not using the -gnatx switch) is found,
! ## the html files will also have some cross-referencing features, i.e. if you
! ## click on a type, its declaration will be displayed.
  ##
  ## To find more about the switches provided by this script, please use the
  ## following command :
--- 24,33 ----
  #-----------------------------------------------------------------------------
  
  ## This script converts an Ada file (and its dependency files) to Html.
! ## Keywords, comments and strings are color-highlighted. If the
! ## cross-referencing information provided by Gnat (when not using the -gnatx
! ## switch) is found, the html files will also have some cross-referencing
! ## features, i.e. if you click on a type, its declaration will be displayed.
  ##
  ## To find more about the switches provided by this script, please use the
  ## following command :
diff -Nrcpad gcc-17-20260524/gcc/ada/gnatname.adb gcc-17-20260531/gcc/ada/gnatname.adb
*** gcc-17-20260524/gcc/ada/gnatname.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gnatname.adb	Sun May 31 22:32:05 2026
*************** with Osint;     use Osint;
*** 39,45 ****
  with Output;
  with Switch;    use Switch;
  with Table;
- with Tempdir;
  with Types;     use Types;
  
  with System.CRTL;
--- 39,44 ----
*************** procedure Gnatname is
*** 423,429 ****
           Dir     : Dir_Type;
           Do_Process : Boolean := True;
  
-          Temp_File_Name         : String_Access := null;
           Save_Last_Source_Index : Natural := 0;
           File_Name_Id           : Name_Id := No_Name;
  
--- 422,427 ----
*************** procedure Gnatname is
*** 529,535 ****
                          Success : Boolean;
                          Saved_Output : File_Descriptor;
                          Saved_Error  : File_Descriptor;
!                         Tmp_File     : Path_Name_Type;
  
                       begin
                          --  If we don't have the path of the compiler yet,
--- 527,533 ----
                          Success : Boolean;
                          Saved_Output : File_Descriptor;
                          Saved_Error  : File_Descriptor;
!                         Tmp_File     : Temp_File_Name;
  
                       begin
                          --  If we don't have the path of the compiler yet,
*************** procedure Gnatname is
*** 553,567 ****
  
                          --  Create the temporary file
  
!                         Tempdir.Create_Temp_File (FD, Tmp_File);
  
                          if FD = Invalid_FD then
                             Fail_Program
                               ("could not create temporary file");
- 
-                         else
-                            Temp_File_Name :=
-                              new String'(Get_Name_String (Tmp_File));
                          end if;
  
                          Args (Args'Last) :=
--- 551,561 ----
  
                          --  Create the temporary file
  
!                         Create_Temp_File (FD, Tmp_File);
  
                          if FD = Invalid_FD then
                             Fail_Program
                               ("could not create temporary file");
                          end if;
  
                          Args (Args'Last) :=
*************** procedure Gnatname is
*** 604,622 ****
                          --  they should contain the kind and name of the unit.
  
                          declare
                             File      : Ada.Text_IO.File_Type;
                             Text_Line : String (1 .. 1_000);
                             Text_Last : Natural;
  
                          begin
                             begin
!                               Open (File, In_File, Temp_File_Name.all);
  
                             exception
                                when others =>
                                   Fail_Program
                                     ("could not read temporary file " &
!                                       Temp_File_Name.all);
                             end;
  
                             Save_Last_Source_Index := Sources.Last;
--- 598,619 ----
                          --  they should contain the kind and name of the unit.
  
                          declare
+                            File_Name : String renames
+                              Tmp_File (1 .. Temp_File_Len - 1);
+                            --  Name of temporary file without the trailing NUL
                             File      : Ada.Text_IO.File_Type;
                             Text_Line : String (1 .. 1_000);
                             Text_Last : Natural;
  
                          begin
                             begin
!                               Open (File, In_File, File_Name);
  
                             exception
                                when others =>
                                   Fail_Program
                                     ("could not read temporary file " &
!                                       File_Name);
                             end;
  
                             Save_Last_Source_Index := Sources.Last;
*************** procedure Gnatname is
*** 701,707 ****
  
                             Close (File);
  
!                            Delete_File (Temp_File_Name.all, Success);
                          end;
                       end;
  
--- 698,704 ----
  
                             Close (File);
  
!                            Delete_File (File_Name, Success);
                          end;
                       end;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/gsocket.h gcc-17-20260531/gcc/ada/gsocket.h
*** gcc-17-20260524/gcc/ada/gsocket.h	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/gsocket.h	Sun May 31 22:32:05 2026
***************
*** 241,247 ****
  #endif
  
  /*
!  * Properties of the unerlying NetDB library:
   *   Need_Netdb_Buffer __gnat_getXXXbyYYY expects a caller-supplied buffer
   *   Need_Netdb_Lock   __gnat_getXXXbyYYY expects the caller to ensure
   *                     mutual exclusion
--- 241,247 ----
  #endif
  
  /*
!  * Properties of the underlying NetDB library:
   *   Need_Netdb_Buffer __gnat_getXXXbyYYY expects a caller-supplied buffer
   *   Need_Netdb_Lock   __gnat_getXXXbyYYY expects the caller to ensure
   *                     mutual exclusion
diff -Nrcpad gcc-17-20260524/gcc/ada/init.c gcc-17-20260531/gcc/ada/init.c
*** gcc-17-20260524/gcc/ada/init.c	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/init.c	Sun May 31 22:32:05 2026
*************** __gnat_error_handler (int sig, siginfo_t
*** 594,601 ****
  
  #ifndef __ia64__
  #define HAVE_GNAT_ALTERNATE_STACK 1
! /* This must be in keeping with System.OS_Interface.Alternate_Stack_Size.  */
! char __gnat_alternate_stack[32 * 1024];
  #endif
  
  #ifdef __XENO__
--- 594,603 ----
  
  #ifndef __ia64__
  #define HAVE_GNAT_ALTERNATE_STACK 1
! /* Address sanitizer requires the alternate stack to be 8-byte aligned,
!    regardless of any extra alignment added by the operating system.  The size
!    must be in keeping with System.OS_Interface.Alternate_Stack_Size.  */
! char __gnat_alternate_stack[32 * 1024] __attribute__ ((aligned (8)));
  #endif
  
  #ifdef __XENO__
*************** __gnat_handle_vms_condition (int *sigarg
*** 1319,1325 ****
  
    extern int SYS$PUTMSG (void *, int (*)(), void *, unsigned long long);
  
!   /* If it was a DEC Ada specific condtiion, make it GNAT otherwise
       keep the old facility.  */
    if ((sigargs [1] & FAC_MASK) == DECADA_M_FACILITY)
      SYS$PUTMSG (sigargs, copy_msg, &gnat_facility,
--- 1321,1327 ----
  
    extern int SYS$PUTMSG (void *, int (*)(), void *, unsigned long long);
  
!   /* If it was a DEC Ada specific condition, make it GNAT otherwise
       keep the old facility.  */
    if ((sigargs [1] & FAC_MASK) == DECADA_M_FACILITY)
      SYS$PUTMSG (sigargs, copy_msg, &gnat_facility,
*************** __gnat_handle_vms_condition (int *sigarg
*** 1348,1354 ****
  void
  GNAT$STOP (int *sigargs)
  {
!    /* Note that there are no mechargs. We rely on the fact that condtions
        raised from DEClib I/O do not require an "adjust".  Also the count
        will be off by 2, since LIB$STOP didn't get a chance to add the
        PC and PSL fields, so we bump it so PUTMSG comes out right.  */
--- 1350,1356 ----
  void
  GNAT$STOP (int *sigargs)
  {
!    /* Note that there are no mechargs. We rely on the fact that conditions
        raised from DEClib I/O do not require an "adjust".  Also the count
        will be off by 2, since LIB$STOP didn't get a chance to add the
        PC and PSL fields, so we bump it so PUTMSG comes out right.  */
*************** __gnat_error_handler (int sig, siginfo_t
*** 2117,2123 ****
  #endif
  
    /* VxWorks will always mask out the signal during the signal handler and
!      will reenable it on a longjmp.  GNAT does not generate a longjmp to
       return from a signal handler so the signal will still be masked unless
       we unmask it.  */
    sigprocmask (SIG_SETMASK, NULL, &mask);
--- 2119,2125 ----
  #endif
  
    /* VxWorks will always mask out the signal during the signal handler and
!      will re-enable it on a longjmp.  GNAT does not generate a longjmp to
       return from a signal handler so the signal will still be masked unless
       we unmask it.  */
    sigprocmask (SIG_SETMASK, NULL, &mask);
diff -Nrcpad gcc-17-20260524/gcc/ada/inline.adb gcc-17-20260531/gcc/ada/inline.adb
*** gcc-17-20260524/gcc/ada/inline.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/inline.adb	Sun May 31 22:32:05 2026
*************** with Sem_Ch10;       use Sem_Ch10;
*** 46,55 ****
  with Sem_Ch12;       use Sem_Ch12;
  with Sem_Prag;       use Sem_Prag;
  with Sem_Res;        use Sem_Res;
- with Sem_Util;       use Sem_Util;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Sinput;         use Sinput;
  with Snames;         use Snames;
  with Stand;          use Stand;
  with Table;
--- 46,55 ----
  with Sem_Ch12;       use Sem_Ch12;
  with Sem_Prag;       use Sem_Prag;
  with Sem_Res;        use Sem_Res;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Sinput;         use Sinput;
+ with Sinput.L;       use Sinput.L;
  with Snames;         use Snames;
  with Stand;          use Stand;
  with Table;
*************** package body Inline is
*** 1428,1434 ****
             and then not Same_Type (Etype (F), Etype (A))
             and then
               (Is_By_Reference_Type (Etype (A))
!                or else Is_Limited_Type (Etype (A)))
           then
              return False;
           end if;
--- 1428,1434 ----
             and then not Same_Type (Etype (F), Etype (A))
             and then
               (Is_By_Reference_Type (Etype (A))
!               or else Is_Limited_Type (Etype (A)))
           then
              return False;
           end if;
*************** package body Inline is
*** 1477,1482 ****
--- 1477,1487 ----
        --  inlining, if the address clause mentions a constant view of a mutable
        --  object at call site.
  
+       function Has_Formal_Of_UU_Type
+         (Id : Entity_Id) return Boolean;
+       --  Returns true if the subprogram has at least one formal parameter of
+       --  an unchecked conversion type.
+ 
        function Has_Formal_Or_Result_Of_Deep_Type
          (Id : Entity_Id) return Boolean;
        --  Returns true if the subprogram has at least one formal parameter or
*************** package body Inline is
*** 1581,1586 ****
--- 1586,1620 ----
             (Body_Node) = Abandon;
        end Has_Constant_With_Address_Clause;
  
+       ---------------------------
+       -- Has_Formal_Of_UU_Type --
+       ---------------------------
+ 
+       function Has_Formal_Of_UU_Type
+         (Id : Entity_Id) return Boolean
+       is
+          Subp_Id    : constant Entity_Id := Ultimate_Alias (Id);
+          Formal     : Entity_Id;
+          Formal_Typ : Entity_Id;
+ 
+       begin
+          --  Inspect all parameters of the subprogram looking for a formal
+          --  of an unchecked union type.
+ 
+          Formal := First_Formal (Subp_Id);
+          while Present (Formal) loop
+             Formal_Typ := Etype (Formal);
+ 
+             if Is_Unchecked_Union (Formal_Typ) then
+                return True;
+             end if;
+ 
+             Next_Formal (Formal);
+          end loop;
+ 
+          return False;
+       end Has_Formal_Of_UU_Type;
+ 
        ---------------------------------------
        -- Has_Formal_Or_Result_Of_Deep_Type --
        ---------------------------------------
*************** package body Inline is
*** 2066,2071 ****
--- 2100,2113 ----
        elsif Has_Formal_Or_Result_Of_Deep_Type (Id) then
           return False;
  
+       --  Do not inline calls if a parameter has an uncked union type as
+       --  inlining might cause an object to have inferrable discriminants
+       --  while it would not be the case without inlining, resulting in
+       --  checks for UU restrictions being missed.
+ 
+       elsif Has_Formal_Of_UU_Type (Id) then
+          return False;
+ 
        --  Do not inline subprograms which may be traversal functions. Such
        --  inlining introduces temporary variables of named access type for
        --  which assignments are move instead of borrow/observe, possibly
*************** package body Inline is
*** 4673,4687 ****
  
     procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id) is
  
        function Replace_Formal (N : Node_Id) return Traverse_Result;
        --  Replace each occurrence of a formal with the
        --  corresponding actual, using the mapping created
        --  by Establish_Actual_Mapping_For_Inlined_Call.
  
!       function Reset_Sloc (Nod : Node_Id) return Traverse_Result;
!       --  Reset the Sloc of a node to that of the call itself, so that errors
!       --  will be flagged on the call to the static expression function itself
!       --  rather than on the expression of the function's declaration.
  
        --------------------
        -- Replace_Formal --
--- 4715,4748 ----
  
     procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id) is
  
+       Decls        : constant List_Id := New_List;
+       Func_Expr    : constant Node_Id :=
+         Expression_Of_Expression_Function (Subp);
+       Expr_Copy    : constant Node_Id := New_Copy_Tree (Func_Expr);
+       S_Adjustment : Sloc_Adjustment;
+ 
+       function Adjust_Node (Nod : Node_Id) return Traverse_Result;
+       --  Update the child node with the instantiation adjustment information
+       --  for error messages and mark the node as not coming from source to
+       --  avoid spurious resolution errors in inlined code.
+ 
        function Replace_Formal (N : Node_Id) return Traverse_Result;
        --  Replace each occurrence of a formal with the
        --  corresponding actual, using the mapping created
        --  by Establish_Actual_Mapping_For_Inlined_Call.
  
!       -----------------
!       -- Adjust_Node --
!       -----------------
! 
!       function Adjust_Node (Nod : Node_Id) return Traverse_Result is
!       begin
!          Adjust_Instantiation_Sloc (Nod, S_Adjustment);
!          Set_Comes_From_Source (Nod, False);
!          return OK;
!       end Adjust_Node;
! 
!       procedure Adjust_Nodes is new Traverse_Proc (Adjust_Node);
  
        --------------------
        -- Replace_Formal --
*************** package body Inline is
*** 4717,4798 ****
  
        procedure Replace_Formals is new Traverse_Proc (Replace_Formal);
  
-       ------------------
-       -- Process_Sloc --
-       ------------------
- 
-       function Reset_Sloc (Nod : Node_Id) return Traverse_Result is
-       begin
-          Set_Sloc (Nod, Sloc (N));
-          Set_Comes_From_Source (Nod, False);
- 
-          return OK;
-       end Reset_Sloc;
- 
-       procedure Reset_Slocs is new Traverse_Proc (Reset_Sloc);
- 
     --  Start of processing for Inline_Static_Function_Call
  
     begin
!       pragma Assert (Is_Static_Function_Call (N));
  
!       declare
!          Decls     : constant List_Id := New_List;
!          Func_Expr : constant Node_Id :=
!                        Expression_Of_Expression_Function (Subp);
!          Expr_Copy : constant Node_Id := New_Copy_Tree (Func_Expr);
  
!       begin
!          --  Create a mapping from formals to actuals, also creating temps in
!          --  Decls, when needed, to hold the actuals.
  
!          Establish_Actual_Mapping_For_Inlined_Call (N, Subp, Decls, Func_Expr);
  
!          --  Ensure that the copy has the same parent as the call (this seems
!          --  to matter when GNATprove_Mode is set and there are nested static
!          --  calls; prevents blowups in Insert_Actions, though it's not clear
!          --  exactly why this is needed???).
  
!          Set_Parent (Expr_Copy, Parent (N));
  
!          Insert_Actions (N, Decls);
  
!          --  Now substitute actuals for their corresponding formal references
!          --  within the expression.
  
!          Replace_Formals (Expr_Copy);
  
!          Reset_Slocs (Expr_Copy);
  
!          --  Apply a qualified expression with the function's result subtype,
!          --  to ensure that we check the expression against any constraint
!          --  or predicate, which will cause the call to be illegal if the
!          --  folded expression doesn't satisfy them. (The predicate case
!          --  might not get checked if the subtype hasn't been frozen yet,
!          --  which can happen if this static expression happens to be what
!          --  causes the freezing, because Has_Static_Predicate doesn't get
!          --  set on the subtype until it's frozen and Build_Predicates is
!          --  called. It's not clear how to address this case. ???)
  
!          Rewrite (Expr_Copy,
!            Make_Qualified_Expression (Sloc (Expr_Copy),
!              Subtype_Mark =>
!                New_Occurrence_Of (Etype (N), Sloc (Expr_Copy)),
!              Expression =>
!                Relocate_Node (Expr_Copy)));
  
!          Set_Etype (Expr_Copy, Etype (N));
  
!          Analyze_And_Resolve (Expr_Copy, Etype (N));
  
!          --  Finally rewrite the function call as the folded static result
  
!          Rewrite (N, Expr_Copy);
  
!          --  Cleanup mapping between formals and actuals for other expansions
  
!          Reset_Actual_Mapping_For_Inlined_Call (Subp);
!       end;
     end Inline_Static_Function_Call;
  
     ------------------------
--- 4778,4844 ----
  
        procedure Replace_Formals is new Traverse_Proc (Replace_Formal);
  
     --  Start of processing for Inline_Static_Function_Call
  
     begin
!       --  Register the call in the list of inlined calls
  
!       Append_New_Elmt (N, To => Inlined_Calls);
  
!       --  Create a mapping from formals to actuals, also creating temps in
!       --  Decls, when needed, to hold the actuals.
  
!       Establish_Actual_Mapping_For_Inlined_Call (N, Subp, Decls, Func_Expr);
  
!       --  Calculate the Adjustment for the inlined call
  
!       Create_Instantiation_Source
!         (N, Subp, S_Adjustment, Inlined_Body => True);
  
!       --  Ensure that the copy has the same parent as the call (this seems
!       --  to matter when GNATprove_Mode is set and there are nested static
!       --  calls; prevents blowups in Insert_Actions, though it's not clear
!       --  exactly why this is needed???).
  
!       Set_Parent (Expr_Copy, Parent (N));
  
!       Insert_Actions (N, Decls);
  
!       --  Now substitute actuals for their corresponding formal references
!       --  within the expression.
  
!       Replace_Formals (Expr_Copy);
  
!       Adjust_Nodes (Expr_Copy);
  
!       --  Apply a qualified expression with the function's result subtype,
!       --  to ensure that we check the expression against any constraint
!       --  or predicate, which will cause the call to be illegal if the
!       --  folded expression doesn't satisfy them. (The predicate case
!       --  might not get checked if the subtype hasn't been frozen yet,
!       --  which can happen if this static expression happens to be what
!       --  causes the freezing, because Has_Static_Predicate doesn't get
!       --  set on the subtype until it's frozen and Build_Predicates is
!       --  called. It's not clear how to address this case. ???)
  
!       Rewrite
!         (Expr_Copy,
!          Make_Qualified_Expression
!            (Sloc         => Sloc (Expr_Copy),
!             Subtype_Mark => New_Occurrence_Of (Etype (N), Sloc (Expr_Copy)),
!             Expression   => Relocate_Node (Expr_Copy)));
  
!       Set_Etype (Expr_Copy, Etype (N));
  
!       Analyze_And_Resolve (Expr_Copy, Etype (N));
  
!       --  Finally rewrite the function call as the folded static result
  
!       Rewrite (N, Expr_Copy);
! 
!       --  Cleanup mapping between formals and actuals for other expansions
! 
!       Reset_Actual_Mapping_For_Inlined_Call (Subp);
     end Inline_Static_Function_Call;
  
     ------------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/inline.ads gcc-17-20260531/gcc/ada/inline.ads
*** gcc-17-20260524/gcc/ada/inline.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/inline.ads	Sun May 31 22:32:05 2026
***************
*** 42,51 ****
  --  Inline_Always subprograms, but there are fewer restrictions on the source
  --  of subprograms.
  
! with Opt;    use Opt;
! with Sem;    use Sem;
! with Types;  use Types;
! with Warnsw; use Warnsw;
  
  package Inline is
  
--- 42,52 ----
  --  Inline_Always subprograms, but there are fewer restrictions on the source
  --  of subprograms.
  
! with Opt;      use Opt;
! with Sem;      use Sem;
! with Sem_Util; use Sem_Util;
! with Types;    use Types;
! with Warnsw;   use Warnsw;
  
  package Inline is
  
*************** package Inline is
*** 248,255 ****
     --  Check a list of statements, Stats, that make inlining of Subp not
     --  worthwhile, including any tasking statement, nested at any level.
  
!    procedure Inline_Static_Function_Call
!      (N : Node_Id; Subp : Entity_Id);
     --  Evaluate static call to a static function Subp, substituting actuals in
     --  place of references to their corresponding formals and rewriting the
     --  call N as a fully folded and static result expression.
--- 249,256 ----
     --  Check a list of statements, Stats, that make inlining of Subp not
     --  worthwhile, including any tasking statement, nested at any level.
  
!    procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id)
!    with Pre => Is_Static_Function_Call (N);
     --  Evaluate static call to a static function Subp, substituting actuals in
     --  place of references to their corresponding formals and rewriting the
     --  call N as a fully folded and static result expression.
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/a-interr.adb gcc-17-20260531/gcc/ada/libgnarl/a-interr.adb
*** gcc-17-20260524/gcc/ada/libgnarl/a-interr.adb	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/libgnarl/a-interr.adb	Sun May 31 22:32:05 2026
***************
*** 32,37 ****
--- 32,39 ----
  
  with Ada.Unchecked_Conversion;
  
+ with System.Interrupts;
+ 
  package body Ada.Interrupts is
  
     package SI renames System.Interrupts;
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/a-interr.ads gcc-17-20260531/gcc/ada/libgnarl/a-interr.ads
*** gcc-17-20260524/gcc/ada/libgnarl/a-interr.ads	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/libgnarl/a-interr.ads	Sun May 31 22:32:05 2026
***************
*** 33,45 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Interrupts;
  with System.Multiprocessors;
  with Ada.Task_Identification;
  
  package Ada.Interrupts is
  
!    type Interrupt_ID is new System.Interrupts.Ada_Interrupt_ID;
  
     type Parameterless_Handler is access protected procedure;
  
--- 33,45 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Interrupt_Types;
  with System.Multiprocessors;
  with Ada.Task_Identification;
  
  package Ada.Interrupts is
  
!    type Interrupt_ID is new System.Interrupt_Types.Preelab_Interrupt_ID;
  
     type Parameterless_Handler is access protected procedure;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/libgnarl.gpr gcc-17-20260531/gcc/ada/libgnarl/libgnarl.gpr
*** gcc-17-20260524/gcc/ada/libgnarl/libgnarl.gpr	Sun May 24 22:32:04 2026
--- gcc-17-20260531/gcc/ada/libgnarl/libgnarl.gpr	Sun May 31 22:32:05 2026
***************
*** 1,4 ****
--- 1,5 ----
  with "libgnat_common";
+ with "libgnat";
  
  library project Libgnarl is
  
*************** library project Libgnarl is
*** 7,13 ****
     for Source_List_File use "libgnarl.lst";
     for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
  
!    for Library_Name use "gnarl";
     for Library_Dir use "../adalib";
     for Library_Kind use Libgnat_Common.Library_Kind;
  
--- 8,24 ----
     for Source_List_File use "libgnarl.lst";
     for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
  
!    case Libgnat_Common.Library_Kind is
!       when "static-pic" =>
!          for Library_Name use "gnarl_pic";
!       when "dynamic" =>
!          for Library_Name use "gnarl";
!          for Library_Version use
!            "libgnarl-" & Libgnat_Common.Version & ".so";
!       when others =>
!          for Library_Name use "gnarl";
!    end case;
! 
     for Library_Dir use "../adalib";
     for Library_Kind use Libgnat_Common.Library_Kind;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-interr.adb gcc-17-20260531/gcc/ada/libgnarl/s-interr.adb
*** gcc-17-20260524/gcc/ada/libgnarl/s-interr.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnarl/s-interr.adb	Sun May 31 22:32:05 2026
*************** package body System.Interrupts is
*** 156,165 ****
     User_Handler : array (Interrupt_ID'Range) of Handler_Assoc :=
                      [others => (null, Static => False)];
     pragma Volatile_Components (User_Handler);
!    --  Holds the protected procedure handler (if any) and its Static
!    --  information for each interrupt. A handler is a Static one if it is
!    --  specified through the pragma Attach_Handler. Attach_Handler. Otherwise,
!    --  not static)
  
     User_Entry : array (Interrupt_ID'Range) of Entry_Assoc :=
                    [others => (T => Null_Task, E => Null_Task_Entry)];
--- 156,165 ----
     User_Handler : array (Interrupt_ID'Range) of Handler_Assoc :=
                      [others => (null, Static => False)];
     pragma Volatile_Components (User_Handler);
!    --  Holds the protected procedure handler (if any) and whether it is Static
!    --  for each interrupt. A handler is a Static one if and only if it is
!    --  specified through the Attach_Handler aspect (or the obsolescent
!    --  Attach_Handler pragma).
  
     User_Entry : array (Interrupt_ID'Range) of Entry_Assoc :=
                    [others => (T => Null_Task, E => Null_Task_Entry)];
*************** package body System.Interrupts is
*** 846,857 ****
        is
        begin
           if User_Entry (Interrupt).T /= Null_Task then
  
!             --  In case we have an Interrupt Entry already installed, raise a
!             --  program error, (propagate it to the caller).
! 
!             raise Program_Error with
!               "an interrupt is already installed";
           end if;
  
           --  Note : A null handler with Static = True will pass the following
--- 846,855 ----
        is
        begin
           if User_Entry (Interrupt).T /= Null_Task then
+             --  If an entry is attached to the interrupt (See RM J.7.1), raise
+             --  Program_Error.
  
!             raise Program_Error with "an interrupt is already installed";
           end if;
  
           --  Note : A null handler with Static = True will pass the following
*************** package body System.Interrupts is
*** 861,881 ****
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static
! 
              --  Tries to overwrite a static Interrupt Handler with a dynamic
              --  Handler
  
!            and then (User_Handler (Interrupt).Static
! 
!                        --  The new handler is not specified as an
!                        --  Interrupt Handler by a pragma.
! 
!                        or else not Is_Registered (New_Handler))
!          then
!             raise Program_Error with
!               "trying to overwrite a static Interrupt Handler with a " &
!               "dynamic handler";
           end if;
  
           --  The interrupt should no longer be ignored if
--- 859,880 ----
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static then
              --  Tries to overwrite a static Interrupt Handler with a dynamic
              --  Handler
+             if User_Handler (Interrupt).Static then
+                raise Program_Error
+                  with
+                    "trying to overwrite a static Interrupt Handler with a "
+                    & "dynamic handler";
+             end if;
  
!             --  The new handler is not specified as an interrupt handler by an
!             --  aspect (see the second sentence of RM C.3.2 (17/3)).
!             if not Is_Registered (New_Handler) then
!                raise Program_Error
!                  with "trying to attach procedure without Interrupt_Handler";
!             end if;
           end if;
  
           --  The interrupt should no longer be ignored if
*************** package body System.Interrupts is
*** 952,960 ****
           end;
        end Initialize;
  
!       --  Note: All tasks in RTS will have all the Reserve Interrupts being
!       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked
!       --  when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
--- 951,958 ----
           end;
        end Initialize;
  
!       --  Note: All tasks in RTS will have all the Keep_Unmasked interrupts
!       --  unmasked when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
*************** package body System.Interrupts is
*** 1239,1247 ****
  
        IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
  
!       --  Note: All tasks in RTS will have all the Reserve Interrupts being
!       --  masked (except the Interrupt_Manager) and Keep_Unmasked unmasked when
!       --  created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
--- 1237,1244 ----
  
        IMOP.Install_Default_Action (IMNG.Interrupt_ID (Interrupt));
  
!       --  Note: All tasks in RTS will have all the Keep_Unmasked interrupts
!       --  unmasked when created.
  
        --  Abort_Task_Interrupt is one of the Interrupt unmasked in all tasks.
        --  We mask the Interrupt in this particular task so that "sigwait" is
*************** package body System.Interrupts is
*** 1280,1286 ****
              --  No Interrupt binding. If there is an interrupt,
              --  Interrupt_Manager will take default action.
  
!             Self_ID.Common.State := Interrupt_Server_Blocked_Interrupt_Sleep;
              POP.Sleep (Self_ID, Interrupt_Server_Idle_Sleep);
              Self_ID.Common.State := Runnable;
  
--- 1277,1283 ----
              --  No Interrupt binding. If there is an interrupt,
              --  Interrupt_Manager will take default action.
  
!             Self_ID.Common.State := Interrupt_Server_Idle_Sleep;
              POP.Sleep (Self_ID, Interrupt_Server_Idle_Sleep);
              Self_ID.Common.State := Runnable;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-interr.ads gcc-17-20260531/gcc/ada/libgnarl/s-interr.ads
*** gcc-17-20260524/gcc/ada/libgnarl/s-interr.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnarl/s-interr.ads	Sun May 31 22:32:05 2026
***************
*** 43,51 ****
  --  used without requiring the whole tasking implementation to be linked and
  --  elaborated.
  
  with System.Tasking;
  with System.Tasking.Protected_Objects.Entries;
- with System.OS_Interface;
  
  package System.Interrupts is
  
--- 43,51 ----
  --  used without requiring the whole tasking implementation to be linked and
  --  elaborated.
  
+ with System.Interrupt_Types;
  with System.Tasking;
  with System.Tasking.Protected_Objects.Entries;
  
  package System.Interrupts is
  
*************** package System.Interrupts is
*** 61,70 ****
     --  Default value used when a pragma Interrupt_Handler or Attach_Handler is
     --  specified without an Interrupt_Priority pragma, see D.3(10).
  
!    type Ada_Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
!    --  Avoid inheritance by Ada.Interrupts.Interrupt_ID of unwanted operations
! 
!    type Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
  
     subtype System_Interrupt_Id is Interrupt_ID;
     --  This synonym is introduced so that the type is accessible through
--- 61,67 ----
     --  Default value used when a pragma Interrupt_Handler or Attach_Handler is
     --  specified without an Interrupt_Priority pragma, see D.3(10).
  
!    type Interrupt_ID is new System.Interrupt_Types.Preelab_Interrupt_ID;
  
     subtype System_Interrupt_Id is Interrupt_ID;
     --  This synonym is introduced so that the type is accessible through
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-interr__sigaction.adb gcc-17-20260531/gcc/ada/libgnarl/s-interr__sigaction.adb
*** gcc-17-20260524/gcc/ada/libgnarl/s-interr__sigaction.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnarl/s-interr__sigaction.adb	Sun May 31 22:32:05 2026
*************** with Ada.Unchecked_Conversion;
*** 36,41 ****
--- 36,42 ----
  
  with Interfaces.C;
  
+ with System.OS_Interface;
  with System.Storage_Elements;
  with System.Task_Primitives.Operations;
  with System.Tasking.Utilities;
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-interr__vxworks.adb gcc-17-20260531/gcc/ada/libgnarl/s-interr__vxworks.adb
*** gcc-17-20260524/gcc/ada/libgnarl/s-interr__vxworks.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnarl/s-interr__vxworks.adb	Sun May 31 22:32:05 2026
*************** package body System.Interrupts is
*** 866,885 ****
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static
!            and then (User_Handler (Interrupt).Static
! 
              --  Trying to overwrite a static Interrupt Handler with a dynamic
              --  Handler
  
!             --  The new handler is not specified as an Interrupt Handler by a
!             --  pragma.
! 
!            or else not Is_Registered (New_Handler))
!          then
!             raise Program_Error with
!                "trying to overwrite a static interrupt handler with a "
!                & "dynamic handler";
           end if;
  
           --  Save the old handler
--- 866,887 ----
           --  We don't check anything if Restoration is True, since we may be
           --  detaching a static handler to restore a dynamic one.
  
!          if not Restoration and then not Static then
              --  Trying to overwrite a static Interrupt Handler with a dynamic
              --  Handler
+             if User_Handler (Interrupt).Static then
+                raise Program_Error
+                  with
+                    "trying to overwrite a static Interrupt Handler with a "
+                    & "dynamic handler";
+             end if;
  
!             --  The new handler is not specified as an interrupt handler by an
!             --  aspect (see the second sentence of RM C.3.2 (17/3)).
!             if not Is_Registered (New_Handler) then
!                raise Program_Error
!                  with "trying to attach procedure without Interrupt_Handler";
!             end if;
           end if;
  
           --  Save the old handler
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-interr__vxworks.ads gcc-17-20260531/gcc/ada/libgnarl/s-interr__vxworks.ads
*** gcc-17-20260524/gcc/ada/libgnarl/s-interr__vxworks.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnarl/s-interr__vxworks.ads	Sun May 31 22:32:05 2026
*************** package System.Interrupts is
*** 61,69 ****
     --  Default value used when a pragma Interrupt_Handler or Attach_Handler is
     --  specified without an Interrupt_Priority pragma, see D.3(10).
  
-    type Ada_Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
-    --  Avoid inheritance by Ada.Interrupts.Interrupt_ID of unwanted operations
- 
     type Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
  
     subtype System_Interrupt_Id is Interrupt_ID;
--- 61,66 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnarl/s-inttyp.ads gcc-17-20260531/gcc/ada/libgnarl/s-inttyp.ads
*** gcc-17-20260524/gcc/ada/libgnarl/s-inttyp.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/ada/libgnarl/s-inttyp.ads	Sun May 31 22:32:05 2026
***************
*** 0 ****
--- 1,7 ----
+ with System.OS_Interface;
+ 
+ package System.Interrupt_Types
+   with Preelaborate
+ is
+    type Preelab_Interrupt_ID is range 0 .. System.OS_Interface.Max_Interrupt;
+ end System.Interrupt_Types;
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnat/a-colien.ads gcc-17-20260531/gcc/ada/libgnat/a-colien.ads
*** gcc-17-20260524/gcc/ada/libgnat/a-colien.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnat/a-colien.ads	Sun May 31 22:32:05 2026
***************
*** 29,40 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- --  Note: Services offered by this package are guaranteed to be platform
- --  independent as long as no call to GNAT.OS_Lib.Setenv or to C putenv
- --  routine is done. On some platforms the services below will report new
- --  environment variables (e.g. Windows) on some others it will not
- --  (e.g. GNU/Linux and Solaris).
- 
  package Ada.Command_Line.Environment is
  
     function Environment_Count return Natural;
--- 29,34 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnat/a-comlin.ads gcc-17-20260531/gcc/ada/libgnat/a-comlin.ads
*** gcc-17-20260524/gcc/ada/libgnat/a-comlin.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnat/a-comlin.ads	Sun May 31 22:32:05 2026
*************** package Ada.Command_Line is
*** 100,113 ****
     --  main program, and the following is an example of a complete C main
     --  program that stores the required information:
  
!    --    main(int argc, char **argv, char **envp)
     --    {
     --       extern int    gnat_argc;
     --       extern char **gnat_argv;
-    --       extern char **gnat_envp;
     --       gnat_argc = argc;
     --       gnat_argv = argv;
-    --       gnat_envp = envp;
  
     --       adainit();
     --       adamain();
--- 100,111 ----
     --  main program, and the following is an example of a complete C main
     --  program that stores the required information:
  
!    --    main(int argc, char **argv)
     --    {
     --       extern int    gnat_argc;
     --       extern char **gnat_argv;
     --       gnat_argc = argc;
     --       gnat_argv = argv;
  
     --       adainit();
     --       adamain();
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnat/g-comlin.adb gcc-17-20260531/gcc/ada/libgnat/g-comlin.adb
*** gcc-17-20260524/gcc/ada/libgnat/g-comlin.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnat/g-comlin.adb	Sun May 31 22:32:05 2026
*************** package body GNAT.Command_Line is
*** 89,94 ****
--- 89,98 ----
     --  converts the given string to canonical all lower case form, so that two
     --  file names compare equal if they refer to the same file.
  
+    function Command_Name return String;
+    --  Returns the command name of the current program without
+    --  platform-specific suffix, like ".exe" on Windows.
+ 
     procedure Internal_Initialize_Option_Scan
       (Parser                   : Opt_Parser;
        Switch_Char              : Character;
*************** package body GNAT.Command_Line is
*** 244,249 ****
--- 248,268 ----
        end if;
     end Canonical_Case_File_Name;
  
+    ------------------
+    -- Command_Name --
+    ------------------
+ 
+    function Command_Name return String is
+       Target_Executable_Suffix : String_Access :=
+         GNAT.OS_Lib.Get_Target_Executable_Suffix;
+       Result : constant String :=
+         Base_Name (Ada.Command_Line.Command_Name,
+                    Suffix => Target_Executable_Suffix.all);
+    begin
+       Free (Target_Executable_Suffix);
+       return Result;
+    end Command_Name;
+ 
     ---------------
     -- Expansion --
     ---------------
*************** package body GNAT.Command_Line is
*** 3351,3362 ****
        end if;
  
        if Config.Usage /= null then
!          Put_Line ("Usage: "
!                    & Base_Name
!                      (Ada.Command_Line.Command_Name) & " " & Config.Usage.all);
        else
!          Put_Line ("Usage: " & Base_Name (Ada.Command_Line.Command_Name)
!                    & " [switches] [arguments]");
        end if;
  
        if Config.Help_Msg /= null and then Config.Help_Msg.all /= "" then
--- 3370,3378 ----
        end if;
  
        if Config.Usage /= null then
!          Put_Line ("Usage: " & Command_Name & " " & Config.Usage.all);
        else
!          Put_Line ("Usage: " & Command_Name & " [switches] [arguments]");
        end if;
  
        if Config.Help_Msg /= null and then Config.Help_Msg.all /= "" then
*************** package body GNAT.Command_Line is
*** 3590,3600 ****
        when Invalid_Switch =>
           Free (Getopt_Switches);
  
!          --  Message inspired by "ls" on Unix
  
           if not Quiet then
              Put_Line (Standard_Error,
!                       Base_Name (Ada.Command_Line.Command_Name)
                        & ": unrecognized option '"
                        & Full_Switch (Parser)
                        & "'");
--- 3606,3617 ----
        when Invalid_Switch =>
           Free (Getopt_Switches);
  
!          --  Message inspired by "ls" on Unix and by its Windows port, which
!          --  doesn't mention the ".exe" suffix.
  
           if not Quiet then
              Put_Line (Standard_Error,
!                       Command_Name
                        & ": unrecognized option '"
                        & Full_Switch (Parser)
                        & "'");
*************** package body GNAT.Command_Line is
*** 3661,3668 ****
     begin
        Put_Line
          (Standard_Error,
!          "try """ & Base_Name (Ada.Command_Line.Command_Name, Suffix => ".exe")
!          & " --help"" for more information.");
     end Try_Help;
  
  end GNAT.Command_Line;
--- 3678,3684 ----
     begin
        Put_Line
          (Standard_Error,
!          "try """ & Command_Name & " --help"" for more information.");
     end Try_Help;
  
  end GNAT.Command_Line;
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnat/i-cstrin.ads gcc-17-20260531/gcc/ada/libgnat/i-cstrin.ads
*** gcc-17-20260524/gcc/ada/libgnat/i-cstrin.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnat/i-cstrin.ads	Sun May 31 22:32:05 2026
*************** pragma Assertion_Policy (Pre => Ignore);
*** 47,53 ****
  
  package Interfaces.C.Strings with
    SPARK_Mode     => On,
!   Abstract_State => (C_Memory),
    Initializes    => (C_Memory),
    Always_Terminates
  is
--- 47,53 ----
  
  package Interfaces.C.Strings with
    SPARK_Mode     => On,
!   Abstract_State => (C_Memory, (C_Addresses with Synchronous)),
    Initializes    => (C_Memory),
    Always_Terminates
  is
*************** is
*** 81,93 ****
     function New_Char_Array (Chars : char_array) return chars_ptr with
       Volatile_Function,
       Post   => New_Char_Array'Result /= Null_Ptr,
!      Global => (Input => C_Memory);
     --  Copy the contents of Chars into a newly allocated chars_ptr
  
     function New_String (Str : String) return chars_ptr with
       Volatile_Function,
       Post   => New_String'Result /= Null_Ptr,
!      Global => (Input => C_Memory);
     --  Copy the contents of Str into a newly allocated chars_ptr
  
     procedure Free (Item : in out chars_ptr) with
--- 81,93 ----
     function New_Char_Array (Chars : char_array) return chars_ptr with
       Volatile_Function,
       Post   => New_Char_Array'Result /= Null_Ptr,
!      Global => (Input => (C_Memory, C_Addresses));
     --  Copy the contents of Chars into a newly allocated chars_ptr
  
     function New_String (Str : String) return chars_ptr with
       Volatile_Function,
       Post   => New_String'Result /= Null_Ptr,
!      Global => (Input => (C_Memory, C_Addresses));
     --  Copy the contents of Str into a newly allocated chars_ptr
  
     procedure Free (Item : in out chars_ptr) with
diff -Nrcpad gcc-17-20260524/gcc/ada/libgnat/libgnat.gpr gcc-17-20260531/gcc/ada/libgnat/libgnat.gpr
*** gcc-17-20260524/gcc/ada/libgnat/libgnat.gpr	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/libgnat/libgnat.gpr	Sun May 31 22:32:05 2026
*************** library project Libgnat is
*** 7,13 ****
     for Source_List_File use "libgnat.lst";
     for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
  
!    for Library_Name use "gnat";
     for Library_Dir use "../adalib";
     for Library_Kind use Libgnat_Common.Library_Kind;
  
--- 7,23 ----
     for Source_List_File use "libgnat.lst";
     for Object_Dir use "../obj-" & Libgnat_Common.Library_Kind;
  
!    case Libgnat_Common.Library_Kind is
!       when "static-pic" =>
!          for Library_Name use "gnat_pic";
!       when "dynamic" =>
!          for Library_Name use "gnat";
!          for Library_Version use
!            "libgnat-" & Libgnat_Common.Version & ".so";
!       when others =>
!          for Library_Name use "gnat";
!    end case;
! 
     for Library_Dir use "../adalib";
     for Library_Kind use Libgnat_Common.Library_Kind;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/make.adb gcc-17-20260531/gcc/ada/make.adb
*** gcc-17-20260524/gcc/ada/make.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/make.adb	Sun May 31 22:32:05 2026
*************** with Switch;   use Switch;
*** 54,60 ****
  with Switch.M; use Switch.M;
  with Table;
  with Targparm;
- with Tempdir;
  with Types;    use Types;
  
  with Ada.Command_Line; use Ada.Command_Line;
--- 54,59 ----
*************** package body Make is
*** 551,564 ****
     --  Mapping files
     -----------------
  
!    type Temp_Path_Names is array (Positive range <>) of Path_Name_Type;
!    type Temp_Path_Ptr is access Temp_Path_Names;
  
     type Free_File_Indexes is array (Positive range <>) of Positive;
     type Free_Indexes_Ptr is access Free_File_Indexes;
  
     type Mapping_File_Data is record
!       Mapping_File_Names : Temp_Path_Ptr;
        --  The name ids of the temporary mapping files used. This is indexed
        --  on the maximum number of compilation processes we will be spawning
        --  (-j parameter)
--- 550,563 ----
     --  Mapping files
     -----------------
  
!    type Temp_Names is array (Positive range <>) of Temp_File_Name;
!    type Temp_Names_Ptr is access Temp_Names;
  
     type Free_File_Indexes is array (Positive range <>) of Positive;
     type Free_Indexes_Ptr is access Free_File_Indexes;
  
     type Mapping_File_Data is record
!       Mapping_File_Names : Temp_Names_Ptr;
        --  The name ids of the temporary mapping files used. This is indexed
        --  on the maximum number of compilation processes we will be spawning
        --  (-j parameter)
*************** package body Make is
*** 583,610 ****
     procedure Init_Mapping_File (File_Index : out Natural);
     --  Create a new mapping file or reuse one already created.
  
!    package Temp_File_Paths is new Table.Table
!      (Table_Component_Type => Path_Name_Type,
        Table_Index_Type     => Natural,
        Table_Low_Bound      => 1,
        Table_Initial        => 4,
        Table_Increment      => 100,
!       Table_Name           => "Make.Temp_File_Paths",
        Release_Threshold    => 0);
  
!    procedure Record_Temp_File (Path : Path_Name_Type);
     --  Record the path of a temporary file, so that it can be deleted at the
     --  end of execution of gnatmake.
  
!    procedure Record_Temp_File (Path : Path_Name_Type) is
     begin
!       for J in 1 .. Temp_File_Paths.Last loop
!          if Temp_File_Paths.Table (J) = Path then
              return;
           end if;
        end loop;
  
!       Temp_File_Paths.Append (Path);
     end Record_Temp_File;
  
     -------------------------------------------------
--- 582,609 ----
     procedure Init_Mapping_File (File_Index : out Natural);
     --  Create a new mapping file or reuse one already created.
  
!    package Temp_File_Names is new Table.Table
!      (Table_Component_Type => Temp_File_Name,
        Table_Index_Type     => Natural,
        Table_Low_Bound      => 1,
        Table_Initial        => 4,
        Table_Increment      => 100,
!       Table_Name           => "Make.Temp_File_Names",
        Release_Threshold    => 0);
  
!    procedure Record_Temp_File (Name : Temp_File_Name);
     --  Record the path of a temporary file, so that it can be deleted at the
     --  end of execution of gnatmake.
  
!    procedure Record_Temp_File (Name : Temp_File_Name) is
     begin
!       for J in 1 .. Temp_File_Names.Last loop
!          if Temp_File_Names.Table (J) = Name then
              return;
           end if;
        end loop;
  
!       Temp_File_Names.Append (Name);
     end Record_Temp_File;
  
     -------------------------------------------------
*************** package body Make is
*** 2245,2258 ****
           end if;
  
           --  Put the name in the mapping file argument for the invocation
!          --  of the compiler.
  
           Free (Mapping_File_Arg);
           Mapping_File_Arg :=
             new String'
               ("-gnatem=" &
!                 Get_Name_String
!                   (The_Mapping_Files.Mapping_File_Names (Mfile)));
        end Get_Mapping_File;
  
        -----------------------
--- 2244,2257 ----
           end if;
  
           --  Put the name in the mapping file argument for the invocation
!          --  of the compiler (while stripping the trailing NUL).
  
           Free (Mapping_File_Arg);
           Mapping_File_Arg :=
             new String'
               ("-gnatem=" &
!                 The_Mapping_Files.Mapping_File_Names (Mfile)
!                   (1 .. Temp_File_Len - 1));
        end Get_Mapping_File;
  
        -----------------------
*************** package body Make is
*** 3458,3464 ****
  
              The_Mapping_Files :=
                  (Mapping_File_Names        =>
!                     new Temp_Path_Names (1 .. Maximum_Processes),
                   Last_Mapping_File_Names   => 0,
                   Free_Mapping_File_Indexes =>
                      new Free_File_Indexes (1 .. Maximum_Processes),
--- 3457,3463 ----
  
              The_Mapping_Files :=
                  (Mapping_File_Names        =>
!                     new Temp_Names (1 .. Maximum_Processes),
                   Last_Mapping_File_Names   => 0,
                   Free_Mapping_File_Indexes =>
                      new Free_File_Indexes (1 .. Maximum_Processes),
*************** package body Make is
*** 3627,3633 ****
  
        --  Just create an empty file
  
!       Tempdir.Create_Temp_File
          (FD,
           The_Mapping_Files.Mapping_File_Names
             (The_Mapping_Files.Last_Mapping_File_Names));
--- 3626,3632 ----
  
        --  Just create an empty file
  
!       Create_Temp_File
          (FD,
           The_Mapping_Files.Mapping_File_Names
             (The_Mapping_Files.Last_Mapping_File_Names));
diff -Nrcpad gcc-17-20260524/gcc/ada/opt.ads gcc-17-20260531/gcc/ada/opt.ads
*** gcc-17-20260524/gcc/ada/opt.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/opt.ads	Sun May 31 22:32:05 2026
*************** package Opt is
*** 2008,2071 ****
     --  True during the analysis of a system unit, but GNAT_Mode_Config must
     --  not change once scanned and set.
  
!    --  Setting GNAT mode has the following effects on the language that is
!    --  accepted. Note that several of the following have the effect of changing
!    --  an error to a warning. But warnings are usually treated as fatal errors
!    --  in -gnatg mode, so to actually take advantage of such a change, it is
!    --  necessary to add an explicit pragma Warnings (Off) in the source and
!    --  this requires clear documentation of why this is necessary.
! 
!    --    The identifier character set is set to 'n' (7-bit ASCII)
! 
!    --    Pragma Extend_System is ignored
! 
!    --    Warning_Mode is set to Treat_As_Error (-gnatwe)
! 
!    --    Standard style checks are set (See Set_GNAT_Style_Check_Options)
! 
!    --    Standard warnings are turned on (see Set_GNAT_Mode_Warnings)
! 
!    --    The Ada version is set to Ada 2012
! 
!    --    Task priorities are always allowed to be in the range Any_Priority
! 
!    --    Overflow checks are suppressed, overflow checking set to strict mode
! 
!    --    ALI files are always generated for predefined generic packages
! 
!    --    Obsolescent feature warnings are suppressed
! 
!    --    Recompilation of children of GNAT, System, Ada, Interfaces is allowed
! 
!    --    The Scalar_Storage_Order attribute applies to generic types
! 
!    --    Categorization errors are treated as warnings rather than errors
! 
!    --    Statements in preelaborated units give warnings rather than errors
! 
!    --    Private objects are allowed in preelaborated units
! 
!    --    Non-static constants in preelaborated units give warnings not errors
! 
!    --    The warning about component size being ignored is suppressed
! 
!    --    The warning about size clauses being ignored is suppressed
! 
!    --    Initializing limited types gives a warning rather than an error
! 
!    --    Copying of limited objects is allowed
! 
!    --    Returning objects of limited types is allowed
! 
!    --    Non-static call in preelaborated unit give a warning, not an error
! 
!    --    Warnings on possible elaboration errors are suppressed
! 
!    --    Warnings about packing being ignored are suppressed
! 
!    --    Warnings in internal units are not suppressed (they normally are)
! 
!    --    The only special comment sequence allowed is --!
  
     --------------------------
     -- Private Declarations --
--- 2008,2015 ----
     --  True during the analysis of a system unit, but GNAT_Mode_Config must
     --  not change once scanned and set.
  
!    --  Details about the impact of this switch can be found in section
!    --  "GNAT Implementation Mode (the ``-gnatg`` switch)" in the GNAT RM.
  
     --------------------------
     -- Private Declarations --
diff -Nrcpad gcc-17-20260524/gcc/ada/osint.adb gcc-17-20260531/gcc/ada/osint.adb
*** gcc-17-20260524/gcc/ada/osint.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/osint.adb	Sun May 31 22:32:05 2026
*************** package body Osint is
*** 3048,3053 ****
--- 3048,3070 ----
        return Name;
     end Strip_Directory;
  
+    ---------------------
+    -- Strip_Directory --
+    ---------------------
+ 
+    function Strip_Directory (Name : String) return String is
+    begin
+       pragma Assert (not Is_Directory_Separator (Name (Name'Last)));
+ 
+       for I in reverse Name'Range loop
+          if Is_Directory_Separator (Name (I)) then
+             return Name (I + 1 .. Name'Last);
+          end if;
+       end loop;
+ 
+       return Name;
+    end Strip_Directory;
+ 
     ------------------
     -- Strip_Suffix --
     ------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/osint.ads gcc-17-20260531/gcc/ada/osint.ads
*** gcc-17-20260524/gcc/ada/osint.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/osint.ads	Sun May 31 22:32:05 2026
*************** package Osint is
*** 181,186 ****
--- 181,190 ----
     --  Strips the prefix directory name (if any) from Name. Returns the
     --  stripped name. Name cannot end with a directory separator.
  
+    function Strip_Directory (Name : String) return String;
+    --  Strips the prefix directory name (if any) from Name. Returns the
+    --  stripped name. Name cannot end with a directory separator.
+ 
     function Strip_Suffix (Name : File_Name_Type) return File_Name_Type;
     --  Strips the suffix (the last '.' and whatever comes after it) from Name.
     --  Returns the stripped name.
diff -Nrcpad gcc-17-20260524/gcc/ada/par-ch10.adb gcc-17-20260531/gcc/ada/par-ch10.adb
*** gcc-17-20260524/gcc/ada/par-ch10.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par-ch10.adb	Sun May 31 22:32:05 2026
*************** package body Ch10 is
*** 336,343 ****
  
        Set_Keyword_Casing (Current_Source_File, Determine_Token_Casing);
  
!       if Style_Check then
!          Style.Check_Indentation;
        end if;
  
        --  Remaining processing depends on particular type of compilation unit
--- 336,352 ----
  
        Set_Keyword_Casing (Current_Source_File, Determine_Token_Casing);
  
!       --  For most column style checks, we only test that the first non-blank
!       --  character is on a column multiple of the indentation value. But here
!       --  the only reasonable choice seems to start at the first column, so we
!       --  test for that instead.
! 
!       if RM_Column_Check
!          and then Token_Is_At_Start_Of_Line
!          and then Start_Column /= 0
!       then
!          Error_Msg_BC -- CODEFIX
!            ("(style) incorrect layout?l?");
        end if;
  
        --  Remaining processing depends on particular type of compilation unit
diff -Nrcpad gcc-17-20260524/gcc/ada/par-ch12.adb gcc-17-20260531/gcc/ada/par-ch12.adb
*** gcc-17-20260524/gcc/ada/par-ch12.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par-ch12.adb	Sun May 31 22:32:05 2026
*************** package body Ch12 is
*** 1207,1218 ****
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms", Token_Ptr);
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
  
!                Set_Expression (Def_Node, P_Expression);
  
                 if Token /= Tok_Right_Paren then
                    Error_Msg_SC ("missing "")"" at end of expression default");
--- 1207,1219 ----
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms", Token_Ptr,
!                Is_Core_Extension => True);
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
  
!                Set_Expression (Def_Node, P_Expression_If_OK);
  
                 if Token /= Tok_Right_Paren then
                    Error_Msg_SC ("missing "")"" at end of expression default");
diff -Nrcpad gcc-17-20260524/gcc/ada/par-ch4.adb gcc-17-20260531/gcc/ada/par-ch4.adb
*** gcc-17-20260524/gcc/ada/par-ch4.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par-ch4.adb	Sun May 31 22:32:05 2026
*************** package body Ch4 is
*** 482,493 ****
           elsif Token = Tok_Identifier then
              Attr_Name := Token_Name;
  
!             --  Attribute Unsigned_Base_Range temporarily disabled
! 
!             if not Is_Attribute_Name (Attr_Name)
!               or else (Attr_Name = Name_Unsigned_Base_Range
!                          and then not Debug_Flag_Dot_U)
!             then
                 if Apostrophe_Should_Be_Semicolon then
                    Expr_Form := EF_Name;
                    return Name_Node;
--- 482,488 ----
           elsif Token = Tok_Identifier then
              Attr_Name := Token_Name;
  
!             if not Is_Attribute_Name (Attr_Name) then
                 if Apostrophe_Should_Be_Semicolon then
                    Expr_Form := EF_Name;
                    return Name_Node;
*************** package body Ch4 is
*** 2140,2158 ****
     end P_Expression;
  
     --  This function is identical to the normal P_Expression, except that it
!    --  also permits the appearance of a case, conditional, or quantified
     --  expression if the call immediately follows a left paren, and followed
     --  by a right parenthesis. These forms are allowed if these conditions
     --  are not met, but an error message will be issued.
  
     function P_Expression_If_OK return Node_Id is
     begin
!       --  Case of conditional, case or quantified expression
  
        if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
!       --  Normal case, not case/conditional/quantified expression
  
        else
           return P_Expression;
--- 2135,2153 ----
     end P_Expression;
  
     --  This function is identical to the normal P_Expression, except that it
!    --  also permits the appearance of a conditional, quantified, or declare
     --  expression if the call immediately follows a left paren, and followed
     --  by a right parenthesis. These forms are allowed if these conditions
     --  are not met, but an error message will be issued.
  
     function P_Expression_If_OK return Node_Id is
     begin
!       --  Case of conditional, quantified, or declare expression
  
        if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
!       --  Normal case: not a conditional, quantified, or declare expression
  
        else
           return P_Expression;
*************** package body Ch4 is
*** 2660,2666 ****
           end;
        end if;
  
!       --  If all extensions are enabled and we have a deep delta aggregate
        --  whose type is an array type with an element type that is a
        --  record type, then we can encounter legal things like
        --    with delta (Some_Index_Expression).Some_Component
--- 2655,2661 ----
           end;
        end if;
  
!       --  If core extensions are enabled and we have a deep delta aggregate
        --  whose type is an array type with an element type that is a
        --  record type, then we can encounter legal things like
        --    with delta (Some_Index_Expression).Some_Component
*************** package body Ch4 is
*** 2673,2679 ****
          and then Prev_Token = Tok_Right_Paren
          and then Serious_Errors_Detected = 0
          and then Inside_Delta_Aggregate
!         and then All_Extensions_Allowed
        then
           if Token = Tok_Dot then
              Node2 := New_Node (N_Selected_Component, Token_Ptr);
--- 2668,2674 ----
          and then Prev_Token = Tok_Right_Paren
          and then Serious_Errors_Detected = 0
          and then Inside_Delta_Aggregate
!         and then Core_Extensions_Allowed
        then
           if Token = Tok_Dot then
              Node2 := New_Node (N_Selected_Component, Token_Ptr);
diff -Nrcpad gcc-17-20260524/gcc/ada/par-ch5.adb gcc-17-20260531/gcc/ada/par-ch5.adb
*** gcc-17-20260524/gcc/ada/par-ch5.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par-ch5.adb	Sun May 31 22:32:05 2026
*************** package body Ch5 is
*** 720,730 ****
                          Statement_Required := False;
                       end if;
  
!                   --  If junk after identifier, check if identifier is an
!                   --  instance of an incorrectly spelled keyword. If so, we
!                   --  do nothing. The Bad_Spelling_Of will have reset Token
!                   --  to the appropriate keyword, so the next time round the
!                   --  loop we will process the modified token.
                    --
                    --  Note that we check for ELSIF before ELSE here, because
                    --  we don't want to identify a misspelling of ELSE as ELSIF,
--- 720,740 ----
                          Statement_Required := False;
                       end if;
  
!                   --  If junk after identifier, check if identifier is one of:
!                   --
!                   --  - An instance of an incorrectly spelled keyword.
!                   --  - One of the non-reserved keywords introduced by GNAT
!                   --    syntax extensions (currently, "finally" is the only
!                   --    such keyword that can occur here).
!                   --
!                   --  In the incorrect spelling case, we do nothing.
!                   --  Bad_Spelling_Of will have reset Token to the appropriate
!                   --  keyword, so the next time round the loop we will process
!                   --  the modified token.
!                   --
!                   --  In the non-reserved keyword case, we replace the
!                   --  identifier token with a token for the appropriate
!                   --  keyword.
                    --
                    --  Note that we check for ELSIF before ELSE here, because
                    --  we don't want to identify a misspelling of ELSE as ELSIF,
*************** package body Ch5 is
*** 758,765 ****
                         or else Bad_Spelling_Of (Tok_While)
                       then
                          null;
  
!                      --  If not a bad spelling, then we really have junk
  
                       else
                          Scan; -- past identifier again
--- 768,781 ----
                         or else Bad_Spelling_Of (Tok_While)
                       then
                          null;
+                      elsif Token_Name = Name_Finally then
+                         Error_Msg_GNAT_Extension
+                           ("the finally construct", Token_Ptr);
+                         Token := Tok_Finally;
+                         exit;
  
!                      --  If not a bad spelling or non-reserved keyword, then we
!                      --  really have junk.
  
                       else
                          Scan; -- past identifier again
*************** package body Ch5 is
*** 2121,2127 ****
              --  can cause a lot of havoc, and it is better not to dump these
              --  cascaded messages on the user.
  
!             Purge_Messages (Get_Location (Missing_Begin_Msg), Prev_Token_Ptr);
           end if;
        end Missing_Begin;
  
--- 2137,2144 ----
              --  can cause a lot of havoc, and it is better not to dump these
              --  cascaded messages on the user.
  
!             Delete_Error_Msgs_In_Range
!               (Get_Location (Missing_Begin_Msg), Prev_Token_Ptr);
           end if;
        end Missing_Begin;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/par-util.adb gcc-17-20260531/gcc/ada/par-util.adb
*** gcc-17-20260524/gcc/ada/par-util.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par-util.adb	Sun May 31 22:32:05 2026
*************** package body Util is
*** 230,243 ****
           end if;
        end if;
  
-       if Ada_Version < Ada_With_All_Extensions then
-          if Token_Name in GNAT_Extensions_Reserved_Words then
-             Error_Msg_N
-               ("& is a reserved word with all extensions enabled?",
-                Token_Node);
-          end if;
-       end if;
- 
        --  Note: we deliberately do not emit these warnings when operating in
        --  Ada 83 mode because in that case we assume the user is building
        --  legacy code anyway and is not interested in updating Ada versions.
--- 230,235 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/par.adb gcc-17-20260531/gcc/ada/par.adb
*** gcc-17-20260524/gcc/ada/par.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/par.adb	Sun May 31 22:32:05 2026
*************** function Par (Configuration_Pragmas : Bo
*** 839,848 ****
  
        function P_Expression_If_OK return Node_Id;
        --  Scans out an expression allowing an unparenthesized case expression,
!       --  if expression, or quantified expression to appear without enclosing
!       --  parentheses. However, if such an expression is not preceded by a left
!       --  paren, and followed by a right paren, an error message will be output
!       --  noting that parenthesization is required.
  
        function P_Expression_No_Right_Paren return Node_Id;
        --  Scans out an expression in contexts where the expression cannot be
--- 839,848 ----
  
        function P_Expression_If_OK return Node_Id;
        --  Scans out an expression allowing an unparenthesized case expression,
!       --  if expression, quantified expression, or declare expression to appear
!       --  without enclosing parentheses. However, if such an expression is not
!       --  preceded by a left paren, and followed by a right paren, an error
!       --  message will be output noting that parenthesization is required.
  
        function P_Expression_No_Right_Paren return Node_Id;
        --  Scans out an expression in contexts where the expression cannot be
diff -Nrcpad gcc-17-20260524/gcc/ada/raise-gcc.c gcc-17-20260531/gcc/ada/raise-gcc.c
*** gcc-17-20260524/gcc/ada/raise-gcc.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/raise-gcc.c	Sun May 31 22:32:05 2026
*************** db_phases (int phases)
*** 381,387 ****
     by a function. Such filter is emitted around the body of C++
     functions defined like:
       void foo ([...])  throw (A, B) { [...] }
!    These can be viewed as negativ filter: the landing pad is branched
     to for exceptions that doesn't match the filter and usually aborts
     the program).
  
--- 381,387 ----
     by a function. Such filter is emitted around the body of C++
     functions defined like:
       void foo ([...])  throw (A, B) { [...] }
!    These can be viewed as negative filter: the landing pad is branched
     to for exceptions that doesn't match the filter and usually aborts
     the program).
  
*************** PERSONALITY_FUNCTION (_Unwind_State stat
*** 1545,1551 ****
        /* Phase 2, to call a cleanup.  */
        uw_phases = _UA_CLEANUP_PHASE;
  #if 0
!       /* ??? We don't use UA_HANDLER_FRAME (except to debug).  Futhermore,
  	 barrier_cache.sp isn't yet set.  */
        if (!(state & _US_FORCE_UNWIND)
  	  && (uw_exception->barrier_cache.sp
--- 1545,1551 ----
        /* Phase 2, to call a cleanup.  */
        uw_phases = _UA_CLEANUP_PHASE;
  #if 0
!       /* ??? We don't use UA_HANDLER_FRAME (except to debug).  Furthermore,
  	 barrier_cache.sp isn't yet set.  */
        if (!(state & _US_FORCE_UNWIND)
  	  && (uw_exception->barrier_cache.sp
diff -Nrcpad gcc-17-20260524/gcc/ada/restrict.adb gcc-17-20260531/gcc/ada/restrict.adb
*** gcc-17-20260524/gcc/ada/restrict.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/restrict.adb	Sun May 31 22:32:05 2026
***************
*** 23,45 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Atree;          use Atree;
! with Casing;         use Casing;
! with Einfo.Entities; use Einfo.Entities;
! with Einfo.Utils;    use Einfo.Utils;
! with Errout;         use Errout;
! with Debug;          use Debug;
! with Fname;          use Fname;
! with Fname.UF;       use Fname.UF;
! with Lib;            use Lib;
! with Opt;            use Opt;
! with Sinfo.Nodes;    use Sinfo.Nodes;
! with Sinfo.Utils;    use Sinfo.Utils;
! with Sinput;         use Sinput;
! with Stand;          use Stand;
! with Targparm;       use Targparm;
! with Uname;          use Uname;
! with Warnsw;         use Warnsw;
  
  package body Restrict is
  
--- 23,46 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Atree;                        use Atree;
! with Casing;                       use Casing;
! with Einfo.Entities;               use Einfo.Entities;
! with Einfo.Utils;                  use Einfo.Utils;
! with Errid.Restriction_Repository; use Errid.Restriction_Repository;
! with Errout;                       use Errout;
! with Debug;                        use Debug;
! with Fname;                        use Fname;
! with Fname.UF;                     use Fname.UF;
! with Lib;                          use Lib;
! with Opt;                          use Opt;
! with Sinfo.Nodes;                  use Sinfo.Nodes;
! with Sinfo.Utils;                  use Sinfo.Utils;
! with Sinput;                       use Sinput;
! with Stand;                        use Stand;
! with Targparm;                     use Targparm;
! with Uname;                        use Uname;
! with Warnsw;                       use Warnsw;
  
  package body Restrict is
  
*************** package body Restrict is
*** 1246,1258 ****
           end if;
  
           Add_Char ('!');
!          Error_Msg_N (Msg (1 .. Len), N);
  
        --  Case of secondary profile continuation message present
  
        else
           Add_Char ('!');
!          Error_Msg_N (Msg (1 .. Len), N);
  
           Len := 0;
           Add_Char ('\');
--- 1247,1265 ----
           end if;
  
           Add_Char ('!');
!          Error_Msg_N
!            (Msg        => Msg (1 .. Len),
!             N          => N,
!             Error_Code => Rest_To_Diag_Mappping (R));
  
        --  Case of secondary profile continuation message present
  
        else
           Add_Char ('!');
!          Error_Msg_N
!            (Msg        => Msg (1 .. Len),
!             N          => N,
!             Error_Code => Rest_To_Diag_Mappping (R));
  
           Len := 0;
           Add_Char ('\');
*************** package body Restrict is
*** 1277,1283 ****
           --  Output unconditional message and we are done
  
           Add_Char ('!');
!          Error_Msg_N (Msg (1 .. Len), N);
        end if;
     end Restriction_Msg;
  
--- 1284,1293 ----
           --  Output unconditional message and we are done
  
           Add_Char ('!');
!          Error_Msg_N
!            (Msg        => Msg (1 .. Len),
!             N          => N,
!             Error_Code => Rest_To_Diag_Mappping (R));
        end if;
     end Restriction_Msg;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/rtinit.c gcc-17-20260531/gcc/ada/rtinit.c
*** gcc-17-20260524/gcc/ada/rtinit.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/rtinit.c	Sun May 31 22:32:05 2026
*************** __gnat_runtime_initialize (int install_h
*** 446,452 ****
  		 && (_tcsstr (wargv[k], _T("?")) != 0 ||
  		     _tcsstr (wargv[k], _T("*")) != 0))
  	       {
! 		 /* Wilcards are present, append all corresponding matches. */
  		 WIN32_FIND_DATA FileData;
  		 HANDLE hDir = FindFirstFile (wargv[k], &FileData);
  		 LPWSTR dir = NULL;
--- 446,452 ----
  		 && (_tcsstr (wargv[k], _T("?")) != 0 ||
  		     _tcsstr (wargv[k], _T("*")) != 0))
  	       {
! 		 /* Wildcards are present, append all corresponding matches. */
  		 WIN32_FIND_DATA FileData;
  		 HANDLE hDir = FindFirstFile (wargv[k], &FileData);
  		 LPWSTR dir = NULL;
diff -Nrcpad gcc-17-20260524/gcc/ada/rtsfind.adb gcc-17-20260531/gcc/ada/rtsfind.adb
*** gcc-17-20260524/gcc/ada/rtsfind.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/rtsfind.adb	Sun May 31 22:32:05 2026
*************** package body Rtsfind is
*** 1527,1539 ****
        Lib_Unit : Node_Id;
        Pkg_Ent  : Entity_Id;
  
!       Save_Front_End_Inlining : constant Boolean := Front_End_Inlining;
        --  This flag is used to disable front-end inlining when RTE is invoked.
        --  This prevents the analysis of other runtime bodies when a particular
!       --  spec is loaded through Rtsfind. This is both efficient, and prevents
!       --  spurious visibility conflicts between use-visible user entities, and
        --  entities in run-time packages.
  
     --  Start of processing for RTE
  
     begin
--- 1527,1543 ----
        Lib_Unit : Node_Id;
        Pkg_Ent  : Entity_Id;
  
!       Saved_Front_End_Inlining : constant Boolean := Front_End_Inlining;
        --  This flag is used to disable front-end inlining when RTE is invoked.
        --  This prevents the analysis of other runtime bodies when a particular
!       --  spec is loaded through Rtsfind. This is efficient, and also prevents
!       --  spurious visibility conflicts between use-visible user entities and
        --  entities in run-time packages.
  
+       Saved_In_Inlined_Body : constant Boolean := In_Inlined_Body;
+       --  This flag is used to preserve and reset In_Inlined_Body when RTE is
+       --  invoked.
+ 
     --  Start of processing for RTE
  
     begin
*************** package body Rtsfind is
*** 1556,1561 ****
--- 1560,1566 ----
        end if;
  
        Front_End_Inlining := False;
+       In_Inlined_Body := False;
  
        --  Load unit if unit not previously loaded
  
*************** package body Rtsfind is
*** 1572,1579 ****
           if Nkind (Lib_Unit) = N_Subprogram_Declaration then
              RE_Table (E) := U.Entity;
  
!          --  Otherwise we must have the package case. First check package
!          --  entity itself (e.g. RTE_Name for System.Interrupts.Name)
  
           else
              pragma Assert (Nkind (Lib_Unit) = N_Package_Declaration);
--- 1577,1583 ----
           if Nkind (Lib_Unit) = N_Subprogram_Declaration then
              RE_Table (E) := U.Entity;
  
!          --  Otherwise we must have the package case
  
           else
              pragma Assert (Nkind (Lib_Unit) = N_Package_Declaration);
*************** package body Rtsfind is
*** 1630,1636 ****
        end if;
  
        Maybe_Add_With (U);
!       Front_End_Inlining := Save_Front_End_Inlining;
  
        return Check_CRT (E, RE_Table (E));
     end RTE;
--- 1634,1642 ----
        end if;
  
        Maybe_Add_With (U);
! 
!       Front_End_Inlining := Saved_Front_End_Inlining;
!       In_Inlined_Body := Saved_In_Inlined_Body;
  
        return Check_CRT (E, RE_Table (E));
     end RTE;
*************** package body Rtsfind is
*** 1680,1700 ****
        Lib_Unit : Node_Id;
        Pkg_Ent  : Entity_Id;
  
!       --  The following flag is used to disable front-end inlining when
        --  RTE_Record_Component is invoked. This prevents the analysis of other
        --  runtime bodies when a particular spec is loaded through Rtsfind. This
!       --  is both efficient, and it prevents spurious visibility conflicts
!       --  between use-visible user entities, and entities in run-time packages.
  
!       Save_Front_End_Inlining : Boolean;
  
     begin
        --  Note: Contrary to subprogram RTE, there is no need to do any special
        --  management with package system.ads because it has no record type
        --  declarations.
  
!       Save_Front_End_Inlining := Front_End_Inlining;
!       Front_End_Inlining      := False;
  
        --  Load unit if unit not previously loaded
  
--- 1686,1709 ----
        Lib_Unit : Node_Id;
        Pkg_Ent  : Entity_Id;
  
!       Saved_Front_End_Inlining : constant Boolean := Front_End_Inlining;
!       --  This flags is used to disable front-end inlining when
        --  RTE_Record_Component is invoked. This prevents the analysis of other
        --  runtime bodies when a particular spec is loaded through Rtsfind. This
!       --  is efficient, and also prevents spurious visibility conflicts between
!       --  use-visible user entities and entities in run-time packages.
  
!       Saved_In_Inlined_Body : constant Boolean := In_Inlined_Body;
!       --  This flag is used to preserve and reset In_Inlined_Body when
!       --  RTE_Record_Component is invoked.
  
     begin
        --  Note: Contrary to subprogram RTE, there is no need to do any special
        --  management with package system.ads because it has no record type
        --  declarations.
  
!       Front_End_Inlining := False;
!       In_Inlined_Body := False;
  
        --  Load unit if unit not previously loaded
  
*************** package body Rtsfind is
*** 1733,1739 ****
  
        Maybe_Add_With (U);
  
!       Front_End_Inlining := Save_Front_End_Inlining;
        return Check_CRT (E, Found_E);
     end RTE_Record_Component;
  
--- 1742,1750 ----
  
        Maybe_Add_With (U);
  
!       Front_End_Inlining := Saved_Front_End_Inlining;
!       In_Inlined_Body := Saved_In_Inlined_Body;
! 
        return Check_CRT (E, Found_E);
     end RTE_Record_Component;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/rtsfind.ads gcc-17-20260531/gcc/ada/rtsfind.ads
*** gcc-17-20260524/gcc/ada/rtsfind.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/rtsfind.ads	Sun May 31 22:32:05 2026
*************** package Rtsfind is
*** 292,297 ****
--- 292,299 ----
        System_Img_LLLU,
        System_Img_Uns,
        System_Img_WChar,
+       System_Interrupt_Names,
+       System_Interrupt_Types,
        System_Interrupts,
        System_Long_Long_Float_Expon,
        System_Machine_Code,
*************** package Rtsfind is
*** 1009,1014 ****
--- 1011,1020 ----
       RE_Image_Wide_Character,            -- System.Img_WChar
       RE_Image_Wide_Wide_Character,       -- System.Img_WChar
  
+      RE_Interrupt_Names,                 -- System.Interrupt_Names
+ 
+      RE_Preelab_Interrupt_ID,            -- System.Interrupt_Types
+ 
       RE_Bind_Interrupt_To_Entry,         -- System.Interrupts
       RE_Default_Interrupt_Priority,      -- System.Interrupts
       RE_Dynamic_Interrupt_Protection,    -- System.Interrupts
*************** package Rtsfind is
*** 2677,2682 ****
--- 2683,2692 ----
       RE_Image_Wide_Character             => System_Img_WChar,
       RE_Image_Wide_Wide_Character        => System_Img_WChar,
  
+      RE_Interrupt_Names                  => System_Interrupt_Names,
+ 
+      RE_Preelab_Interrupt_ID             => System_Interrupt_Types,
+ 
       RE_Bind_Interrupt_To_Entry          => System_Interrupts,
       RE_Default_Interrupt_Priority       => System_Interrupts,
       RE_Dynamic_Interrupt_Protection     => System_Interrupts,
diff -Nrcpad gcc-17-20260524/gcc/ada/s-oscons-tmplt.c gcc-17-20260531/gcc/ada/s-oscons-tmplt.c
*** gcc-17-20260524/gcc/ada/s-oscons-tmplt.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/s-oscons-tmplt.c	Sun May 31 22:32:05 2026
*************** CNU(RTS_CONTROL_ENABLE, "Enable RTS flow
*** 1054,1060 ****
  
  */
  
! #if defined (__FreeBSD__) || defined (__linux__) || defined (__DragonFly__)
  # define PTY_Library "-lutil"
  #else
  # define PTY_Library ""
--- 1054,1060 ----
  
  */
  
! #if defined (__FreeBSD__) || defined (__DragonFly__)
  # define PTY_Library "-lutil"
  #else
  # define PTY_Library ""
diff -Nrcpad gcc-17-20260524/gcc/ada/scans.adb gcc-17-20260531/gcc/ada/scans.adb
*** gcc-17-20260524/gcc/ada/scans.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/scans.adb	Sun May 31 22:32:05 2026
*************** package body Scans is
*** 134,142 ****
        --  Ada 2012 reserved words
  
        Set_Reserved (Name_Some, Tok_Some);
- 
-       --  GNAT extensions reserved words
-       Set_Reserved (Name_Finally, Tok_Finally);
     end Initialize_Ada_Keywords;
  
     ------------------
--- 134,139 ----
*************** package body Scans is
*** 169,199 ****
  
     procedure Save_Scan_State (Saved_State : out Saved_Scan_State) is
     begin
-       Saved_State.Save_Scan_Ptr := Scan_Ptr;
-       Saved_State.Save_Token := Token;
-       Saved_State.Save_Token_Ptr := Token_Ptr;
-       Saved_State.Save_Current_Line_Start := Current_Line_Start;
-       Saved_State.Save_Start_Column := Start_Column;
-       Saved_State.Save_Checksum := Checksum;
-       Saved_State.Save_First_Non_Blank_Location := First_Non_Blank_Location;
- 
        --  Check that we're not saving a bogus Token_Node
  
        pragma Assert
          ((Token_Node /= Empty) = (Token in Token_Class_Lit_Or_Name));
-       Saved_State.Save_Token_Node := Token_Node;
  
!       Saved_State.Save_Token_Name := Token_Name;
!       Saved_State.Save_Prev_Token := Prev_Token;
!       Saved_State.Save_Prev_Token_Ptr := Prev_Token_Ptr;
     end Save_Scan_State;
  
     ------------------------
     -- Restore_Scan_State --
     ------------------------
  
-    --  use Output, VAST, Atree;
- 
     procedure Restore_Scan_State (Saved_State : Saved_Scan_State) is
     begin
        Scan_Ptr := Saved_State.Save_Scan_Ptr;
--- 166,194 ----
  
     procedure Save_Scan_State (Saved_State : out Saved_Scan_State) is
     begin
        --  Check that we're not saving a bogus Token_Node
  
        pragma Assert
          ((Token_Node /= Empty) = (Token in Token_Class_Lit_Or_Name));
  
!       Saved_State :=
!         (Save_Scan_Ptr => Scan_Ptr,
!          Save_Token => Token,
!          Save_Token_Ptr => Token_Ptr,
!          Save_Current_Line_Start => Current_Line_Start,
!          Save_Start_Column => Start_Column,
!          Save_Checksum => Checksum,
!          Save_First_Non_Blank_Location => First_Non_Blank_Location,
!          Save_Token_Node => Token_Node,
!          Save_Token_Name => Token_Name,
!          Save_Prev_Token => Prev_Token,
!          Save_Prev_Token_Ptr => Prev_Token_Ptr);
     end Save_Scan_State;
  
     ------------------------
     -- Restore_Scan_State --
     ------------------------
  
     procedure Restore_Scan_State (Saved_State : Saved_Scan_State) is
     begin
        Scan_Ptr := Saved_State.Save_Scan_Ptr;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem.adb gcc-17-20260531/gcc/ada/sem.adb
*** gcc-17-20260524/gcc/ada/sem.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem.adb	Sun May 31 22:32:05 2026
*************** package body Sem is
*** 651,657 ****
           when N_Empty =>
              pragma Assert (Serious_Errors_Detected /= 0
                or else Configurable_Run_Time_Violations /= 0);
-             null;
  
           --  A call to analyze the error node is simply ignored, to avoid
           --  causing cascaded errors (happens of course only in error cases)
--- 651,656 ----
*************** package body Sem is
*** 660,666 ****
  
           when N_Error =>
              Expander_Mode_Save_And_Set (False);
-             null;
  
           --  Push/Pop nodes normally don't come through an analyze call. An
           --  exception is the dummy ones bracketing a subprogram body. In any
--- 659,664 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_aggr.adb gcc-17-20260531/gcc/ada/sem_aggr.adb
*** gcc-17-20260524/gcc/ada/sem_aggr.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_aggr.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Aggr is
*** 2581,2587 ****
                          Analyze (Choice);
  
                          if Is_Object_Reference (Choice)
!                           and then Is_Iterator (Etype (Choice))
                          then
                             Set_Iterator_Specification
                               (Assoc,
--- 2581,2590 ----
                          Analyze (Choice);
  
                          if Is_Object_Reference (Choice)
!                           and then (Is_Iterator (Etype (Choice))
!                                      or else
!                                        Has_Aspect
!                                          (Etype (Choice), Aspect_Iterable))
                          then
                             Set_Iterator_Specification
                               (Assoc,
*************** package body Sem_Aggr is
*** 2700,2716 ****
                         ("(Ada 83) illegal context for OTHERS choice", N);
                    end if;
  
!                elsif Is_Entity_Name (Choice) then
                    Analyze (Choice);
  
!                   declare
!                      E      : constant Entity_Id := Entity (Choice);
!                      New_Cs : List_Id;
!                      P      : Node_Id;
!                      C      : Node_Id;
  
!                   begin
!                      if Is_Type (E) and then Has_Predicates (E) then
                          Freeze_Before (N, E);
  
                          if Has_Dynamic_Predicate_Aspect (E)
--- 2703,2723 ----
                         ("(Ada 83) illegal context for OTHERS choice", N);
                    end if;
  
!                else
                    Analyze (Choice);
  
!                   if Is_Entity_Name (Choice)
!                     and then Is_Type (Entity (Choice))
!                     and then Has_Predicates (Entity (Choice))
!                   then
!                      declare
!                         E : constant Entity_Id := Entity (Choice);
  
!                         C : Node_Id;
!                         L : List_Id;
!                         P : Node_Id;
! 
!                      begin
                          Freeze_Before (N, E);
  
                          if Has_Dynamic_Predicate_Aspect (E)
*************** package body Sem_Aggr is
*** 2734,2752 ****
                          if Present (Static_Discrete_Predicate (E)) then
                             Delete_Choice := True;
  
!                            New_Cs := New_List;
                             P := First (Static_Discrete_Predicate (E));
                             while Present (P) loop
                                C := New_Copy (P);
                                Set_Sloc (C, Sloc (Choice));
!                               Append_To (New_Cs, C);
                                Next (P);
                             end loop;
  
!                            Insert_List_After (Choice, New_Cs);
                          end if;
!                      end if;
!                   end;
                 end if;
  
                 Nb_Choices := Nb_Choices + 1;
--- 2741,2759 ----
                          if Present (Static_Discrete_Predicate (E)) then
                             Delete_Choice := True;
  
!                            L := New_List;
                             P := First (Static_Discrete_Predicate (E));
                             while Present (P) loop
                                C := New_Copy (P);
                                Set_Sloc (C, Sloc (Choice));
!                               Append_To (L, C);
                                Next (P);
                             end loop;
  
!                            Insert_List_After (Choice, L);
                          end if;
!                      end;
!                   end if;
                 end if;
  
                 Nb_Choices := Nb_Choices + 1;
*************** package body Sem_Aggr is
*** 2873,2880 ****
  
                    --  Test for subtype mark without constraint
  
!                   elsif Is_Entity_Name (Choice) and then
!                     Is_Type (Entity (Choice))
                    then
                       if Base_Type (Entity (Choice)) /= Index_Base then
                          Error_Msg_N
--- 2880,2887 ----
  
                    --  Test for subtype mark without constraint
  
!                   elsif Is_Entity_Name (Choice)
!                     and then Is_Type (Entity (Choice))
                    then
                       if Base_Type (Entity (Choice)) /= Index_Base then
                          Error_Msg_N
*************** package body Sem_Aggr is
*** 4520,4526 ****
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
                 if Is_Deep_Choice (Choice, Typ) then
!                   pragma Assert (All_Extensions_Allowed);
                    Deep_Choice_Seen := True;
  
                    --  a deep delta aggregate
--- 4527,4533 ----
              Choice := First (Choice_List (Assoc));
              while Present (Choice) loop
                 if Is_Deep_Choice (Choice, Typ) then
!                   pragma Assert (Core_Extensions_Allowed);
                    Deep_Choice_Seen := True;
  
                    --  a deep delta aggregate
*************** package body Sem_Aggr is
*** 4796,4802 ****
              Deep_Choice := Nkind (Choice) /= N_Identifier;
              if Deep_Choice then
                 Error_Msg_GNAT_Extension
!                  ("deep delta aggregate", Sloc (Choice));
              end if;
  
              Comp_Type := Get_Component_Type
--- 4803,4810 ----
              Deep_Choice := Nkind (Choice) /= N_Identifier;
              if Deep_Choice then
                 Error_Msg_GNAT_Extension
!                  ("deep delta aggregate", Sloc (Choice),
!                   Is_Core_Extension => True);
              end if;
  
              Comp_Type := Get_Component_Type
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_attr.adb gcc-17-20260531/gcc/ada/sem_attr.adb
*** gcc-17-20260524/gcc/ada/sem_attr.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_attr.adb	Sun May 31 22:32:05 2026
*************** with Elists;         use Elists;
*** 37,42 ****
--- 37,43 ----
  with Errout;         use Errout;
  with Eval_Fat;
  with Exp_Dist;       use Exp_Dist;
+ with Exp_Put_Image;  use Exp_Put_Image;
  with Exp_Util;       use Exp_Util;
  with Expander;       use Expander;
  with Freeze;         use Freeze;
*************** package body Sem_Attr is
*** 1518,1523 ****
--- 1519,1526 ----
           if Nkind (Subp_Decl) not in N_Abstract_Subprogram_Declaration
                                     | N_Entry_Declaration
                                     | N_Expression_Function
+                                    | N_Formal_Abstract_Subprogram_Declaration
+                                    | N_Formal_Concrete_Subprogram_Declaration
                                     | N_Full_Type_Declaration
                                     | N_Generic_Subprogram_Declaration
                                     | N_Subprogram_Body
*************** package body Sem_Attr is
*** 6173,6179 ****
                    --  Otherwise the prefix denotes some unrelated function
  
                    else
!                      Error_Msg_Name_2 := Chars (Spec_Id);
                       Error_Attr
                         ("incorrect prefix for attribute %, expected %", P);
                    end if;
--- 6176,6188 ----
                    --  Otherwise the prefix denotes some unrelated function
  
                    else
!                      if Is_Access_To_Subprogram_Wrapper (Spec_Id) then
!                         Error_Msg_Name_2 :=
!                           Chars (Etype (Last_Formal (Spec_Id)));
!                      else
!                         Error_Msg_Name_2 := Chars (Spec_Id);
!                      end if;
! 
                       Error_Attr
                         ("incorrect prefix for attribute %, expected %", P);
                    end if;
*************** package body Sem_Attr is
*** 6184,6191 ****
                 elsif Is_Access_Subprogram_Type (Pref_Id) then
                    if Pref_Id = Spec_Id then
                       Set_Etype (N, Etype (Designated_Type (Spec_Id)));
                    else
!                      Error_Msg_Name_2 := Chars (Spec_Id);
                       Error_Attr
                         ("incorrect prefix for attribute %, expected %", P);
                    end if;
--- 6193,6209 ----
                 elsif Is_Access_Subprogram_Type (Pref_Id) then
                    if Pref_Id = Spec_Id then
                       Set_Etype (N, Etype (Designated_Type (Spec_Id)));
+ 
+                   --  Otherwise the prefix denotes some unrelated function
+ 
                    else
!                      if Is_Access_To_Subprogram_Wrapper (Spec_Id) then
!                         Error_Msg_Name_2 :=
!                           Chars (Etype (Last_Formal (Spec_Id)));
!                      else
!                         Error_Msg_Name_2 := Chars (Spec_Id);
!                      end if;
! 
                       Error_Attr
                         ("incorrect prefix for attribute %, expected %", P);
                    end if;
*************** package body Sem_Attr is
*** 8096,8101 ****
--- 8114,8123 ----
        function Mantissa return Uint;
        --  Returns the Mantissa value for the prefix type
  
+       procedure Fold_Compile_Time_Known_Enumeration_Image (Expr : Node_Id);
+       --  Folds 'Image of a compile-time known enumeration value into a string
+       --  literal whose contents depend on whether names are available.
+ 
        procedure Set_Bounds;
        --  Used for First, Last and Length attributes applied to an array or
        --  array subtype. Sets the variables Lo_Bound and Hi_Bound to the low
*************** package body Sem_Attr is
*** 8193,8198 ****
--- 8215,8251 ----
             Compile_Time_Known_Value (Type_High_Bound (Typ));
        end Compile_Time_Known_Bounds;
  
+       -----------------------------------------------
+       -- Fold_Compile_Time_Known_Enumeration_Image --
+       -----------------------------------------------
+ 
+       procedure Fold_Compile_Time_Known_Enumeration_Image (Expr : Node_Id) is
+          Lit : constant Entity_Id := Expr_Value_E (Expr);
+          Typ : constant Entity_Id := First_Subtype (Etype (Expr));
+ 
+       begin
+          pragma Assert (Ekind (Lit) = E_Enumeration_Literal);
+ 
+          Start_String;
+ 
+          --  If Discard_Names is in effect for the type, either specifically
+          --  or globally, then we emit the numeric representation of the 'Pos
+          --  attribute of the enumeration literal with a leading space.
+ 
+          if Discard_Names (Typ) or else Global_Discard_Names then
+             UI_Image (Enumeration_Pos (Lit), Decimal);
+             Store_String_Char  (' ');
+             Store_String_Chars (UI_Image_Buffer (1 .. UI_Image_Length));
+          else
+             Get_Unqualified_Decoded_Name_String (Chars (Lit));
+             Set_Casing (All_Upper_Case);
+             Store_String_Chars (Name_Buffer (1 .. Name_Len));
+          end if;
+ 
+          Rewrite (N, Make_String_Literal (Loc, Strval => End_String));
+          Analyze_And_Resolve (N, Standard_String);
+       end Fold_Compile_Time_Known_Enumeration_Image;
+ 
        ----------------
        -- Fore_Value --
        ----------------
*************** package body Sem_Attr is
*** 8478,8520 ****
  
        --  Attribute 'Img applied to a static enumeration value is static, and
        --  we will do the folding right here (things get confused if we let this
!       --  case go through the normal circuitry).
  
!       if Id = Attribute_Img
!         and then Is_Entity_Name (P)
!         and then Is_Enumeration_Type (Etype (Entity (P)))
!         and then Is_OK_Static_Expression (P)
        then
!          declare
!             Lit : constant Entity_Id := Expr_Value_E (P);
!             Typ : constant Entity_Id := Etype (Entity (P));
!             Str : String_Id;
! 
!          begin
!             Start_String;
! 
!             --  If Discard_Names is in effect for the type, then we emit the
!             --  numeric representation of the prefix literal 'Pos attribute,
!             --  prefixed with a single space.
! 
!             if Discard_Names (Typ) then
!                UI_Image (Enumeration_Pos (Lit), Decimal);
!                Store_String_Char  (' ');
!                Store_String_Chars (UI_Image_Buffer (1 .. UI_Image_Length));
!             else
!                Get_Unqualified_Decoded_Name_String (Chars (Lit));
!                Set_Casing (All_Upper_Case);
!                Store_String_Chars (Name_Buffer (1 .. Name_Len));
!             end if;
! 
!             Str := End_String;
! 
!             Rewrite (N, Make_String_Literal (Loc, Strval => Str));
!             Analyze_And_Resolve (N, Standard_String);
!             Set_Is_Static_Expression (N, True);
!          end;
! 
!          return;
        end if;
  
        --  Special processing for cases where the prefix is an object or value,
--- 8531,8550 ----
  
        --  Attribute 'Img applied to a static enumeration value is static, and
        --  we will do the folding right here (things get confused if we let this
!       --  case go through the normal circuitry) provided that the default Image
!       --  implementation has not been overridden. Likewise for 'Image applied
!       --  to an object, except that it is never static, see a few lines below.
  
!       if (Id = Attribute_Img
!            or else (Id = Attribute_Image and then Is_Object_Reference (P)))
!         and then Is_Enumeration_Type (Etype (P))
!         and then not Is_Character_Type (Etype (P))
!         and then Compile_Time_Known_Value (P)
!         and then not Image_Must_Call_Put_Image (N)
        then
!          Fold_Compile_Time_Known_Enumeration_Image (P);
!          Set_Is_Static_Expression
!            (N, Id = Attribute_Img and then Is_OK_Static_Expression (P));
        end if;
  
        --  Special processing for cases where the prefix is an object or value,
*************** package body Sem_Attr is
*** 9716,9747 ****
        -- Image --
        -----------
  
!       --  Image is a scalar attribute, but is never static, because it is
!       --  not a static function (having a non-scalar argument (RM 4.9(22)).
        --  However, we can constant-fold the image of an enumeration literal
!       --  if names are available and default Image implementation has not
!       --  been overridden.
  
        when Attribute_Image =>
!          if Is_Entity_Name (E1)
!            and then Ekind (Entity (E1)) = E_Enumeration_Literal
!            and then not Discard_Names (First_Subtype (Etype (E1)))
!            and then not Global_Discard_Names
!            and then not Has_Aspect (Etype (E1), Aspect_Put_Image)
           then
!             declare
!                Lit : constant Entity_Id := Entity (E1);
!                Str : String_Id;
!             begin
!                Start_String;
!                Get_Unqualified_Decoded_Name_String (Chars (Lit));
!                Set_Casing (All_Upper_Case);
!                Store_String_Chars (Name_Buffer (1 .. Name_Len));
!                Str := End_String;
!                Rewrite (N, Make_String_Literal (Loc, Strval => Str));
!                Analyze_And_Resolve (N, Standard_String);
!                Set_Is_Static_Expression (N, False);
!             end;
           end if;
  
        -------------------
--- 9746,9764 ----
        -- Image --
        -----------
  
!       --  Image is a scalar attribute, but is never static, because it is not
!       --  a static function (as having a non-scalar result type (RM 4.9(22)).
        --  However, we can constant-fold the image of an enumeration literal
!       --  if the default Image implementation has not been overridden.
  
        when Attribute_Image =>
!          if Is_Enumeration_Type (Etype (P))
!            and then not Is_Character_Type (Etype (P))
!            and then Compile_Time_Known_Value (E1)
!            and then not Image_Must_Call_Put_Image (N)
           then
!             Fold_Compile_Time_Known_Enumeration_Image (E1);
!             Set_Is_Static_Expression (N, False);
           end if;
  
        -------------------
*************** package body Sem_Attr is
*** 11705,11712 ****
                    --  spec expressions). The profile of the subprogram is not
                    --  frozen at this point.
  
                    if not Preanalysis_Active then
!                      Freeze_Before (N, Entity (P), Do_Freeze_Profile => False);
                    end if;
  
                 --  If it is a type, there is nothing to resolve.
--- 11722,11737 ----
                    --  spec expressions). The profile of the subprogram is not
                    --  frozen at this point.
  
+                   --  Taking the 'Access of an expression function freezes its
+                   --  expression (RM 13.14(10.3)).
+ 
                    if not Preanalysis_Active then
!                      if Is_Expression_Function (Entity (P)) then
!                         Freeze_Expression (P);
!                      else
!                         Freeze_Before
!                           (N, Entity (P), Do_Freeze_Profile => False);
!                      end if;
                    end if;
  
                 --  If it is a type, there is nothing to resolve.
*************** package body Sem_Attr is
*** 11715,11721 ****
  
                 elsif Is_Overloadable (Entity (P)) then
                    if not Preanalysis_Active then
!                      Freeze_Before (N, Entity (P), Do_Freeze_Profile => False);
                    end if;
  
                 --  Nothing to do if prefix is a type name
--- 11740,11751 ----
  
                 elsif Is_Overloadable (Entity (P)) then
                    if not Preanalysis_Active then
!                      if Is_Expression_Function (Entity (P)) then
!                         Freeze_Expression (P);
!                      else
!                         Freeze_Before
!                           (N, Entity (P), Do_Freeze_Profile => False);
!                      end if;
                    end if;
  
                 --  Nothing to do if prefix is a type name
*************** package body Sem_Attr is
*** 12496,12503 ****
                    Scop      : constant Entity_Id := Scope (Subp_Id);
                    Subp_Decl : constant Node_Id   :=
                                  Unit_Declaration_Node (Subp_Id);
!                   Flag_Id   : Entity_Id;
!                   Subp_Body : Node_Id;
  
                 --  If the access has been taken and the body of the subprogram
                 --  has not been see yet, indirect calls must be protected with
--- 12526,12533 ----
                    Scop      : constant Entity_Id := Scope (Subp_Id);
                    Subp_Decl : constant Node_Id   :=
                                  Unit_Declaration_Node (Subp_Id);
! 
!                   Flag_Id : Entity_Id;
  
                 --  If the access has been taken and the body of the subprogram
                 --  has not been see yet, indirect calls must be protected with
*************** package body Sem_Attr is
*** 12550,12607 ****
  
                       Set_Scope (Flag_Id, Scop);
                    end if;
- 
-                   --  Taking the 'Access of an expression function freezes its
-                   --  expression (RM 13.14 10.3/3). This does not apply to an
-                   --  expression function that acts as a completion because the
-                   --  generated body is immediately analyzed and the expression
-                   --  is automatically frozen.
- 
-                   if Is_Expression_Function (Subp_Id)
-                     and then Present (Corresponding_Body (Subp_Decl))
-                   then
-                      Subp_Body :=
-                        Unit_Declaration_Node (Corresponding_Body (Subp_Decl));
- 
-                      --  The body has already been analyzed when the expression
-                      --  function acts as a completion.
- 
-                      if Analyzed (Subp_Body) then
-                         null;
- 
-                      --  Attribute 'Access may appear within the generated body
-                      --  of the expression function subject to the attribute:
- 
-                      --    function F is (... F'Access ...);
- 
-                      --  If the expression function is on the scope stack, then
-                      --  the body is currently being analyzed. Do not reanalyze
-                      --  it because this will lead to infinite recursion.
- 
-                      elsif In_Open_Scopes (Subp_Id) then
-                         null;
- 
-                      --  If reference to the expression function appears in an
-                      --  inner scope, for example as an actual in an instance,
-                      --  this is not a freeze point either.
- 
-                      elsif Scope (Subp_Id) /= Current_Scope then
-                         null;
- 
-                      --  Dispatch tables are not a freeze point either
- 
-                      elsif Nkind (Parent (N)) = N_Unchecked_Type_Conversion
-                        and then Is_Dispatch_Table_Entity (Etype (Parent (N)))
-                      then
-                         null;
- 
-                       --  Analyze the body of the expression function to freeze
-                       --  the expression.
- 
-                      else
-                         Analyze (Subp_Body);
-                      end if;
-                   end if;
                 end;
              end if;
  
--- 12580,12585 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_aux.adb gcc-17-20260531/gcc/ada/sem_aux.adb
*** gcc-17-20260524/gcc/ada/sem_aux.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_aux.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Aux is
*** 1157,1207 ****
        Btype : constant Entity_Id := Available_View (Base_Type (Ent));
  
     begin
!       if Is_Limited_Record (Btype) then
           return True;
  
!       elsif Ekind (Btype) = E_Limited_Private_Type
!         and then Nkind (Parent (Btype)) = N_Formal_Type_Declaration
!       then
!          return not In_Package_Body (Scope ((Btype)));
! 
!       elsif Is_Private_Type (Btype) then
! 
!          --  AI05-0063: A type derived from a limited private formal type is
!          --  not immutably limited in a generic body.
! 
!          if Is_Derived_Type (Btype)
!            and then Is_Generic_Type (Etype (Btype))
!          then
!             if not Is_Limited_Type (Etype (Btype)) then
                 return False;
- 
-             --  A descendant of a limited formal type is not immutably limited
-             --  in the generic body, or in the body of a generic child.
- 
-             elsif Ekind (Scope (Etype (Btype))) = E_Generic_Package then
-                return not In_Package_Body (Scope (Btype));
- 
              else
!                return False;
              end if;
  
!          else
!             declare
!                Utyp : constant Entity_Id := Underlying_Type (Btype);
!             begin
!                if No (Utyp) then
!                   return False;
!                else
!                   return Is_Inherently_Limited_Type (Utyp);
!                end if;
!             end;
!          end if;
! 
!       elsif Is_Concurrent_Type (Btype) then
!          return True;
! 
!       elsif Is_Record_Type (Btype) then
  
           --  Note that we return True for all limited interfaces, even though
           --  (unsynchronized) limited interfaces can have descendants that are
--- 1157,1179 ----
        Btype : constant Entity_Id := Available_View (Base_Type (Ent));
  
     begin
!       if Is_Immutably_Limited_Type (Ent) then
           return True;
+       end if;
  
!       if Is_Private_Type (Btype) then
!          declare
!             Utyp : constant Entity_Id := Underlying_Type (Btype);
!          begin
!             if No (Utyp) then
                 return False;
              else
!                return Is_Inherently_Limited_Type (Utyp);
              end if;
+          end;
+       end if;
  
!       if Is_Record_Type (Btype) then
  
           --  Note that we return True for all limited interfaces, even though
           --  (unsynchronized) limited interfaces can have descendants that are
*************** package body Sem_Aux is
*** 1242,1251 ****
  
        elsif Is_Array_Type (Btype) then
           return Is_Inherently_Limited_Type (Component_Type (Btype));
- 
-       else
-          return False;
        end if;
     end Is_Inherently_Limited_Type;
  
     ----------------------
--- 1214,1222 ----
  
        elsif Is_Array_Type (Btype) then
           return Is_Inherently_Limited_Type (Component_Type (Btype));
        end if;
+ 
+       return False;
     end Is_Inherently_Limited_Type;
  
     ----------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_aux.ads gcc-17-20260531/gcc/ada/sem_aux.ads
*** gcc-17-20260524/gcc/ada/sem_aux.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_aux.ads	Sun May 31 22:32:05 2026
*************** package Sem_Aux is
*** 314,333 ****
     --  should be cleaned up???
  
     function Is_Immutably_Limited_Type (Ent : Entity_Id) return Boolean;
!    --  Implements definition in Ada 2012 RM-7.5 (8.1/3). This differs from the
!    --  following predicate in that an untagged record with immutably limited
!    --  components is NOT by itself immutably limited. This matters, e.g. when
!    --  checking the legality of an access to the current instance.
  
     function Is_Inherently_Limited_Type (Ent : Entity_Id) return Boolean;
!    --  Ent is any entity. True for a type that is "inherently" limited (i.e.
!    --  cannot become nonlimited). From the Ada 2005 RM-7.5(8.1/2), "a type with
!    --  a part that is of a task, protected, or explicitly limited record type".
!    --  These are the types that are defined as return-by-reference types in Ada
!    --  95 (see RM95-6.5(11-16)). In Ada 2005, these are the types that require
!    --  build-in-place for function calls. Note that build-in-place is allowed
!    --  for other types, too. This is also used for identifying pure procedures
!    --  whose calls should not be eliminated (RM 10.2.1(18/2)).
  
     function Nearest_Ancestor (Typ : Entity_Id) return Entity_Id;
     --  Given a subtype Typ, this function finds out the nearest ancestor from
--- 314,337 ----
     --  should be cleaned up???
  
     function Is_Immutably_Limited_Type (Ent : Entity_Id) return Boolean;
!    --  Ent is any entity. True if and only if Ent is a type that's immutably
!    --  limited as defined by RM 7.5 (8.1/3).
  
     function Is_Inherently_Limited_Type (Ent : Entity_Id) return Boolean;
!    --  Ent is any entity. True if and only if Ent is a type such that objects
!    --  of type Ent must be built in place because of RM 7.6 (17.2/3).
!    --
!    --  Note that Is_Immutably_Limited_Type => Is_Inherently_Limited_Type holds,
!    --  but the reverse implication doesn't. For example with
!    --
!    --     type T1 is limited null record;
!    --
!    --     type T2 is record
!    --        C : T1;
!    --     end record;
!    --
!    --  Is_Inherently_Limited_Type (T2) = True and
!    --  Is_Immutably_Limited_Type (T2) = False.
  
     function Nearest_Ancestor (Typ : Entity_Id) return Entity_Id;
     --  Given a subtype Typ, this function finds out the nearest ancestor from
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch12.adb gcc-17-20260531/gcc/ada/sem_ch12.adb
*** gcc-17-20260524/gcc/ada/sem_ch12.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch12.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch12 is
*** 523,539 ****
     --  The body of the wrapper is a call to the actual, with the generated
     --  pre/postconditon checks added.
  
!    procedure Build_Subprogram_Wrappers
!      (Match, Analyzed_Formal : Node_Id; Renamings : List_Id);
     --  Ada 2022: AI12-0272 introduces pre/postconditions for formal
     --  subprograms. The implementation of making the formal into a renaming
!    --  of the actual does not work, given that subprogram renaming cannot
!    --  carry aspect specifications. Instead we must create subprogram
!    --  wrappers whose body is a call to the actual, and whose declaration
     --  carries the aspects of the formal.
-    --  The wrapper declaration and body are appended to Renamings.
     --  ???But renaming declarations CAN have aspects specs,
     --  and that was true from the start (see AI05-0183-1).
  
     procedure Check_Abbreviated_Instance
       (N                : Node_Id;
--- 523,553 ----
     --  The body of the wrapper is a call to the actual, with the generated
     --  pre/postconditon checks added.
  
!    procedure Build_Subprogram_Wrapper
!      (Match             : Node_Id;
!       Analyzed_Formal   : Node_Id;
!       Unanalyzed_Formal : Node_Id;
!       Renamings         : List_Id);
     --  Ada 2022: AI12-0272 introduces pre/postconditions for formal
     --  subprograms. The implementation of making the formal into a renaming
!    --  of the actual does not work, given that a subprogram renaming cannot
!    --  carry aspect specifications. Instead we must create a subprogram
!    --  wrapper whose body is a call to the actual, and whose declaration
     --  carries the aspects of the formal.
     --  ???But renaming declarations CAN have aspects specs,
     --  and that was true from the start (see AI05-0183-1).
+    --
+    --  Renamings is a list of the declarations created to represent the
+    --  parameter associations of the instantiation, and the last element
+    --  will generally be a subprogram renaming of the actual subprogram
+    --  (though it can also be a generated subprogram body in some cases,
+    --  such as when a formal procedure defaults to "null"). The wrapper
+    --  declaration and body are appended to Renamings, substituting for
+    --  the last element in the subprogram renaming case.
+    --
+    --  The procedure also copies the aspect specifications from the unanalyzed
+    --  formal subprogram to the wrapper subprogram for later analysis in the
+    --  context of the instantiation.
  
     procedure Check_Abbreviated_Instance
       (N                : Node_Id;
*************** package body Sem_Ch12 is
*** 2424,2437 ****
  
        --  An instantiation freezes all generic actuals, except for incomplete
        --  types and subprograms that are not fully defined at the point of
!       --  instantiation.
  
        declare
!          Elmt : Elmt_Id := First_Elmt (Actuals_To_Freeze);
  
        begin
           while Present (Elmt) loop
!             Freeze_Before (N, Node (Elmt));
              Next_Elmt (Elmt);
           end loop;
        end;
--- 2438,2466 ----
  
        --  An instantiation freezes all generic actuals, except for incomplete
        --  types and subprograms that are not fully defined at the point of
!       --  instantiation. If one of them is an expression function, then the
!       --  instantiation also freezes its expression (RM 13.14(10.2)).
  
        declare
!          Elmt : Elmt_Id;
!          Expr : Node_Id;
  
        begin
+          Elmt := First_Elmt (Actuals_To_Freeze);
           while Present (Elmt) loop
!             --  For technical reasons, we need an expression attached to the
!             --  tree to freeze the expression of an expression function, so
!             --  we manufacture one on the fly.
! 
!             if Is_Expression_Function (Node (Elmt)) then
!                Expr := New_Occurrence_Of (Node (Elmt), Sloc (N));
!                Set_Comes_From_Source (Expr);
!                Set_Parent (Expr, N);
!                Freeze_Expression (Expr);
!             else
!                Freeze_Before (N, Node (Elmt));
!             end if;
! 
              Next_Elmt (Elmt);
           end loop;
        end;
*************** package body Sem_Ch12 is
*** 2555,2572 ****
                 end if;
              end if;
  
-             --  If the object is a call to an expression function, this
-             --  is a freezing point for it.
- 
-             if Is_Entity_Name (Match)
-               and then Present (Entity (Match))
-               and then Nkind
-                 (Original_Node (Unit_Declaration_Node (Entity (Match))))
-                                                = N_Expression_Function
-             then
-                Append_Elmt (Entity (Match), Actuals_To_Freeze);
-             end if;
- 
           when N_Formal_Type_Declaration =>
              if Assoc.Actual.Kind = Box_Actual then
                 Process_Box_Actual (Assoc.Un_Formal);
--- 2584,2589 ----
*************** package body Sem_Ch12 is
*** 2752,2759 ****
                 if Has_Contracts (Assoc.An_Formal)
                   and then (Expander_Active or GNATprove_Mode)
                 then
!                   Build_Subprogram_Wrappers
!                     (Match, Assoc.An_Formal, Result_Renamings);
                 end if;
  
                 --  An instantiation is a freeze point for the actuals,
--- 2769,2779 ----
                 if Has_Contracts (Assoc.An_Formal)
                   and then (Expander_Active or GNATprove_Mode)
                 then
!                   Build_Subprogram_Wrapper
!                     (Match             => Match,
!                      Analyzed_Formal   => Assoc.An_Formal,
!                      Unanalyzed_Formal => Assoc.Un_Formal,
!                      Renamings         => Result_Renamings);
                 end if;
  
                 --  An instantiation is a freeze point for the actuals,
*************** package body Sem_Ch12 is
*** 4127,4133 ****
  
              Analyze (Prefix (Def));
              Valid_Default_Attribute (Nam, Def);
!             goto Leave;
           end if;
  
           --  The default for a ghost generic formal procedure should be a ghost
--- 4147,4153 ----
  
              Analyze (Prefix (Def));
              Valid_Default_Attribute (Nam, Def);
!             goto Do_Aspects;
           end if;
  
           --  The default for a ghost generic formal procedure should be a ghost
*************** package body Sem_Ch12 is
*** 4268,4276 ****
           End_Scope;
        end if;
  
!    <<Leave>>
        Analyze_Aspect_Specifications (N, Nam);
  
        if Parent_Installed then
           Remove_Parent;
        end if;
--- 4288,4297 ----
           End_Scope;
        end if;
  
!    <<Do_Aspects>>
        Analyze_Aspect_Specifications (N, Nam);
  
+    <<Leave>>
        if Parent_Installed then
           Remove_Parent;
        end if;
*************** package body Sem_Ch12 is
*** 7530,7541 ****
        return Body_Node;
     end Build_Subprogram_Body_Wrapper;
  
!    -------------------------------
!    -- Build_Subprogram_Wrappers --
!    -------------------------------
  
!    procedure Build_Subprogram_Wrappers
!      (Match, Analyzed_Formal : Node_Id; Renamings : List_Id)
     is
        function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result;
        --  Adjust Sloc so that errors will be reported on the instance rather
--- 7551,7565 ----
        return Body_Node;
     end Build_Subprogram_Body_Wrapper;
  
!    ------------------------------
!    -- Build_Subprogram_Wrapper --
!    ------------------------------
  
!    procedure Build_Subprogram_Wrapper
!      (Match             : Node_Id;
!       Analyzed_Formal   : Node_Id;
!       Unanalyzed_Formal : Node_Id;
!       Renamings         : List_Id)
     is
        function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result;
        --  Adjust Sloc so that errors will be reported on the instance rather
*************** package body Sem_Ch12 is
*** 7560,7566 ****
        Decl_Node   : Node_Id;
        Actual_Name : Node_Id;
  
!    --  Start of processing for Build_Subprogram_Wrappers
  
     begin
        --  Create declaration for wrapper subprogram.
--- 7584,7590 ----
        Decl_Node   : Node_Id;
        Actual_Name : Node_Id;
  
!    --  Start of processing for Build_Subprogram_Wrapper
  
     begin
        --  Create declaration for wrapper subprogram.
*************** package body Sem_Ch12 is
*** 7593,7602 ****
  
        Decl_Node := Build_Subprogram_Decl_Wrapper (Formal);
  
!       --  Transfer aspect specifications from formal subprogram to wrapper
  
        Set_Aspect_Specifications (Decl_Node,
!         New_Copy_List_Tree (Aspect_Specifications (Analyzed_Formal)));
  
        Aspect_Spec := First (Aspect_Specifications (Decl_Node));
        while Present (Aspect_Spec) loop
--- 7617,7627 ----
  
        Decl_Node := Build_Subprogram_Decl_Wrapper (Formal);
  
!       --  Transfer aspect specifications from the unanalyzed formal subprogram
!       --  to the wrapper for later analysis.
  
        Set_Aspect_Specifications (Decl_Node,
!         New_Copy_List_Tree (Aspect_Specifications (Unanalyzed_Formal)));
  
        Aspect_Spec := First (Aspect_Specifications (Decl_Node));
        while Present (Aspect_Spec) loop
*************** package body Sem_Ch12 is
*** 7605,7610 ****
--- 7630,7647 ----
           Next (Aspect_Spec);
        end loop;
  
+       --  Remove the subprogram renaming declaration, which will be replaced
+       --  by the wrapper subprogram (we don't want two homographs in the same
+       --  scope, and the renaming will be overridden by the wrapper). We test
+       --  that the actual is present and not defaulted, and in the latter case
+       --  we don't remove the declaration, which may be an internal subprogram
+       --  body rather than a renaming (such as created for a "null" default),
+       --  and that body must be kept.
+ 
+       if Is_Entity_Name (Match) then
+          Remove (Last (Renamings));
+       end if;
+ 
        Append_To (Renamings, Decl_Node);
  
        --  Create corresponding body, and append it to association list
*************** package body Sem_Ch12 is
*** 7614,7620 ****
  
        Append_To (Renamings,
          Build_Subprogram_Body_Wrapper (Formal, Actual_Name));
!    end Build_Subprogram_Wrappers;
  
     -------------------------------------------
     -- Build_Instance_Compilation_Unit_Nodes --
--- 7651,7657 ----
  
        Append_To (Renamings,
          Build_Subprogram_Body_Wrapper (Formal, Actual_Name));
!    end Build_Subprogram_Wrapper;
  
     -------------------------------------------
     -- Build_Instance_Compilation_Unit_Nodes --
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch13.adb gcc-17-20260531/gcc/ada/sem_ch13.adb
*** gcc-17-20260524/gcc/ada/sem_ch13.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch13.adb	Sun May 31 22:32:05 2026
*************** with Sem_Res;          use Sem_Res;
*** 69,75 ****
  with Sem_Type;         use Sem_Type;
  with Sem_Util;         use Sem_Util;
  with Sem_Warn;         use Sem_Warn;
- with Sinfo.Nodes;      use Sinfo.Nodes;
  with Sinfo.Utils;      use Sinfo.Utils;
  with Sinput;           use Sinput;
  with Snames;           use Snames;
--- 69,74 ----
*************** package body Sem_Ch13 is
*** 135,141 ****
        Id  : Entity_Id) return Node_Id;
     --  Create the corresponding pragma for aspect Export or Import denoted by
     --  Asp. Id is the related entity subject to the aspect. Return Empty when
!    --  the expression of aspect Asp evaluates to False or is erroneous.
  
     function Build_Predicate_Function_Declaration
       (Typ : Entity_Id) return Node_Id;
--- 134,140 ----
        Id  : Entity_Id) return Node_Id;
     --  Create the corresponding pragma for aspect Export or Import denoted by
     --  Asp. Id is the related entity subject to the aspect. Return Empty when
!    --  the expression of aspect Asp evaluates to False or is illegal.
  
     function Build_Predicate_Function_Declaration
       (Typ : Entity_Id) return Node_Id;
*************** package body Sem_Ch13 is
*** 169,174 ****
--- 168,195 ----
     --  node N for the given type (entity) of the aspect does not appear too
     --  late according to the rules in RM 13.1(9) and 13.1(10).
  
+    procedure Check_Function_For_Indexing_Aspect
+      (ASN                 : Node_Id;
+       Typ                 : Entity_Id;
+       Subp                : Entity_Id;
+       Valid               : out Boolean;
+       Has_Eligible_Func   : Boolean;
+       Error_On_Ineligible : Boolean);
+    --  Check Subp to see whether it's a valid function for Typ's indexing
+    --  aspect ASN (as specified by the rules given in RM 4.1.6(1-3)). If valid
+    --  for indexing, then Subp is added to ASN's Aspect_Subprograms list, and
+    --  Valid is set to True (otherwise False).
+    --
+    --  If Has_Eligible_Func is True, then it's known that the aspect has at
+    --  least one eligible function, which combined with Error_On_Ineligible
+    --  will determine whether ineligible functions are flagged as errors.
+    --
+    --  If Error_On_Ineligible is True, then an error will be issued when Subp
+    --  is ineligible for the indexing aspect; otherwise, only a warning may be
+    --  reported (except in cases that are likely to be false positives, such as
+    --  when Subp is not declared immediately within the same scope as the type,
+    --  or has a different type for its first formal).
+ 
     procedure Check_Iterator_Functions (Typ : Entity_Id; Expr : Node_Id);
     --  Check that there is a single function in the type's Default_Iterator
     --  aspect that has the proper type structure. Expr is the name given in
*************** package body Sem_Ch13 is
*** 361,366 ****
--- 382,430 ----
     --  is True. This warning inserts the string Msg to describe the construct
     --  causing biasing.
  
+    --  Subsidiary to Analyze_Aspect_Specifications:
+ 
+    procedure Decorate_Aspect_Links (Asp : Node_Id; Aitem : Node_Id);
+    --  Establish linkages between an aspect and its corresponding pragma
+    --  or attribute definition clause.
+ 
+    function Delay_Aspect
+      (A_Id : Aspect_Id; Expr : Node_Id; E : Entity_Id) return Boolean;
+    --  Compute Delay_Required; return True if processing of this aspect A_Id
+    --  for entity E should be delayed.
+ 
+    procedure Insert_Aitem
+      (N           : Node_Id;
+       Ins_Node    : in out Node_Id;
+       Aitem       : in out Node_Id;
+       Is_Instance : Boolean);
+    --  Aitem is a pragma or attribute definition clause generated from an
+    --  aspect specification. Insert it in the appropriate place.
+    --  Is_Instance indicates that the context denotes a generic instance.
+    --  When done, this sets Aitem to Empty.
+ 
+    function Relocate_Expression (Source : Node_Id) return Node_Id;
+    --  Outside of a generic this function is equivalent to Relocate_Node.
+    --  Inside a generic it is an identity function, because Relocate_Node
+    --  would create a new node that is not associated with the generic
+    --  template. This association is needed to save references to entities
+    --  that are global to the generic (and might be not visible from where
+    --  the generic is instantiated).
+    --
+    --  Inside a generic the original tree is shared between aspect and
+    --  a corresponding pragma (or an attribute definition clause). This
+    --  parallels what is done in sem_prag.adb (see Get_Argument).
+ 
+    procedure Analyze_One_Aspect
+      (N        : Node_Id;
+       Ins_Node : in out Node_Id;
+       E        : N_Entity_Id;
+       Aspect   : Node_Id);
+    --  N and E are what was passed to Analyze_Aspect_Specifications.
+    --  Aspect is one element of Aspect_Specifications (N).
+    --  Ins_Node is (in some cases) where to insert the Aitem; usually
+    --  equal to N.
+ 
     -----------------------------------------------------------
     --  Visibility of Discriminants in Aspect Specifications --
     -----------------------------------------------------------
*************** package body Sem_Ch13 is
*** 984,991 ****
        --  denoted by a nonoverridable aspect ASN has a parameter or result of
        --  either type E or access E, then all denoted subprograms are
        --  primitive. If missing, Original is initialized with ASN and will not
!       --  change during the recursive exploration of aggregate aspects, it is
!       --  used to improve the error message.
  
        procedure Make_Pragma_From_Boolean_Aspect (ASN : Node_Id);
        --  Given an aspect specification node ASN whose expression is an
--- 1048,1058 ----
        --  denoted by a nonoverridable aspect ASN has a parameter or result of
        --  either type E or access E, then all denoted subprograms are
        --  primitive. If missing, Original is initialized with ASN and will not
!       --  change during the recursive exploration of aggregate aspects; it is
!       --  used to improve the error message. This procedure also checks rules
!       --  related to aspect inheritance as revised by AI22-0159, which prevent
!       --  derived types from differing from their parent type regarding
!       --  primitive and nonprimitive operations.
  
        procedure Make_Pragma_From_Boolean_Aspect (ASN : Node_Id);
        --  Given an aspect specification node ASN whose expression is an
*************** package body Sem_Ch13 is
*** 1020,1026 ****
           Aspect : constant Aspect_Id := Get_Aspect_Id (ASN);
           Expr   : constant Node_Id   := Expression (ASN);
  
!          Indexing_Found : Boolean := False;
  
           procedure Check_Inherited_Indexing;
           --  For a derived type, check that the specification of an indexing
--- 1087,1093 ----
           Aspect : constant Aspect_Id := Get_Aspect_Id (ASN);
           Expr   : constant Node_Id   := Expression (ASN);
  
!          Indexing_Found      : Boolean   := False;
  
           procedure Check_Inherited_Indexing;
           --  For a derived type, check that the specification of an indexing
*************** package body Sem_Ch13 is
*** 1089,1105 ****
        --  Start of processing for Check_Indexing_Functions
  
        begin
!          --  If the aspect specification was effectively inherited from the
!          --  parent type (so constructed anew by analysis), then no point
!          --  in validating.
  
!          if not Comes_From_Source (ASN) then
!             return;
!          end if;
  
           if not Is_Overloaded (Expr) then
              Check_Function_For_Indexing_Aspect
!               (ASN, E, Entity (Expr), Valid => Indexing_Found);
  
           else
              declare
--- 1156,1173 ----
        --  Start of processing for Check_Indexing_Functions
  
        begin
!          --  When the aspect specification was effectively inherited from the
!          --  parent type (so constructed anew by analysis), we also validate
!          --  the aspect, since additional indexing functions can be given.
  
!          --  Check whether a single nonoverloaded entity is valid for use as
!          --  an indexing function.
  
           if not Is_Overloaded (Expr) then
              Check_Function_For_Indexing_Aspect
!               (ASN, E, Entity (Expr), Valid => Indexing_Found,
!                Has_Eligible_Func   => False,
!                Error_On_Ineligible => True);
  
           else
              declare
*************** package body Sem_Ch13 is
*** 1112,1128 ****
                 while Present (It.Nam) loop
  
                    --  Check that each interpretation is a function valid for
!                   --  use as an indexing function. (Note that the rules for
!                   --  indexing aspects are to be treated as legality rules,
!                   --  as per AI22-0084. If this is ever changed to treat these
!                   --  as resolution rules, then we'll have to keep track of
!                   --  whether there are further interpretations to be tested,
!                   --  and condition the error reporting within Illegal_Indexing
!                   --  on that.)
  
                    if Is_Overloadable (It.Nam) then
                       Check_Function_For_Indexing_Aspect
!                        (ASN, E, It.Nam, Valid);
                       Indexing_Found := Indexing_Found or Valid;
                    end if;
  
--- 1180,1202 ----
                 while Present (It.Nam) loop
  
                    --  Check that each interpretation is a function valid for
!                   --  use as an indexing function. Ineligible interpretations
!                   --  are not flagged on this call as errors, though in some
!                   --  cases a warning may be issued. For entities that are not
!                   --  eligible, an error may be reported further below, except
!                   --  for those that are excluded by the resolution rules, as
!                   --  per AI22-0154. On this loop we basicaly determine whether
!                   --  there's at least one eligible interpretation.
  
                    if Is_Overloadable (It.Nam) then
                       Check_Function_For_Indexing_Aspect
!                        (ASN,
!                         E,
!                         It.Nam,
!                         Valid,
!                         Has_Eligible_Func   => False,
!                         Error_On_Ineligible => False);
! 
                       Indexing_Found := Indexing_Found or Valid;
                    end if;
  
*************** package body Sem_Ch13 is
*** 1131,1140 ****
              end;
           end if;
  
!          if not Indexing_Found and then not Error_Posted (ASN) then
!             Error_Msg_NE
!               ("indexing aspect requires a local function that applies to "
!                & "type&", Expr, E);
           end if;
  
           --  ??? Is Is_Derived_Type the right test here? A derived type's
--- 1205,1238 ----
              end;
           end if;
  
!          --  In the overloaded case, do another loop over interpretations
!          --  and only report errors on any ineligible interpretations if
!          --  no eligible one was found in the loop above (i.e., Indexing_Found
!          --  is False), and in any case on functions that have an appropriate
!          --  first formal but don't satisfy other eligibility requirements.
!          --  Implements the resolution and legality rules given in AI22-0154.
! 
!          if Is_Overloaded (Expr) and then not Error_Posted (ASN) then
!             declare
!                Valid : Boolean;
! 
!                I     : Interp_Index;
!                It    : Interp;
! 
!             begin
!                Get_First_Interp (Expr, I, It);
!                while Present (It.Nam) loop
!                   Check_Function_For_Indexing_Aspect
!                     (ASN,
!                      E,
!                      It.Nam,
!                      Valid,
!                      Has_Eligible_Func   => Indexing_Found,
!                      Error_On_Ineligible => True);
! 
!                   Get_Next_Interp (I, It);
!                end loop;
!             end;
           end if;
  
           --  ??? Is Is_Derived_Type the right test here? A derived type's
*************** package body Sem_Ch13 is
*** 1142,1152 ****
           --  the derived type itself might or might not have an explicit
           --  aspect specification (as opposed to an aspect specification
           --  implicitly introduced by the compiler). So lots of cases to
!          --  consider.
  
           if Is_Derived_Type (E)
             --  See comment re this debug flag in exp_ch5.adb
             and then not Debug_Flag_Dot_XX
           then
              Check_Inherited_Indexing;
           end if;
--- 1240,1252 ----
           --  the derived type itself might or might not have an explicit
           --  aspect specification (as opposed to an aspect specification
           --  implicitly introduced by the compiler). So lots of cases to
!          --  consider. We only perform this checking when the aspect is
!          --  given explicitly (is "directly specified").
  
           if Is_Derived_Type (E)
             --  See comment re this debug flag in exp_ch5.adb
             and then not Debug_Flag_Dot_XX
+            and then Comes_From_Source (ASN)
           then
              Check_Inherited_Indexing;
           end if;
*************** package body Sem_Ch13 is
*** 1245,1257 ****
        --  Start of processing for Check_Nonoverridable_Aspect_Subprograms
  
        begin
!          --  If the aspect specification was effectively inherited from the
!          --  parent type (so constructed anew by analysis), then no point
!          --  in validating.
! 
!          if not Comes_From_Source (ASN) then
!             return;
!          end if;
  
           --  If the expression is neither an aggregate nor a node denoting an
           --  entity, then also no point in validating.
--- 1345,1355 ----
        --  Start of processing for Check_Nonoverridable_Aspect_Subprograms
  
        begin
!          --  Note that we perform the checking here even when the aspect is
!          --  inherited but not directly specified (Comes_From_Source (ASN)
!          --  is False), as in some cases additional operations can be added
!          --  (such as for the indexing aspects), and those must be checked
!          --  as well.
  
           --  If the expression is neither an aggregate nor a node denoting an
           --  entity, then also no point in validating.
*************** package body Sem_Ch13 is
*** 1300,1305 ****
--- 1398,1405 ----
  
              declare
                 Subp : constant Entity_Id := Entity (Expr);
+                ASN_Id  : constant Aspect_Id :=
+                            Get_Aspect_Id (Chars (Identifier (Original)));
              begin
  
                 --  No point in validating a node that does not represent a
*************** package body Sem_Ch13 is
*** 1309,1363 ****
                    return;
                 end if;
  
                 if not Is_Overloaded (Expr) then
                    Valid := (if Required_To_Be_Primitive (Subp)
                               then Is_Primitive (Subp));
  
                    Problem := Subp;
  
!                else
                    declare
                       Found : Boolean := False;
!                      I     : Interp_Index;
!                      It    : Interp;
                    begin
!                      --  Check whether there is at least one interpretation
!                      --  that is required to be primitive. We iterate over all
!                      --  possible interpretations, as some may be removed.
! 
!                      Get_First_Interp (Expr, I, It);
!                      while Present (It.Nam) loop
! 
!                         --  If the current interpretation is not declared
!                         --  within the scope of E, then it should not be
!                         --  considered, see RM 13.1.1(8/6).
! 
!                         if not Within_Scope (It.Nam, Scope (E)) then
!                            Remove_Interp (I);
  
!                         else
!                            Found := Found
!                              or else Required_To_Be_Primitive (It.Nam);
!                         end if;
  
!                         Get_Next_Interp (I, It);
                       end loop;
  
                       if Found then
  
!                         --  To satisfy the legality rule in RM 13.1.1(18.2/5),
!                         --  if there's at least one interpretation that's
!                         --  primitive, then all of them must be primitive;
!                         --  otherwise we emit an error.
! 
!                         Get_First_Interp (Expr, I, It);
!                         pragma Warnings (Off, Valid); -- Valid not always True
!                         while Valid and then Present (It.Nam) loop
  
!                            Valid := Valid and then Is_Primitive (It.Nam);
!                            Problem := It.Nam;
  
!                            Get_Next_Interp (I, It);
                          end loop;
                       end if;
                    end;
--- 1409,1534 ----
                    return;
                 end if;
  
+                --  Check restrictions of AI22-0159:
+                --
+                --  1) Derived types inheriting an aspect denoting primitives
+                --     must not declare nonprimitives eligible for that aspect.
+                --
+                --  2) Derived types inheriting an aspect denoting nonprimitives
+                --     are not allowed to directly specify the aspect (even when
+                --     it's a confirming aspect).
+                --
+                --  3) Derived types inheriting an aspect denoting nonprimitives
+                --     must not declare any new operations eligible for that
+                --     aspect.
+                --
+                --  We can exclude Aggregate aspects from this checking because
+                --  such an aspect's elements can only denote primitives. Note
+                --  also that it would be difficult to access the specific
+                --  elements of the parent's Aggregate aspect.
+ 
+                if ASN_Id /= Aspect_Aggregate
+                  and then Is_Derived_Type (E)
+                then
+                   declare
+                      Parent_Aspect_Value : constant Node_Id
+                        := (Find_Value_Of_Aspect (Etype (E), ASN_Id));
+                   begin
+                      if Present (Parent_Aspect_Value)
+                        and then Entity (Parent_Aspect_Value) /= Subp
+                      then
+                         if Is_Primitive (Entity (Parent_Aspect_Value)) then
+                            if not Is_Primitive (Subp) then
+                               Error_Msg_Name_1 := Chars (Subp);
+                               Error_Msg_Sloc := Sloc (Subp);
+ 
+                               Error_Msg_Name_2 :=
+                                 Chars (Identifier (Original));
+ 
+                               Error_Msg_N
+                                 ("nonprimitive operation % # not allowed "
+                                  & "for inherited aspect %", E);
+ 
+                               return;
+                            end if;
+ 
+                         --  If derived type inherits nonprimitive operations
+                         --  for the aspect, then an explicit aspect spec is
+                         --  disallowed (even a confirming one). See AI22-0159.
+ 
+                         elsif Comes_From_Source (ASN) then
+                            Error_Msg_Name_1 := Chars (Identifier (Original));
+ 
+                            Error_Msg_N
+                              ("explicit specification not allowed for aspect "
+                               & "% that inherits nonprimitive operation", ASN);
+ 
+                         --  Additionally, such a type is prohibited from adding
+                         --  any operations for the aspect. See AI22-0159.
+ 
+                         else
+                            Error_Msg_Name_1 := Chars (Subp);
+                            Error_Msg_Sloc := Sloc (Subp);
+ 
+                            Error_Msg_Name_2 := Chars (Identifier (Original));
+ 
+                            Error_Msg_N
+                              ("additional operation % # not allowed for "
+                               & "aspect % that inherits nonprimitive "
+                               & "operation", E);
+ 
+                            return;
+                         end if;
+                      end if;
+                   end;
+                end if;
+ 
                 if not Is_Overloaded (Expr) then
                    Valid := (if Required_To_Be_Primitive (Subp)
                               then Is_Primitive (Subp));
  
                    Problem := Subp;
  
!                --  Currently the only cases where an aspect can resolve to
!                --  multiple subprograms are the indexing aspects. Other cases
!                --  where more than one subprogram is identified should have
!                --  already been flagged as errors. (Is that really true???)
! 
!                elsif Nkind (ASN) = N_Aspect_Specification
!                  and then ASN_Id
!                    in Aspect_Constant_Indexing | Aspect_Variable_Indexing
!                then
                    declare
                       Found : Boolean := False;
!                      Subp_Elmt : Elmt_Id :=
!                        First_Elmt (Aspect_Subprograms (ASN));
                    begin
!                      --  Check whether there is at least one subprogram that
!                      --  is required to be primitive.
  
!                      while Present (Subp_Elmt) loop
!                         Found := Found
!                           or else Required_To_Be_Primitive (Node (Subp_Elmt));
  
!                         Next_Elmt (Subp_Elmt);
                       end loop;
  
                       if Found then
  
!                         --  To satisfy the legality rule in RM 13.1.1(18.4/6),
!                         --  if at least one subprogram is primitive, then all
!                         --  of them must be primitive; otherwise we emit an
!                         --  error.
  
!                         Subp_Elmt :=
!                           First_Elmt (Aspect_Subprograms (ASN));
  
!                         pragma Warnings (Off, Valid); -- Valid not always True
!                         while Valid and then Present (Subp_Elmt) loop
!                            Valid :=
!                              Valid and then Is_Primitive (Node (Subp_Elmt));
!                            Problem := Node (Subp_Elmt);
!                            Next_Elmt (Subp_Elmt);
                          end loop;
                       end if;
                    end;
*************** package body Sem_Ch13 is
*** 1379,1385 ****
                 Error_Msg_N ("nonoverridable aspect % of type % requires % "
                              & Operation_Kind
                              & "# to be a primitive operation",
!                             Expr);
              end;
           end if;
        end Check_Nonoverridable_Aspect_Subprograms;
--- 1550,1560 ----
                 Error_Msg_N ("nonoverridable aspect % of type % requires % "
                              & Operation_Kind
                              & "# to be a primitive operation",
! 
!                             --  When there's an explicit aspect spec, flag the
!                             --  name in the aspect; otherwise, flag the type.
! 
!                             (if Comes_From_Source (ASN) then Expr else E));
              end;
           end if;
        end Check_Nonoverridable_Aspect_Subprograms;
*************** package body Sem_Ch13 is
*** 1500,1511 ****
                  Pragma_Argument_Associations => New_List (
                    Make_Pragma_Argument_Association (Sloc (Ident),
                      Expression => New_Occurrence_Of (Ent, Sloc (Ident)))));
! 
!             Set_From_Aspect_Specification (Prag, True);
!             Set_Corresponding_Aspect (Prag, ASN);
!             Set_Aspect_Rep_Item (ASN, Prag);
              Set_Is_Delayed_Aspect (Prag);
-             Set_Parent (Prag, ASN);
           end if;
        end Make_Pragma_From_Boolean_Aspect;
  
--- 1675,1682 ----
                  Pragma_Argument_Associations => New_List (
                    Make_Pragma_Argument_Association (Sloc (Ident),
                      Expression => New_Occurrence_Of (Ent, Sloc (Ident)))));
!             Decorate_Aspect_Links (ASN, Prag);
              Set_Is_Delayed_Aspect (Prag);
           end if;
        end Make_Pragma_From_Boolean_Aspect;
  
*************** package body Sem_Ch13 is
*** 1581,1589 ****
                    --  For aspects whose expression is an optional Boolean, make
                    --  the corresponding pragma at the freeze point.
  
!                   when Boolean_Aspects
!                      | Library_Unit_Aspects
!                   =>
                       --  Aspects Export and Import require special handling.
                       --  Both are by definition Boolean and may benefit from
                       --  forward references, however their expressions are
--- 1752,1758 ----
                    --  For aspects whose expression is an optional Boolean, make
                    --  the corresponding pragma at the freeze point.
  
!                   when Boolean_Aspects =>
                       --  Aspects Export and Import require special handling.
                       --  Both are by definition Boolean and may benefit from
                       --  forward references, however their expressions are
*************** package body Sem_Ch13 is
*** 1635,1644 ****
                    --  Ditto for iterator aspects, because the corresponding
                    --  attributes may not have been analyzed yet.
  
!                   when Aspect_Constant_Indexing
!                      | Aspect_Default_Iterator
                       | Aspect_Iterator_Element
-                      | Aspect_Variable_Indexing
                    =>
                       Analyze (Expression (ASN));
  
--- 1804,1811 ----
                    --  Ditto for iterator aspects, because the corresponding
                    --  attributes may not have been analyzed yet.
  
!                   when Aspect_Default_Iterator
                       | Aspect_Iterator_Element
                    =>
                       Analyze (Expression (ASN));
  
*************** package body Sem_Ch13 is
*** 1646,1658 ****
                          Error_Msg_NE
                            ("aspect must be fully defined before & is frozen",
                             ASN, E);
- 
-                      elsif A_Id in Aspect_Constant_Indexing
-                                  | Aspect_Variable_Indexing
-                      then
-                         Check_Indexing_Functions (ASN);
                       end if;
  
                    when Aspect_Integer_Literal
                       | Aspect_Real_Literal
                       | Aspect_String_Literal
--- 1813,1884 ----
                          Error_Msg_NE
                            ("aspect must be fully defined before & is frozen",
                             ASN, E);
                       end if;
  
+                   --  Indexing aspects require special treatment due to the
+                   --  possibility of inheriting from the parent and adding
+                   --  one or more new indexing functions for the derived type.
+ 
+                   when Aspect_Constant_Indexing
+                      | Aspect_Variable_Indexing
+                   =>
+                      declare
+                         Save_Entity : constant Entity_Id :=
+                                         Entity (Expression (ASN));
+                         Save_Etype  : constant Node_Id :=
+                                         Etype (Expression (ASN));
+                      begin
+                         --  If the aspect is inherited and is an expanded name,
+                         --  then change it to denote the selector, so that the
+                         --  preanalysis of the expression can locate functions
+                         --  added for the derived type (as otherwise we'd only
+                         --  locate the entity denoted by the expanded name when
+                         --  it's in another scope).
+ 
+                         if not Comes_From_Source (ASN)
+                           and then Nkind (Expression (ASN)) = N_Expanded_Name
+                         then
+                            Set_Expression
+                              (ASN, Selector_Name (Expression (ASN)));
+                         end if;
+ 
+                         --  Set the Entity and Etype to Empty to force
+                         --  analysis to look for added indexing functions
+                         --  that need to be checked for eligibility.
+ 
+                         Set_Entity (Expression (ASN), Empty);
+                         Set_Etype (Expression (ASN), Empty);
+ 
+                         --  We want to ignore errors if no new functions are
+                         --  found, which is OK when the aspect is inherited.
+ 
+                         Preanalyze_Without_Errors (Expression (ASN));
+ 
+                         if Etype (Expression (ASN)) = Any_Type then
+                            --  Restore the saved Entity and Etype values
+ 
+                            Set_Entity (Expression (ASN), Save_Entity);
+                            Set_Etype (Expression (ASN), Save_Etype);
+ 
+                            --  We report an error only if the type does not
+                            --  already have indexing functions inherited
+                            --  from an ancestor.
+ 
+                            if not Present (Aspect_Subprograms (ASN)) then
+                               Error_Msg_NE
+                                 ("aspect must be fully defined before & is "
+                                    & "frozen", ASN, E);
+                            end if;
+ 
+                         --  If any candidates functions were found, then check
+                         --  them for eligibility as indexing functions and add
+                         --  the valid ones to the Aspect_Subprograms set.
+ 
+                         else
+                            Check_Indexing_Functions (ASN);
+                         end if;
+                      end;
+ 
                    when Aspect_Integer_Literal
                       | Aspect_Real_Literal
                       | Aspect_String_Literal
*************** package body Sem_Ch13 is
*** 1729,1735 ****
                 --  All nonoverriding aspects need further legality checks
  
                 if A_Id in Nonoverridable_Aspect_Id
!                  and then Ada_Version >= Ada_2022
                 then
                    Check_Nonoverridable_Aspect_Subprograms (ASN, E);
                 end if;
--- 1955,1961 ----
                 --  All nonoverriding aspects need further legality checks
  
                 if A_Id in Nonoverridable_Aspect_Id
!                  and then Ada_Version >= Ada_2012
                 then
                    Check_Nonoverridable_Aspect_Subprograms (ASN, E);
                 end if;
*************** package body Sem_Ch13 is
*** 1773,5935 ****
        end if;
     end Analyze_Aspects_At_Freeze_Point;
  
!    -----------------------------------
!    -- Analyze_Aspect_Specifications --
!    -----------------------------------
! 
!    procedure Analyze_Aspect_Specifications (N : Node_Id; E : Entity_Id) is
!       pragma Assert (Present (E));
! 
!       procedure Decorate (Asp : Node_Id; Prag : Node_Id);
!       --  Establish linkages between an aspect and its corresponding pragma
! 
!       procedure Insert_Pragma
!         (Prag        : Node_Id;
!          Is_Instance : Boolean := False);
!       --  Subsidiary to the analysis of aspects
!       --    Abstract_State
!       --    Always_Terminates
!       --    Attach_Handler
!       --    Async_Readers
!       --    Async_Writers
!       --    Constant_After_Elaboration
!       --    Contract_Cases
!       --    Convention
!       --    Default_Initial_Condition
!       --    Default_Storage_Pool
!       --    Depends
!       --    Effective_Reads
!       --    Effective_Writes
!       --    Exceptional_Cases
!       --    Exit_Cases
!       --    Extensions_Visible
!       --    Ghost
!       --    Global
!       --    Initial_Condition
!       --    Initializes
!       --    Max_Entry_Queue_Length
!       --    Max_Queue_Length
!       --    No_Caching
!       --    Part_Of
!       --    Post
!       --    Pre
!       --    Program_Exit
!       --    Refined_Depends
!       --    Refined_Global
!       --    Refined_Post
!       --    Refined_State
!       --    Side_Effects
!       --    SPARK_Mode
!       --    Secondary_Stack_Size
!       --    Subprogram_Variant
!       --    Volatile_Function
!       --    Warnings
!       --  Insert pragma Prag such that it mimics the placement of a source
!       --  pragma of the same kind. Flag Is_Generic should be set when the
!       --  context denotes a generic instance.
! 
!       function Relocate_Expression (Source : Node_Id) return Node_Id;
!       --  Outside of a generic this function is equivalent to Relocate_Node.
!       --  Inside a generic it is an identity function, because Relocate_Node
!       --  would create a new node that is not associated with the generic
!       --  template. This association is needed to save references to entities
!       --  that are global to the generic (and might be not visible from where
!       --  the generic is instantiated).
!       --
!       --  Inside a generic the original tree is shared between aspect and
!       --  a corresponding pragma (or an attribute definition clause). This
!       --  parallels what is done in sem_prag.adb (see Get_Argument).
! 
!       --------------
!       -- Decorate --
!       --------------
! 
!       procedure Decorate (Asp : Node_Id; Prag : Node_Id) is
!       begin
!          Set_Aspect_Rep_Item           (Asp, Prag);
!          Set_Corresponding_Aspect      (Prag, Asp);
!          Set_From_Aspect_Specification (Prag);
!          Set_Parent                    (Prag, Asp);
!       end Decorate;
  
!       -------------------
!       -- Insert_Pragma --
!       -------------------
  
!       procedure Insert_Pragma
!         (Prag        : Node_Id;
!          Is_Instance : Boolean := False)
!       is
!          Aux      : Node_Id;
!          Decl     : Node_Id;
!          Decls    : List_Id;
!          Def      : Node_Id;
!          Inserted : Boolean := False;
  
!       begin
!          --  When the aspect appears on an entry, package, protected unit,
!          --  subprogram, or task unit body, insert the generated pragma at the
!          --  top of the body declarations to emulate the behavior of a source
!          --  pragma.
  
!          --    package body Pack with Aspect is
  
!          --    package body Pack is
!          --       pragma Prag;
  
!          if Nkind (N) in N_Entry_Body
!                        | N_Package_Body
!                        | N_Protected_Body
!                        | N_Subprogram_Body
!                        | N_Task_Body
!          then
!             Decls := Declarations (N);
  
!             if No (Decls) then
!                Decls := New_List;
!                Set_Declarations (N, Decls);
              end if;
  
!             Prepend_To (Decls, Prag);
  
!          --  When the aspect is associated with a [generic] package declaration
!          --  insert the generated pragma at the top of the visible declarations
!          --  to emulate the behavior of a source pragma.
  
!          --    package Pack with Aspect is
  
!          --    package Pack is
!          --       pragma Prag;
  
!          elsif Nkind (N) in N_Generic_Package_Declaration
!                           | N_Package_Declaration
!          then
!             Decls := Visible_Declarations (Specification (N));
  
!             if No (Decls) then
!                Decls := New_List;
!                Set_Visible_Declarations (Specification (N), Decls);
!             end if;
  
!             --  The visible declarations of a generic instance have the
!             --  following structure:
  
!             --    <renamings of generic formals>
!             --    <renamings of internally-generated spec and body>
!             --    <first source declaration>
  
!             --  Insert the pragma before the first source declaration by
!             --  skipping the instance "header" to ensure proper visibility of
!             --  all formals.
  
!             if Is_Instance then
!                Decl := First (Decls);
!                while Present (Decl) loop
!                   if Comes_From_Source (Decl) then
!                      Insert_Before (Decl, Prag);
!                      Inserted := True;
!                      exit;
!                   else
!                      Next (Decl);
!                   end if;
!                end loop;
  
!                --  The pragma is placed after the instance "header"
  
!                if not Inserted then
!                   Append_To (Decls, Prag);
!                end if;
  
!             --  Otherwise this is not a generic instance
  
              else
!                Prepend_To (Decls, Prag);
              end if;
  
!          --  When the aspect is associated with a protected unit declaration,
!          --  insert the generated pragma at the top of the visible declarations
!          --  the emulate the behavior of a source pragma.
  
!          --    protected [type] Prot with Aspect is
  
!          --    protected [type] Prot is
!          --       pragma Prag;
  
!          elsif Nkind (N) = N_Protected_Type_Declaration then
!             Def := Protected_Definition (N);
  
!             if No (Def) then
!                Def :=
!                  Make_Protected_Definition (Sloc (N),
!                    Visible_Declarations => New_List,
!                    End_Label            => Empty);
  
!                Set_Protected_Definition (N, Def);
!             end if;
  
!             Decls := Visible_Declarations (Def);
  
!             if No (Decls) then
!                Decls := New_List;
!                Set_Visible_Declarations (Def, Decls);
              end if;
  
!             Prepend_To (Decls, Prag);
! 
!          --  When the aspect is associated with a task unit declaration, insert
!          --  insert the generated pragma at the top of the visible declarations
!          --  the emulate the behavior of a source pragma.
! 
!          --    task [type] Prot with Aspect is
! 
!          --    task [type] Prot is
!          --       pragma Prag;
! 
!          elsif Nkind (N) = N_Task_Type_Declaration then
!             Def := Task_Definition (N);
  
!             if No (Def) then
!                Def :=
!                  Make_Task_Definition (Sloc (N),
!                    Visible_Declarations => New_List,
!                    End_Label            => Empty);
  
!                Set_Task_Definition (N, Def);
              end if;
- 
              Decls := Visible_Declarations (Def);
  
!             if No (Decls) then
!                Decls := New_List;
!                Set_Visible_Declarations (Def, Decls);
!             end if;
  
!             Prepend_To (Decls, Prag);
  
!          --  When the context is a library unit, the pragma is added to the
!          --  Pragmas_After list.
  
!          elsif Nkind (Parent (N)) = N_Compilation_Unit then
!             Aux := Aux_Decls_Node (Parent (N));
  
!             if No (Pragmas_After (Aux)) then
!                Set_Pragmas_After (Aux, New_List);
              end if;
  
!             Prepend (Prag, Pragmas_After (Aux));
  
!          --  Default, the pragma is inserted after the context
  
!          else
!             Insert_After (N, Prag);
!          end if;
!       end Insert_Pragma;
  
!       -------------------------
!       -- Relocate_Expression --
!       -------------------------
  
!       function Relocate_Expression (Source : Node_Id) return Node_Id is
!       begin
!          if Inside_A_Generic then
!             return Source;
!          else
!             return Atree.Relocate_Node (Source);
           end if;
-       end Relocate_Expression;
  
!       --  Local variables
  
!       Aspect : Node_Id;
!       Ent    : Node_Id;
  
!       L : constant List_Id := Aspect_Specifications (N);
  
!       Ins_Node : Node_Id := N;
!       --  Insert pragmas/attribute definition clause after this node when no
!       --  delayed analysis is required.
  
!    --  Start of processing for Analyze_Aspect_Specifications
  
     begin
!       --  The general processing involves building an attribute definition
!       --  clause or a pragma node that corresponds to the aspect. Then in order
!       --  to delay the evaluation of this aspect to the freeze point, we attach
!       --  the corresponding pragma/attribute definition clause to the aspect
!       --  specification node, which is then placed in the Rep Item chain. In
!       --  this case we mark the entity by setting the flag Has_Delayed_Aspects
!       --  and we evaluate the rep item at the freeze point. When the aspect
!       --  doesn't have a corresponding pragma/attribute definition clause, then
!       --  its analysis is simply delayed at the freeze point.
! 
!       --  Some special cases don't require delay analysis, thus the aspect is
!       --  analyzed right now.
! 
!       --  Note that there is a special handling for Pre, Post, Test_Case,
!       --  Contract_Cases, Always_Terminates, Exit_Cases, Exceptional_Cases,
!       --  Program_Exit and Subprogram_Variant aspects. In these cases, we do
!       --  not have to worry about delay issues, since the pragmas themselves
!       --  deal with delay of visibility for the expression analysis. Thus, we
!       --  just insert the pragma after the node N.
! 
!       if No (L) then
!          return;
        end if;
  
!       --  Loop through aspects
! 
!       Aspect := First (L);
!       Aspect_Loop : while Present (Aspect) loop
!          Analyze_One_Aspect : declare
! 
!             Aspect_Exit : exception;
!             --  This exception is used to exit aspect processing completely. It
!             --  is used when an error is detected, and no further processing is
!             --  required. It is also used if an earlier error has left the tree
!             --  in a state where the aspect should not be processed.
! 
!             Expr : constant Node_Id    := Expression (Aspect);
!             Id   : constant Node_Id    := Identifier (Aspect);
!             Loc  : constant Source_Ptr := Sloc (Aspect);
!             Nam  : constant Name_Id    := Chars (Id);
!             A_Id : constant Aspect_Id  := Get_Aspect_Id (Nam);
! 
!             Aitem : Node_Id := Empty;
!             --  The associated N_Pragma or N_Attribute_Definition_Clause
! 
!             Anod : Node_Id;
!             --  An auxiliary node
! 
!             Delay_Required : Boolean;
!             --  Set False if delay is not required
! 
!             Eloc : Source_Ptr := No_Location;
!             --  Source location of expression, modified when we split PPC's. It
!             --  is set below when Expr is present.
! 
!             procedure Analyze_Aspect_Convention;
!             --  Perform analysis of aspect Convention
! 
!             procedure Analyze_Aspect_Disable_Controlled;
!             --  Perform analysis of aspect Disable_Controlled
! 
!             procedure Analyze_Aspect_Export_Import;
!             --  Perform analysis of aspects Export or Import
! 
!             procedure Analyze_Aspect_External_Link_Name;
!             --  Perform analysis of aspects External_Name or Link_Name
! 
!             procedure Analyze_Aspect_Implicit_Dereference;
!             --  Perform analysis of the Implicit_Dereference aspects
! 
!             procedure Analyze_Aspect_Potentially_Invalid;
!             --  Perform analysis of aspect Potentially_Invalid
! 
!             procedure Analyze_Aspect_Relaxed_Initialization;
!             --  Perform analysis of aspect Relaxed_Initialization
  
!             procedure Analyze_Aspect_Yield;
!             --  Perform analysis of aspect Yield
  
!             procedure Analyze_Aspect_Static;
!             --  Ada 2022 (AI12-0075): Perform analysis of aspect Static
  
!             procedure Check_Constructor_Initialization_Expression
!               (Expr : Node_Id; Aspect_Name : String);
!             --  Check legality rules for an expression occurring as
!             --  an expression of a Super or Initialize aspect specification.
!             --  These expressions are evaluated before the constructed
!             --  object has been initialized and therefore shall not
!             --  reference that object.
  
!             procedure Check_Expr_Is_OK_Static_Expression
!               (Expr : Node_Id;
!                Typ  : Entity_Id := Empty);
!             --  Check the specified expression Expr to make sure that it is a
!             --  static expression of the given type (i.e. it will be analyzed
!             --  and resolved using this type, which can be any valid argument
!             --  to Resolve, e.g. Any_Integer is OK). If not, give an error
!             --  and raise Aspect_Exit. If Typ is left Empty, then any static
!             --  expression is allowed. Includes checking that the expression
!             --  does not raise Constraint_Error.
  
!             procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id);
!             --  If an Aspect is using an association with an Assertion_Level
!             --  analyze the aspect with the level and convert it into an aspect
!             --  without the Assertion_Level. In the case the aspect has
!             --  associations with Assertion_Levels then multiple aspects are
!             --  created and each one will point to the original aspect that
!             --  they were created from in the Original_Aspect field.
  
!             function Directly_Specified
!               (Id : Entity_Id; A : Aspect_Id) return Boolean;
!             --  Returns True if the given aspect is directly (as opposed to
!             --  via any form of inheritance) specified for the given entity.
  
!             function Make_Aitem_Pragma
!               (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id) return Node_Id;
!             --  This is a wrapper for Make_Pragma used for converting aspects
!             --  to pragmas. It takes care of Sloc (set from Loc) and building
!             --  the pragma identifier from the given name. In addition
!             --  Class_Present and Is_Ignored are set from the aspect node.
!             --  This routine also sets From_Aspect_Specification to True,
!             --  and sets Corresponding_Aspect to point to the aspect.
  
!             -------------------------------
!             -- Analyze_Aspect_Convention --
!             -------------------------------
  
!             procedure Analyze_Aspect_Convention is
!                Conv    : Node_Id;
!                Dummy_1 : Node_Id;
!                Dummy_2 : Node_Id;
!                Dummy_3 : Node_Id;
!                Expo    : Node_Id;
!                Imp     : Node_Id;
  
!             begin
!                --  Obtain all interfacing aspects that apply to the related
!                --  entity.
  
!                Get_Interfacing_Aspects
!                  (Iface_Asp => Aspect,
!                   Conv_Asp  => Dummy_1,
!                   EN_Asp    => Dummy_2,
!                   Expo_Asp  => Expo,
!                   Imp_Asp   => Imp,
!                   LN_Asp    => Dummy_3,
!                   Do_Checks => True);
  
!                --  The related entity is subject to aspect Export or Import.
!                --  Do not process Convention now because it must be analysed
!                --  as part of Export or Import.
  
!                if Present (Expo) or else Present (Imp) then
!                   return;
  
!                --  Otherwise Convention appears by itself
  
!                else
!                   --  The aspect specifies a particular convention
  
!                   if Present (Expr) then
!                      Conv := New_Copy_Tree (Expr);
  
!                   --  Otherwise assume convention Ada
  
!                   else
!                      Conv := Make_Identifier (Loc, Name_Ada);
!                   end if;
  
!                   --  Generate:
!                   --    pragma Convention (<Conv>, <E>);
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Name => Name_Convention,
!                      Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Conv),
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Ent)));
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                end if;
!             end Analyze_Aspect_Convention;
  
!             ---------------------------------------
!             -- Analyze_Aspect_Disable_Controlled --
!             ---------------------------------------
  
!             procedure Analyze_Aspect_Disable_Controlled is
!             begin
!                Error_Msg_Name_1 := Nam;
  
!                --  The aspect applies only to controlled records
  
!                if not (Ekind (E) = E_Record_Type
!                         and then Is_Controlled_Active (E))
!                then
!                   Error_Msg_N
!                     ("aspect % requires controlled record type", Aspect);
!                   return;
!                end if;
  
!                --  Preanalyze the expression (if any) when the aspect resides
!                --  in a generic unit.
  
!                if Inside_A_Generic then
!                   if Present (Expr) then
!                      Preanalyze_And_Resolve (Expr, Any_Boolean);
!                   end if;
  
!                --  Otherwise the aspect resides in a nongeneric context
  
!                else
!                   --  A controlled record type loses its controlled semantics
!                   --  when the expression statically evaluates to True.
  
!                   if Present (Expr) then
!                      Analyze_And_Resolve (Expr, Any_Boolean);
  
!                      if Is_OK_Static_Expression (Expr) then
!                         if Is_True (Static_Boolean (Expr)) then
!                            Set_Disable_Controlled (E);
!                         end if;
  
!                      --  Otherwise the expression is not static
  
!                      else
!                         Flag_Non_Static_Expr
!                           ("expression of aspect % must be static!", Aspect);
!                      end if;
  
!                   --  Otherwise the aspect appears without an expression and
!                   --  defaults to True.
  
!                   else
                       Set_Disable_Controlled (E);
                    end if;
-                end if;
-             end Analyze_Aspect_Disable_Controlled;
  
!             ----------------------------------
!             -- Analyze_Aspect_Export_Import --
!             ----------------------------------
! 
!             procedure Analyze_Aspect_Export_Import is
!                Dummy_1 : Node_Id;
!                Dummy_2 : Node_Id;
!                Dummy_3 : Node_Id;
!                Expo    : Node_Id;
!                Imp     : Node_Id;
! 
!             begin
!                --  Obtain all interfacing aspects that apply to the related
!                --  entity.
! 
!                Get_Interfacing_Aspects
!                  (Iface_Asp => Aspect,
!                   Conv_Asp  => Dummy_1,
!                   EN_Asp    => Dummy_2,
!                   Expo_Asp  => Expo,
!                   Imp_Asp   => Imp,
!                   LN_Asp    => Dummy_3,
!                   Do_Checks => True);
! 
!                --  The related entity cannot be subject to both aspects Export
!                --  and Import.
! 
!                if Present (Expo) and then Present (Imp) then
!                   Error_Msg_N
!                     ("incompatible interfacing aspects given for &", E);
!                   Error_Msg_Sloc := Sloc (Expo);
!                   Error_Msg_N ("\aspect Export #", E);
!                   Error_Msg_Sloc := Sloc (Imp);
!                   Error_Msg_N ("\aspect Import #", E);
!                end if;
! 
!                --  A variable is most likely modified from the outside. Take
!                --  the optimistic approach to avoid spurious errors.
  
!                if Ekind (E) = E_Variable then
!                   Set_Never_Set_In_Source (E, False);
                 end if;
  
!                --  Resolve the expression of an Import or Export here, and
!                --  require it to be of type Boolean and static. This is not
!                --  quite right, because in general this should be delayed,
!                --  but that seems tricky for these, because normally Boolean
!                --  aspects are replaced with pragmas at the freeze point in
!                --  Make_Pragma_From_Boolean_Aspect.
! 
!                if No (Expr)
!                  or else Is_True (Static_Boolean (Expr))
!                then
!                   if A_Id = Aspect_Import then
!                      Set_Has_Completion (E);
! 
!                      --  Do not set Is_Imported on Exceptions, similarly
!                      --  to Sem_Prag.Process_Import_Or_Interface.
! 
!                      if Ekind (E) /= E_Exception then
!                         Set_Is_Imported (E);
!                      end if;
! 
!                      --  An imported object cannot be explicitly initialized
! 
!                      if Nkind (N) = N_Object_Declaration
!                        and then Present (Expression (N))
!                      then
!                         Error_Msg_Sloc := Sloc (Defining_Identifier (N));
!                         Error_Msg_N
!                           ("no initialization allowed for declaration of& #",
!                            Defining_Identifier (N));
!                         Error_Msg_N
!                           ("imported entities cannot be initialized "
!                            & "(RM B.1(24))", Expression (N));
!                      end if;
  
!                   else
!                      pragma Assert (A_Id = Aspect_Export);
!                      Set_Is_Exported (E);
!                   end if;
  
!                   --  Create the proper form of pragma Export or Import taking
!                   --  into account Conversion, External_Name, and Link_Name.
  
!                   Aitem := Build_Export_Import_Pragma (Aspect, E);
  
!                --  Otherwise the expression is either False or erroneous. There
!                --  is no corresponding pragma.
  
!                else
!                   Aitem := Empty;
!                end if;
!             end Analyze_Aspect_Export_Import;
  
!             ---------------------------------------
!             -- Analyze_Aspect_External_Link_Name --
!             ---------------------------------------
  
!             procedure Analyze_Aspect_External_Link_Name is
!                Dummy_1 : Node_Id;
!                Dummy_2 : Node_Id;
!                Dummy_3 : Node_Id;
!                Expo    : Node_Id;
!                Imp     : Node_Id;
  
!             begin
!                --  Obtain all interfacing aspects that apply to the related
!                --  entity.
  
!                Get_Interfacing_Aspects
!                  (Iface_Asp => Aspect,
!                   Conv_Asp  => Dummy_1,
!                   EN_Asp    => Dummy_2,
!                   Expo_Asp  => Expo,
!                   Imp_Asp   => Imp,
!                   LN_Asp    => Dummy_3,
!                   Do_Checks => True);
  
!                --  Ensure that aspect External_Name applies to aspect Export or
!                --  Import.
  
!                if A_Id = Aspect_External_Name then
!                   if No (Expo) and then No (Imp) then
!                      Error_Msg_N
!                        ("aspect External_Name requires aspect Import or "
!                         & "Export", Aspect);
!                   end if;
  
!                --  Otherwise ensure that aspect Link_Name applies to aspect
!                --  Export or Import.
  
!                else
!                   pragma Assert (A_Id = Aspect_Link_Name);
!                   if No (Expo) and then No (Imp) then
!                      Error_Msg_N
!                        ("aspect Link_Name requires aspect Import or Export",
!                         Aspect);
!                   end if;
                 end if;
-             end Analyze_Aspect_External_Link_Name;
  
!             -----------------------------------------
!             -- Analyze_Aspect_Implicit_Dereference --
!             -----------------------------------------
! 
!             procedure Analyze_Aspect_Implicit_Dereference is
!             begin
!                if not Is_Type (E) or else not Has_Discriminants (E) then
!                   Error_Msg_N
!                     ("aspect must apply to a type with discriminants", Expr);
  
!                elsif not Is_First_Subtype (E) then
                    Error_Msg_N
!                     ("aspect not specifiable in a subtype declaration",
!                      Aspect);
! 
!                elsif not Is_Entity_Name (Expr) then
                    Error_Msg_N
!                     ("aspect must name a discriminant of current type", Expr);
! 
!                else
!                   --  Discriminant type be an anonymous access type or an
!                   --  anonymous access to subprogram.
  
!                   --  Missing synchronized types???
  
!                   declare
!                      Disc : Entity_Id := First_Discriminant (E);
!                   begin
!                      while Present (Disc) loop
!                         if Chars (Expr) = Chars (Disc)
!                           and then Ekind (Etype (Disc)) in
!                             E_Anonymous_Access_Subprogram_Type |
!                             E_Anonymous_Access_Type
!                         then
!                            Set_Has_Implicit_Dereference (E);
!                            Set_Has_Implicit_Dereference (Disc);
!                            exit;
!                         end if;
  
!                         Next_Discriminant (Disc);
!                      end loop;
  
!                      --  Error if no proper access discriminant
  
!                      if Present (Disc) then
!                         --  For a type extension, check whether parent has
!                         --  a reference discriminant, to verify that use is
!                         --  proper.
  
!                         if Is_Derived_Type (E)
!                           and then Has_Discriminants (Etype (E))
!                         then
!                            declare
!                               Parent_Disc : constant Entity_Id :=
!                                 Get_Reference_Discriminant (Etype (E));
!                            begin
!                               if Present (Parent_Disc)
!                                 and then Corresponding_Discriminant (Disc) /=
!                                            Parent_Disc
!                               then
!                                  Error_Msg_N
!                                    ("reference discriminant does not match "
!                                       & "discriminant of parent type", Expr);
!                               end if;
!                            end;
!                         end if;
  
!                      else
!                         Error_Msg_NE
!                           ("not an access discriminant of&", Expr, E);
!                      end if;
!                   end;
!                end if;
  
!             end Analyze_Aspect_Implicit_Dereference;
  
!             ----------------------------------------
!             -- Analyze_Aspect_Potentially_Invalid --
!             ----------------------------------------
  
!             procedure Analyze_Aspect_Potentially_Invalid is
!                procedure Analyze_Aspect_Parameter
!                  (Subp_Id : Entity_Id;
!                   Param   : Node_Id;
!                   Seen    : in out Elist_Id);
!                --  Analyze parameter that appears in the expression of the
!                --  aspect Potentially_Invalid.
  
!                ------------------------------
!                -- Analyze_Aspect_Parameter --
!                ------------------------------
  
!                procedure Analyze_Aspect_Parameter
!                  (Subp_Id : Entity_Id;
!                   Param   : Node_Id;
!                   Seen    : in out Elist_Id)
!                is
!                begin
!                   --  Set name of the aspect for error messages
!                   Error_Msg_Name_1 := Nam;
  
!                   --  The potentially invalid parameter is a formal parameter
  
!                   if Nkind (Param) in N_Identifier | N_Expanded_Name then
!                      Analyze (Param);
  
!                      declare
!                         Item : constant Entity_Id := Entity (Param);
!                      begin
!                         --  It must be a formal of the analyzed subprogram
  
!                         if Scope (Item) = Subp_Id then
  
!                            pragma Assert (Is_Formal (Item));
  
!                            --  It must not have scalar type
  
!                            if Is_Scalar_Type (Underlying_Type (Etype (Item)))
!                            then
!                               Error_Msg_N ("illegal aspect % item", Param);
!                               Error_Msg_N
!                                 ("\item must not have scalar type", Param);
!                            end if;
  
!                            --  Detect duplicated items
  
!                            if Contains (Seen, Item) then
!                               Error_Msg_N ("duplicate aspect % item", Param);
!                            else
!                               Append_New_Elmt (Item, Seen);
!                            end if;
!                         else
!                            Error_Msg_N ("illegal aspect % item", Param);
!                         end if;
!                      end;
  
!                   --  The potentially invalid parameter is the function's
!                   --  Result attribute.
  
!                   elsif Is_Attribute_Result (Param) then
!                      Analyze (Param);
  
                       declare
!                         Pref : constant Node_Id := Prefix (Param);
                       begin
!                         if Present (Pref)
!                           and then
!                             Nkind (Pref) in N_Identifier | N_Expanded_Name
!                           and then
!                             Entity (Pref) = Subp_Id
                          then
!                            --  Detect duplicated items
! 
!                            if Contains (Seen, Subp_Id) then
!                               Error_Msg_N ("duplicate aspect % item", Param);
!                            else
!                               Append_New_Elmt (Entity (Pref), Seen);
!                            end if;
! 
!                         else
!                            Error_Msg_N ("illegal aspect % item", Param);
                          end if;
                       end;
-                   else
-                      Error_Msg_N ("illegal aspect % item", Param);
                    end if;
-                end Analyze_Aspect_Parameter;
  
!                --  Local variables
  
!                Seen : Elist_Id := No_Elist;
!                --  Items that appear in the potentially invalid aspect
!                --  expression of a subprogram; for detecting duplicates.
  
!                Restore_Scope : Boolean;
!                --  Will be set to True if we need to restore the scope table
!                --  after analyzing the aspect expression.
  
!             --  Start of processing for Analyze_Aspect_Potentially_Invalid
  
!             begin
!                --  Set name of the aspect for error messages
!                Error_Msg_Name_1 := Nam;
  
!                --  Annotation of a variable; no aspect expression is allowed
  
!                if Ekind (E) = E_Variable then
!                   if Present (Expr) then
!                      Error_Msg_N ("illegal aspect % expression", Expr);
!                   end if;
  
!                --  Annotation of a constant; no aspect expression is allowed.
!                --  For a deferred constant, the aspect must be attached to the
!                --  partial view.
  
!                elsif Ekind (E) = E_Constant then
!                   if Present (Incomplete_Or_Partial_View (E)) then
!                      Error_Msg_N
!                        ("aspect % must apply to deferred constant", N);
  
!                   elsif Present (Expr) then
!                      Error_Msg_N ("illegal aspect % expression", Expr);
!                   end if;
  
!                --  Annotation of a subprogram; aspect expression is required
  
!                elsif Is_Subprogram_Or_Entry (E)
!                  or else Is_Generic_Subprogram (E)
!                then
  
!                   --  Not allowed for renaming declarations. Examine the
!                   --  original node because a subprogram renaming may have been
!                   --  rewritten as a body.
  
!                   if Nkind (Original_Node (N)) in N_Renaming_Declaration then
!                      Error_Msg_N
!                        ("aspect % not allowed for renaming declaration",
!                         Aspect);
!                   end if;
  
!                   if Present (Expr) then
  
!                      --  If we analyze subprogram body that acts as its own
!                      --  spec, then the subprogram itself and its formals are
!                      --  already installed; otherwise, we need to install them,
!                      --  as they must be visible when analyzing the aspect
!                      --  expression.
  
!                      if In_Open_Scopes (E) then
!                         Restore_Scope := False;
!                      else
!                         Restore_Scope := True;
!                         Push_Scope (E);
  
!                         --  Only formals of the subprogram itself can appear
!                         --  in Potentially_Invalid aspect expression, not
!                         --  formals of the enclosing generic unit. (This is
!                         --  different than in Precondition or Depends aspects,
!                         --  where both kinds of formals are allowed.)
  
!                         Install_Formals (E);
                       end if;
  
!                      --  Aspect expression is either an aggregate with list of
!                      --  parameters (and possibly the Result attribute for a
!                      --  function).
  
!                      if Nkind (Expr) = N_Aggregate then
  
!                         --  Component associations in the aggregate must be a
!                         --  parameter name followed by a static boolean
!                         --  expression.
  
!                         if Present (Component_Associations (Expr)) then
!                            declare
!                               Assoc : Node_Id :=
!                                 First (Component_Associations (Expr));
!                            begin
!                               while Present (Assoc) loop
!                                  if List_Length (Choices (Assoc)) = 1 then
!                                     Analyze_Aspect_Parameter
!                                       (E, First (Choices (Assoc)), Seen);
  
!                                     if Inside_A_Generic then
!                                        Preanalyze_And_Resolve
!                                          (Expression (Assoc), Any_Boolean);
!                                     else
!                                        Analyze_And_Resolve
!                                          (Expression (Assoc), Any_Boolean);
!                                     end if;
  
!                                     if not Is_OK_Static_Expression
!                                       (Expression (Assoc))
!                                     then
!                                        Error_Msg_Name_1 := Nam;
!                                        Flag_Non_Static_Expr
!                                          ("expression of aspect % " &
!                                           "must be static!", Aspect);
!                                     end if;
  
!                                  else
!                                     Error_Msg_Name_1 := Nam;
!                                     Error_Msg_N
!                                       ("illegal aspect % expression", Expr);
!                                  end if;
!                                  Next (Assoc);
!                               end loop;
!                            end;
!                         end if;
  
!                         --  Expressions of the aggregate are parameter names
  
!                         if Present (Expressions (Expr)) then
!                            declare
!                               Param : Node_Id := First (Expressions (Expr));
  
!                            begin
!                               while Present (Param) loop
!                                  Analyze_Aspect_Parameter (E, Param, Seen);
!                                  Next (Param);
!                               end loop;
!                            end;
!                         end if;
  
!                         --  Mark the aggregate expression itself as analyzed;
!                         --  its subexpressions were marked when they themselves
!                         --  were analyzed.
  
!                         Set_Analyzed (Expr);
  
!                      --  Otherwise, it is a single name of a subprogram
!                      --  parameter (or possibly the Result attribute for
!                      --  a function).
  
!                      else
!                         Analyze_Aspect_Parameter (E, Expr, Seen);
!                      end if;
  
!                      if Restore_Scope then
!                         End_Scope;
!                      end if;
  
!                   --  For instances of Ada.Unchecked_Conversion, allow a
!                   --  parameterless aspect, as the 'Result attribute is not
!                   --  defined there.
  
!                   elsif Is_Unchecked_Conversion_Instance (E) then
!                      null;
!                   else
!                      Error_Msg_N ("missing expression for aspect %", N);
!                   end if;
  
                 else
!                   Error_Msg_N ("inappropriate entity for aspect %", E);
!                end if;
!             end Analyze_Aspect_Potentially_Invalid;
! 
!             -------------------------------------------
!             -- Analyze_Aspect_Relaxed_Initialization --
!             -------------------------------------------
  
!             procedure Analyze_Aspect_Relaxed_Initialization is
!                procedure Analyze_Relaxed_Parameter
!                  (Subp_Id : Entity_Id;
!                   Param   : Node_Id;
!                   Seen    : in out Elist_Id);
!                --  Analyze parameter that appears in the expression of the
!                --  aspect Relaxed_Initialization.
  
!                -------------------------------
!                -- Analyze_Relaxed_Parameter --
!                -------------------------------
  
!                procedure Analyze_Relaxed_Parameter
!                  (Subp_Id : Entity_Id;
!                   Param   : Node_Id;
!                   Seen    : in out Elist_Id)
!                is
!                begin
!                   --  Set name of the aspect for error messages
!                   Error_Msg_Name_1 := Nam;
  
!                   --  The relaxed parameter is a formal parameter
  
!                   if Nkind (Param) in N_Identifier | N_Expanded_Name then
!                      Analyze (Param);
  
                       declare
!                         Item : constant Entity_Id := Entity (Param);
                       begin
!                         --  It must be a formal of the analyzed subprogram
! 
!                         if Scope (Item) = Subp_Id then
! 
!                            pragma Assert (Is_Formal (Item));
! 
!                            --  It must not have scalar or access type
  
!                            if Is_Elementary_Type (Etype (Item)) then
!                               Error_Msg_N ("illegal aspect % item", Param);
!                               Error_Msg_N
!                                 ("\item must not have elementary type", Param);
!                            end if;
  
!                            --  Detect duplicated items
  
-                            if Contains (Seen, Item) then
-                               Error_Msg_N ("duplicate aspect % item", Param);
                             else
!                               Append_New_Elmt (Item, Seen);
                             end if;
!                         else
!                            Error_Msg_N ("illegal aspect % item", Param);
!                         end if;
                       end;
  
!                   --  The relaxed parameter is the function's Result attribute
! 
!                   elsif Is_Attribute_Result (Param) then
!                      Analyze (Param);
  
                       declare
!                         Pref : constant Node_Id := Prefix (Param);
!                      begin
!                         if Present (Pref)
!                           and then
!                             Nkind (Pref) in N_Identifier | N_Expanded_Name
!                           and then
!                             Entity (Pref) = Subp_Id
!                         then
!                            --  Function result must not have scalar or access
!                            --  type.
! 
!                            if Is_Elementary_Type (Etype (Pref)) then
!                               Error_Msg_N ("illegal aspect % item", Param);
!                               Error_Msg_N
!                                 ("\function result must not have elementary"
!                                  & " type", Param);
!                            end if;
! 
!                            --  Detect duplicated items
! 
!                            if Contains (Seen, Subp_Id) then
!                               Error_Msg_N ("duplicate aspect % item", Param);
!                            else
!                               Append_New_Elmt (Entity (Pref), Seen);
!                            end if;
  
!                         else
!                            Error_Msg_N ("illegal aspect % item", Param);
!                         end if;
                       end;
-                   else
-                      Error_Msg_N ("illegal aspect % item", Param);
                    end if;
-                end Analyze_Relaxed_Parameter;
- 
-                --  Local variables
- 
-                Seen : Elist_Id := No_Elist;
-                --  Items that appear in the relaxed initialization aspect
-                --  expression of a subprogram; for detecting duplicates.
  
!                Restore_Scope : Boolean;
!                --  Will be set to True if we need to restore the scope table
!                --  after analyzing the aspect expression.
! 
!                Prev_Id : Entity_Id;
  
!             --  Start of processing for Analyze_Aspect_Relaxed_Initialization
  
!             begin
!                --  Set name of the aspect for error messages
!                Error_Msg_Name_1 := Nam;
  
!                --  Annotation of a type; no aspect expression is allowed.
!                --  For a private type, the aspect must be attached to the
!                --  partial view.
!                --
!                --  ??? Once the exact rule for this aspect is ready, we will
!                --  likely reject concurrent types, etc., so let's keep the code
!                --  for types and variable separate.
  
!                if Is_First_Subtype (E) then
!                   Prev_Id := Incomplete_Or_Partial_View (E);
!                   if Present (Prev_Id) then
  
!                      --  Aspect may appear on the full view of an incomplete
!                      --  type because the incomplete declaration cannot have
!                      --  any aspects.
  
!                      if Ekind (Prev_Id) = E_Incomplete_Type then
!                         null;
!                      else
!                         Error_Msg_N ("aspect % must apply to partial view", N);
!                      end if;
  
!                   elsif Present (Expr) then
!                      Error_Msg_N ("illegal aspect % expression", Expr);
!                   end if;
  
!                --  Annotation of a variable; no aspect expression is allowed
  
!                elsif Ekind (E) = E_Variable then
!                   if Present (Expr) then
!                      Error_Msg_N ("illegal aspect % expression", Expr);
!                   end if;
  
!                --  Annotation of a constant; no aspect expression is allowed.
!                --  For a deferred constant, the aspect must be attached to the
!                --  partial view.
  
!                elsif Ekind (E) = E_Constant then
!                   if Present (Incomplete_Or_Partial_View (E)) then
!                      Error_Msg_N
!                        ("aspect % must apply to deferred constant", N);
  
!                   elsif Present (Expr) then
!                      Error_Msg_N ("illegal aspect % expression", Expr);
!                   end if;
  
!                --  Annotation of a subprogram; aspect expression is required
  
!                elsif Is_Subprogram_Or_Entry (E)
!                  or else Is_Generic_Subprogram (E)
!                then
!                   if Present (Expr) then
  
!                      --  If we analyze subprogram body that acts as its own
!                      --  spec, then the subprogram itself and its formals are
!                      --  already installed; otherwise, we need to install them,
!                      --  as they must be visible when analyzing the aspect
!                      --  expression.
  
!                      if In_Open_Scopes (E) then
!                         Restore_Scope := False;
!                      else
!                         Restore_Scope := True;
!                         Push_Scope (E);
  
!                         --  Only formals of the subprogram itself can appear
!                         --  in Relaxed_Initialization aspect expression, not
!                         --  formals of the enclosing generic unit. (This is
!                         --  different than in Precondition or Depends aspects,
!                         --  where both kinds of formals are allowed.)
  
!                         Install_Formals (E);
                       end if;
  
!                      --  Aspect expression is either an aggregate with list of
!                      --  parameters (and possibly the Result attribute for a
!                      --  function).
! 
!                      if Nkind (Expr) = N_Aggregate then
! 
!                         --  Component associations in the aggregate must be a
!                         --  parameter name followed by a static boolean
!                         --  expression.
! 
!                         if Present (Component_Associations (Expr)) then
!                            declare
!                               Assoc : Node_Id :=
!                                 First (Component_Associations (Expr));
!                            begin
!                               while Present (Assoc) loop
!                                  if List_Length (Choices (Assoc)) = 1 then
!                                     Analyze_Relaxed_Parameter
!                                       (E, First (Choices (Assoc)), Seen);
! 
!                                     if Inside_A_Generic then
!                                        Preanalyze_And_Resolve
!                                          (Expression (Assoc), Any_Boolean);
!                                     else
!                                        Analyze_And_Resolve
!                                          (Expression (Assoc), Any_Boolean);
!                                     end if;
! 
!                                     if not Is_OK_Static_Expression
!                                       (Expression (Assoc))
!                                     then
!                                        Error_Msg_Name_1 := Nam;
!                                        Flag_Non_Static_Expr
!                                          ("expression of aspect % " &
!                                           "must be static!", Aspect);
!                                     end if;
! 
!                                  else
!                                     Error_Msg_Name_1 := Nam;
!                                     Error_Msg_N
!                                       ("illegal aspect % expression", Expr);
!                                  end if;
!                                  Next (Assoc);
!                               end loop;
!                            end;
!                         end if;
! 
!                         --  Expressions of the aggregate are parameter names
! 
!                         if Present (Expressions (Expr)) then
!                            declare
!                               Param : Node_Id := First (Expressions (Expr));
! 
!                            begin
!                               while Present (Param) loop
!                                  Analyze_Relaxed_Parameter (E, Param, Seen);
!                                  Next (Param);
!                               end loop;
!                            end;
!                         end if;
! 
!                         --  Mark the aggregate expression itself as analyzed;
!                         --  its subexpressions were marked when they themselves
!                         --  were analyzed.
! 
!                         Set_Analyzed (Expr);
! 
!                      --  Otherwise, it is a single name of a subprogram
!                      --  parameter (or possibly the Result attribute for
!                      --  a function).
  
                       else
!                         Analyze_Relaxed_Parameter (E, Expr, Seen);
!                      end if;
! 
!                      if Restore_Scope then
!                         End_Scope;
                       end if;
                    else
!                      Error_Msg_N ("missing expression for aspect %", N);
                    end if;
  
!                else
!                   Error_Msg_N ("inappropriate entity for aspect %", E);
!                end if;
!             end Analyze_Aspect_Relaxed_Initialization;
! 
!             ---------------------------
!             -- Analyze_Aspect_Static --
!             ---------------------------
! 
!             procedure Analyze_Aspect_Static is
!                function Has_Convention_Intrinsic (L : List_Id) return Boolean;
!                --  Return True if L contains a pragma argument association
!                --  node representing a convention Intrinsic.
  
!                ------------------------------
!                -- Has_Convention_Intrinsic --
!                ------------------------------
  
!                function Has_Convention_Intrinsic
!                  (L : List_Id) return Boolean
!                is
!                   Arg : Node_Id := First (L);
                 begin
!                   while Present (Arg) loop
!                      if Nkind (Arg) = N_Pragma_Argument_Association
!                        and then Chars (Arg) = Name_Convention
!                        and then Chars (Expression (Arg)) = Name_Intrinsic
!                      then
!                         return True;
!                      end if;
  
!                      Next (Arg);
!                   end loop;
  
!                   return False;
!                end Has_Convention_Intrinsic;
  
!                Is_Imported_Intrinsic : Boolean;
  
!             begin
!                if Ada_Version < Ada_2022 then
!                   Error_Msg_Ada_2022_Feature ("aspect %", Loc);
!                   return;
!                end if;
  
!                Is_Imported_Intrinsic := Is_Imported (E)
!                  and then
!                    Has_Convention_Intrinsic
!                      (Pragma_Argument_Associations (Import_Pragma (E)));
  
!                --  The aspect applies only to expression functions that
!                --  statisfy the requirements for a static expression function
!                --  (such as having an expression that is predicate-static) as
!                --  well as Intrinsic imported functions as a -gnatX extension.
  
!                if not Is_Expression_Function (E)
!                  and then
!                    not (All_Extensions_Allowed and then Is_Imported_Intrinsic)
!                then
!                   if All_Extensions_Allowed then
!                      Error_Msg_N
!                        ("aspect % requires intrinsic or expression function",
!                         Aspect);
  
!                   elsif Is_Imported_Intrinsic then
!                      Error_Msg_GNAT_Extension
!                        ("aspect % on intrinsic function", Loc,
!                         Is_Core_Extension => True);
  
!                   else
!                      Error_Msg_N
!                        ("aspect % requires expression function", Aspect);
!                   end if;
  
!                   return;
  
!                --  Ada 2022 (AI12-0075): Check that the function satisfies
!                --  several requirements of static functions as specified in
!                --  RM 6.8(5.1-5.8). Note that some of the requirements given
!                --  there are checked elsewhere.
  
!                else
!                   --  The expression of the expression function must be a
!                   --  potentially static expression (RM 2022 6.8(3.2-3.4)).
!                   --  That's checked in Sem_Ch6.Analyze_Expression_Function.
  
!                   --  The function must not contain any calls to itself, which
!                   --  is checked in Sem_Res.Resolve_Call.
  
!                   --  Each formal must be of mode in and have a static subtype
  
!                   declare
!                      Formal : Entity_Id := First_Formal (E);
!                   begin
!                      while Present (Formal) loop
!                         if Ekind (Formal) /= E_In_Parameter then
!                            Error_Msg_N
!                              ("aspect % requires formals of mode IN",
!                               Aspect);
  
!                            return;
!                         end if;
  
!                         if not Is_Static_Subtype (Etype (Formal)) then
!                            Error_Msg_N
!                              ("aspect % requires formals with static subtypes",
!                               Aspect);
  
!                            return;
!                         end if;
  
!                         Next_Formal (Formal);
!                      end loop;
!                   end;
  
!                   --  The function's result subtype must be a static subtype
  
!                   if not Is_Static_Subtype (Etype (E)) then
!                      Error_Msg_N
!                        ("aspect % requires function with result of "
!                         & "a static subtype",
!                         Aspect);
  
!                      return;
!                   end if;
  
!                   --  Check that the function does not have any applicable
!                   --  precondition or postcondition expression.
  
!                   for Asp in Pre_Post_Aspects loop
!                      if Has_Aspect (E, Asp) then
!                         Error_Msg_Name_1 := Aspect_Names (Asp);
!                         Error_Msg_N
!                           ("aspect % is not allowed for a static "
!                            & "expression function",
!                            Find_Aspect (E, Asp));
  
!                         return;
!                      end if;
!                   end loop;
  
!                   --  ??? Must check that "for result type R, if the
!                   --  function is a boundary entity for type R (see 7.3.2),
!                   --  no type invariant applies to type R; if R has a
!                   --  component type C, a similar rule applies to C."
                 end if;
  
!                --  When the expression is present, it must be static. If it
!                --  evaluates to True, the expression function is treated as
!                --  a static function. Otherwise the aspect appears without
!                --  an expression and defaults to True.
  
!                if Present (Expr) then
!                   --  Preanalyze the expression when the aspect resides in a
!                   --  generic unit. (Is this generic-related code necessary
!                   --  for this aspect? It's modeled on what's done for aspect
!                   --  Disable_Controlled. ???)
  
!                   if Inside_A_Generic then
!                      Preanalyze_And_Resolve (Expr, Any_Boolean);
  
!                   --  Otherwise the aspect resides in a nongeneric context
  
!                   else
!                      Analyze_And_Resolve (Expr, Any_Boolean);
  
!                      --  Error if the boolean expression is not static
  
!                      if not Is_OK_Static_Expression (Expr) then
!                         Flag_Non_Static_Expr
!                           ("expression of aspect % must be static!", Aspect);
!                      end if;
                    end if;
-                end if;
-             end Analyze_Aspect_Static;
  
!             --------------------------
!             -- Analyze_Aspect_Yield --
!             --------------------------
  
!             procedure Analyze_Aspect_Yield is
!                Expr_Value : Boolean := False;
  
!             begin
!                --  Check valid entity for 'Yield
  
!                if (Is_Subprogram (E)
!                      or else Is_Generic_Subprogram (E)
!                      or else Is_Entry (E))
!                  and then not Within_Protected_Type (E)
!                then
!                   null;
  
!                elsif Within_Protected_Type (E) then
!                   Error_Msg_N
!                     ("aspect% not applicable to protected operation", Id);
!                   return;
  
                 else
!                   Error_Msg_N
!                     ("aspect% only applicable to subprogram and entry "
!                      & "declarations", Id);
!                   return;
                 end if;
  
!                --  Evaluate its static expression (if available); otherwise it
!                --  defaults to True.
! 
!                if No (Expr) then
!                   Expr_Value := True;
! 
!                --  Otherwise it must have a static boolean expression
  
!                else
!                   if Inside_A_Generic then
!                      Preanalyze_And_Resolve (Expr, Any_Boolean);
!                   else
!                      Analyze_And_Resolve (Expr, Any_Boolean);
!                   end if;
  
!                   if Is_OK_Static_Expression (Expr) then
!                      if Is_True (Static_Boolean (Expr)) then
!                         Expr_Value := True;
!                      end if;
!                   else
!                      Flag_Non_Static_Expr
!                        ("expression of aspect % must be static!", Aspect);
!                   end if;
!                end if;
  
!                if Expr_Value then
!                   Set_Has_Yield_Aspect (E);
!                end if;
  
!                --  If the Yield aspect is specified for a dispatching
!                --  subprogram that inherits the aspect, the specified
!                --  value shall be confirming.
  
!                if Present (Expr)
!                  and then Is_Dispatching_Operation (E)
!                  and then Present (Overridden_Operation (E))
!                  and then Has_Yield_Aspect (Overridden_Operation (E))
!                             /= Is_True (Static_Boolean (Expr))
                 then
!                   Error_Msg_N ("specification of inherited aspect% can only " &
!                                "confirm parent value", Id);
                 end if;
-             end Analyze_Aspect_Yield;
  
!             -------------------------------------------------
!             -- Check_Constructor_Initialization_Expression --
!             -------------------------------------------------
  
!             procedure Check_Constructor_Initialization_Expression
!               (Expr : Node_Id; Aspect_Name : String)
!             is
!                First_Parameter : Entity_Id;
  
!                --  Flag error if N refers to the forbidden entity
!                function Check_Node_For_Bad_Reference
!                  (N : Node_Id) return Traverse_Result;
  
!                ----------------------------------
!                -- Check_Node_For_Bad_Reference --
!                ----------------------------------
  
!                function Check_Node_For_Bad_Reference
!                  (N : Node_Id) return Traverse_Result is
!                begin
!                   if Nkind (N) = N_Identifier
!                     and then Entity (N) = First_Parameter
!                   then
!                      Error_Msg_N
!                        ("constructed object referenced in " &
!                         Aspect_Name & " aspect_specification", N);
!                   end if;
  
!                   return OK;
!                end Check_Node_For_Bad_Reference;
  
!                procedure Check_Tree_For_Bad_Reference is
!                  new Traverse_Proc (Check_Node_For_Bad_Reference);
!             begin
!                --  If coming from an implicit constructor, the Self parameter
!                --  is retrieved via the specification's defining unit name.
  
!                if Acts_As_Spec (N) then
!                   First_Parameter :=
!                     First_Entity (Defining_Unit_Name (Specification (N)));
!                else
!                   First_Parameter := First_Entity (Corresponding_Spec (N));
!                end if;
  
!                Check_Tree_For_Bad_Reference (Expr);
!             end Check_Constructor_Initialization_Expression;
  
!             ----------------------------------------
!             -- Check_Expr_Is_OK_Static_Expression --
!             ----------------------------------------
  
!             procedure Check_Expr_Is_OK_Static_Expression
!               (Expr : Node_Id; Typ : Entity_Id := Empty) is
!             begin
!                case Is_OK_Static_Expression_Of_Type (Expr, Typ) is
!                   when Static =>
!                      null;
  
!                   when Not_Static =>
!                      Error_Msg_Name_1 := Nam;
!                      Flag_Non_Static_Expr
!                        ("entity for aspect% must be a static expression!",
!                         Expr);
!                      raise Aspect_Exit;
  
!                   when Invalid =>
!                      raise Aspect_Exit;
!                end case;
!             end Check_Expr_Is_OK_Static_Expression;
  
!             ------------------------------------------
!             -- Convert_Aspect_With_Assertion_Levels --
!             ------------------------------------------
  
!             procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id)
!             is
!                Assoc      : Node_Id;
!                Assocs     : List_Id;
!                Choice     : Node_Id;
!                Level      : Entity_Id;
!                Sub_Expr   : Node_Id;
!                New_Aspect : Node_Id;
              begin
!                Assocs := Component_Associations (Expression (Aspect));
!                Assoc := First (Assocs);
! 
!                if Present (Expressions (Expression (Aspect))) then
!                   Error_Msg_N
!                     ("wrong syntax for argument of %", Expression (Aspect));
!                   Error_Msg_N
!                     ("\aspect with Assertion_Level can only contain "
!                      & "contain Assertion_Level associations",
!                      Expression (Aspect));
!                end if;
! 
!                while Present (Assoc) loop
!                   if List_Length (Choices (Assoc)) > 1 then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_N ("wrong syntax for argument of %", Assoc);
                       Error_Msg_N
!                        ("\only one Assertion_Level can be associated "
!                         & "with an expression",
!                         Assoc);
!                   end if;
! 
!                   Choice := First (Choices (Assoc));
  
!                   if Nkind (Choice) /= N_Identifier then
!                      Error_Msg_N ("wrong syntax for argument of %", Assoc);
!                      Error_Msg_N
!                        ("\association must denote an Assertion_Level", Assoc);
                    end if;
  
!                   Level := Get_Assertion_Level (Chars (Choice));
! 
!                   Sub_Expr := Expression (Assoc);
!                   New_Aspect :=
!                     Make_Aspect_Specification
!                       (Sloc       => Sloc (Assoc),
!                        Identifier => New_Copy_Tree (Id),
!                        Expression => Sub_Expr);
! 
!                   Check_Applicable_Policy (New_Aspect, Level);
! 
!                   Set_Aspect_Ghost_Assertion_Level (New_Aspect, Level);
! 
!                   Insert_After (Aspect, New_Aspect);
! 
!                   --  Store the Original_Aspect for the detection of
!                   --  duplicates.
  
!                   Set_Original_Aspect (New_Aspect, Aspect);
  
!                   Next (Assoc);
                 end loop;
!             end Convert_Aspect_With_Assertion_Levels;
! 
!             ------------------------
!             -- Directly_Specified --
!             ------------------------
! 
!             function Directly_Specified
!               (Id : Entity_Id; A : Aspect_Id) return Boolean
!             is
!                Aspect_Spec : constant Node_Id := Find_Aspect (Id, A);
!             begin
!                return Present (Aspect_Spec) and then Entity (Aspect_Spec) = Id;
!             end Directly_Specified;
  
!             -----------------------
!             -- Make_Aitem_Pragma --
!             -----------------------
  
!             function Make_Aitem_Pragma
!               (Pragma_Argument_Associations : List_Id;
!                Pragma_Name                  : Name_Id) return Node_Id
!             is
!                Args  : List_Id := Pragma_Argument_Associations;
!                Aitem : Node_Id;
  
!             begin
!                --  We should never get here if aspect was disabled
  
!                pragma Assert (not Is_Disabled (Aspect));
  
!                --  Certain aspects allow for an optional name or expression. Do
!                --  not generate a pragma with empty argument association list.
  
!                if No (Args) or else No (Expression (First (Args))) then
!                   Args := No_List;
                 end if;
  
!                --  Build the pragma
! 
!                Aitem :=
!                  Make_Pragma (Loc,
!                    Pragma_Argument_Associations => Args,
!                    Pragma_Identifier =>
!                      Make_Identifier (Sloc (Id), Pragma_Name),
!                    Class_Present     => Class_Present (Aspect));
  
!                --  Set additional semantic fields
  
!                Set_Is_Checked (Aitem, Is_Checked (Aspect));
!                Set_Is_Ignored (Aitem, Is_Ignored (Aspect));
!                Set_Pragma_Ghost_Assertion_Level
!                   (Aitem, Aspect_Ghost_Assertion_Level (Aspect));
  
!                Set_Corresponding_Aspect (Aitem, Aspect);
!                Set_From_Aspect_Specification (Aitem);
  
!                return Aitem;
!             end Make_Aitem_Pragma;
  
!          --  Start of processing for Analyze_One_Aspect
  
!          begin
!             --  Skip aspect if already analyzed, to avoid looping in some cases
  
!             if Analyzed (Aspect) then
!                goto Continue;
              end if;
  
!             --  Skip looking at aspect if it is totally disabled. Just mark it
!             --  as such for later reference in the tree. This also sets the
!             --  Is_Ignored and Is_Checked flags appropriately.
  
!             if Is_Valid_Assertion_Kind (Nam) then
!                if Is_Checked (Aspect) or else Is_Ignored (Aspect) then
!                   null;
  
!                --  If the Aspect has at least one Assertion_Level argument
!                --  then split the original Aspect into multiple aspects each
!                --  with an associated Assertion_Level.
  
!                elsif Has_Assertion_Level_Argument (Aspect) then
!                   Convert_Aspect_With_Assertion_Levels (Aspect);
!                   goto Continue;
!                else
!                   Check_Applicable_Policy (Aspect);
!                   Set_Aspect_Ghost_Assertion_Level
!                     (Aspect, Standard_Level_Default);
!                end if;
  
!             end if;
  
!             if Is_Disabled (Aspect) then
!                goto Continue;
!             end if;
  
!             --  Set the source location of expression, used in the case of
!             --  a failed precondition/postcondition or invariant. Note that
!             --  the source location of the expression is not usually the best
!             --  choice here. For example, it gets located on the last AND
!             --  keyword in a chain of boolean expressiond AND'ed together.
!             --  It is best to put the message on the first character of the
!             --  assertion, which is the effect of the First_Node call here.
  
!             if Present (Expr) then
!                Eloc := Sloc (First_Node (Expr));
!             end if;
  
!             --  Check restriction No_Implementation_Aspect_Specifications
  
!             if Implementation_Defined_Aspect (A_Id) then
!                Check_Restriction
!                  (No_Implementation_Aspect_Specifications, Aspect);
              end if;
  
!             --  Check restriction No_Specification_Of_Aspect
! 
!             Check_Restriction_No_Specification_Of_Aspect (Aspect);
! 
!             --  Mark aspect analyzed (actual analysis is delayed till later)
! 
!             if A_Id /= Aspect_User_Aspect then
!                --  Analyzed flag is handled differently for a User_Aspect
!                --  aspect specification because it can also be analyzed
!                --  "on demand" from Aspects.Find_Aspect. So that analysis
!                --  tests for the case where the aspect specification has
!                --  already been analyzed (in which case it just returns)
!                --  and takes care of calling Set_Analyzed.
! 
!                Set_Analyzed (Aspect);
              end if;
  
!             Set_Entity (Aspect, E);
  
!             --  Build the reference to E that will be used in the built pragmas
  
!             Ent := New_Occurrence_Of (E, Sloc (Id));
  
!             if A_Id in Aspect_Attach_Handler | Aspect_Interrupt_Handler then
  
!                --  Treat the specification as a reference to the protected
!                --  operation, which might otherwise appear unreferenced and
!                --  generate spurious warnings.
  
!                Generate_Reference (E, Id);
!             end if;
  
!             --  Check for duplicate aspect. Note that the Comes_From_Source
!             --  test allows duplicate Pre/Post's that we generate internally
!             --  to escape being flagged here.
  
!             if No_Duplicates_Allowed (A_Id) then
!                Anod := First (L);
!                while Anod /= Aspect loop
  
!                   if (Comes_From_Source (Aspect)
!                      or else (Original_Aspect (Aspect) /= Anod
!                               and then not From_Same_Aspect (Aspect, Anod)))
!                      and then Same_Aspect (A_Id, Get_Aspect_Id (Anod))
                    then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_Sloc := Sloc (Anod);
! 
!                      --  Case of same aspect specified twice
! 
!                      if Class_Present (Anod) = Class_Present (Aspect) then
!                         if not Class_Present (Anod) then
!                            Error_Msg_NE
!                              ("aspect% for & previously given#", Id, E);
!                         else
!                            Error_Msg_NE
!                              ("aspect `%''Class` for & previously given#",
!                               Id,
!                               E);
!                         end if;
!                      end if;
                    end if;
  
!                   Next (Anod);
!                end loop;
!             end if;
  
!             --  Check some general restrictions on language defined aspects
  
!             if not Implementation_Defined_Aspect (A_Id)
!               or else A_Id in Aspect_Async_Readers
!                             | Aspect_Async_Writers
!                             | Aspect_Effective_Reads
!                             | Aspect_Effective_Writes
!                             | Aspect_Preelaborable_Initialization
!                             | Aspect_Unsigned_Base_Range
!             then
!                Error_Msg_Name_1 := Nam;
  
!                --  Not allowed for renaming declarations. Examine the original
!                --  node because a subprogram renaming may have been rewritten
!                --  as a body.
  
!                if Nkind (Original_Node (N)) in N_Renaming_Declaration then
                    Error_Msg_N
!                     ("aspect % not allowed for renaming declaration",
                       Aspect);
                 end if;
  
!                --  Not allowed for formal type declarations in previous
!                --  versions of the language. Allowed for them only for
!                --  shared variable control aspects.
  
!                --  Original node is used in case expansion rewrote the node -
!                --  as is the case with generic derived types.
  
                 if Nkind (Original_Node (N)) = N_Formal_Type_Declaration then
!                   if Ada_Version < Ada_2022 then
!                      Error_Msg_N
!                        ("aspect % not allowed for formal type declaration",
!                         Aspect);
  
!                   elsif A_Id not in Aspect_Atomic
!                                   | Aspect_Volatile
!                                   | Aspect_Independent
!                                   | Aspect_Atomic_Components
!                                   | Aspect_Independent_Components
!                                   | Aspect_Volatile_Components
!                                   | Aspect_Async_Readers
!                                   | Aspect_Async_Writers
!                                   | Aspect_Effective_Reads
!                                   | Aspect_Effective_Writes
!                                   | Aspect_Preelaborable_Initialization
!                   then
!                      Error_Msg_N
!                        ("aspect % not allowed for formal type declaration",
!                         Aspect);
!                   end if;
!                end if;
!             end if;
  
!             --  Copy expression for later processing by the procedures
!             --  Check_Aspect_At_[Freeze_Point | End_Of_Declarations]
  
!             --  The expression may be a subprogram name, and can
!             --  be an operator name that appears as a string, but
!             --  requires its own analysis procedure (see sem_ch6).
  
!             if Nkind (Expr) = N_Operator_Symbol then
!                Set_Expression_Copy (Aspect, Expr);
!             else
!                Set_Expression_Copy (Aspect, New_Copy_Tree (Expr));
!             end if;
  
!             --  Set Delay_Required as appropriate to aspect
  
!             case Aspect_Delay (A_Id) is
!                when Always_Delay =>
!                   --  For Boolean aspects, do not delay if no expression
  
!                   if A_Id in Boolean_Aspects | Library_Unit_Aspects then
!                      Delay_Required := Present (Expr);
!                   else
!                      Delay_Required := True;
!                   end if;
  
!                when Never_Delay =>
                    Delay_Required := False;
  
!                when Rep_Aspect =>
! 
!                   --  For Boolean aspects, do not delay if no expression except
!                   --  for Full_Access_Only because we need to process it after
!                   --  Volatile and Atomic, which can be independently delayed.
  
!                   if A_Id in Boolean_Aspects
!                     and then A_Id /= Aspect_Full_Access_Only
!                     and then No (Expr)
!                   then
!                      Delay_Required := False;
  
!                   --  For non-Boolean aspects, if the expression has the form
!                   --  of an integer literal, then do not delay, since we know
!                   --  the value cannot change. This optimization catches most
!                   --  rep clause cases. Likewise for a string literal.
  
!                   elsif A_Id not in Boolean_Aspects
!                     and then Present (Expr)
!                     and then
!                       Nkind (Expr) in N_Integer_Literal | N_String_Literal
!                   then
!                      Delay_Required := False;
  
!                   --  For Alignment and various Size aspects, do not delay for
!                   --  an attribute reference whose prefix is Standard, for
!                   --  example Standard'Maximum_Alignment or Standard'Word_Size.
  
!                   elsif A_Id in Aspect_Alignment
!                               | Aspect_Component_Size
!                               | Aspect_Object_Size
!                               | Aspect_Size
!                               | Aspect_Value_Size
!                     and then Present (Expr)
!                     and then Nkind (Expr) = N_Attribute_Reference
!                     and then Nkind (Prefix (Expr)) = N_Identifier
!                     and then Chars (Prefix (Expr)) = Name_Standard
!                   then
!                      Delay_Required := False;
  
!                   --  For Unsigned_Base_Range aspect, do not delay becase we
!                   --  need to process it before any type or subtype derivation
!                   --  is analyzed.
  
!                   elsif A_Id in Aspect_Unsigned_Base_Range then
!                      Delay_Required := False;
  
!                   --  All other cases are delayed
  
!                   else
!                      Delay_Required := True;
!                      Set_Has_Delayed_Rep_Aspects (E);
!                   end if;
!             end case;
  
!             --  Check 13.1(9.2/5): A representation aspect of a subtype or type
!             --  shall not be specified (whether by a representation item or an
!             --  aspect_specification) before the type is completely defined
!             --  (see 3.11.1).
  
!             if Is_Representation_Aspect (A_Id)
!               and then Rep_Item_Too_Early (E, N)
!             then
!                goto Continue;
!             end if;
  
!             --  Processing based on specific aspect
  
!             case A_Id is
!                when Aspect_Unimplemented =>
!                   null; -- ??? temp for now
  
!                --  No_Aspect should be impossible
  
!                when No_Aspect =>
!                   raise Program_Error;
  
!                --  Case 1: Aspects corresponding to attribute definition
!                --  clauses.
  
!                when Aspect_Address
!                   | Aspect_Alignment
!                   | Aspect_Bit_Order
!                   | Aspect_Component_Size
!                   | Aspect_Constant_Indexing
!                   | Aspect_Default_Iterator
!                   | Aspect_Dispatching_Domain
!                   | Aspect_External_Tag
!                   | Aspect_Input
!                   | Aspect_Iterable
!                   | Aspect_Iterator_Element
!                   | Aspect_Machine_Radix
!                   | Aspect_Object_Size
!                   | Aspect_Output
!                   | Aspect_Put_Image
!                   | Aspect_Read
!                   | Aspect_Scalar_Storage_Order
!                   | Aspect_Simple_Storage_Pool
!                   | Aspect_Size
!                   | Aspect_Small
!                   | Aspect_Storage_Pool
!                   | Aspect_Stream_Size
!                   | Aspect_Value_Size
!                   | Aspect_Variable_Indexing
!                   | Aspect_Write
!                =>
!                   --  Indexing aspects apply only to tagged type
  
!                   if A_Id in Aspect_Constant_Indexing
!                            | Aspect_Variable_Indexing
!                     and then not (Is_Type (E)
!                                    and then Is_Tagged_Type (E))
                    then
                       Error_Msg_N
!                        ("indexing aspect can only apply to a tagged type",
!                         Aspect);
!                      goto Continue;
                    end if;
  
!                   --  For the case of aspect Address, we don't consider that we
!                   --  know the entity is never set in the source, since it is
!                   --  is likely aliasing is occurring.
! 
!                   --  Note: one might think that the analysis of the resulting
!                   --  attribute definition clause would take care of that, but
!                   --  that's not the case since it won't be from source.
! 
!                   if A_Id = Aspect_Address then
!                      Set_Never_Set_In_Source (E, False);
!                   end if;
  
!                   --  Correctness of the profile of a stream operation is
!                   --  verified at the freeze point, but we must detect the
!                   --  illegal specification of this aspect for a subtype now,
!                   --  to prevent malformed rep_item chains.
  
!                   if A_Id in Aspect_Input
!                            | Aspect_Output
!                            | Aspect_Read
!                            | Aspect_Write
!                   then
!                      if not Is_First_Subtype (E) then
!                         Error_Msg_N
!                           ("local name must be a first subtype", Aspect);
!                         goto Continue;
  
!                      --  If stream aspect applies to the class-wide type,
!                      --  the generated attribute definition applies to the
!                      --  class-wide type as well.
  
!                      elsif Class_Present (Aspect) then
!                         Ent :=
!                           Make_Attribute_Reference (Loc,
!                             Prefix         => Ent,
!                             Attribute_Name => Name_Class);
!                      end if;
!                   end if;
  
!                   --  Propagate the 'Size'Class aspect to the class-wide type
  
!                   if A_Id = Aspect_Size and then Class_Present (Aspect) then
!                      Ent :=
!                        Make_Attribute_Reference (Loc,
!                          Prefix         => Ent,
!                          Attribute_Name => Name_Class);
!                   end if;
  
!                   --  Construct the attribute_definition_clause. The expression
!                   --  in the aspect specification is simply shared with the
!                   --  constructed attribute, because it will be fully analyzed
!                   --  when the attribute is processed.
  
!                   Aitem :=
!                     Make_Attribute_Definition_Clause (Loc,
!                       Name       => Ent,
!                       Chars      => Nam,
!                       Expression => Relocate_Expression (Expr));
  
!                   --  If the address is specified, then we treat the entity as
!                   --  referenced, to avoid spurious warnings. This is analogous
!                   --  to what is done with an attribute definition clause, but
!                   --  here we don't want to generate a reference because this
!                   --  is the point of definition of the entity.
  
!                   if A_Id = Aspect_Address then
!                      Set_Referenced (E);
!                   end if;
  
!                --  Case 2: Aspects corresponding to pragmas
  
!                --  Case 2a: Aspects corresponding to pragmas with two
!                --  arguments, where the first argument is a local name
!                --  referring to the entity, and the second argument is the
!                --  aspect definition expression.
  
!                --  Linker_Section
  
!                when Aspect_Linker_Section =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Linker_Section);
  
!                   --  No need to delay the processing if the entity is already
!                   --  frozen. This should only happen for subprogram bodies.
  
!                   if Is_Frozen (E) then
!                      pragma Assert (Nkind (N) = N_Subprogram_Body);
!                      Delay_Required := False;
                    end if;
  
!                --  Synchronization
! 
!                --  Corresponds to pragma Implemented, construct the pragma
! 
!                when Aspect_Synchronization =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Implemented);
! 
!                --  Attach_Handler
  
!                when Aspect_Attach_Handler =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Expression (Expr))),
!                      Pragma_Name                  => Name_Attach_Handler);
  
!                   --  We need to insert this pragma into the tree to get proper
!                   --  processing and to look valid from a placement viewpoint.
  
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Dynamic_Predicate, Predicate, Static_Predicate
  
!                when Aspect_Dynamic_Predicate
!                   | Aspect_Ghost_Predicate
!                   | Aspect_Predicate
!                   | Aspect_Static_Predicate
!                =>
!                   --  These aspects apply only to subtypes
  
!                   if not Is_Type (E) then
!                      Error_Msg_N
!                        ("predicate can only be specified for a subtype",
!                         Aspect);
!                      goto Continue;
  
!                   elsif Is_Incomplete_Type (E) then
!                      Error_Msg_N
!                        ("predicate cannot apply to incomplete view", Aspect);
  
!                   elsif Is_Generic_Type (E) then
!                      Error_Msg_N
!                        ("predicate cannot apply to formal type", Aspect);
!                      goto Continue;
!                   end if;
  
!                   --  Construct the pragma (always a pragma Predicate, with
!                   --  flags recording whether it is static/dynamic). We also
!                   --  set flags recording this in the type itself.
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Expression (Expr))),
!                      Pragma_Name => Name_Predicate);
  
!                   --  Mark type has predicates, and remember what kind of
!                   --  aspect lead to this predicate (we need this to access
!                   --  the right set of check policies later on).
  
!                   Set_Has_Predicates (E);
  
!                   if A_Id = Aspect_Dynamic_Predicate then
!                      Set_Has_Dynamic_Predicate_Aspect (E);
  
!                      --  If the entity has a dynamic predicate, any inherited
!                      --  static predicate becomes dynamic as well, and the
!                      --  predicate function includes the conjunction of both.
  
!                      Set_Has_Static_Predicate_Aspect (E, False);
  
!                      --  Query the applicable policy since it must rely on the
!                      --  policy applicable in the context of the declaration of
!                      --  entity E; it cannot be done when the built pragma is
!                      --  analyzed because it will be analyzed when E is frozen,
!                      --  and at that point the applicable policy may differ.
!                      --  For example:
  
!                      --  pragma Assertion_Policy (Dynamic_Predicate => Check);
!                      --  type T is ... with Dynamic_Predicate => ...
!                      --  pragma Assertion_Policy (Dynamic_Predicate => Ignore);
!                      --  X : T; --  freezes T
  
!                      Set_Predicates_Ignored (E,
!                        Policy_In_Effect (Name_Dynamic_Predicate)
!                          = Name_Ignore);
  
!                   elsif A_Id = Aspect_Static_Predicate then
!                      Set_Has_Static_Predicate_Aspect (E);
!                   elsif A_Id = Aspect_Ghost_Predicate then
!                      Set_Has_Ghost_Predicate_Aspect (E);
!                   end if;
  
!                   --  If the type is private, indicate that its completion
!                   --  has a freeze node, because that is the one that will
!                   --  be visible at freeze time.
  
!                   if Is_Private_Type (E) and then Present (Full_View (E)) then
!                      Set_Has_Predicates (Full_View (E));
  
!                      if A_Id = Aspect_Dynamic_Predicate then
!                         Set_Has_Dynamic_Predicate_Aspect (Full_View (E));
!                      elsif A_Id = Aspect_Static_Predicate then
!                         Set_Has_Static_Predicate_Aspect (Full_View (E));
!                      elsif A_Id = Aspect_Ghost_Predicate then
!                         Set_Has_Ghost_Predicate_Aspect (Full_View (E));
!                      end if;
  
!                      Set_Has_Delayed_Aspects (Full_View (E));
!                      Ensure_Freeze_Node (Full_View (E));
  
!                      --  If there is an Underlying_Full_View, also create a
!                      --  freeze node for that one.
  
!                      if Is_Private_Type (Full_View (E)) then
!                         declare
!                            U_Full : constant Entity_Id :=
!                              Underlying_Full_View (Full_View (E));
!                         begin
!                            if Present (U_Full) then
!                               Set_Has_Delayed_Aspects (U_Full);
!                               Ensure_Freeze_Node (U_Full);
!                            end if;
!                         end;
!                      end if;
!                   end if;
  
!                --  Predicate_Failure
  
!                when Aspect_Predicate_Failure =>
  
!                   --  This aspect applies only to subtypes
  
!                   if not Is_Type (E) then
!                      Error_Msg_N
!                        ("predicate can only be specified for a subtype",
!                         Aspect);
!                      goto Continue;
  
!                   elsif Is_Incomplete_Type (E) then
!                      Error_Msg_N
!                        ("predicate cannot apply to incomplete view", Aspect);
!                      goto Continue;
  
!                   elsif not Has_Predicates (E) then
!                      Error_Msg_N
!                        ("Predicate_Failure requires previous predicate" &
!                         " specification", Aspect);
!                      goto Continue;
  
!                   elsif not (Directly_Specified (E, Aspect_Dynamic_Predicate)
!                     or else Directly_Specified (E, Aspect_Predicate)
!                     or else Directly_Specified (E, Aspect_Ghost_Predicate)
!                     or else Directly_Specified (E, Aspect_Static_Predicate))
!                   then
!                      Error_Msg_N
!                        ("Predicate_Failure requires accompanying" &
!                         " noninherited predicate specification", Aspect);
!                      goto Continue;
!                   end if;
  
!                   --  Construct the pragma
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name => Name_Predicate_Failure);
  
!                --  Case 2b: Aspects corresponding to pragmas with two
!                --  arguments, where the second argument is a local name
!                --  referring to the entity, and the first argument is the
!                --  aspect definition expression.
  
!                --  Convention
  
!                when Aspect_Convention =>
!                   Analyze_Aspect_Convention;
!                   goto Continue;
  
!                --  External_Name, Link_Name
  
!                --  Only the legality checks are done during the analysis, thus
!                --  no delay is required.
  
!                when Aspect_External_Name
!                   | Aspect_Link_Name
!                =>
!                   Analyze_Aspect_External_Link_Name;
!                   goto Continue;
  
!                --  CPU, Interrupt_Priority, Priority
  
!                --  These three aspects can be specified for a subprogram spec
!                --  or body, in which case we analyze the expression and export
!                --  the value of the aspect.
  
!                --  Previously, we generated an equivalent pragma for bodies
!                --  (note that the specs cannot contain these pragmas). The
!                --  pragma was inserted ahead of local declarations, rather than
!                --  after the body. This leads to a certain duplication between
!                --  the processing performed for the aspect and the pragma, but
!                --  given the straightforward handling required it is simpler
!                --  to duplicate than to translate the aspect in the spec into
!                --  a pragma in the declarative part of the body.
  
!                when Aspect_CPU
!                   | Aspect_Interrupt_Priority
!                   | Aspect_Priority
!                =>
!                   --  Verify the expression is static when Static_Priorities is
!                   --  enabled.
  
!                   if not Is_OK_Static_Expression (Expr) then
!                      Check_Restriction (Static_Priorities, Expr);
!                   end if;
  
!                   if Nkind (N) in N_Subprogram_Body | N_Subprogram_Declaration
!                   then
!                      --  Analyze the aspect expression
  
!                      Analyze_And_Resolve (Expr, Standard_Integer);
  
!                      --  Interrupt_Priority aspect not allowed for main
!                      --  subprograms. RM D.1 does not forbid this explicitly,
!                      --  but RM J.15.11(6/3) does not permit pragma
!                      --  Interrupt_Priority for subprograms.
  
!                      if A_Id = Aspect_Interrupt_Priority then
!                         Error_Msg_N
!                           ("Interrupt_Priority aspect cannot apply to "
!                            & "subprogram", Expr);
  
!                      --  The expression must be static
  
!                      elsif not Is_OK_Static_Expression (Expr) then
!                         Flag_Non_Static_Expr
!                           ("aspect requires static expression!", Expr);
  
!                      --  Check whether this is the main subprogram. Issue a
!                      --  warning only if it is obviously not a main program
!                      --  (when it has parameters or when the subprogram is
!                      --  within a package).
  
!                      elsif Present (Parameter_Specifications
!                                       (Specification (N)))
!                        or else not Is_Compilation_Unit (Defining_Entity (N))
!                      then
!                         --  See RM D.1(14/3) and D.16(12/3)
  
!                         Error_Msg_N
!                           ("aspect applied to subprogram other than the "
!                            & "main subprogram has no effect??", Expr);
  
!                      --  Otherwise check in range and export the value
  
!                      --  For the CPU aspect
  
!                      elsif A_Id = Aspect_CPU then
!                         if Is_In_Range (Expr, RTE (RE_CPU_Range)) then
  
!                            --  Value is correct so we export the value to make
!                            --  it available at execution time.
  
!                            Set_Main_CPU
!                              (Main_Unit, UI_To_Int (Expr_Value (Expr)));
  
!                         else
!                            Error_Msg_N
!                              ("main subprogram 'C'P'U is out of range", Expr);
!                         end if;
  
!                      --  For the Priority aspect
  
!                      elsif A_Id = Aspect_Priority then
!                         if Is_In_Range (Expr, RTE (RE_Priority)) then
  
!                            --  Value is correct so we export the value to make
!                            --  it available at execution time.
  
!                            Set_Main_Priority
!                              (Main_Unit, UI_To_Int (Expr_Value (Expr)));
  
!                         --  Ignore pragma if Relaxed_RM_Semantics to support
!                         --  other targets/non GNAT compilers.
  
!                         elsif not Relaxed_RM_Semantics then
!                            Error_Msg_N
!                              ("main subprogram priority is out of range",
!                               Expr);
!                         end if;
!                      end if;
  
!                      --  Load an arbitrary entity from System.Tasking.Stages
!                      --  or System.Tasking.Restricted.Stages (depending on
!                      --  the supported profile) to make sure that one of these
!                      --  packages is implicitly with'ed, since we need to have
!                      --  the tasking run time active for the pragma Priority to
!                      --  have any effect. Previously we with'ed the package
!                      --  System.Tasking, but this package does not trigger the
!                      --  required initialization of the run-time library.
  
!                      if Restricted_Profile then
!                         Discard_Node (RTE (RE_Activate_Restricted_Tasks));
!                      else
!                         Discard_Node (RTE (RE_Activate_Tasks));
!                      end if;
  
!                      --  Handling for these aspects in subprograms is complete
  
!                      goto Continue;
  
!                   --  For task and protected types pass the aspect as an
!                   --  attribute.
  
!                   else
!                      Aitem :=
!                        Make_Attribute_Definition_Clause (Loc,
!                          Name       => Ent,
!                          Chars      => Nam,
!                          Expression => Relocate_Expression (Expr));
!                   end if;
  
!                --  Suppress/Unsuppress
  
!                when Aspect_Suppress
!                   | Aspect_Unsuppress
!                =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr)),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Ent)),
!                      Pragma_Name                  => Nam);
  
!                   Delay_Required := False;
  
!                --  Warnings
  
!                when Aspect_Warnings =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr)),
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Ent)),
!                      Pragma_Name                  => Name_Warnings);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Case 2c: Aspects corresponding to pragmas with three
!                --  arguments.
  
!                --  Invariant aspects have a first argument that references the
!                --  entity, a second argument that is the expression and a third
!                --  argument that is an appropriate message.
  
!                --  Invariant, Type_Invariant
  
!                when Aspect_Invariant
!                   | Aspect_Type_Invariant
!                =>
!                   --  Analysis of the pragma will verify placement legality:
!                   --  an invariant must apply to a private type, or appear in
!                   --  the private part of a spec and apply to a completion.
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent),
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Invariant);
  
!                   --  Add message unless exception messages are suppressed
  
!                   if not Opt.Exception_Locations_Suppressed then
!                      Append_To (Pragma_Argument_Associations (Aitem),
!                        Make_Pragma_Argument_Association (Eloc,
!                          Chars      => Name_Message,
!                          Expression =>
!                            Make_String_Literal (Eloc,
!                              Strval => "failed invariant from "
!                                        & Build_Location_String (Eloc))));
!                   end if;
  
!                   --  For Invariant case, insert immediately after the entity
!                   --  declaration. We do not have to worry about delay issues
!                   --  since the pragma processing takes care of this.
  
!                   Delay_Required := False;
  
!                --  Case 2d : Aspects that correspond to a pragma with one
!                --  argument.
  
!                --  Abstract_State
  
!                --  Aspect Abstract_State introduces implicit declarations for
!                --  all state abstraction entities it defines. To emulate this
!                --  behavior, insert the pragma at the beginning of the visible
!                --  declarations of the related package so that it is analyzed
!                --  immediately.
  
!                when Aspect_Abstract_State => Abstract_State : declare
!                   Context : Node_Id := N;
  
!                begin
!                   --  When aspect Abstract_State appears on a generic package,
!                   --  it is propagated to the package instance. The context in
!                   --  this case is the instance spec.
  
!                   if Nkind (Context) = N_Package_Instantiation then
!                      Context := Instance_Spec (Context);
!                   end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
!                   then
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Loc,
!                             Expression => Relocate_Node (Expr))),
!                         Pragma_Name                  => Name_Abstract_State);
  
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma
!                        (Prag        => Aitem,
!                         Is_Instance =>
!                           Is_Generic_Instance (Defining_Entity (Context)));
  
!                   else
!                      Error_Msg_NE
!                        ("aspect & must apply to a package declaration",
!                         Aspect, Id);
!                   end if;
  
!                   goto Continue;
!                end Abstract_State;
  
!                --  Aspect Default_Internal_Condition is never delayed because
!                --  it is equivalent to a source pragma which appears after the
!                --  related private type. To deal with forward references, the
!                --  generated pragma is stored in the rep chain of the related
!                --  private type as types do not carry contracts. The pragma is
!                --  wrapped inside of a procedure at the freeze point of the
!                --  private type's full view.
  
!                --  A type entity argument is appended to facilitate inheriting
!                --  the aspect from parent types (see Build_DIC_Procedure_Body),
!                --  though that extra argument isn't documented for the pragma.
  
!                when Aspect_Default_Initial_Condition =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr)),
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Expression => Ent)),
!                      Pragma_Name                  =>
!                        Name_Default_Initial_Condition);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Default_Storage_Pool
  
!                when Aspect_Default_Storage_Pool =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  =>
!                        Name_Default_Storage_Pool);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Depends
  
!                --  Aspect Depends is never delayed because it is equivalent to
!                --  a source pragma which appears after the related subprogram.
!                --  To deal with forward references, the generated pragma is
!                --  stored in the contract of the related subprogram and later
!                --  analyzed at the end of the declarative region. See routine
!                --  Analyze_Depends_In_Decl_Part for details.
  
!                when Aspect_Depends =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Depends);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Global
  
!                --  Aspect Global is never delayed because it is equivalent to
!                --  a source pragma which appears after the related subprogram.
!                --  To deal with forward references, the generated pragma is
!                --  stored in the contract of the related subprogram and later
!                --  analyzed at the end of the declarative region. See routine
!                --  Analyze_Global_In_Decl_Part for details.
  
!                when Aspect_Global =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Global);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Initial_Condition
  
!                --  Aspect Initial_Condition is never delayed because it is
!                --  equivalent to a source pragma which appears after the
!                --  related package. To deal with forward references, the
!                --  generated pragma is stored in the contract of the related
!                --  package and later analyzed at the end of the declarative
!                --  region. See routine Analyze_Initial_Condition_In_Decl_Part
!                --  for details.
  
!                when Aspect_Initial_Condition => Initial_Condition : declare
!                   Context : Node_Id := N;
  
!                begin
!                   --  When aspect Initial_Condition appears on a generic
!                   --  package, it is propagated to the package instance. The
!                   --  context in this case is the instance spec.
  
!                   if Nkind (Context) = N_Package_Instantiation then
!                      Context := Instance_Spec (Context);
!                   end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
!                   then
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Loc,
!                             Expression => Relocate_Node (Expr))),
!                         Pragma_Name                  =>
!                           Name_Initial_Condition);
  
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma
!                        (Prag        => Aitem,
!                         Is_Instance =>
!                           Is_Generic_Instance (Defining_Entity (Context)));
  
!                   --  Otherwise the context is illegal
  
!                   else
!                      Error_Msg_NE
!                        ("aspect & must apply to a package declaration",
!                         Aspect, Id);
!                   end if;
  
!                   goto Continue;
!                end Initial_Condition;
  
!                --  Initialize
  
!                when Aspect_Initialize => Initialize : declare
!                   Aspect_Comp : Node_Id;
!                   Type_Comp   : Node_Id;
!                   Typ  : Entity_Id;
!                   Dummy_Aggr : Node_Id;
!                begin
!                   --  Error checking
  
!                   if not All_Extensions_Allowed then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_GNAT_Extension ("aspect %", Loc);
!                      goto Continue;
!                   end if;
  
!                   if Ekind (E) /= E_Subprogram_Body
!                     or else Nkind (Parent (E)) /= N_Procedure_Specification
!                   then
!                      Error_Msg_N
!                        ("Initialize must apply to a constructor body", N);
!                   end if;
  
!                   if Present (Expressions (Expression (Aspect))) then
!                      Error_Msg_N ("only component associations allowed", N);
!                   end if;
  
!                   --  Install the others for the aggregate if necessary
  
!                   Typ := Etype (First_Entity (E));
  
!                   if No (First_Entity (Typ)) then
!                      Error_Msg_N
!                        ("Initialize can only apply to contructors"
!                          & " whose type has one or more components", N);
!                   end if;
  
!                   Aspect_Comp :=
!                     First (Component_Associations (Expression (Aspect)));
!                   Type_Comp := First_Entity (Typ);
!                   while Present (Type_Comp) loop
!                      if No (Aspect_Comp) then
!                         Append_To
!                           (Component_Associations (Expression (Aspect)),
!                              Make_Component_Association (Loc,
!                                Choices     =>
!                                  New_List (Make_Others_Choice (Loc)),
!                                Box_Present => True));
!                         exit;
!                      elsif Nkind (First (Choices (Aspect_Comp)))
!                              = N_Others_Choice
!                      then
!                         exit;
!                      end if;
  
!                      Next (Aspect_Comp);
!                      Next_Entity (Type_Comp);
!                   end loop;
  
!                   --  Analyze the components
  
!                   Aspect_Comp :=
!                     First (Component_Associations (Expression (Aspect)));
!                   while Present (Aspect_Comp) loop
!                      declare
!                         Expr : constant Node_Id := Expression (Aspect_Comp);
!                      begin
!                         if Present (Expr) then
!                            Analyze (Expr);
!                            Check_Constructor_Initialization_Expression
!                              (Expr, Aspect_Name => "Initialize");
!                         end if;
!                      end;
  
!                      Next (Aspect_Comp);
!                   end loop;
  
!                   --  Do a psuedo pass over the aggregate to ensure it is valid
  
!                   Expander_Active := False;
!                   Dummy_Aggr := New_Copy_Tree (Expression (Aspect));
!                   Resolve_Aggregate (Dummy_Aggr, Typ);
!                   Expander_Active := True;
!                end Initialize;
  
!                --  Initializes
  
!                --  Aspect Initializes is never delayed because it is equivalent
!                --  to a source pragma appearing after the related package. To
!                --  deal with forward references, the generated pragma is stored
!                --  in the contract of the related package and later analyzed at
!                --  the end of the declarative region. For details, see routine
!                --  Analyze_Initializes_In_Decl_Part.
  
!                when Aspect_Initializes => Initializes : declare
!                   Context : Node_Id := N;
  
!                begin
!                   --  When aspect Initializes appears on a generic package,
!                   --  it is propagated to the package instance. The context
!                   --  in this case is the instance spec.
  
!                   if Nkind (Context) = N_Package_Instantiation then
!                      Context := Instance_Spec (Context);
!                   end if;
  
!                   if Nkind (Context) in N_Generic_Package_Declaration
!                                       | N_Package_Declaration
!                   then
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Loc,
!                             Expression => Relocate_Node (Expr))),
!                         Pragma_Name                  => Name_Initializes);
  
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma
!                        (Prag        => Aitem,
!                         Is_Instance =>
!                           Is_Generic_Instance (Defining_Entity (Context)));
  
!                   --  Otherwise the context is illegal
  
!                   else
!                      Error_Msg_NE
!                        ("aspect & must apply to a package declaration",
!                         Aspect, Id);
!                   end if;
  
!                   goto Continue;
!                end Initializes;
  
!                --  Max_Entry_Queue_Length
  
!                when Aspect_Max_Entry_Queue_Length =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name => Name_Max_Entry_Queue_Length);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Max_Queue_Length
  
!                when Aspect_Max_Queue_Length =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Max_Queue_Length);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Obsolescent
  
!                when Aspect_Obsolescent => declare
!                   Args : List_Id;
  
-                begin
-                   if No (Expr) then
-                      Args := No_List;
                    else
!                      Args := New_List (
!                        Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr)));
                    end if;
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Name_Obsolescent);
!                end;
  
!                --  Part_Of
  
!                when Aspect_Part_Of =>
!                   if Nkind (N) in N_Object_Declaration
!                                 | N_Package_Instantiation
!                     or else Is_Single_Concurrent_Type_Declaration (N)
!                   then
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Loc,
!                             Expression => Relocate_Node (Expr))),
!                         Pragma_Name                  => Name_Part_Of);
  
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma (Aitem);
  
!                   else
!                      Error_Msg_NE
!                        ("aspect & must apply to package instantiation, "
!                         & "object, single protected type or single task type",
!                         Aspect, Id);
                    end if;
  
!                   goto Continue;
  
!                --  Potentially_Invalid
  
!                when Aspect_Potentially_Invalid =>
!                   Analyze_Aspect_Potentially_Invalid;
!                   goto Continue;
  
!                --  SPARK_Mode
  
!                when Aspect_SPARK_Mode =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_SPARK_Mode);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Refined_Depends
  
!                --  Aspect Refined_Depends is never delayed because it is
!                --  equivalent to a source pragma which appears in the
!                --  declarations of the related subprogram body. To deal with
!                --  forward references, the generated pragma is stored in the
!                --  contract of the related subprogram body and later analyzed
!                --  at the end of the declarative region. For details, see
!                --  routine Analyze_Refined_Depends_In_Decl_Part.
  
!                when Aspect_Refined_Depends =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Refined_Depends);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Refined_Global
  
!                --  Aspect Refined_Global is never delayed because it is
!                --  equivalent to a source pragma which appears in the
!                --  declarations of the related subprogram body. To deal with
!                --  forward references, the generated pragma is stored in the
!                --  contract of the related subprogram body and later analyzed
!                --  at the end of the declarative region. For details, see
!                --  routine Analyze_Refined_Global_In_Decl_Part.
  
!                when Aspect_Refined_Global =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Refined_Global);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Refined_Post
  
!                when Aspect_Refined_Post =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Refined_Post);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Refined_State
  
!                when Aspect_Refined_State =>
  
!                   --  The corresponding pragma for Refined_State is inserted in
!                   --  the declarations of the related package body. This action
!                   --  synchronizes both the source and from-aspect versions of
!                   --  the pragma.
  
!                   if Nkind (N) = N_Package_Body then
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Loc,
!                             Expression => Relocate_Node (Expr))),
!                         Pragma_Name                  => Name_Refined_State);
  
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma (Aitem);
  
!                   --  Otherwise the context is illegal
  
!                   else
!                      Error_Msg_NE
!                        ("aspect & must apply to a package body", Aspect, Id);
!                   end if;
  
!                   goto Continue;
  
!                --  Relative_Deadline
  
!                when Aspect_Relative_Deadline =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                       Pragma_Name                 => Name_Relative_Deadline);
  
!                   --  If the aspect applies to a task, the corresponding pragma
!                   --  must appear within its declarations, not after.
  
!                   if Nkind (N) = N_Task_Type_Declaration then
!                      declare
!                         Def : Node_Id;
!                         V   : List_Id;
  
!                      begin
!                         if No (Task_Definition (N)) then
!                            Set_Task_Definition (N,
!                              Make_Task_Definition (Loc,
!                                 Visible_Declarations => New_List,
!                                 End_Label => Empty));
!                         end if;
  
!                         Def := Task_Definition (N);
!                         V  := Visible_Declarations (Def);
!                         if not Is_Empty_List (V) then
!                            Insert_Before (First (V), Aitem);
  
!                         else
!                            Set_Visible_Declarations (Def, New_List (Aitem));
!                         end if;
  
!                         goto Continue;
!                      end;
!                   end if;
  
!                --  Relaxed_Initialization
  
!                when Aspect_Relaxed_Initialization =>
!                   Analyze_Aspect_Relaxed_Initialization;
!                   goto Continue;
  
!                --  Secondary_Stack_Size
  
!                --  Aspect Secondary_Stack_Size needs to be converted into a
!                --  pragma for two reasons: the attribute is not analyzed until
!                --  after the expansion of the task type declaration and the
!                --  attribute does not have visibility on the discriminant.
  
!                when Aspect_Secondary_Stack_Size =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  =>
!                        Name_Secondary_Stack_Size);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  User_Aspect
  
!                when Aspect_User_Aspect =>
!                   Analyze_User_Aspect_Aspect_Specification (Aspect);
!                   goto Continue;
  
!                --  Case 2e: Annotate aspect
  
!                when Aspect_Annotate | Aspect_GNAT_Annotate =>
!                   declare
!                      Pargs : constant List_Id := New_List; -- pragma args
!                   begin
!                      --  The argument can be a single identifier; add it to
!                      --  Pargs.
  
!                      if Nkind (Expr) = N_Identifier then
  
!                         --  One level of parens is allowed
  
!                         if Paren_Count (Expr) > 1 then
!                            Error_Msg_F ("extra parentheses ignored", Expr);
!                         end if;
  
!                         Set_Paren_Count (Expr, 0);
  
!                         Append_To (Pargs,
!                           Make_Pragma_Argument_Association (Sloc (Expr),
!                             Expression => Relocate_Node (Expr)));
  
!                      --  Otherwise we must have an aggregate; add all
!                      --  expressions to Pargs.
  
!                      elsif Nkind (Expr) = N_Aggregate then
  
!                         --  Must be positional
  
!                         if Present (Component_Associations (Expr)) then
!                            Error_Msg_F
!                              ("purely positional aggregate required", Expr);
!                            goto Continue;
!                         end if;
  
!                         --  Must not be parenthesized
  
!                         if Paren_Count (Expr) /= 0 then
!                            Error_Msg_F -- CODEFIX
!                              ("redundant parentheses", Expr);
!                         end if;
  
                          declare
!                            Arg : Node_Id := First (Expressions (Expr));
                          begin
!                            while Present (Arg) loop
!                               Append_To (Pargs,
!                                 Make_Pragma_Argument_Association (Sloc (Arg),
!                                   Expression => Relocate_Node (Arg)));
!                               Next (Arg);
                             end loop;
                          end;
  
!                      --  Anything else is illegal
  
!                      else
!                         Error_Msg_F ("wrong form for Annotate aspect", Expr);
!                         goto Continue;
!                      end if;
  
!                      Append_To (Pargs,
!                        Make_Pragma_Argument_Association (Sloc (Ent),
!                          Chars      => Name_Entity,
!                          Expression => Ent));
  
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => Pargs,
!                         Pragma_Name                  => Name_Annotate);
!                   end;
  
!                --  Case 3 : Aspects that don't correspond to pragma/attribute
!                --  definition clause.
  
!                --  Case 3a: The aspects listed below don't correspond to
!                --  pragmas/attributes but do require delayed analysis.
  
!                when Aspect_Default_Value | Aspect_Default_Component_Value =>
!                   Error_Msg_Name_1 := Nam;
  
!                   if not Is_Type (E) then
!                      Error_Msg_N ("aspect% can only apply to a type", Id);
!                      goto Continue;
  
!                   elsif not Is_First_Subtype (E) then
!                      Error_Msg_N ("aspect% cannot apply to subtype", Id);
!                      goto Continue;
  
!                   elsif A_Id = Aspect_Default_Value then
!                      if not Is_Scalar_Type (E) then
!                         Error_Msg_N
!                           ("aspect% can only be applied to scalar type", Id);
!                         goto Continue;
!                      end if;
  
!                   elsif A_Id = Aspect_Default_Component_Value then
!                      if not Is_Array_Type (E) then
!                         Error_Msg_N
!                           ("aspect% can only be applied to array type", Id);
!                         goto Continue;
  
!                      elsif not Is_Scalar_Type (Component_Type (E)) then
!                         Error_Msg_N ("aspect% requires scalar components", Id);
!                         goto Continue;
!                      end if;
!                   end if;
  
!                when Aspect_Aggregate =>
!                   --  We will be checking that the aspect is not specified on
!                   --  an array type in Analyze_Aspects_At_Freeze_Point.
  
!                   Validate_Aspect_Aggregate (Expr);
  
!                when Aspect_Stable_Properties =>
!                   Validate_Aspect_Stable_Properties
!                     (E, Expr, Class_Present => Class_Present (Aspect));
  
!                when Aspect_Designated_Storage_Model =>
!                   if not All_Extensions_Allowed then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_GNAT_Extension ("aspect %", Loc);
!                      goto Continue;
  
!                   elsif not Is_Type (E)
!                     or else Ekind (E) /= E_Access_Type
!                   then
!                      Error_Msg_N
!                        ("can only be specified for pool-specific access type",
!                         Aspect);
!                      goto Continue;
!                   end if;
  
!                when Aspect_Storage_Model_Type =>
!                   if not All_Extensions_Allowed then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_GNAT_Extension ("aspect %", Loc);
!                      goto Continue;
  
!                   elsif not Is_Type (E)
!                     or else not Is_Immutably_Limited_Type (E)
!                   then
!                      Error_Msg_N
!                        ("can only be specified for immutably limited type",
!                         Aspect);
!                      goto Continue;
!                   end if;
  
!                when Aspect_Finalizable =>
!                   if not Core_Extensions_Allowed then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_GNAT_Extension
!                        ("aspect %", Loc, Is_Core_Extension => True);
!                      goto Continue;
  
!                   elsif not Is_Type (E) then
!                      Error_Msg_N ("can only be specified for a type", Aspect);
!                      goto Continue;
!                   end if;
  
!                when Aspect_Integer_Literal
!                   | Aspect_Real_Literal
!                   | Aspect_String_Literal
!                =>
  
!                   if not Is_First_Subtype (E) then
!                      Error_Msg_N
!                        ("may only be specified for a first subtype", Aspect);
!                      goto Continue;
!                   end if;
  
!                   if Ada_Version < Ada_2022 then
!                      Check_Restriction
!                        (No_Implementation_Aspect_Specifications, N);
!                   end if;
  
!                --  Case 3b: The aspects listed below don't correspond to
!                --  pragmas/attributes and don't need delayed analysis.
  
!                --  Implicit_Dereference
  
!                --  Only the legality checks are done during the analysis, thus
!                --  no delay is required.
  
!                when Aspect_Implicit_Dereference =>
!                   Analyze_Aspect_Implicit_Dereference;
!                   goto Continue;
  
!                --  Dimension
  
!                when Aspect_Dimension =>
!                   Analyze_Aspect_Dimension (N, Id, Expr);
!                   goto Continue;
  
!                --  Dimension_System
  
!                when Aspect_Dimension_System =>
!                   Analyze_Aspect_Dimension_System (N, Id, Expr);
!                   goto Continue;
  
!                when Aspect_Local_Restrictions =>
!                   Validate_Aspect_Local_Restrictions (E, Expr);
!                   Record_Rep_Item (E, Aspect);
!                   goto Continue;
  
!                --  Case 4: Aspects requiring special handling
  
!                --  Pre/Post/Test_Case/Contract_Cases/Always_Terminates/
!                --  Exceptional_Cases/Exit_Cases/Program_Exit and
!                --  Subprogram_Variant whose corresponding pragmas take care of
!                --  the delay.
  
!                --  Pre/Post
  
!                --  Aspects Pre/Post generate Precondition/Postcondition pragmas
!                --  with a first argument that is the expression, and a second
!                --  argument that is an informative message if the test fails.
!                --  This is inserted right after the declaration, to get the
!                --  required pragma placement. The processing for the pragmas
!                --  takes care of the required delay.
  
!                when Pre_Post_Aspects => Pre_Post : declare
!                   Pname : Name_Id;
  
!                begin
!                   if A_Id in Aspect_Pre | Aspect_Precondition then
!                      Pname := Name_Precondition;
!                   else
!                      Pname := Name_Postcondition;
!                   end if;
  
!                   --  Check that the class-wide predicate cannot be applied to
!                   --  an operation of a synchronized type. AI12-0182 forbids
!                   --  these altogether, while earlier language semantics made
!                   --  them legal on tagged synchronized types.
  
!                   --  Other legality checks are performed when analyzing the
!                   --  contract of the operation.
  
!                   if Class_Present (Aspect)
!                     and then Is_Concurrent_Type (Current_Scope)
!                     and then Ekind (E) in E_Entry | E_Function | E_Procedure
!                   then
!                      Error_Msg_Name_1 := Original_Aspect_Pragma_Name (Aspect);
!                      Error_Msg_N
!                        ("aspect % can only be specified for a primitive "
!                         & "operation of a tagged type", Aspect);
  
!                      goto Continue;
!                   end if;
  
!                   --  Remember class-wide conditions; they will be merged
!                   --  with inherited conditions.
  
!                   if Class_Present (Aspect)
!                     and then A_Id in Aspect_Pre | Aspect_Post
!                     and then Is_Subprogram (E)
!                     and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
!                   then
!                      if A_Id = Aspect_Pre then
!                         if Is_Ignored_In_Codegen (Aspect) then
!                            Set_Ignored_Class_Preconditions (E,
!                              New_Copy_Tree (Expr));
!                         else
!                            Set_Class_Preconditions (E, New_Copy_Tree (Expr));
!                         end if;
  
!                      --  Postconditions may split into separate aspects, and we
!                      --  remember the expression before such split (i.e. when
!                      --  the first postcondition is processed).
  
!                      elsif No (Class_Postconditions (E))
!                        and then No (Ignored_Class_Postconditions (E))
!                      then
!                         if Is_Ignored_In_Codegen (Aspect) then
!                            Set_Ignored_Class_Postconditions (E,
!                              New_Copy_Tree (Expr));
!                         else
!                            Set_Class_Postconditions (E, New_Copy_Tree (Expr));
!                         end if;
!                      end if;
                    end if;
  
!                   --  Build the precondition/postcondition pragma
! 
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Eloc,
!                          Chars      => Name_Check,
!                          Expression => Relocate_Expression (Expr))),
!                        Pragma_Name                => Pname);
! 
!                   Set_Is_Delayed_Aspect (Aspect);
! 
!                   --  For Pre/Post cases, insert immediately after the entity
!                   --  declaration, since that is the required pragma placement.
!                   --  Note that for these aspects, we do not have to worry
!                   --  about delay issues, since the pragmas themselves deal
!                   --  with delay of visibility for the expression analysis.
! 
!                   Insert_Pragma (Aitem);
! 
!                   goto Continue;
!                end Pre_Post;
  
!                --  Test_Case
  
!                when Aspect_Test_Case => Test_Case : declare
!                   Args      : List_Id;
!                   Comp_Expr : Node_Id;
!                   Comp_Assn : Node_Id;
  
!                begin
!                   Args := New_List;
  
!                   if Nkind (Parent (N)) = N_Compilation_Unit then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_N ("incorrect placement of aspect %", E);
!                      goto Continue;
!                   end if;
  
!                   if Nkind (Expr) /= N_Aggregate
!                     or else Null_Record_Present (Expr)
!                   then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_NE
!                        ("wrong syntax for aspect % for &", Id, E);
!                      goto Continue;
                    end if;
  
!                   --  Check that the expression is a proper aggregate (no
!                   --  parentheses).
  
                    if Paren_Count (Expr) /= 0 then
                       Error_Msg_F -- CODEFIX
                         ("redundant parentheses", Expr);
-                      goto Continue;
                    end if;
  
!                   --  Create the list of arguments for building the Test_Case
!                   --  pragma.
! 
!                   Comp_Expr := First (Expressions (Expr));
!                   while Present (Comp_Expr) loop
!                      Append_To (Args,
!                        Make_Pragma_Argument_Association (Sloc (Comp_Expr),
!                          Expression => Relocate_Node (Comp_Expr)));
!                      Next (Comp_Expr);
!                   end loop;
  
!                   Comp_Assn := First (Component_Associations (Expr));
!                   while Present (Comp_Assn) loop
!                      if List_Length (Choices (Comp_Assn)) /= 1
!                        or else
!                          Nkind (First (Choices (Comp_Assn))) /= N_Identifier
!                      then
!                         Error_Msg_Name_1 := Nam;
!                         Error_Msg_NE
!                           ("wrong syntax for aspect % for &", Id, E);
!                         goto Continue;
!                      end if;
  
!                      Append_To (Args,
!                        Make_Pragma_Argument_Association (Sloc (Comp_Assn),
!                          Chars      => Chars (First (Choices (Comp_Assn))),
!                          Expression =>
!                            Relocate_Node (Expression (Comp_Assn))));
!                      Next (Comp_Assn);
!                   end loop;
  
!                   --  Build the test-case pragma
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => Args,
!                      Pragma_Name                  => Name_Test_Case);
!                end Test_Case;
  
!                --  Contract_Cases
  
!                when Aspect_Contract_Cases =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Contract_Cases);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Exceptional_Cases
  
!                when Aspect_Exceptional_Cases =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Exceptional_Cases);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Exit_Cases
  
!                when Aspect_Exit_Cases =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Exit_Cases);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Program_Exit
  
!                when Aspect_Program_Exit =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Program_Exit);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Subprogram_Variant
  
!                when Aspect_Subprogram_Variant =>
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Subprogram_Variant);
  
!                   Decorate (Aspect, Aitem);
!                   Insert_Pragma (Aitem);
!                   goto Continue;
  
!                --  Case 5: Special handling for aspects with an optional
!                --  boolean argument.
  
!                --  In the delayed case, the corresponding pragma cannot be
!                --  generated yet because the evaluation of the boolean needs
!                --  to be delayed till the freeze point.
  
!                --  Super
  
!                when Aspect_Super => Super :
!                declare
!                   Analyze_Parameter_Expressions : constant Boolean := True;
!                   --  ???
!                   --  We can analyze actual parameter expressions here (with
!                   --  no context, like the operand of a type conversion),
!                   --  or leave them unanalyzed for now and catch problems
!                   --  when we analyze the generated constructor call
!                   --  (where overload resolution may provide context that
!                   --  resolves some ambiguities).
!                   --  For now, we analyze them here to avoid depending
!                   --  on legality checking performed during expansion.
!                   --  To reverse this decision, set this flag to False.
  
!                   procedure Check_Super_Arg
!                     (Expr : Node_Id; Aspect_Name : String := "Super")
!                     renames Check_Constructor_Initialization_Expression;
  
!                begin
!                   --  Error checking
  
!                   if not All_Extensions_Allowed then
!                      Error_Msg_Name_1 := Nam;
!                      Error_Msg_GNAT_Extension ("aspect %", Loc);
!                      goto Continue;
!                   end if;
  
!                   if Nkind (N) /= N_Subprogram_Body then
!                      Error_Msg_N ("Super must apply to a constructor body", N);
!                   end if;
  
!                   --  handle missing parameter list (an error case)
  
!                   if No (Expr) then
!                      Error_Msg_N ("constructor parameters required", N);
  
!                   --  Handle parameter list of length more than one
!                   --  (such a list is parsed as an aggregate).
  
!                   elsif Nkind (Expr) = N_Aggregate then
!                      if Present (Component_Associations (Expr))
!                        or else No (Expressions (Expr))
!                      then
!                         Error_Msg_N
!                           ("malformed constructor parameter list", N);
  
!                      elsif Analyze_Parameter_Expressions then
!                         declare
!                            Param_Expr : Node_Id := First (Expressions (Expr));
!                         begin
!                            while Present (Param_Expr) loop
!                               Analyze (Param_Expr);
!                               Check_Super_Arg (Param_Expr);
!                               Next (Param_Expr);
!                            end loop;
  
!                            Set_Analyzed (Expr);
!                            --  Someday Vast may complain that this so-called
!                            --  aggregate has no Etype. For now, we mark it
!                            --  as analyzed and hope that nobody trips over it.
!                         end;
!                      end if;
  
!                   --  handle parameter list of length one
  
!                   elsif Paren_Count (Expr) = 0 then
!                      Error_Msg_N
!                        ("parentheses missing for constructor parameter list ",
!                         N);
  
!                   elsif Analyze_Parameter_Expressions then
!                      Analyze (Expr);
!                      Check_Super_Arg (Expr);
!                   end if;
!                end Super;
  
!                when Boolean_Aspects
!                   | Library_Unit_Aspects
!                =>
!                   Set_Is_Boolean_Aspect (Aspect);
  
!                   --  Lock_Free aspect only apply to protected objects
  
!                   if A_Id = Aspect_Lock_Free then
!                      if Ekind (E) /= E_Protected_Type then
!                         Error_Msg_Name_1 := Nam;
!                         Error_Msg_N
!                           ("aspect % only applies to a protected type " &
!                            "or object",
!                            Aspect);
  
!                      else
!                         --  Set the Uses_Lock_Free flag to True if there is no
!                         --  expression or if the expression is True. The
!                         --  evaluation of this aspect should be delayed to the
!                         --  freeze point if we wanted to handle the corner case
!                         --  of "true" or "false" being redefined.
  
!                         if No (Expr)
!                           or else Is_True (Static_Boolean (Expr))
!                         then
!                            Set_Uses_Lock_Free (E);
!                         end if;
  
!                         Record_Rep_Item (E, Aspect);
!                      end if;
  
!                      goto Continue;
  
!                   elsif A_Id in Aspect_Export | Aspect_Import then
!                      Analyze_Aspect_Export_Import;
  
!                   --  Disable_Controlled
  
!                   elsif A_Id = Aspect_Disable_Controlled then
!                      Analyze_Aspect_Disable_Controlled;
!                      goto Continue;
  
!                   --  Ada 2022 (AI12-0129): Exclusive_Functions
  
!                   elsif A_Id = Aspect_Exclusive_Functions then
!                      if Ekind (E) /= E_Protected_Type then
!                         Error_Msg_Name_1 := Nam;
!                         Error_Msg_N
!                           ("aspect % only applies to a protected type " &
!                            "or object",
!                            Aspect);
!                      end if;
  
!                      goto Continue;
  
!                   --  Ada 2022 (AI12-0363): Full_Access_Only
  
!                   elsif A_Id = Aspect_Full_Access_Only then
!                      Error_Msg_Ada_2022_Feature ("aspect %", Loc);
  
!                   --  No_Controlled_Parts, No_Task_Parts
  
!                   elsif A_Id in Aspect_No_Controlled_Parts
!                               | Aspect_No_Task_Parts
!                   then
!                      Error_Msg_Name_1 := Nam;
  
!                      --  Disallow formal types
  
!                      if Nkind (Original_Node (N)) = N_Formal_Type_Declaration
!                      then
!                         Error_Msg_N
!                           ("aspect % not allowed for formal type declaration",
!                            Aspect);
  
!                      --  Disallow subtypes
  
!                      elsif Nkind (Original_Node (N)) = N_Subtype_Declaration
!                      then
!                         Error_Msg_N
!                           ("aspect % not allowed for subtype declaration",
!                            Aspect);
  
!                      --  Accept all other types
  
!                      elsif not Is_Type (E) then
!                         Error_Msg_N
!                           ("aspect % can only be specified for a type",
!                            Aspect);
!                      end if;
  
!                      --  Resolve the expression to a boolean
  
!                      if Present (Expr) then
!                         Check_Expr_Is_OK_Static_Expression (Expr, Any_Boolean);
!                      end if;
  
!                      --  Record the No_Task_Parts aspects as a rep item so it
!                      --  can be consistently looked up on the full view of the
!                      --  type.
  
!                      if Is_Private_Type (E) then
!                         Record_Rep_Item (E, Aspect);
!                      end if;
  
!                      goto Continue;
  
!                   --  Ada 2022 (AI12-0075): static expression functions
  
!                   elsif A_Id = Aspect_Static then
!                      Analyze_Aspect_Static;
!                      goto Continue;
  
!                   --  GNAT Core Extension: Checks for this aspect are performed
!                   --  when the corresponding pragma is analyzed.
  
!                   elsif A_Id = Aspect_Unsigned_Base_Range then
!                      null;
  
!                   --  Ada 2022 (AI12-0279)
  
!                   elsif A_Id = Aspect_Yield then
!                      Analyze_Aspect_Yield;
!                      goto Continue;
  
!                   --  Handle Boolean aspects equivalent to source pragmas which
!                   --  appears after the related object declaration.
  
!                   elsif A_Id in Aspect_Always_Terminates
!                               | Aspect_Async_Readers
!                               | Aspect_Async_Writers
!                               | Aspect_Constant_After_Elaboration
!                               | Aspect_Effective_Reads
!                               | Aspect_Effective_Writes
!                               | Aspect_Extensions_Visible
!                               | Aspect_Ghost
!                               | Aspect_No_Caching
!                               | Aspect_Side_Effects
!                               | Aspect_Volatile_Function
!                   then
!                      Aitem :=
!                        Make_Aitem_Pragma
!                          (Pragma_Argument_Associations => New_List (
!                             Make_Pragma_Argument_Association (Loc,
!                               Expression => Relocate_Node (Expr))),
!                           Pragma_Name                  => Nam);
!                      Decorate (Aspect, Aitem);
!                      Insert_Pragma (Aitem);
!                      goto Continue;
!                   end if;
  
!                   --  Library unit aspects require special handling in the case
!                   --  of a package declaration, the pragma needs to be inserted
!                   --  in the list of declarations for the associated package.
!                   --  There is no issue of visibility delay for these aspects.
  
!                   if A_Id in Library_Unit_Aspects
!                     and then
!                       Nkind (N) in N_Package_Declaration
!                                  | N_Generic_Package_Declaration
!                     and then Nkind (Parent (N)) /= N_Compilation_Unit
  
!                     --  Aspect is legal on a local instantiation of a library-
!                     --  level generic unit.
  
!                     and then not Is_Generic_Instance (Defining_Entity (N))
                    then
                       Error_Msg_N
!                        ("incorrect context for library unit aspect&", Id);
!                      goto Continue;
!                   end if;
! 
!                   --  Cases where we do not delay
! 
!                   if not Delay_Required then
! 
!                      --  Exclude aspects Export and Import because their pragma
!                      --  syntax does not map directly to a Boolean aspect.
! 
!                      if A_Id not in Aspect_Export | Aspect_Import then
!                         Aitem := Make_Aitem_Pragma
!                           (Pragma_Argument_Associations => New_List (
!                              Make_Pragma_Argument_Association (Sloc (Ent),
!                                Expression => Ent)),
!                            Pragma_Name                  => Nam);
!                      end if;
! 
!                      --  Minimum check of First_Controlling_Parameter aspect;
!                      --  the checks shared by the aspect and its corresponding
!                      --  pragma are performed when the pragma is analyzed.
! 
!                      if A_Id = Aspect_First_Controlling_Parameter then
!                         if Present (Expr) then
!                            Analyze (Expr);
!                         end if;
! 
!                         if (No (Expr) or else Entity (Expr) = Standard_True)
!                           and then not Core_Extensions_Allowed
!                         then
!                            Error_Msg_GNAT_Extension
!                              ("'First_'Controlling_'Parameter", Sloc (Aspect),
!                               Is_Core_Extension => True);
!                            goto Continue;
!                         end if;
! 
!                         if not (Is_Type (E)
!                                   and then
!                                     (Is_Tagged_Type (E)
!                                        or else Is_Concurrent_Type (E)))
!                         then
!                            Error_Msg_N
!                              ("aspect 'First_'Controlling_'Parameter can only "
!                               & "apply to tagged type or concurrent type",
!                               Aspect);
!                            goto Continue;
!                         end if;
! 
!                         if Present (Expr)
!                           and then Entity (Expr) = Standard_False
!                         then
!                            --  If the aspect is specified for a derived type,
!                            --  the specified value shall be confirming.
! 
!                            if Is_Derived_Type (E)
!                              and then Has_First_Controlling_Parameter_Aspect
!                                         (Etype (E))
!                            then
!                               Error_Msg_Name_1 := Nam;
!                               Error_Msg_N
!                                 ("specification of inherited True value for "
!                                    & "aspect% can only confirm parent value",
!                                  Id);
!                            end if;
! 
!                            goto Continue;
!                         end if;
! 
!                         --  Given that the aspect has been explicitly given,
!                         --  we take note to avoid checking for its implicit
!                         --  inheritance (see Analyze_Full_Type_Declaration).
! 
!                         Set_Has_First_Controlling_Parameter_Aspect (E);
!                      end if;
! 
!                   --  In general cases, the corresponding pragma/attribute
!                   --  definition clause will be inserted later at the freezing
!                   --  point, and we do not need to build it now.
! 
!                   else
!                      Aitem := Empty;
!                   end if;
! 
!                --  Storage_Size
! 
!                --  This is special because for access types we need to generate
!                --  an attribute definition clause. This also works for single
!                --  task declarations, but it does not work for task type
!                --  declarations, because we have the case where the expression
!                --  references a discriminant of the task type. That can't use
!                --  an attribute definition clause because we would not have
!                --  visibility on the discriminant. For that case we must
!                --  generate a pragma in the task definition.
! 
!                when Aspect_Storage_Size =>
! 
!                   --  Task type case
  
!                   if Ekind (E) = E_Task_Type then
                       declare
!                         Decl : constant Node_Id := Declaration_Node (E);
! 
                       begin
!                         pragma Assert (Nkind (Decl) = N_Task_Type_Declaration);
! 
!                         --  If no task definition, create one
! 
!                         if No (Task_Definition (Decl)) then
!                            Set_Task_Definition (Decl,
!                              Make_Task_Definition (Loc,
!                                Visible_Declarations => Empty_List,
!                                End_Label            => Empty));
!                         end if;
! 
!                         --  Create a pragma and put it at the start of the task
!                         --  definition for the task type declaration.
! 
!                         Aitem := Make_Aitem_Pragma
!                           (Pragma_Argument_Associations => New_List (
!                              Make_Pragma_Argument_Association (Loc,
!                                Expression => Relocate_Node (Expr))),
!                            Pragma_Name                  => Name_Storage_Size);
  
!                         Prepend
!                           (Aitem,
!                            Visible_Declarations (Task_Definition (Decl)));
!                         goto Continue;
                       end;
- 
-                   --  Generate an attribute definition for access types
- 
-                   elsif Is_Access_Type (E) then
-                      Aitem :=
-                        Make_Attribute_Definition_Clause (Loc,
-                          Name       => Ent,
-                          Chars      => Name_Storage_Size,
-                          Expression => Relocate_Node (Expr));
- 
-                   --  This is likely a misplaced aspect. Create a pragma to
-                   --  emit the actual error.
- 
-                   else
-                      Aitem :=
-                        Make_Aitem_Pragma
-                          (Pragma_Argument_Associations =>
-                             New_List
-                               (Make_Pragma_Argument_Association
-                                  (Loc, Expression => Relocate_Node (Expr))),
-                           Pragma_Name                  => Name_Storage_Size);
-                      Insert_Pragma (Aitem);
-                      goto Continue;
                    end if;
  
!                when Aspect_External_Initialization =>
!                   Error_Msg_GNAT_Extension
!                     ("External_Initialization aspect", Sloc (Aspect));
! 
!                   --  The External_Initialization aspect specifications that
!                   --  are attached to object declarations were already
!                   --  processed and detached from the list at an earlier stage,
!                   --  so we can only get here if the specification is not in an
!                   --  appropriate place.
  
                    Error_Msg_N
!                     ("External_Initialization aspect can only be specified " &
!                      "for object declarations", Aspect);
!             end case;
! 
!             --  Attach the corresponding pragma/attribute definition clause to
!             --  the aspect specification node.
  
!             if Present (Aitem) then
!                Set_From_Aspect_Specification (Aitem);
              end if;
  
!             --  For an aspect that applies to a type, indicate whether it
!             --  appears on a partial view of the type.
  
!             if Is_Type (E) and then Is_Private_Type (E) then
!                Set_Aspect_On_Partial_View (Aspect);
!             end if;
  
!             --  In the context of a compilation unit, we directly put the
!             --  pragma in the Pragmas_After list of the N_Compilation_Unit_Aux
!             --  node (no delay is required here) except for aspects on a
!             --  subprogram body (see below) and a generic package, for which we
!             --  need to introduce the pragma before building the generic copy
!             --  (see sem_ch12), and for package instantiations, where the
!             --  library unit pragmas are better handled early.
  
!             if Nkind (Parent (N)) = N_Compilation_Unit
!               and then (Present (Aitem) or else Is_Boolean_Aspect (Aspect))
!             then
                 declare
!                   Aux : constant Node_Id := Aux_Decls_Node (Parent (N));
  
                 begin
!                   pragma Assert (Nkind (Aux) = N_Compilation_Unit_Aux);
  
!                   --  For a Boolean aspect, create the corresponding pragma if
!                   --  no expression or if the value is True.
  
!                   if Is_Boolean_Aspect (Aspect) and then No (Aitem) then
!                      if Is_True (Static_Boolean (Expr)) then
!                         Aitem := Make_Aitem_Pragma
!                           (Pragma_Argument_Associations => New_List (
!                              Make_Pragma_Argument_Association (Sloc (Ent),
!                                Expression => Ent)),
!                            Pragma_Name                  => Nam);
  
!                         Set_From_Aspect_Specification (Aitem, True);
!                         Set_Corresponding_Aspect (Aitem, Aspect);
  
!                      else
!                         goto Continue;
!                      end if;
!                   end if;
  
!                   --  If the aspect is on a subprogram body (relevant aspect
!                   --  is Inline), add the pragma in front of the declarations.
  
!                   if Nkind (N) = N_Subprogram_Body then
!                      if No (Declarations (N)) then
!                         Set_Declarations (N, New_List);
!                      end if;
  
!                      if Present (Aitem) then
!                         Prepend (Aitem, Declarations (N));
!                      end if;
  
!                   elsif Nkind (N) = N_Generic_Package_Declaration then
!                      if No (Visible_Declarations (Specification (N))) then
!                         Set_Visible_Declarations (Specification (N), New_List);
!                      end if;
  
!                      Prepend (Aitem,
!                        Visible_Declarations (Specification (N)));
  
!                   elsif Nkind (N) = N_Package_Instantiation then
!                      declare
!                         Spec : constant Node_Id :=
!                                  Specification (Instance_Spec (N));
!                      begin
!                         if No (Visible_Declarations (Spec)) then
!                            Set_Visible_Declarations (Spec, New_List);
!                         end if;
  
!                         Prepend (Aitem, Visible_Declarations (Spec));
!                      end;
  
!                   else
!                      if No (Pragmas_After (Aux)) then
!                         Set_Pragmas_After (Aux, New_List);
!                      end if;
  
!                      Append (Aitem, Pragmas_After (Aux));
!                   end if;
  
!                   goto Continue;
!                end;
!             end if;
  
!             --  The evaluation of the aspect is delayed to the freezing point.
!             --  The pragma or attribute clause if there is one is then attached
!             --  to the aspect specification which is put in the rep item list.
  
!             if Delay_Required then
!                if Present (Aitem) then
!                   Set_Is_Delayed_Aspect (Aitem);
!                   Set_Aspect_Rep_Item (Aspect, Aitem);
!                   Set_Parent (Aitem, Aspect);
!                end if;
  
!                Set_Is_Delayed_Aspect (Aspect);
  
!                --  In the case of Default_Value, link the aspect to base type
!                --  as well, even though it appears on a first subtype. This is
!                --  mandated by the semantics of the aspect. Do not establish
!                --  the link when processing the base type itself as this leads
!                --  to a rep item circularity.
  
!                if A_Id = Aspect_Default_Value and then Base_Type (E) /= E then
!                   Set_Has_Delayed_Aspects (Base_Type (E));
!                   Record_Rep_Item (Base_Type (E), Aspect);
!                end if;
  
!                Set_Has_Delayed_Aspects (E);
!                Record_Rep_Item (E, Aspect);
  
!             --  When delay is not required and the context is a package or a
!             --  subprogram body, insert the pragma in the body declarations.
  
!             elsif Nkind (N) in N_Package_Body | N_Subprogram_Body then
!                if No (Declarations (N)) then
!                   Set_Declarations (N, New_List);
                 end if;
  
!                --  The pragma is added before source declarations
! 
!                if Present (Aitem) then
!                   Prepend_To (Declarations (N), Aitem);
                 end if;
  
!             --  When delay is not required and the context is not a compilation
!             --  unit, we simply insert the pragma/attribute definition clause
!             --  in sequence.
  
!             elsif Present (Aitem) then
!                Insert_After (Ins_Node, Aitem);
!                Ins_Node := Aitem;
!             end if;
  
!             <<Continue>>
  
!             --  If a nonoverridable aspect is explicitly specified for a
!             --  derived type, then check consistency with the parent type.
  
!             if A_Id in Nonoverridable_Aspect_Id
!               and then Nkind (N) = N_Full_Type_Declaration
!               and then Nkind (Type_Definition (N)) = N_Derived_Type_Definition
!               and then not In_Instance_Body
!             then
!                --  Locate the nearest ancestor type that has an explicit aspect
!                --  corresponding to E's aspect, and flag an error on that if
!                --  E's aspect does not confirm the aspect inherited from the
!                --  ancestor.
  
!                --  In order to locate the parent type we must go first to its
!                --  base type because the frontend introduces an implicit base
!                --  type even if there is no constraint attached to it, since
!                --  this is closer to the Ada semantics.
  
!                declare
!                   Ancestor_Type   : Entity_Id := Etype (Base_Type (E));
!                   Ancestor_Aspect : Node_Id   := Find_Aspect
!                                                    (Ancestor_Type, A_Id);
!                begin
!                   while Present (Ancestor_Aspect) loop
!                      if Comes_From_Source (Ancestor_Aspect)
!                        and then
!                          not Is_Confirming (A_Id, Ancestor_Aspect, Aspect)
!                      then
!                         Error_Msg_Name_1 := Aspect_Names (A_Id);
!                         Error_Msg_Sloc := Sloc (Ancestor_Aspect);
  
!                         Error_Msg_N
!                           ("overriding aspect specification for "
!                              & "nonoverridable aspect % does not confirm "
!                              & "aspect specification inherited from #",
!                            Aspect);
  
!                         exit;
!                      end if;
  
!                      if not Is_Derived_Type (Ancestor_Type) then
!                         exit;
!                      end if;
  
!                      Ancestor_Type := Etype (Base_Type (Ancestor_Type));
!                      Ancestor_Aspect := Find_Aspect (Ancestor_Type, A_Id);
!                   end loop;
!                end;
!             end if;
  
!          exception
!             when Aspect_Exit => null;
!          end Analyze_One_Aspect;
  
           Next (Aspect);
!       end loop Aspect_Loop;
  
        if Has_Delayed_Aspects (E) then
           Ensure_Freeze_Node (E);
--- 1999,5958 ----
        end if;
     end Analyze_Aspects_At_Freeze_Point;
  
!    ---------------------------
!    -- Decorate_Aspect_Links --
!    ---------------------------
  
!    procedure Decorate_Aspect_Links (Asp : Node_Id; Aitem : Node_Id) is
!    begin
!       pragma Assert
!         (Nkind (Aitem) in N_Pragma | N_Attribute_Definition_Clause);
  
!       if Nkind (Aitem) = N_Pragma then
!          pragma Assert (No (Corresponding_Aspect (Aitem)));
!          Set_Corresponding_Aspect (Aitem, Asp);
!          --  ???We should probably add this field to
!          --  N_Attribute_Definition_Clause, so we don't
!          --  need special cases like this.
!       end if;
  
!       pragma Assert (No (Aspect_Rep_Item (Asp)));
!       pragma Assert (not From_Aspect_Specification (Aitem));
!       pragma Assert (No (Parent (Aitem)));
  
!       Set_Aspect_Rep_Item (Asp, Aitem);
!       Set_From_Aspect_Specification (Aitem);
!       Set_Parent (Aitem, Asp);
!    end Decorate_Aspect_Links;
  
!    ------------------
!    -- Delay_Aspect --
!    ------------------
  
!    function Delay_Aspect
!      (A_Id : Aspect_Id; Expr : Node_Id; E : Entity_Id) return Boolean
!    is
!       Delay_Required : Boolean;
!    begin
!       case Aspect_Delay (A_Id) is
!          when Always_Delay =>
!             --  For Boolean aspects, do not delay if no expression
  
!             if A_Id in Boolean_Aspects then
!                Delay_Required := Present (Expr);
!             else
!                Delay_Required := True;
              end if;
  
!          when Never_Delay =>
!             Delay_Required := False;
  
!          when Rep_Aspect =>
!             pragma Assert (A_Id not in Library_Unit_Aspects);
  
!             --  For Boolean aspects, do not delay if no expression except
!             --  for Full_Access_Only because we need to process it after
!             --  Volatile and Atomic, which can be independently delayed.
  
!             if A_Id in Boolean_Aspects
!               and then A_Id /= Aspect_Full_Access_Only
!               and then No (Expr)
!             then
!                Delay_Required := False;
  
!             --  For non-Boolean aspects, if the expression has the form
!             --  of an integer literal, then do not delay, since we know
!             --  the value cannot change. This optimization catches most
!             --  rep clause cases. Likewise for a string literal.
  
!             elsif A_Id not in Boolean_Aspects
!               and then Present (Expr)
!               and then
!                 Nkind (Expr) in N_Integer_Literal | N_String_Literal
!             then
!                Delay_Required := False;
  
!             --  For Alignment and various Size aspects, do not delay for
!             --  an attribute reference whose prefix is Standard, for
!             --  example Standard'Maximum_Alignment or Standard'Word_Size.
  
!             elsif A_Id in Aspect_Alignment
!                         | Aspect_Component_Size
!                         | Aspect_Object_Size
!                         | Aspect_Size
!                         | Aspect_Value_Size
!               and then Present (Expr)
!               and then Nkind (Expr) = N_Attribute_Reference
!               and then Nkind (Prefix (Expr)) = N_Identifier
!               and then Chars (Prefix (Expr)) = Name_Standard
!             then
!                Delay_Required := False;
  
!             --  No need to delay the processing if the entity is already
!             --  frozen. This should only happen for subprogram bodies.
  
!             elsif A_Id = Aspect_Linker_Section and then Is_Frozen (E)
!             then
!                Delay_Required := False;
  
!             --  For Unsigned_Base_Range aspect, do not delay because we
!             --  need to process it before any type or subtype derivation
!             --  is analyzed.
  
!             elsif A_Id in Aspect_Unsigned_Base_Range then
!                Delay_Required := False;
  
!             --  All other cases are delayed
  
              else
!                Delay_Required := True;
              end if;
+       end case;
  
!       return Delay_Required;
!    end Delay_Aspect;
  
!    ------------------
!    -- Insert_Aitem --
!    ------------------
  
!    procedure Insert_Aitem
!      (N           : Node_Id;
!       Ins_Node    : in out Node_Id;
!       Aitem       : in out Node_Id;
!       Is_Instance : Boolean)
!    is
!       pragma Assert
!         (Nkind (Aitem) in N_Pragma | N_Attribute_Definition_Clause);
  
!       Decl  : Node_Id;
!       Def   : Node_Id;
!       Decls : List_Id; -- List on which to prepend Aitem, if any
  
!    begin
!       --  ???Preelaborate in a package body is illegal, but older compilers
!       --  accepted it, and put the pragma after the body (which is also
!       --  illegal, but not detected by GNAT), so we mimic that behavior.
!       --  This special case should be removed, in which case the pragma
!       --  will be placed inside the package body, and will correctly
!       --  generate an error:
!       --    aspect "Preelaborate" misplaced, must be on the package spec
!       --  Same for Pure.
  
!       if Nkind (N) in N_Package_Body
!         and then Nkind (Aitem) = N_Pragma
!         and then Get_Pragma_Id (Aitem) in Pragma_Preelaborate | Pragma_Pure
!       then
!          goto After;
!       end if;
  
!       --  In some cases, Aitem must be inserted INSIDE N, for example at the
!       --  beginning of the visible part of a package or protected type. In
!       --  other cases, Aitem goes AFTER N. The following inserts Aitem at
!       --  the appropriate place INSIDE N and jumps to <<Done>>, or else
!       --  jumps to <<After>>, where we insert Aitem AFTER N.
  
!       case Nkind (Aitem) is
!          when N_Attribute_Definition_Clause =>
!             goto After;
!          when N_Pragma =>
!             if Get_Pragma_Id (Aitem) in Pragma_First_Controlling_Parameter
!                                      | Pragma_Invariant | Pragma_Volatile
!             then
!                goto After;
              end if;
+          when others => raise Program_Error;
+       end case;
  
!       case Nkind (N) is
!          when N_Proper_Body | N_Entry_Body =>
!             if No (Declarations (N)) then
!                Set_Declarations (N, New_List);
!             end if;
!             Decls := Declarations (N);
  
!          when N_Package_Declaration | N_Generic_Package_Declaration
!             | N_Protected_Type_Declaration | N_Task_Type_Declaration
!          =>
!             case Nkind (N) is
!                when N_Generic_Package_Declaration | N_Package_Declaration =>
!                   Def := Specification (N);
!                when N_Protected_Type_Declaration =>
!                   if No (Protected_Definition (N)) then
!                      Set_Protected_Definition (N,
!                        Make_Protected_Definition (Sloc (N),
!                          Visible_Declarations => New_List));
!                   end if;
!                   Def := Protected_Definition (N);
!                when N_Task_Type_Declaration =>
!                   if No (Task_Definition (N)) then
!                      Set_Task_Definition (N,
!                        Make_Task_Definition (Sloc (N),
!                          Visible_Declarations => New_List));
!                   end if;
!                   Def := Task_Definition (N);
!                when others => raise Program_Error;
!             end case;
  
!             if No (Visible_Declarations (Def)) then
!                Set_Visible_Declarations (Def, New_List);
              end if;
              Decls := Visible_Declarations (Def);
  
!             --  The visible declarations of a generic instance have the
!             --  following structure:
  
!             --    <renamings of generic formals>
!             --    <renamings of internally-generated spec and body>
!             --    <first source declaration>
  
!             --  Insert the pragma before the first source declaration by
!             --  skipping the instance "header" to ensure proper visibility
!             --  of the formals.
  
!             if Is_Instance then
!                Decl := First (Decls);
!                while Present (Decl) loop
!                   if Comes_From_Source (Decl) then
!                      Insert_Before (Decl, Aitem);
!                      goto Done;
!                   end if;
  
!                   Next (Decl);
!                end loop;
! 
!                Append_To (Decls, Aitem); -- no source decls found
!                goto Done;
              end if;
  
!          when others => goto After;
!       end case;
  
!       Prepend_To (Decls, Aitem);
!       goto Done;
  
!       <<After>>
  
!       --  Here we insert Aitem AFTER N. For a compilation unit, that means
!       --  in the Pragmas_After field. For anything else, after N in some
!       --  list.
  
!       if Nkind (Parent (N)) = N_Compilation_Unit then
!          if No (Pragmas_After (Aux_Decls_Node (Parent (N)))) then
!             Set_Pragmas_After (Aux_Decls_Node (Parent (N)), New_List);
           end if;
  
!          Prepend_To (Pragmas_After (Aux_Decls_Node (Parent (N))), Aitem);
!          --  ???Should this be Append_To?
!       else
!          Insert_After (Ins_Node, Aitem);
  
!          --  The order shouldn't matter, but for Annotate, some tests fail
!          --  in minor ways if we don't use Ins_Node to make the order of
!          --  pragmas match the order of aspects. For some other aspects,
!          --  such as Pre, some tests fail if we DO use Ins_Node.
!          --  ???Consider getting rid of Ins_Node, and just doing
!          --  "Insert_After (N, Aitem);" above. Or consider always
!          --  updating Ins_Node below.
  
!          if Nkind (Aitem) = N_Pragma
!            and then Get_Pragma_Id (Aitem) = Pragma_Annotate
!          then
!             Ins_Node := Aitem;
!          end if;
!       end if;
  
!       <<Done>>
!       Aitem := Empty;
!    end Insert_Aitem;
  
!    -------------------------
!    -- Relocate_Expression --
!    -------------------------
  
+    function Relocate_Expression (Source : Node_Id) return Node_Id is
     begin
!       if Inside_A_Generic then
!          return Source;
!       else
!          return Atree.Relocate_Node (Source);
        end if;
+    end Relocate_Expression;
  
!    ------------------------
!    -- Analyze_One_Aspect --
!    ------------------------
  
!    procedure Analyze_One_Aspect
!      (N        : Node_Id;
!       Ins_Node : in out Node_Id;
!       E        : N_Entity_Id;
!       Aspect   : Node_Id)
!    is
!       Expr : constant Node_Id    := Expression (Aspect);
!       Id   : constant Node_Id    := Identifier (Aspect);
!       Loc  : constant Source_Ptr := Sloc (Aspect);
!       Nam  : constant Name_Id    := Chars (Id);
!       A_Id : constant Aspect_Id  := Get_Aspect_Id (Nam);
  
!       Aitem : Node_Id := Empty;
!       --  The associated N_Pragma or N_Attribute_Definition_Clause, if any
  
!       E_Ref : Node_Id;
!       --  An identifier that is a reference to E, or a 'Class thereof.
  
!       Delay_Required : Boolean := Delay_Aspect (A_Id, Expr, E);
!       --  Indicates delayed aspects. Note that this is somewhat of a misnomer:
!       --  False doesn't just mean delaying is optional; in some cases, it means
!       --  delaying won't work. Also, for aspects in Boolean_Aspects,
!       --  Always_Delay does not mean "always"; it means "almost never", because
!       --  such aspects are delayed only in the unusual case where Expr is
!       --  present.
  
!       procedure Insert_Aitem (Is_Instance : Boolean := False);
!       --  Wrapper for more-global Insert_Aitem; pass along additional
!       --  parameters. Call Decorate_Aspect_Links to attach Aspect and
!       --  Aitem in both directions.
  
!       procedure Analyze_Aspect_Convention;
!       procedure Analyze_Aspect_Disable_Controlled;
!       procedure Analyze_Aspect_Export_Import;
!       procedure Analyze_Aspect_External_Link_Name;
!       procedure Analyze_Aspect_Implicit_Dereference;
!       procedure Analyze_Aspect_Potentially_Invalid;
!       procedure Analyze_Aspect_Relaxed_Initialization;
!       procedure Analyze_Aspect_Static;
!       procedure Analyze_Aspect_Yield;
!       procedure Analyze_Boolean_Aspect;
  
!       procedure Check_Constructor_Choices (Choice_List : List_Id);
!       --  Check that each choice occurring in the aggregate of a
!       --  contructor Initialize aspect specification represents a
!       --  component that belongs to the current type, otherwise flag an
!       --  error as initialization of parent components is not permitted.
  
!       procedure Check_Constructor_Initialization_Expression
!         (Expr : Node_Id; Aspect : Name_Id);
!       --  Check legality rules for an expression occurring as
!       --  an expression of a Super or Initialize aspect specification.
!       --  These expressions are evaluated before the constructed
!       --  object has been initialized and therefore shall not
!       --  reference that object.
  
!       procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id);
!       --  If an Aspect is using an association with an Assertion_Level
!       --  analyze the aspect with the level and convert it into an aspect
!       --  without the Assertion_Level. In the case the aspect has
!       --  associations with Assertion_Levels then multiple aspects are
!       --  created and each one will point to the original aspect that
!       --  they were created from in the Original_Aspect field.
  
!       function Directly_Specified
!         (Id : Entity_Id; A : Aspect_Id) return Boolean;
!       --  Returns True if the given aspect is directly (as opposed to
!       --  via any form of inheritance) specified for the given entity.
  
!       procedure Make_Aitem_Pragma
!         (Pragma_Argument_Associations : List_Id;
!          Pragma_Name                  : Name_Id);
!       --  This is a wrapper for Make_Pragma used for converting aspects
!       --  to pragmas. It takes care of Sloc (set from Loc) and building
!       --  the pragma identifier from the given name. In addition
!       --  Class_Present and Is_Ignored are set from the aspect node.
!       --  The result is returned in Aitem, which must be initially Empty.
  
!       procedure Make_Aitem_Attr_Def
!         (E_Ref : Node_Id; Nam : Name_Id; Expr : Node_Id);
!       --  Similar to Make_Aitem_Pragma, but instead of creating a pragma, it
!       --  creates an attribute_definition_clause
  
!       -------------------------------
!       -- Analyze_Aspect_Convention --
!       -------------------------------
  
!       procedure Analyze_Aspect_Convention is
!          Conv    : Node_Id;
!          Dummy_1 : Node_Id;
!          Dummy_2 : Node_Id;
!          Dummy_3 : Node_Id;
!          Expo    : Node_Id;
!          Imp     : Node_Id;
  
!       begin
!          --  Obtain all interfacing aspects that apply to the related
!          --  entity.
  
!          Get_Interfacing_Aspects
!            (Iface_Asp => Aspect,
!             Conv_Asp  => Dummy_1,
!             EN_Asp    => Dummy_2,
!             Expo_Asp  => Expo,
!             Imp_Asp   => Imp,
!             LN_Asp    => Dummy_3,
!             Do_Checks => True);
  
!          --  The related entity is subject to aspect Export or Import.
!          --  Do not process Convention now because it must be analysed
!          --  as part of Export or Import.
  
!          if Present (Expo) or else Present (Imp) then
!             return;
  
!          --  Otherwise Convention appears by itself
  
!          else
!             --  The aspect specifies a particular convention
  
!             if Present (Expr) then
!                Conv := New_Copy_Tree (Expr);
  
!             --  Otherwise assume convention Ada
  
!             else
!                Conv := Make_Identifier (Loc, Name_Ada);
!             end if;
  
!             --  Generate:
!             --    pragma Convention (<Conv>, <E>);
  
!             Make_Aitem_Pragma
!               (Pragma_Name => Name_Convention,
!                Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Conv),
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => E_Ref)));
!             Insert_Aitem;
!          end if;
!       end Analyze_Aspect_Convention;
  
!       ---------------------------------------
!       -- Analyze_Aspect_Disable_Controlled --
!       ---------------------------------------
  
!       procedure Analyze_Aspect_Disable_Controlled is
!       begin
!          Error_Msg_Name_1 := Nam;
  
!          --  The aspect applies only to controlled records
  
!          if not (Ekind (E) = E_Record_Type
!                   and then Is_Controlled_Active (E))
!          then
!             Error_Msg_N
!               ("aspect % requires controlled record type", Aspect);
!             return;
!          end if;
  
!          --  Preanalyze the expression (if any) when the aspect resides
!          --  in a generic unit.
  
!          if Inside_A_Generic then
!             if Present (Expr) then
!                Preanalyze_And_Resolve (Expr, Any_Boolean);
!             end if;
  
!          --  Otherwise the aspect resides in a nongeneric context
  
!          else
!             --  A controlled record type loses its controlled semantics
!             --  when the expression statically evaluates to True.
  
!             if Present (Expr) then
!                Analyze_And_Resolve (Expr, Any_Boolean);
  
!                if Is_OK_Static_Expression (Expr) then
!                   if Is_True (Static_Boolean (Expr)) then
                       Set_Disable_Controlled (E);
                    end if;
  
!                --  Otherwise the expression is not static
  
!                else
!                   Flag_Non_Static_Expr
!                     ("expression of aspect % must be static!", Aspect);
                 end if;
  
!             --  Otherwise the aspect appears without an expression and
!             --  defaults to True.
  
!             else
!                Set_Disable_Controlled (E);
!             end if;
!          end if;
!       end Analyze_Aspect_Disable_Controlled;
  
!       ----------------------------------
!       -- Analyze_Aspect_Export_Import --
!       ----------------------------------
  
!       procedure Analyze_Aspect_Export_Import is
!          Dummy_1 : Node_Id;
!          Dummy_2 : Node_Id;
!          Dummy_3 : Node_Id;
!          Expo    : Node_Id;
!          Imp     : Node_Id;
  
!       begin
!          --  Obtain all interfacing aspects that apply to the related
!          --  entity.
  
!          Get_Interfacing_Aspects
!            (Iface_Asp => Aspect,
!             Conv_Asp  => Dummy_1,
!             EN_Asp    => Dummy_2,
!             Expo_Asp  => Expo,
!             Imp_Asp   => Imp,
!             LN_Asp    => Dummy_3,
!             Do_Checks => True);
  
!          --  The related entity cannot be subject to both aspects Export
!          --  and Import.
  
!          if Present (Expo) and then Present (Imp) then
!             Error_Msg_N
!               ("incompatible interfacing aspects given for &", E);
!             Error_Msg_Sloc := Sloc (Expo);
!             Error_Msg_N ("\aspect Export #", E);
!             Error_Msg_Sloc := Sloc (Imp);
!             Error_Msg_N ("\aspect Import #", E);
!          end if;
  
!          --  A variable is most likely modified from the outside. Take
!          --  the optimistic approach to avoid spurious errors.
  
!          if Ekind (E) = E_Variable then
!             Set_Never_Set_In_Source (E, False);
!          end if;
  
!          --  Resolve the expression of an Import or Export here, and
!          --  require it to be of type Boolean and static. This is not
!          --  quite right, because in general this should be delayed,
!          --  but that seems tricky for these, because normally Boolean
!          --  aspects are replaced with pragmas at the freeze point in
!          --  Make_Pragma_From_Boolean_Aspect.
  
!          if No (Expr)
!            or else Is_True (Static_Boolean (Expr))
!          then
!             if A_Id = Aspect_Import then
!                Set_Has_Completion (E);
  
!                --  Do not set Is_Imported on Exceptions, similarly
!                --  to Sem_Prag.Process_Import_Or_Interface.
  
!                if Ekind (E) /= E_Exception then
!                   Set_Is_Imported (E);
                 end if;
  
!                --  An imported object cannot be explicitly initialized
  
!                if Nkind (N) = N_Object_Declaration
!                  and then Present (Expression (N))
!                then
!                   Error_Msg_Sloc := Sloc (Defining_Identifier (N));
                    Error_Msg_N
!                     ("no initialization allowed for declaration of& #",
!                      Defining_Identifier (N));
                    Error_Msg_N
!                     ("imported entities cannot be initialized "
!                      & "(RM B.1(24))", Expression (N));
!                end if;
  
!             else
!                pragma Assert (A_Id = Aspect_Export);
!                Set_Is_Exported (E);
!             end if;
  
!             --  Create the proper form of pragma Export or Import taking
!             --  into account Conversion, External_Name, and Link_Name.
  
!             pragma Assert (No (Aitem));
!             Aitem := Build_Export_Import_Pragma (Aspect, E);
  
!          --  Otherwise the expression is either False or illegal. There
!          --  is no corresponding pragma.
  
!          else
!             pragma Assert (No (Aitem));
!          end if;
!       end Analyze_Aspect_Export_Import;
  
!       ---------------------------------------
!       -- Analyze_Aspect_External_Link_Name --
!       ---------------------------------------
  
!       procedure Analyze_Aspect_External_Link_Name is
!          Dummy_1 : Node_Id;
!          Dummy_2 : Node_Id;
!          Dummy_3 : Node_Id;
!          Expo    : Node_Id;
!          Imp     : Node_Id;
  
!       begin
!          --  Obtain all interfacing aspects that apply to the related
!          --  entity.
  
!          Get_Interfacing_Aspects
!            (Iface_Asp => Aspect,
!             Conv_Asp  => Dummy_1,
!             EN_Asp    => Dummy_2,
!             Expo_Asp  => Expo,
!             Imp_Asp   => Imp,
!             LN_Asp    => Dummy_3,
!             Do_Checks => True);
  
!          --  Ensure that aspect External_Name applies to aspect Export or
!          --  Import.
  
!          if A_Id = Aspect_External_Name then
!             if No (Expo) and then No (Imp) then
!                Error_Msg_N
!                  ("aspect External_Name requires aspect Import or "
!                   & "Export", Aspect);
!             end if;
  
!          --  Otherwise ensure that aspect Link_Name applies to aspect
!          --  Export or Import.
  
!          else
!             pragma Assert (A_Id = Aspect_Link_Name);
!             if No (Expo) and then No (Imp) then
!                Error_Msg_N
!                  ("aspect Link_Name requires aspect Import or Export",
!                   Aspect);
!             end if;
!          end if;
!       end Analyze_Aspect_External_Link_Name;
  
!       -----------------------------------------
!       -- Analyze_Aspect_Implicit_Dereference --
!       -----------------------------------------
  
!       procedure Analyze_Aspect_Implicit_Dereference is
!       begin
!          if not Is_Type (E) or else not Has_Discriminants (E) then
!             Error_Msg_N
!               ("aspect must apply to a type with discriminants", Expr);
  
!          elsif not Is_First_Subtype (E) then
!             Error_Msg_N
!               ("aspect not specifiable in a subtype declaration",
!                Aspect);
  
!          elsif not Is_Entity_Name (Expr) then
!             Error_Msg_N
!               ("aspect must name a discriminant of current type", Expr);
  
!          else
!             --  Discriminant type be an anonymous access type or an
!             --  anonymous access to subprogram.
  
!             --  Missing synchronized types???
  
!             declare
!                Disc : Entity_Id := First_Discriminant (E);
!             begin
!                while Present (Disc) loop
!                   if Chars (Expr) = Chars (Disc)
!                     and then Ekind (Etype (Disc)) in
!                       E_Anonymous_Access_Subprogram_Type |
!                       E_Anonymous_Access_Type
!                   then
!                      Set_Has_Implicit_Dereference (E);
!                      Set_Has_Implicit_Dereference (Disc);
!                      exit;
!                   end if;
  
!                   Next_Discriminant (Disc);
!                end loop;
  
!                --  Error if no proper access discriminant
  
!                if Present (Disc) then
!                   --  For a type extension, check whether parent has
!                   --  a reference discriminant, to verify that use is
!                   --  proper.
  
+                   if Is_Derived_Type (E)
+                     and then Has_Discriminants (Etype (E))
+                   then
                       declare
!                         Parent_Disc : constant Entity_Id :=
!                           Get_Reference_Discriminant (Etype (E));
                       begin
!                         if Present (Parent_Disc)
!                           and then Corresponding_Discriminant (Disc) /=
!                                      Parent_Disc
                          then
!                            Error_Msg_N
!                              ("reference discriminant does not match "
!                                 & "discriminant of parent type", Expr);
                          end if;
                       end;
                    end if;
  
!                else
!                   Error_Msg_NE
!                     ("not an access discriminant of&", Expr, E);
!                end if;
!             end;
!          end if;
  
!       end Analyze_Aspect_Implicit_Dereference;
  
!       ----------------------------------------
!       -- Analyze_Aspect_Potentially_Invalid --
!       ----------------------------------------
  
!       procedure Analyze_Aspect_Potentially_Invalid is
!          procedure Analyze_Aspect_Parameter
!            (Subp_Id : Entity_Id;
!             Param   : Node_Id;
!             Seen    : in out Elist_Id);
!          --  Analyze parameter that appears in the expression of the
!          --  aspect Potentially_Invalid.
  
!          ------------------------------
!          -- Analyze_Aspect_Parameter --
!          ------------------------------
  
!          procedure Analyze_Aspect_Parameter
!            (Subp_Id : Entity_Id;
!             Param   : Node_Id;
!             Seen    : in out Elist_Id)
!          is
!          begin
!             --  Set name of the aspect for error messages
!             Error_Msg_Name_1 := Nam;
  
!             --  The potentially invalid parameter is a formal parameter
  
!             if Nkind (Param) in N_Identifier | N_Expanded_Name then
!                Analyze (Param);
  
!                declare
!                   Item : constant Entity_Id := Entity (Param);
!                begin
!                   --  It must be a formal of the analyzed subprogram
  
!                   if Scope (Item) = Subp_Id then
  
!                      pragma Assert (Is_Formal (Item));
  
!                      --  It must not have scalar type
  
!                      if Is_Scalar_Type (Underlying_Type (Etype (Item)))
!                      then
!                         Error_Msg_N ("illegal aspect % item", Param);
!                         Error_Msg_N
!                           ("\item must not have scalar type", Param);
!                      end if;
  
!                      --  Detect duplicated items
  
!                      if Contains (Seen, Item) then
!                         Error_Msg_N ("duplicate aspect % item", Param);
!                      else
!                         Append_New_Elmt (Item, Seen);
!                      end if;
!                   else
!                      Error_Msg_N ("illegal aspect % item", Param);
!                   end if;
!                end;
  
!             --  The potentially invalid parameter is the function's
!             --  Result attribute.
  
!             elsif Is_Attribute_Result (Param) then
!                Analyze (Param);
  
!                declare
!                   Pref : constant Node_Id := Prefix (Param);
!                begin
!                   if Present (Pref)
!                     and then
!                       Nkind (Pref) in N_Identifier | N_Expanded_Name
!                     and then
!                       Entity (Pref) = Subp_Id
!                   then
!                      --  Detect duplicated items
  
!                      if Contains (Seen, Subp_Id) then
!                         Error_Msg_N ("duplicate aspect % item", Param);
!                      else
!                         Append_New_Elmt (Entity (Pref), Seen);
                       end if;
  
!                   else
!                      Error_Msg_N ("illegal aspect % item", Param);
!                   end if;
!                end;
!             else
!                Error_Msg_N ("illegal aspect % item", Param);
!             end if;
!          end Analyze_Aspect_Parameter;
  
!          --  Local variables
  
!          Seen : Elist_Id := No_Elist;
!          --  Items that appear in the potentially invalid aspect
!          --  expression of a subprogram; for detecting duplicates.
  
!          Restore_Scope : Boolean;
!          --  Will be set to True if we need to restore the scope table
!          --  after analyzing the aspect expression.
  
!       --  Start of processing for Analyze_Aspect_Potentially_Invalid
  
!       begin
!          --  Set name of the aspect for error messages
!          Error_Msg_Name_1 := Nam;
  
!          --  Annotation of a variable; no aspect expression is allowed
  
!          if Ekind (E) = E_Variable then
!             if Present (Expr) then
!                Error_Msg_N ("illegal aspect % expression", Expr);
!             end if;
  
!          --  Annotation of a constant; no aspect expression is allowed.
!          --  For a deferred constant, the aspect must be attached to the
!          --  partial view.
  
!          elsif Ekind (E) = E_Constant then
!             if Present (Incomplete_Or_Partial_View (E)) then
!                Error_Msg_N
!                  ("aspect % must apply to deferred constant", N);
  
!             elsif Present (Expr) then
!                Error_Msg_N ("illegal aspect % expression", Expr);
!             end if;
  
!          --  Annotation of a subprogram; aspect expression is required
  
!          elsif Is_Subprogram_Or_Entry (E)
!            or else Is_Generic_Subprogram (E)
!          then
  
!             --  Not allowed for renaming declarations. Examine the
!             --  original node because a subprogram renaming may have been
!             --  rewritten as a body.
  
!             if Nkind (Original_Node (N)) in N_Renaming_Declaration then
!                Error_Msg_N
!                  ("aspect % not allowed for renaming declaration",
!                   Aspect);
!             end if;
  
!             if Present (Expr) then
  
!                --  If we analyze subprogram body that acts as its own
!                --  spec, then the subprogram itself and its formals are
!                --  already installed; otherwise, we need to install them,
!                --  as they must be visible when analyzing the aspect
!                --  expression.
  
+                if In_Open_Scopes (E) then
+                   Restore_Scope := False;
                 else
!                   Restore_Scope := True;
!                   Push_Scope (E);
  
!                   --  Only formals of the subprogram itself can appear
!                   --  in Potentially_Invalid aspect expression, not
!                   --  formals of the enclosing generic unit. (This is
!                   --  different than in Precondition or Depends aspects,
!                   --  where both kinds of formals are allowed.)
  
!                   Install_Formals (E);
!                end if;
  
!                --  Aspect expression is either an aggregate with list of
!                --  parameters (and possibly the Result attribute for a
!                --  function).
  
!                if Nkind (Expr) = N_Aggregate then
  
!                   --  Component associations in the aggregate must be a
!                   --  parameter name followed by a static boolean
!                   --  expression.
  
+                   if Present (Component_Associations (Expr)) then
                       declare
!                         Assoc : Node_Id :=
!                           First (Component_Associations (Expr));
                       begin
!                         while Present (Assoc) loop
!                            if List_Length (Choices (Assoc)) = 1 then
!                               Analyze_Aspect_Parameter
!                                 (E, First (Choices (Assoc)), Seen);
  
!                               if Inside_A_Generic then
!                                  Preanalyze_And_Resolve
!                                    (Expression (Assoc), Any_Boolean);
!                               else
!                                  Analyze_And_Resolve
!                                    (Expression (Assoc), Any_Boolean);
!                               end if;
  
!                               if not Is_OK_Static_Expression
!                                 (Expression (Assoc))
!                               then
!                                  Error_Msg_Name_1 := Nam;
!                                  Flag_Non_Static_Expr
!                                    ("expression of aspect % " &
!                                     "must be static!", Aspect);
!                               end if;
  
                             else
!                               Error_Msg_Name_1 := Nam;
!                               Error_Msg_N
!                                 ("illegal aspect % expression", Expr);
                             end if;
!                            Next (Assoc);
!                         end loop;
                       end;
+                   end if;
  
!                   --  Expressions of the aggregate are parameter names
  
+                   if Present (Expressions (Expr)) then
                       declare
!                         Param : Node_Id := First (Expressions (Expr));
  
!                      begin
!                         while Present (Param) loop
!                            Analyze_Aspect_Parameter (E, Param, Seen);
!                            Next (Param);
!                         end loop;
                       end;
                    end if;
  
!                   --  Mark the aggregate expression itself as analyzed;
!                   --  its subexpressions were marked when they themselves
!                   --  were analyzed.
  
!                   Set_Analyzed (Expr);
  
!                --  Otherwise, it is a single name of a subprogram
!                --  parameter (or possibly the Result attribute for
!                --  a function).
  
!                else
!                   Analyze_Aspect_Parameter (E, Expr, Seen);
!                end if;
  
!                if Restore_Scope then
!                   End_Scope;
!                end if;
  
!             --  For instances of Ada.Unchecked_Conversion, allow a
!             --  parameterless aspect, as the 'Result attribute is not
!             --  defined there.
  
!             elsif Is_Unchecked_Conversion_Instance (E) then
!                null;
!             else
!                Error_Msg_N ("missing expression for aspect %", N);
!             end if;
  
!          else
!             Error_Msg_N ("inappropriate entity for aspect %", E);
!          end if;
!       end Analyze_Aspect_Potentially_Invalid;
  
!       -------------------------------------------
!       -- Analyze_Aspect_Relaxed_Initialization --
!       -------------------------------------------
  
!       procedure Analyze_Aspect_Relaxed_Initialization is
!          procedure Analyze_Relaxed_Parameter
!            (Subp_Id : Entity_Id;
!             Param   : Node_Id;
!             Seen    : in out Elist_Id);
!          --  Analyze parameter that appears in the expression of the
!          --  aspect Relaxed_Initialization.
  
!          -------------------------------
!          -- Analyze_Relaxed_Parameter --
!          -------------------------------
  
!          procedure Analyze_Relaxed_Parameter
!            (Subp_Id : Entity_Id;
!             Param   : Node_Id;
!             Seen    : in out Elist_Id)
!          is
!          begin
!             --  Set name of the aspect for error messages
!             Error_Msg_Name_1 := Nam;
  
!             --  The relaxed parameter is a formal parameter
  
!             if Nkind (Param) in N_Identifier | N_Expanded_Name then
!                Analyze (Param);
  
!                declare
!                   Item : constant Entity_Id := Entity (Param);
!                begin
!                   --  It must be a formal of the analyzed subprogram
  
!                   if Scope (Item) = Subp_Id then
  
!                      pragma Assert (Is_Formal (Item));
  
!                      --  It must not have scalar or access type
  
!                      if Is_Elementary_Type (Etype (Item)) then
!                         Error_Msg_N ("illegal aspect % item", Param);
!                         Error_Msg_N
!                           ("\item must not have elementary type", Param);
                       end if;
  
!                      --  Detect duplicated items
  
+                      if Contains (Seen, Item) then
+                         Error_Msg_N ("duplicate aspect % item", Param);
                       else
!                         Append_New_Elmt (Item, Seen);
                       end if;
                    else
!                      Error_Msg_N ("illegal aspect % item", Param);
                    end if;
+                end;
  
!             --  The relaxed parameter is the function's Result attribute
  
!             elsif Is_Attribute_Result (Param) then
!                Analyze (Param);
  
!                declare
!                   Pref : constant Node_Id := Prefix (Param);
                 begin
!                   if Present (Pref)
!                     and then
!                       Nkind (Pref) in N_Identifier | N_Expanded_Name
!                     and then
!                       Entity (Pref) = Subp_Id
!                   then
!                      --  Function result must not have scalar or access
!                      --  type.
  
!                      if Is_Elementary_Type (Etype (Pref)) then
!                         Error_Msg_N ("illegal aspect % item", Param);
!                         Error_Msg_N
!                           ("\function result must not have elementary"
!                            & " type", Param);
!                      end if;
  
!                      --  Detect duplicated items
  
!                      if Contains (Seen, Subp_Id) then
!                         Error_Msg_N ("duplicate aspect % item", Param);
!                      else
!                         Append_New_Elmt (Entity (Pref), Seen);
!                      end if;
  
!                   else
!                      Error_Msg_N ("illegal aspect % item", Param);
!                   end if;
!                end;
!             else
!                Error_Msg_N ("illegal aspect % item", Param);
!             end if;
!          end Analyze_Relaxed_Parameter;
  
!          --  Local variables
  
!          Seen : Elist_Id := No_Elist;
!          --  Items that appear in the relaxed initialization aspect
!          --  expression of a subprogram; for detecting duplicates.
  
!          Restore_Scope : Boolean;
!          --  Will be set to True if we need to restore the scope table
!          --  after analyzing the aspect expression.
  
!          Prev_Id : Entity_Id;
  
!       --  Start of processing for Analyze_Aspect_Relaxed_Initialization
  
!       begin
!          --  Set name of the aspect for error messages
!          Error_Msg_Name_1 := Nam;
  
!          --  Annotation of a type; no aspect expression is allowed.
!          --  For a private type, the aspect must be attached to the
!          --  partial view.
!          --
!          --  ??? Once the exact rule for this aspect is ready, we will
!          --  likely reject concurrent types, etc., so let's keep the code
!          --  for types and variable separate.
  
!          if Is_First_Subtype (E) then
!             Prev_Id := Incomplete_Or_Partial_View (E);
!             if Present (Prev_Id) then
  
!                --  Aspect may appear on the full view of an incomplete
!                --  type because the incomplete declaration cannot have
!                --  any aspects.
  
!                if Ekind (Prev_Id) = E_Incomplete_Type then
!                   null;
!                else
!                   Error_Msg_N ("aspect % must apply to partial view", N);
!                end if;
  
!             elsif Present (Expr) then
!                Error_Msg_N ("illegal aspect % expression", Expr);
!             end if;
  
!          --  Annotation of a variable; no aspect expression is allowed
  
!          elsif Ekind (E) = E_Variable then
!             if Present (Expr) then
!                Error_Msg_N ("illegal aspect % expression", Expr);
!             end if;
  
!          --  Annotation of a constant; no aspect expression is allowed.
!          --  For a deferred constant, the aspect must be attached to the
!          --  partial view.
  
!          elsif Ekind (E) = E_Constant then
!             if Present (Incomplete_Or_Partial_View (E)) then
!                Error_Msg_N
!                  ("aspect % must apply to deferred constant", N);
  
!             elsif Present (Expr) then
!                Error_Msg_N ("illegal aspect % expression", Expr);
!             end if;
  
!          --  Annotation of a subprogram; aspect expression is required
  
!          elsif Is_Subprogram_Or_Entry (E)
!            or else Is_Generic_Subprogram (E)
!          then
!             if Present (Expr) then
  
!                --  If we analyze subprogram body that acts as its own
!                --  spec, then the subprogram itself and its formals are
!                --  already installed; otherwise, we need to install them,
!                --  as they must be visible when analyzing the aspect
!                --  expression.
  
!                if In_Open_Scopes (E) then
!                   Restore_Scope := False;
!                else
!                   Restore_Scope := True;
!                   Push_Scope (E);
  
!                   --  Only formals of the subprogram itself can appear
!                   --  in Relaxed_Initialization aspect expression, not
!                   --  formals of the enclosing generic unit. (This is
!                   --  different than in Precondition or Depends aspects,
!                   --  where both kinds of formals are allowed.)
  
!                   Install_Formals (E);
                 end if;
  
!                --  Aspect expression is either an aggregate with list of
!                --  parameters (and possibly the Result attribute for a
!                --  function).
  
!                if Nkind (Expr) = N_Aggregate then
  
!                   --  Component associations in the aggregate must be a
!                   --  parameter name followed by a static boolean
!                   --  expression.
  
!                   if Present (Component_Associations (Expr)) then
!                      declare
!                         Assoc : Node_Id :=
!                           First (Component_Associations (Expr));
!                      begin
!                         while Present (Assoc) loop
!                            if List_Length (Choices (Assoc)) = 1 then
!                               Analyze_Relaxed_Parameter
!                                 (E, First (Choices (Assoc)), Seen);
  
!                               if Inside_A_Generic then
!                                  Preanalyze_And_Resolve
!                                    (Expression (Assoc), Any_Boolean);
!                               else
!                                  Analyze_And_Resolve
!                                    (Expression (Assoc), Any_Boolean);
!                               end if;
  
!                               if not Is_OK_Static_Expression
!                                 (Expression (Assoc))
!                               then
!                                  Error_Msg_Name_1 := Nam;
!                                  Flag_Non_Static_Expr
!                                    ("expression of aspect % " &
!                                     "must be static!", Aspect);
!                               end if;
  
!                            else
!                               Error_Msg_Name_1 := Nam;
!                               Error_Msg_N
!                                 ("illegal aspect % expression", Expr);
!                            end if;
!                            Next (Assoc);
!                         end loop;
!                      end;
                    end if;
  
!                   --  Expressions of the aggregate are parameter names
  
!                   if Present (Expressions (Expr)) then
!                      declare
!                         Param : Node_Id := First (Expressions (Expr));
  
!                      begin
!                         while Present (Param) loop
!                            Analyze_Relaxed_Parameter (E, Param, Seen);
!                            Next (Param);
!                         end loop;
!                      end;
!                   end if;
  
!                   --  Mark the aggregate expression itself as analyzed;
!                   --  its subexpressions were marked when they themselves
!                   --  were analyzed.
  
!                   Set_Analyzed (Expr);
! 
!                --  Otherwise, it is a single name of a subprogram
!                --  parameter (or possibly the Result attribute for
!                --  a function).
  
                 else
!                   Analyze_Relaxed_Parameter (E, Expr, Seen);
                 end if;
  
!                if Restore_Scope then
!                   End_Scope;
!                end if;
!             else
!                Error_Msg_N ("missing expression for aspect %", N);
!             end if;
  
!          else
!             Error_Msg_N ("inappropriate entity for aspect %", E);
!          end if;
!       end Analyze_Aspect_Relaxed_Initialization;
  
!       ---------------------------
!       -- Analyze_Aspect_Static --
!       ---------------------------
  
!       procedure Analyze_Aspect_Static is
!          function Has_Convention_Intrinsic (L : List_Id) return Boolean;
!          --  Return True if L contains a pragma argument association
!          --  node representing a convention Intrinsic.
  
!          ------------------------------
!          -- Has_Convention_Intrinsic --
!          ------------------------------
  
!          function Has_Convention_Intrinsic
!            (L : List_Id) return Boolean
!          is
!             Arg : Node_Id := First (L);
!          begin
!             while Present (Arg) loop
!                if Nkind (Arg) = N_Pragma_Argument_Association
!                  and then Chars (Arg) = Name_Convention
!                  and then Chars (Expression (Arg)) = Name_Intrinsic
                 then
!                   return True;
                 end if;
  
!                Next (Arg);
!             end loop;
  
!             return False;
!          end Has_Convention_Intrinsic;
  
!          Is_Imported_Intrinsic : Boolean;
  
!       begin
!          if Ada_Version < Ada_2022 then
!             Error_Msg_Ada_2022_Feature ("aspect %", Loc);
!             return;
!          end if;
  
!          Is_Imported_Intrinsic := Is_Imported (E)
!            and then
!              Has_Convention_Intrinsic
!                (Pragma_Argument_Associations (Import_Pragma (E)));
  
!          --  The aspect applies only to expression functions that
!          --  statisfy the requirements for a static expression function
!          --  (such as having an expression that is predicate-static) as
!          --  well as Intrinsic imported functions as a -gnatX extension.
  
!          if not Is_Expression_Function (E)
!            and then
!              not (All_Extensions_Allowed and then Is_Imported_Intrinsic)
!          then
!             if All_Extensions_Allowed then
!                Error_Msg_N
!                  ("aspect % requires intrinsic or expression function",
!                   Aspect);
  
!             elsif Is_Imported_Intrinsic then
!                Error_Msg_GNAT_Extension
!                  ("aspect % on intrinsic function", Loc,
!                   Is_Core_Extension => True);
  
!             else
!                Error_Msg_N
!                  ("aspect % requires expression function", Aspect);
!             end if;
  
!             return;
  
!          --  Ada 2022 (AI12-0075): Check that the function satisfies
!          --  several requirements of static functions as specified in
!          --  RM 6.8(5.1-5.8). Note that some of the requirements given
!          --  there are checked elsewhere.
  
!          else
!             --  The expression of the expression function must be a
!             --  potentially static expression (RM 2022 6.8(3.2-3.4)).
!             --  That's checked in Sem_Ch6.Analyze_Expression_Function.
  
!             --  The function must not contain any calls to itself, which
!             --  is checked in Sem_Res.Resolve_Call.
  
!             --  Each formal must be of mode in and have a static subtype
  
!             declare
!                Formal : Entity_Id := First_Formal (E);
              begin
!                while Present (Formal) loop
!                   if Ekind (Formal) /= E_In_Parameter then
                       Error_Msg_N
!                        ("aspect % requires formals of mode IN",
!                         Aspect);
  
!                      return;
                    end if;
  
!                   if not Is_Static_Subtype (Etype (Formal)) then
!                      Error_Msg_N
!                        ("aspect % requires formals with static subtypes",
!                         Aspect);
  
!                      return;
!                   end if;
  
!                   Next_Formal (Formal);
                 end loop;
!             end;
  
!             --  The function's result subtype must be a static subtype
  
!             if not Is_Static_Subtype (Etype (E)) then
!                Error_Msg_N
!                  ("aspect % requires function with result of "
!                   & "a static subtype",
!                   Aspect);
  
!                return;
!             end if;
  
!             --  Check that the function does not have any applicable
!             --  precondition or postcondition expression.
  
!             for Asp in Pre_Post_Aspects loop
!                if Has_Aspect (E, Asp) then
!                   Error_Msg_Name_1 := Aspect_Names (Asp);
!                   Error_Msg_N
!                     ("aspect % is not allowed for a static "
!                      & "expression function",
!                      Find_Aspect (E, Asp));
  
!                   return;
                 end if;
+             end loop;
  
!             --  ??? Must check that "for result type R, if the
!             --  function is a boundary entity for type R (see 7.3.2),
!             --  no type invariant applies to type R; if R has a
!             --  component type C, a similar rule applies to C."
!          end if;
  
!          --  When the expression is present, it must be static. If it
!          --  evaluates to True, the expression function is treated as
!          --  a static function. Otherwise the aspect appears without
!          --  an expression and defaults to True.
  
!          if Present (Expr) then
!             --  Preanalyze the expression when the aspect resides in a
!             --  generic unit. (Is this generic-related code necessary
!             --  for this aspect? It's modeled on what's done for aspect
!             --  Disable_Controlled. ???)
  
!             if Inside_A_Generic then
!                Preanalyze_And_Resolve (Expr, Any_Boolean);
  
!             --  Otherwise the aspect resides in a nongeneric context
  
!             else
!                Analyze_And_Resolve (Expr, Any_Boolean);
  
!                --  Error if the boolean expression is not static
  
!                if not Is_OK_Static_Expression (Expr) then
!                   Flag_Non_Static_Expr
!                     ("expression of aspect % must be static!", Aspect);
!                end if;
              end if;
+          end if;
+       end Analyze_Aspect_Static;
  
!       --------------------------
!       -- Analyze_Aspect_Yield --
!       --------------------------
  
!       procedure Analyze_Aspect_Yield is
!          Expr_Value : Boolean := False;
  
!       begin
!          --  Check valid entity for 'Yield
  
!          if (Is_Subprogram (E)
!                or else Is_Generic_Subprogram (E)
!                or else Is_Entry (E))
!            and then not Within_Protected_Type (E)
!          then
!             null;
  
!          elsif Within_Protected_Type (E) then
!             Error_Msg_N
!               ("aspect% not applicable to protected operation", Id);
!             return;
  
!          else
!             Error_Msg_N
!               ("aspect% only applicable to subprogram and entry "
!                & "declarations", Id);
!             return;
!          end if;
  
!          --  Evaluate its static expression (if available); otherwise it
!          --  defaults to True.
  
!          if No (Expr) then
!             Expr_Value := True;
  
!          --  Otherwise it must have a static boolean expression
  
!          else
!             if Inside_A_Generic then
!                Preanalyze_And_Resolve (Expr, Any_Boolean);
!             else
!                Analyze_And_Resolve (Expr, Any_Boolean);
              end if;
  
!             if Is_OK_Static_Expression (Expr) then
!                if Is_True (Static_Boolean (Expr)) then
!                   Expr_Value := True;
!                end if;
!             else
!                Flag_Non_Static_Expr
!                  ("expression of aspect % must be static!", Aspect);
              end if;
+          end if;
  
!          if Expr_Value then
!             Set_Has_Yield_Aspect (E);
!          end if;
  
!          --  If the Yield aspect is specified for a dispatching
!          --  subprogram that inherits the aspect, the specified
!          --  value shall be confirming.
  
!          if Present (Expr)
!            and then Is_Dispatching_Operation (E)
!            and then Present (Overridden_Operation (E))
!            and then Has_Yield_Aspect (Overridden_Operation (E))
!                       /= Is_True (Static_Boolean (Expr))
!          then
!             Error_Msg_N ("specification of inherited aspect% can only " &
!                          "confirm parent value", Id);
!          end if;
!       end Analyze_Aspect_Yield;
  
!       ----------------------------
!       -- Analyze_Boolean_Aspect --
!       ----------------------------
  
!       procedure Analyze_Boolean_Aspect is
!       begin
!          case Boolean_Aspects'(A_Id) is
!             when Aspect_Asynchronous
!                | Aspect_Atomic
!                | Aspect_Atomic_Components
!                | Aspect_CUDA_Device
!                | Aspect_CUDA_Global
!                | Aspect_Discard_Names
!                | Aspect_Extended_Access
!                | Aspect_Favor_Top_Level
!                | Aspect_Independent
!                | Aspect_Independent_Components
!                | Aspect_Inline
!                | Aspect_Inline_Always
!                | Aspect_Interrupt_Handler
!                | Aspect_No_Inline
!                | Aspect_No_Raise
!                | Aspect_No_Return
!                | Aspect_No_Tagged_Streams
!                | Aspect_Pack
!                | Aspect_Persistent_BSS
!                | Aspect_Preelaborable_Initialization
!                | Aspect_Pure_Function
!                | Aspect_Remote_Access_Type
!                | Aspect_Shared
!                | Aspect_Simple_Storage_Pool_Type
!                | Aspect_Suppress_Debug_Info
!                | Aspect_Suppress_Initialization
!                | Aspect_Thread_Local_Storage
!                | Aspect_Unchecked_Union
!                | Aspect_Universal_Aliasing
!                | Aspect_Unmodified
!                | Aspect_Unreferenced
!                | Aspect_Unreferenced_Objects
!                | Aspect_Volatile
!                | Aspect_Volatile_Components
!                | Aspect_Volatile_Full_Access
!             => null;
  
!             --  Lock_Free aspect only applies to protected types and objects
  
!             when Aspect_Lock_Free =>
!                if Ekind (E) /= E_Protected_Type then
!                   Error_Msg_Name_1 := Nam;
!                   Error_Msg_N
!                     ("aspect % only applies to a protected type " &
!                      "or object",
!                      Aspect);
  
!                else
!                   --  Set the Uses_Lock_Free flag to True if there is no
!                   --  expression or if the expression is True. The
!                   --  evaluation of this aspect should be delayed to the
!                   --  freeze point if we wanted to handle the corner case
!                   --  of "true" or "false" being redefined.
  
!                   if No (Expr)
!                     or else Is_True (Static_Boolean (Expr))
                    then
!                      Set_Uses_Lock_Free (E);
                    end if;
  
!                   Record_Rep_Item (E, Aspect);
!                   Delay_Required := False;
!                end if;
  
!                goto Boolean_Aspect_Done;
  
!             when Aspect_Disable_Controlled =>
!                Analyze_Aspect_Disable_Controlled;
!                goto Boolean_Aspect_Done;
  
!             --  Ada 2022 (AI12-0129): Exclusive_Functions
  
!             when Aspect_Exclusive_Functions =>
!                if Ekind (E) /= E_Protected_Type then
!                   Error_Msg_Name_1 := Nam;
                    Error_Msg_N
!                     ("aspect % only applies to a protected type " &
!                      "or object",
                       Aspect);
                 end if;
  
!                goto Boolean_Aspect_Done;
  
!             --  No_Controlled_Parts, No_Task_Parts
! 
!             when Aspect_No_Controlled_Parts | Aspect_No_Task_Parts =>
!                Error_Msg_Name_1 := Nam;
! 
!                --  Disallow formal types
  
                 if Nkind (Original_Node (N)) = N_Formal_Type_Declaration then
!                   Error_Msg_N
!                     ("aspect % not allowed for formal type declaration",
!                      Aspect);
  
!                --  Disallow subtypes
  
!                elsif Nkind (Original_Node (N)) = N_Subtype_Declaration then
!                   Error_Msg_N
!                     ("aspect % not allowed for subtype declaration",
!                      Aspect);
  
!                --  Accept all other types
  
!                elsif not Is_Type (E) then
!                   Error_Msg_N
!                     ("aspect % can only be specified for a type",
!                      Aspect);
!                end if;
  
!                --  Resolve the expression to a boolean, and check
!                --  staticness.
  
!                if Present (Expr) and then
!                  Is_OK_Static_Expression_Of_Type (Expr, Any_Boolean) =
!                    Not_Static
!                then
!                   Error_Msg_Name_1 := Nam;
!                   Flag_Non_Static_Expr
!                     ("entity for aspect% must be a static expression!",
!                      Expr); -- why "entity"???
!                end if;
  
!                --  Record the No_Task_Parts aspects as a rep item so it
!                --  can be consistently looked up on the full view of the
!                --  type.
  
!                if Is_Private_Type (E) then
!                   Record_Rep_Item (E, Aspect);
                    Delay_Required := False;
+                end if;
  
!                goto Boolean_Aspect_Done;
  
!             --  Ada 2022 (AI12-0075): static expression functions
  
!             when Aspect_Static =>
!                Analyze_Aspect_Static;
!                goto Boolean_Aspect_Done;
  
!             --  Ada 2022 (AI12-0279)
  
!             when Aspect_Yield =>
!                Analyze_Aspect_Yield;
!                goto Boolean_Aspect_Done;
  
!             --  Handle Boolean aspects equivalent to source pragmas which
!             --  appears after the related object declaration.
  
!             when Aspect_Always_Terminates
!                | Aspect_Async_Readers
!                | Aspect_Async_Writers
!                | Aspect_Constant_After_Elaboration
!                | Aspect_Effective_Reads
!                | Aspect_Effective_Writes
!                | Aspect_Extensions_Visible
!                | Aspect_Ghost
!                | Aspect_No_Caching
!                | Aspect_Side_Effects
!                | Aspect_Volatile_Function
!             =>
!                Make_Aitem_Pragma
!                    (Pragma_Argument_Associations => New_List (
!                       Make_Pragma_Argument_Association (Loc,
!                         Expression => Relocate_Node (Expr))),
!                     Pragma_Name                  => Nam);
!                Insert_Aitem;
!                goto Boolean_Aspect_Done;
  
!             when Aspect_Export | Aspect_Import =>
!                Analyze_Aspect_Export_Import;
  
!             --  Ada 2022 (AI12-0363): Full_Access_Only
  
!             when Aspect_Full_Access_Only =>
!                Error_Msg_Ada_2022_Feature ("aspect %", Loc);
  
!             --  GNAT Core Extension: Checks for this aspect are performed
!             --  when the corresponding pragma is analyzed; if aspect has
!             --  no effect, pragma generation is skipped.
  
!             when Aspect_Unsigned_Base_Range =>
!                if Present (Expr) then
!                   Analyze_And_Resolve (Expr, Standard_Boolean);
  
!                   if Is_False (Static_Boolean (Expr)) then
!                      goto Boolean_Aspect_Done;
!                   end if;
!                end if;
  
!             --  Minimum check of First_Controlling_Parameter aspect;
!             --  the checks shared by the aspect and its corresponding
!             --  pragma are performed when the pragma is analyzed.
  
!             when Aspect_First_Controlling_Parameter =>
!                if Present (Expr) then
!                   Analyze (Expr);
!                end if;
  
!                if (No (Expr) or else Entity (Expr) = Standard_True)
!                  and then not Core_Extensions_Allowed
!                then
!                   Error_Msg_GNAT_Extension
!                     ("'First_'Controlling_'Parameter", Sloc (Aspect),
!                      Is_Core_Extension => True);
  
!                elsif not (Is_Type (E)
!                          and then
!                            (Is_Tagged_Type (E)
!                               or else Is_Concurrent_Type (E)))
!                then
!                   Error_Msg_N
!                     ("aspect 'First_'Controlling_'Parameter can only "
!                      & "apply to tagged type or concurrent type",
!                      Aspect);
  
!                elsif Present (Expr)
!                  and then Entity (Expr) = Standard_False
!                then
!                   --  If the aspect is specified for a derived type,
!                   --  the specified value shall be confirming.
  
!                   if Is_Derived_Type (E)
!                     and then Has_First_Controlling_Parameter_Aspect
!                                (Etype (E))
                    then
+                      Error_Msg_Name_1 := Nam;
                       Error_Msg_N
!                        ("specification of inherited True value for "
!                           & "aspect% can only confirm parent value",
!                         Id);
                    end if;
  
!                   goto Boolean_Aspect_Done;
  
!                else
!                   --  Given that the aspect has been explicitly given,
!                   --  we take note to avoid checking for its implicit
!                   --  inheritance (see Analyze_Full_Type_Declaration).
  
!                   Set_Has_First_Controlling_Parameter_Aspect (E);
!                end if;
  
!             --  Library unit aspects require special handling in the case
!             --  of a package declaration, the pragma needs to be inserted
!             --  in the list of declarations for the associated package.
!             --  There is no issue of visibility delay for these aspects.
  
!             when Library_Unit_Aspects =>
!                if Nkind (N) in N_Package_Declaration
!                              | N_Generic_Package_Declaration
!                  and then Nkind (Parent (N)) /= N_Compilation_Unit
  
!                  --  Aspect is legal on a local instantiation of a library-
!                  --  level generic unit.
  
!                  and then not Is_Generic_Instance (Defining_Entity (N))
!                then
!                   Error_Msg_N
!                     ("incorrect context for library unit aspect&", Id);
!                   goto Boolean_Aspect_Done;
!                end if;
!          end case;
  
!          --  Skip further processing in case of error, except continue
!          --  processing for Pure and Preelaborate.
  
!          if not Error_Posted (Aspect)
!            or else A_Id in Aspect_Pure | Aspect_Preelaborate
!            --  See ACATS ba21005 below.
!          then
!             --  Exclude aspects Export and Import because their pragma
!             --  syntax does not map directly to a Boolean aspect.
  
!             if (Delay_Required
!                 and then Nkind (Parent (N)) = N_Compilation_Unit
!                 and then Is_True (Static_Boolean (Expr)))
!               or else
!                 (not Delay_Required
!                  and then A_Id not in Aspect_Export | Aspect_Import)
!             then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Sloc (E_Ref),
!                       Expression => E_Ref)),
!                   Pragma_Name                  => Nam);
!             end if;
  
!             if Nkind (Parent (N)) = N_Compilation_Unit then
!                Delay_Required := False;
!             end if;
!          end if;
  
!          <<Boolean_Aspect_Done>>
!       end Analyze_Boolean_Aspect;
  
!       ------------------
!       -- Insert_Aitem --
!       ------------------
  
!       procedure Insert_Aitem (Is_Instance : Boolean := False) is
!       begin
!          Decorate_Aspect_Links (Aspect, Aitem);
!          Insert_Aitem (N, Ins_Node, Aitem, Is_Instance);
!          Delay_Required := False;
!       end Insert_Aitem;
  
!       -------------------------------
!       -- Check_Constructor_Choices --
!       -------------------------------
  
!       procedure Check_Constructor_Choices (Choice_List : List_Id) is
!          Choice_Cursor    : Node_Id := First (Choice_List);
!          Component_Cursor : Node_Id;
!       begin
!          while Present (Choice_Cursor) loop
!             if Nkind (Choice_Cursor) = N_Others_Choice then
!                goto Next_Choice;
!             end if;
  
!             Component_Cursor := First_Entity (Etype (First_Entity (E)));
!             while Present (Component_Cursor) loop
!                if Ekind (Component_Cursor) = E_Component
!                  and then Chars (Component_Cursor)
!                           = Chars (Choice_Cursor)
!                then
!                   if Original_Record_Component (Component_Cursor)
!                      /= Component_Cursor
!                   then
!                      Error_Msg_N
!                        ("cannot initialize parent component&",
!                         Choice_Cursor);
                    end if;
+                   exit;
+                end if;
  
!                Next_Entity (Component_Cursor);
!             end loop;
  
!          <<Next_Choice>>
!             Next (Choice_Cursor);
!          end loop;
!       end Check_Constructor_Choices;
  
!       -------------------------------------------------
!       -- Check_Constructor_Initialization_Expression --
!       -------------------------------------------------
  
!       procedure Check_Constructor_Initialization_Expression
!         (Expr : Node_Id; Aspect : Name_Id)
!       is
!          First_Parameter : Entity_Id;
  
!          --  Flag error if N refers to the forbidden entity
!          function Check_Node_For_Bad_Reference
!            (N : Node_Id) return Traverse_Result;
  
!          ----------------------------------
!          -- Check_Node_For_Bad_Reference --
!          ----------------------------------
  
!          function Check_Node_For_Bad_Reference
!            (N : Node_Id) return Traverse_Result is
!          begin
!             if Nkind (N) = N_Identifier
!               and then Entity (N) = First_Parameter
!             then
!                Error_Msg_Name_1 := Aspect;
!                Error_Msg_N
!                  ("constructed object referenced in% " &
!                   "aspect_specification", N);
!             end if;
  
!             return OK;
!          end Check_Node_For_Bad_Reference;
  
!          procedure Check_Tree_For_Bad_Reference is
!            new Traverse_Proc (Check_Node_For_Bad_Reference);
!       begin
!          pragma Assert (Aspect in Name_Super | Name_Initialize);
  
!          --  If coming from an implicit constructor, the Self parameter
!          --  is retrieved via the specification's defining unit name.
  
!          if Acts_As_Spec (N) then
!             First_Parameter :=
!               First_Entity (Defining_Unit_Name (Specification (N)));
!          else
!             First_Parameter := First_Entity (Corresponding_Spec (N));
!          end if;
  
!          Check_Tree_For_Bad_Reference (Expr);
!       end Check_Constructor_Initialization_Expression;
  
!       ------------------------------------------
!       -- Convert_Aspect_With_Assertion_Levels --
!       ------------------------------------------
  
!       procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id)
!       is
!          Assoc      : Node_Id;
!          Assocs     : List_Id;
!          Choice     : Node_Id;
!          Level      : Entity_Id;
!          Sub_Expr   : Node_Id;
!          New_Aspect : Node_Id;
!       begin
!          Assocs := Component_Associations (Expression (Aspect));
!          Assoc := First (Assocs);
  
!          if Present (Expressions (Expression (Aspect))) then
!             Error_Msg_N
!               ("wrong syntax for argument of %", Expression (Aspect));
!             Error_Msg_N
!               ("\aspect with Assertion_Level can only contain "
!                & "contain Assertion_Level associations",
!                Expression (Aspect));
!          end if;
  
!          while Present (Assoc) loop
!             if List_Length (Choices (Assoc)) > 1 then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_N ("wrong syntax for argument of %", Assoc);
!                Error_Msg_N
!                  ("\only one Assertion_Level can be associated "
!                   & "with an expression",
!                   Assoc);
!             end if;
  
!             Choice := First (Choices (Assoc));
  
!             if Nkind (Choice) /= N_Identifier then
!                Error_Msg_N ("wrong syntax for argument of %", Assoc);
!                Error_Msg_N
!                  ("\association must denote an Assertion_Level", Assoc);
!             end if;
  
!             Level := Get_Assertion_Level (Chars (Choice));
  
!             Sub_Expr := Expression (Assoc);
!             New_Aspect :=
!               Make_Aspect_Specification
!                 (Sloc       => Sloc (Assoc),
!                  Identifier => New_Copy_Tree (Id),
!                  Expression => Sub_Expr);
  
!             Check_Applicable_Policy (New_Aspect, Level);
  
!             Set_Aspect_Ghost_Assertion_Level (New_Aspect, Level);
  
!             Insert_After (Aspect, New_Aspect);
  
!             --  Store the Original_Aspect for the detection of
!             --  duplicates.
  
!             Set_Original_Aspect (New_Aspect, Aspect);
  
!             Next (Assoc);
!          end loop;
!       end Convert_Aspect_With_Assertion_Levels;
  
!       ------------------------
!       -- Directly_Specified --
!       ------------------------
  
!       function Directly_Specified
!         (Id : Entity_Id; A : Aspect_Id) return Boolean
!       is
!          Aspect_Spec : constant Node_Id := Find_Aspect (Id, A);
!       begin
!          return Present (Aspect_Spec) and then Entity (Aspect_Spec) = Id;
!       end Directly_Specified;
  
!       -----------------------
!       -- Make_Aitem_Pragma --
!       -----------------------
  
!       procedure Make_Aitem_Pragma
!         (Pragma_Argument_Associations : List_Id;
!          Pragma_Name                  : Name_Id)
!       is
!          pragma Assert (No (Aitem));
!          Args : List_Id := Pragma_Argument_Associations;
!       begin
!          --  We should never get here if aspect was disabled
  
!          pragma Assert (not Is_Disabled (Aspect));
  
!          --  Certain aspects allow for an optional name or expression. Do
!          --  not generate a pragma with empty argument association list.
  
!          if No (Args) or else No (Expression (First (Args))) then
!             Args := No_List;
!          end if;
  
!          --  Build the pragma
  
!          Aitem :=
!            Make_Pragma (Loc,
!              Pragma_Argument_Associations => Args,
!              Pragma_Identifier =>
!                Make_Identifier (Sloc (Id), Pragma_Name),
!              Class_Present     => Class_Present (Aspect));
  
!          --  Set additional semantic fields
  
!          Set_Is_Checked (Aitem, Is_Checked (Aspect));
!          Set_Is_Ignored (Aitem, Is_Ignored (Aspect));
!          Set_Pragma_Ghost_Assertion_Level
!             (Aitem, Aspect_Ghost_Assertion_Level (Aspect));
  
!       end Make_Aitem_Pragma;
  
!       -------------------------
!       -- Make_Aitem_Attr_Def --
!       -------------------------
  
!       procedure Make_Aitem_Attr_Def
!         (E_Ref : Node_Id; Nam : Name_Id; Expr : Node_Id)
!       is
!       begin
!          pragma Assert (No (Aitem));
!          Aitem := Make_Attribute_Definition_Clause
!            (Loc, E_Ref, Nam, Relocate_Expression (Expr));
!       end Make_Aitem_Attr_Def;
  
!    --  Start of processing for Analyze_One_Aspect
  
!    begin
!       --  Skip looking at aspect if it is totally disabled. Just mark it
!       --  as such for later reference in the tree. This also sets the
!       --  Is_Ignored and Is_Checked flags appropriately.
  
!       if Is_Valid_Assertion_Kind (Nam) then
!          if Is_Checked (Aspect) or else Is_Ignored (Aspect) then
!             null;
  
!          --  If the Aspect has at least one Assertion_Level argument
!          --  then split the original Aspect into multiple aspects each
!          --  with an associated Assertion_Level.
  
!          elsif Has_Assertion_Level_Argument (Aspect) then
!             Convert_Aspect_With_Assertion_Levels (Aspect);
!             goto Done_One_Aspect;
!          else
!             Check_Applicable_Policy (Aspect);
!             Set_Aspect_Ghost_Assertion_Level
!               (Aspect, Standard_Level_Default);
!          end if;
  
!       end if;
  
!       if Is_Disabled (Aspect) then
!          goto Done_One_Aspect;
!       end if;
  
!       --  Check restriction No_Implementation_Aspect_Specifications
  
!       if Implementation_Defined_Aspect (A_Id) then
!          Check_Restriction
!            (No_Implementation_Aspect_Specifications, Aspect);
!       end if;
  
!       --  Check restriction No_Specification_Of_Aspect
  
!       Check_Restriction_No_Specification_Of_Aspect (Aspect);
  
!       --  Mark aspect analyzed (actual analysis is delayed till later)
  
!       if A_Id /= Aspect_User_Aspect then
!          --  Analyzed flag is handled differently for a User_Aspect
!          --  aspect specification because it can also be analyzed
!          --  "on demand" from Aspects.Find_Aspect. So that analysis
!          --  tests for the case where the aspect specification has
!          --  already been analyzed (in which case it just returns)
!          --  and takes care of calling Set_Analyzed.
  
!          Set_Analyzed (Aspect);
!       end if;
  
!       Set_Entity (Aspect, E);
  
!       --  Build the reference to E that will be used in the built pragmas
  
!       E_Ref := New_Occurrence_Of (E, Sloc (Id));
  
!       if A_Id in Aspect_Attach_Handler | Aspect_Interrupt_Handler then
  
!          --  Treat the specification as a reference to the protected
!          --  operation, which might otherwise appear unreferenced and
!          --  generate spurious warnings.
  
!          Generate_Reference (E, Id);
!       end if;
  
!       --  Check for duplicate aspect. Note that the Comes_From_Source
!       --  test allows duplicate Pre/Post's that we generate internally
!       --  to escape being flagged here.
  
!       if No_Duplicates_Allowed (A_Id) then
!          declare
!             Anod : Node_Id := First (Aspect_Specifications (N));
!          begin
!             while Anod /= Aspect loop
  
!                if (Comes_From_Source (Aspect)
!                   or else (Original_Aspect (Aspect) /= Anod
!                            and then not From_Same_Aspect (Aspect, Anod)))
!                   and then Same_Aspect (A_Id, Get_Aspect_Id (Anod))
!                then
!                   Error_Msg_Name_1 := Nam;
!                   Error_Msg_Sloc := Sloc (Anod);
  
!                   --  Case of same aspect specified twice
  
!                   if Class_Present (Anod) = Class_Present (Aspect) then
!                      if not Class_Present (Anod) then
!                         Error_Msg_NE
!                           ("aspect% for & previously given#", Id, E);
!                      else
!                         Error_Msg_NE
!                           ("aspect `%''Class` for & previously given#", Id, E);
!                      end if;
!                   end if;
!                end if;
  
!                Next (Anod);
!             end loop;
!          end;
!       end if;
  
!       --  Check some general restrictions on language defined aspects
  
!       if not Implementation_Defined_Aspect (A_Id)
!         or else A_Id in Aspect_Async_Readers
!                       | Aspect_Async_Writers
!                       | Aspect_Effective_Reads
!                       | Aspect_Effective_Writes
!                       | Aspect_Preelaborable_Initialization
!                       | Aspect_Unsigned_Base_Range
!       then
!          Error_Msg_Name_1 := Nam;
  
!          --  Not allowed for renaming declarations. Examine the original
!          --  node because a subprogram renaming may have been rewritten
!          --  as a body.
  
!          if Nkind (Original_Node (N)) in N_Renaming_Declaration then
!             Error_Msg_N
!               ("aspect % not allowed for renaming declaration",
!                Aspect);
!          end if;
  
!          --  Not allowed for formal type declarations in previous
!          --  versions of the language. Allowed for them only for
!          --  shared variable control aspects.
  
!          --  Original node is used in case expansion rewrote the node -
!          --  as is the case with generic derived types.
  
!          if Nkind (Original_Node (N)) = N_Formal_Type_Declaration then
!             if Ada_Version < Ada_2022 then
!                Error_Msg_N
!                  ("aspect % not allowed for formal type declaration",
!                   Aspect);
  
!             elsif A_Id not in Aspect_Atomic
!                             | Aspect_Volatile
!                             | Aspect_Independent
!                             | Aspect_Atomic_Components
!                             | Aspect_Independent_Components
!                             | Aspect_Volatile_Components
!                             | Aspect_Async_Readers
!                             | Aspect_Async_Writers
!                             | Aspect_Effective_Reads
!                             | Aspect_Effective_Writes
!                             | Aspect_Preelaborable_Initialization
!             then
!                Error_Msg_N
!                  ("aspect % not allowed for formal type declaration",
!                   Aspect);
!             end if;
!          end if;
!       end if;
  
!       --  Copy expression for later processing by the procedures
!       --  Check_Aspect_At_[Freeze_Point | End_Of_Declarations]
  
!       --  The expression may be a subprogram name, and can
!       --  be an operator name that appears as a string, but
!       --  requires its own analysis procedure (see sem_ch6).
  
!       if Nkind (Expr) = N_Operator_Symbol then
!          Set_Expression_Copy (Aspect, Expr);
!       else
!          Set_Expression_Copy (Aspect, New_Copy_Tree (Expr));
!       end if;
  
!       --  Check 13.1(9.2/5): A representation aspect of a subtype or type
!       --  shall not be specified (whether by a representation item or an
!       --  aspect_specification) before the type is completely defined
!       --  (see 3.11.1).
  
!       if Is_Representation_Aspect (A_Id)
!         and then Rep_Item_Too_Early (E, N)
!       then
!          goto Done_One_Aspect;
!       end if;
  
!       --  Processing based on specific aspect. The following case statement
!       --  computes Delay_Required (already partially computed by Delay_Aspect),
!       --  and Aitem (which is the pragma or attribute_definition_clause to be
!       --  inserted into the tree). Afterward, if there are no errors, then one
!       --  of the following is true:
!       --
!       --      - Delay_Required is False and Aitem is Empty, because we
!       --        already inserted the corresponding Aitem in the tree,
!       --        or because the aspect is processed directly without
!       --        creating an Aitem.
!       --
!       --      - Delay_Required is False and Aitem is Present. Aitem is then
!       --        inserted into the tree.
!       --
!       --      - Delay_Required is True and Aitem is Empty. Has_Delayed_Aspects
!       --        is set, to indicate that Analyze_Aspects_At_Freeze_Point should
!       --        create and insert an Aitem.
!       --
!       --      - Delay_Required is True and Aitem is Present. Aitem is attached
!       --        to the tree by setting Aspect_Rep_Item of the aspect to point
!       --        to the Aitem. Has_Delayed_Aspects is set, to indicate that
!       --        Analyze_Aspects_At_Freeze_Point should do further processing of
!       --        the attached Aitem. (???It's not clear why we sometimes create
!       --        the Aitem in Analyze_Aspects_At_Freeze_Point, versus other
!       --        times when we create it here.)
!       --
!       --  If there are errors, then in most cases we "goto Done_One_Aspect",
!       --  to skip further processing. However some error cases are less
!       --  serious, and fall into one of the above categories.
  
!       case A_Id is
!          when No_Aspect =>
!             raise Program_Error;
  
!          --  Case 1: Aspects corresponding to attribute definition
!          --  clauses.
  
!          when Aspect_Address
!             | Aspect_Alignment
!             | Aspect_Bit_Order
!             | Aspect_Component_Size
!             | Aspect_Constant_Indexing
!             | Aspect_Default_Iterator
!             | Aspect_Dispatching_Domain
!             | Aspect_External_Tag
!             | Aspect_Input
!             | Aspect_Iterable
!             | Aspect_Iterator_Element
!             | Aspect_Machine_Radix
!             | Aspect_Object_Size
!             | Aspect_Output
!             | Aspect_Put_Image
!             | Aspect_Read
!             | Aspect_Scalar_Storage_Order
!             | Aspect_Simple_Storage_Pool
!             | Aspect_Size
!             | Aspect_Small
!             | Aspect_Storage_Pool
!             | Aspect_Stream_Size
!             | Aspect_Value_Size
!             | Aspect_Variable_Indexing
!             | Aspect_Write
!          =>
!             --  Indexing aspects apply only to tagged type
  
!             if A_Id in Aspect_Constant_Indexing
!                      | Aspect_Variable_Indexing
!               and then not (Is_Type (E)
!                              and then Is_Tagged_Type (E))
!             then
!                Error_Msg_N
!                  ("indexing aspect can only apply to a tagged type",
!                   Aspect);
!                goto Done_One_Aspect;
!             end if;
  
!             --  For the case of aspect Address, we don't consider that we
!             --  know the entity is never set in the source, since it is
!             --  is likely aliasing is occurring.
  
!             --  Note: one might think that the analysis of the resulting
!             --  attribute definition clause would take care of that, but
!             --  that's not the case since it won't be from source.
  
!             if A_Id = Aspect_Address then
!                Set_Never_Set_In_Source (E, False);
!             end if;
  
!             --  Correctness of the profile of a stream operation is
!             --  verified at the freeze point, but we must detect the
!             --  illegal specification of this aspect for a subtype now,
!             --  to prevent malformed rep_item chains.
  
!             if A_Id in Aspect_Input
!                      | Aspect_Output
!                      | Aspect_Read
!                      | Aspect_Write
!             then
!                if not Is_First_Subtype (E) then
!                   Error_Msg_N
!                     ("local name must be a first subtype", Aspect);
!                   goto Done_One_Aspect;
  
!                --  If stream aspect applies to the class-wide type,
!                --  the generated attribute definition applies to the
!                --  class-wide type as well.
  
!                elsif Class_Present (Aspect) then
!                   E_Ref :=
!                     Make_Attribute_Reference (Loc,
!                       Prefix         => E_Ref,
!                       Attribute_Name => Name_Class);
!                end if;
!             end if;
  
!             --  Propagate the 'Size'Class aspect to the class-wide type
  
!             if A_Id = Aspect_Size and then Class_Present (Aspect) then
!                E_Ref :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         => E_Ref,
!                    Attribute_Name => Name_Class);
!             end if;
  
!             --  Construct the attribute_definition_clause. The expression
!             --  in the aspect specification is simply shared with the
!             --  constructed attribute, because it will be fully analyzed
!             --  when the attribute is processed.
  
!             Make_Aitem_Attr_Def (E_Ref, Nam, Expr);
  
!             --  If the address is specified, then we treat the entity as
!             --  referenced, to avoid spurious warnings. This is analogous
!             --  to what is done with an attribute definition clause, but
!             --  here we don't want to generate a reference because this
!             --  is the point of definition of the entity.
  
!             if A_Id = Aspect_Address then
!                Set_Referenced (E);
!             end if;
  
!          --  Case 2: Aspects corresponding to pragmas
  
!          --  Case 2a: Aspects corresponding to pragmas with two
!          --  arguments, where the first argument is a local name
!          --  referring to the entity, and the second argument is the
!          --  aspect definition expression.
  
!          when Aspect_Linker_Section =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => E_Ref),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Linker_Section);
  
!             --  No need to delay the processing if the entity is already
!             --  frozen. This should only happen for subprogram bodies.
  
!             if Is_Frozen (E) then
!                pragma Assert (Nkind (N) = N_Subprogram_Body);
!             end if;
  
!          --  Synchronization corresponds to pragma Implemented
  
!          when Aspect_Synchronization =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => E_Ref),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Implemented);
  
!          when Aspect_Attach_Handler =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Sloc (E_Ref),
!                    Expression => E_Ref),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Expression (Expr))),
!                Pragma_Name                  => Name_Attach_Handler);
!             Insert_Aitem;
  
!          when Aspect_Dynamic_Predicate
!             | Aspect_Ghost_Predicate
!             | Aspect_Predicate
!             | Aspect_Static_Predicate
!          =>
!             --  These aspects apply only to subtypes
  
!             if not Is_Type (E) then
!                Error_Msg_N
!                  ("predicate can only be specified for a subtype",
!                   Aspect);
!                goto Done_One_Aspect;
  
!             elsif Is_Incomplete_Type (E) then
!                Error_Msg_N
!                  ("predicate cannot apply to incomplete view", Aspect);
  
!             elsif Is_Generic_Type (E) then
!                Error_Msg_N
!                  ("predicate cannot apply to formal type", Aspect);
!                goto Done_One_Aspect;
!             end if;
  
!             --  Construct the pragma (always a pragma Predicate, with
!             --  flags recording whether it is static/dynamic). We also
!             --  set flags recording this in the type itself.
  
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Sloc (E_Ref),
!                    Expression => E_Ref),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Expression (Expr))),
!                Pragma_Name => Name_Predicate);
  
!             --  Mark type has predicates, and remember what kind of
!             --  aspect lead to this predicate (we need this to access
!             --  the right set of check policies later on).
  
!             Set_Has_Predicates (E);
  
!             if A_Id = Aspect_Dynamic_Predicate then
!                Set_Has_Dynamic_Predicate_Aspect (E);
  
!                --  If the entity has a dynamic predicate, any inherited
!                --  static predicate becomes dynamic as well, and the
!                --  predicate function includes the conjunction of both.
  
!                Set_Has_Static_Predicate_Aspect (E, False);
  
!                --  Query the applicable policy since it must rely on the
!                --  policy applicable in the context of the declaration of
!                --  entity E; it cannot be done when the built pragma is
!                --  analyzed because it will be analyzed when E is frozen,
!                --  and at that point the applicable policy may differ.
!                --  For example:
  
!                --  pragma Assertion_Policy (Dynamic_Predicate => Check);
!                --  type T is ... with Dynamic_Predicate => ...
!                --  pragma Assertion_Policy (Dynamic_Predicate => Ignore);
!                --  X : T; --  freezes T
  
!                Set_Predicates_Ignored (E,
!                  Policy_In_Effect (Name_Dynamic_Predicate)
!                    = Name_Ignore);
  
!             elsif A_Id = Aspect_Static_Predicate then
!                Set_Has_Static_Predicate_Aspect (E);
!             elsif A_Id = Aspect_Ghost_Predicate then
!                Set_Has_Ghost_Predicate_Aspect (E);
!             end if;
  
!             --  If the type is private, indicate that its completion
!             --  has a freeze node, because that is the one that will
!             --  be visible at freeze time.
  
!             if Is_Private_Type (E) and then Present (Full_View (E)) then
!                Set_Has_Predicates (Full_View (E));
  
!                if A_Id = Aspect_Dynamic_Predicate then
!                   Set_Has_Dynamic_Predicate_Aspect (Full_View (E));
!                elsif A_Id = Aspect_Static_Predicate then
!                   Set_Has_Static_Predicate_Aspect (Full_View (E));
!                elsif A_Id = Aspect_Ghost_Predicate then
!                   Set_Has_Ghost_Predicate_Aspect (Full_View (E));
!                end if;
  
!                Set_Has_Delayed_Aspects (Full_View (E));
!                Ensure_Freeze_Node (Full_View (E));
  
!                --  If there is an Underlying_Full_View, also create a
!                --  freeze node for that one.
  
!                if Is_Private_Type (Full_View (E)) then
!                   declare
!                      U_Full : constant Entity_Id :=
!                        Underlying_Full_View (Full_View (E));
!                   begin
!                      if Present (U_Full) then
!                         Set_Has_Delayed_Aspects (U_Full);
!                         Ensure_Freeze_Node (U_Full);
!                      end if;
!                   end;
!                end if;
!             end if;
  
!          when Aspect_Predicate_Failure =>
  
!             --  This aspect applies only to subtypes
  
!             if not Is_Type (E) then
!                Error_Msg_N
!                  ("predicate can only be specified for a subtype",
!                   Aspect);
  
!             elsif Is_Incomplete_Type (E) then
!                Error_Msg_N
!                  ("predicate cannot apply to incomplete view", Aspect);
  
!             elsif not Has_Predicates (E) then
!                Error_Msg_N
!                  ("Predicate_Failure requires previous predicate" &
!                   " specification", Aspect);
  
!             elsif not (Directly_Specified (E, Aspect_Dynamic_Predicate)
!               or else Directly_Specified (E, Aspect_Predicate)
!               or else Directly_Specified (E, Aspect_Ghost_Predicate)
!               or else Directly_Specified (E, Aspect_Static_Predicate))
!             then
!                Error_Msg_N
!                  ("Predicate_Failure requires accompanying" &
!                   " noninherited predicate specification", Aspect);
  
!             end if;
  
!             if Error_Posted (Aspect) then
!                Delay_Required := False;
!             else
!                --  Construct the pragma
  
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Sloc (E_Ref),
!                       Expression => E_Ref),
!                     Make_Pragma_Argument_Association (Sloc (Expr),
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name => Name_Predicate_Failure);
!             end if;
  
!          --  Case 2b: Aspects corresponding to pragmas with two
!          --  arguments, where the second argument is a local name
!          --  referring to the entity, and the first argument is the
!          --  aspect definition expression.
  
!          when Aspect_Convention =>
!             Analyze_Aspect_Convention;
  
!          when Aspect_External_Name
!             | Aspect_Link_Name
!          =>
!             --  Only the legality checks are done during the analysis, thus
!             --  no delay is required.
  
!             Analyze_Aspect_External_Link_Name;
  
!          when Aspect_CPU
!             | Aspect_Interrupt_Priority
!             | Aspect_Priority
!          =>
!             --  These aspects can be specified for a subprogram spec or body,
!             --  in which case we analyze the expression and export the value of
!             --  the aspect.
!             --
!             --  Previously, we generated an equivalent pragma for bodies
!             --  (note that the specs cannot contain these pragmas). The
!             --  pragma was inserted ahead of local declarations, rather than
!             --  after the body. This leads to a certain duplication between
!             --  the processing performed for the aspect and the pragma, but
!             --  given the straightforward handling required it is simpler
!             --  to duplicate than to translate the aspect in the spec into
!             --  a pragma in the declarative part of the body.
  
!             --  Verify the expression is static when Static_Priorities is
!             --  enabled.
  
!             if not Is_OK_Static_Expression (Expr) then
!                Check_Restriction (Static_Priorities, Expr);
!             end if;
  
!             if Nkind (N) in N_Subprogram_Body | N_Subprogram_Declaration
!             then
!                --  Analyze the aspect expression
  
!                Analyze_And_Resolve (Expr, Standard_Integer);
  
!                --  Interrupt_Priority aspect not allowed for main
!                --  subprograms. RM D.1 does not forbid this explicitly,
!                --  but RM J.15.11(6/3) does not permit pragma
!                --  Interrupt_Priority for subprograms.
  
!                if A_Id = Aspect_Interrupt_Priority then
!                   Error_Msg_N
!                     ("Interrupt_Priority aspect cannot apply to "
!                      & "subprogram", Expr);
  
!                --  The expression must be static
  
!                elsif not Is_OK_Static_Expression (Expr) then
!                   Flag_Non_Static_Expr
!                     ("aspect requires static expression!", Expr);
  
!                --  Check whether this is the main subprogram. Issue a
!                --  warning only if it is obviously not a main program
!                --  (when it has parameters or when the subprogram is
!                --  within a package).
  
!                elsif Present (Parameter_Specifications
!                                 (Specification (N)))
!                  or else not Is_Compilation_Unit (Defining_Entity (N))
!                then
!                   --  See RM D.1(14/3) and D.16(12/3)
  
!                   Error_Msg_N
!                     ("aspect applied to subprogram other than the "
!                      & "main subprogram has no effect??", Expr);
  
!                --  Otherwise check in range and export the value
  
!                --  For the CPU aspect
  
!                elsif A_Id = Aspect_CPU then
!                   if Is_In_Range (Expr, RTE (RE_CPU_Range)) then
  
!                      --  Value is correct so we export the value to make
!                      --  it available at execution time.
  
!                      Set_Main_CPU
!                        (Main_Unit, UI_To_Int (Expr_Value (Expr)));
  
                    else
!                      Error_Msg_N
!                        ("main subprogram 'C'P'U is out of range", Expr);
                    end if;
  
!                --  For the Priority aspect
  
!                elsif A_Id = Aspect_Priority then
!                   if Is_In_Range (Expr, RTE (RE_Priority)) then
  
!                      --  Value is correct so we export the value to make
!                      --  it available at execution time.
  
!                      Set_Main_Priority
!                        (Main_Unit, UI_To_Int (Expr_Value (Expr)));
  
!                   --  Ignore pragma if Relaxed_RM_Semantics to support
!                   --  other targets/non GNAT compilers.
! 
!                   elsif not Relaxed_RM_Semantics then
!                      Error_Msg_N
!                        ("main subprogram priority is out of range",
!                         Expr);
                    end if;
+                end if;
  
!                --  Load an arbitrary entity from System.Tasking.Stages
!                --  or System.Tasking.Restricted.Stages (depending on
!                --  the supported profile) to make sure that one of these
!                --  packages is implicitly with'ed, since we need to have
!                --  the tasking run time active for the pragma Priority to
!                --  have any effect. Previously we with'ed the package
!                --  System.Tasking, but this package does not trigger the
!                --  required initialization of the run-time library.
  
!                if Restricted_Profile then
!                   Discard_Node (RTE (RE_Activate_Restricted_Tasks));
!                else
!                   Discard_Node (RTE (RE_Activate_Tasks));
!                end if;
  
!                --  Record aspect specification as a representation item
!                --  to detect pragmas that would duplicate it.
  
!                Record_Rep_Item (E, Aspect);
!                Delay_Required := False;
  
!                --  Handling for these aspects in subprograms is complete
  
!             --  For task and protected types pass the aspect as an
!             --  attribute.
  
!             else
!                Make_Aitem_Attr_Def (E_Ref, Nam, Expr);
!             end if;
  
!          when Aspect_Suppress | Aspect_Unsuppress =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr)),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => E_Ref)),
!                Pragma_Name                  => Nam);
  
!          when Aspect_Warnings =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Node (Expr)),
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => E_Ref)),
!                Pragma_Name                  => Name_Warnings);
!             Insert_Aitem;
  
!          --  Case 2c: Aspects corresponding to pragmas with three
!          --  arguments.
  
!          --  Invariant aspects have a first argument that references the
!          --  entity, a second argument that is the expression and a third
!          --  argument that is an appropriate message.
  
!          when Aspect_Invariant
!             | Aspect_Type_Invariant
!          =>
!             --  Analysis of the pragma will verify placement legality:
!             --  an invariant must apply to a private type, or appear in
!             --  the private part of a spec and apply to a completion.
  
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Sloc (E_Ref),
!                    Expression => E_Ref),
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Invariant);
  
!             --  Add message unless exception messages are suppressed
  
!             if not Opt.Exception_Locations_Suppressed then
!                declare
!                   Eloc : constant Source_Ptr := Sloc (First_Node (Expr));
!                begin
!                   Append_To (Pragma_Argument_Associations (Aitem),
!                     Make_Pragma_Argument_Association (Eloc,
!                       Chars      => Name_Message,
!                       Expression =>
!                         Make_String_Literal (Eloc,
!                           Strval => "failed invariant from "
!                                     & Build_Location_String (Eloc))));
!                end;
!             end if;
  
!             --  For Invariant case, insert immediately after the entity
!             --  declaration. We do not have to worry about delay issues
!             --  since the pragma processing takes care of this.
  
!          --  Case 2d : Aspects that correspond to a pragma with one
!          --  argument.
  
!          --  Aspect Abstract_State introduces implicit declarations for
!          --  all state abstraction entities it defines. To emulate this
!          --  behavior, insert the pragma at the beginning of the visible
!          --  declarations of the related package so that it is analyzed
!          --  immediately.
  
!          when Aspect_Abstract_State => Abstract_State : declare
!             Context : Node_Id := N;
  
!          begin
!             --  When aspect Abstract_State appears on a generic package,
!             --  it is propagated to the package instance. The context in
!             --  this case is the instance spec.
  
!             if Nkind (Context) = N_Package_Instantiation then
!                Context := Instance_Spec (Context);
!             end if;
  
!             if Nkind (Original_Node (Context)) = N_Formal_Package_Declaration
!             then
!                pragma Assert (Nkind (Context) = N_Package_Declaration);
!                pragma Assert
!                  (Nkind (Aspect_Rep_Item (Aspect)) = N_Null_Statement);
!                Set_Aspect_Rep_Item (Aspect, Empty);
!             end if;
  
!             if Nkind (Context) in N_Generic_Package_Declaration
!                                 | N_Package_Declaration
!             then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name                  => Name_Abstract_State);
!                Insert_Aitem
!                  (Is_Instance =>
!                     Is_Generic_Instance (Defining_Entity (Context)));
  
!             else
!                Error_Msg_NE
!                  ("aspect & must apply to a package declaration",
!                   Aspect, Id);
!             end if;
  
!          end Abstract_State;
  
!          --  Aspect Default_Internal_Condition is never delayed because
!          --  it is equivalent to a source pragma which appears after the
!          --  related private type. To deal with forward references, the
!          --  generated pragma is stored in the rep chain of the related
!          --  private type as types do not carry contracts. The pragma is
!          --  wrapped inside of a procedure at the freeze point of the
!          --  private type's full view.
  
!          --  A type entity argument is appended to facilitate inheriting
!          --  the aspect from parent types (see Build_DIC_Procedure_Body),
!          --  though that extra argument isn't documented for the pragma.
  
!          when Aspect_Default_Initial_Condition =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr)),
!                  Make_Pragma_Argument_Association (Sloc (E_Ref),
!                    Expression => E_Ref)),
!                Pragma_Name                  =>
!                  Name_Default_Initial_Condition);
!             Insert_Aitem;
  
!          when Aspect_Default_Storage_Pool =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  =>
!                  Name_Default_Storage_Pool);
!             Insert_Aitem;
  
!          --  Aspect Depends is never delayed because it is equivalent to
!          --  a source pragma which appears after the related subprogram.
!          --  To deal with forward references, the generated pragma is
!          --  stored in the contract of the related subprogram and later
!          --  analyzed at the end of the declarative region. See routine
!          --  Analyze_Depends_In_Decl_Part for details.
  
!          when Aspect_Depends =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Depends);
!             Insert_Aitem;
  
!          --  Aspect Global is never delayed because it is equivalent to
!          --  a source pragma which appears after the related subprogram.
!          --  To deal with forward references, the generated pragma is
!          --  stored in the contract of the related subprogram and later
!          --  analyzed at the end of the declarative region. See routine
!          --  Analyze_Global_In_Decl_Part for details.
  
!          when Aspect_Global =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Global);
!             Insert_Aitem;
  
!          --  Aspect Initial_Condition is never delayed because it is
!          --  equivalent to a source pragma which appears after the
!          --  related package. To deal with forward references, the
!          --  generated pragma is stored in the contract of the related
!          --  package and later analyzed at the end of the declarative
!          --  region. See routine Analyze_Initial_Condition_In_Decl_Part
!          --  for details.
  
!          when Aspect_Initial_Condition => Initial_Condition : declare
!             Context : Node_Id := N;
  
!          begin
!             --  When aspect Initial_Condition appears on a generic
!             --  package, it is propagated to the package instance. The
!             --  context in this case is the instance spec.
  
!             if Nkind (Context) = N_Package_Instantiation then
!                Context := Instance_Spec (Context);
!             end if;
  
!             if Nkind (Context) in N_Generic_Package_Declaration
!                                 | N_Package_Declaration
!             then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name                  =>
!                     Name_Initial_Condition);
!                Insert_Aitem
!                  (Is_Instance =>
!                     Is_Generic_Instance (Defining_Entity (Context)));
  
!             --  Otherwise the context is illegal
  
!             else
!                Error_Msg_NE
!                  ("aspect & must apply to a package declaration",
!                   Aspect, Id);
!             end if;
  
!          end Initial_Condition;
  
!          when Aspect_Initialize => Initialize : declare
!             Aspect_Comp : Node_Id;
!             Type_Comp   : Node_Id;
!             Typ         : Entity_Id;
!             Dummy       : Node_Id;
  
!             Has_User_Defined_Default : Boolean := False;
!          begin
!             --  Error checking
  
!             if not All_Extensions_Allowed then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_GNAT_Extension ("aspect %", Loc);
!             end if;
  
!             --  Initialize aspect can only apply to a constructor body or
!             --  to the implicit constructors, which are represented by
!             --  procedure specs.
  
!             if (Ekind (E) /= E_Subprogram_Body
!                  or else Nkind (Parent (E)) /= N_Procedure_Specification)
!               and then not Acts_As_Spec (N)
!             then
!                Error_Msg_N
!                  ("Initialize must apply to a constructor body", N);
!             end if;
  
!             if Present (Expressions (Expression (Aspect))) then
!                Error_Msg_N ("only component associations allowed", N);
!             end if;
  
!             if Error_Posted (N) then
!                goto Done_One_Aspect;
!             end if;
  
!             --  Install the others for the aggregate if necessary
  
!             Typ := Etype (First_Entity (E));
  
!             if No (First_Entity (Typ)) then
!                Error_Msg_N
!                  ("Initialize can only apply to contructors"
!                    & " whose type has one or more components", N);
!             end if;
  
!             --  Here it follows three loops: the first is linear over the
!             --  components, the second is quadratic over the components
!             --  and then aggregate choices, the last is quadratic over
!             --  the aggregate choices and then components (hidden by the
!             --  Check_Constructor_Choices). If this becomes a performance
!             --  issue we can merge all loops together.
  
!             Aspect_Comp :=
!               First (Component_Associations (Expression (Aspect)));
!             Type_Comp := First_Entity (Typ);
!             while Present (Type_Comp) loop
!                if No (Aspect_Comp) then
!                   Append_To
!                     (Component_Associations (Expression (Aspect)),
!                        Make_Component_Association (Loc,
!                          Choices     =>
!                            New_List (Make_Others_Choice (Loc)),
!                          Box_Present => True));
!                   exit;
!                elsif Nkind (First (Choices (Aspect_Comp)))
!                        = N_Others_Choice
!                then
!                   Has_User_Defined_Default := Comes_From_Source (Aspect);
!                   exit;
!                end if;
  
!                Next (Aspect_Comp);
!                Next_Entity (Type_Comp);
!             end loop;
! 
!             --  Flag components that are missing a required explicit
!             --  initialization, that is the case for by-constructor types
!             --  without the parameterless constructor that have no
!             --  default expression and are not choiced in the Initialize
!             --  aggregate.
! 
!             if not Has_User_Defined_Default then
!                Type_Comp := First_Entity (Typ);
!                while Present (Type_Comp) loop
!                   if Ekind (Type_Comp) /= E_Component
!                     or else Chars (Type_Comp) in Name_uTag | Name_uParent
!                   then
!                      goto Next_Component;
!                   end if;
! 
!                   --  Check if the component needs to be initialized by
!                   --  the Initialize aspect specification.
  
+                   if Needs_Construction (Etype (Type_Comp))
+                     and then No (Expression (Parent (Type_Comp)))
+                   then
+                      Aspect_Comp := First (
+                        Component_Associations (Expression (Aspect)));
+                      while Present (Aspect_Comp) loop
                          declare
!                            Cursor_Choice : Node_Id :=
!                              First (Choices (Aspect_Comp));
                          begin
!                            while Present (Cursor_Choice) loop
!                               if Nkind (Cursor_Choice) /= N_Others_Choice
!                                 and then Chars (Type_Comp)
!                                          = Chars (Cursor_Choice)
!                               then
!                                  goto Next_Component;
!                               end if;
! 
!                               Next (Cursor_Choice);
                             end loop;
                          end;
  
!                         Next (Aspect_Comp);
!                      end loop;
  
!                      Error_Msg_NE ("explicit initialization required " &
!                                    "for component&",
!                                    Aspect, Type_Comp);
!                   end if;
  
!                <<Next_Component>>
!                   Next_Entity (Type_Comp);
!                end loop;
!             end if;
  
!             --  Analyze the components, both expressions and choices
  
!             Aspect_Comp :=
!               First (Component_Associations (Expression (Aspect)));
!             while Present (Aspect_Comp) loop
!                declare
!                   Expr : constant Node_Id := Expression (Aspect_Comp);
!                begin
!                   if Present (Expr) then
!                      Analyze (Expr);
!                      Check_Constructor_Initialization_Expression
!                        (Expr, Aspect => Name_Initialize);
!                   end if;
!                end;
!                Check_Constructor_Choices (Choices (Aspect_Comp));
  
!                Next (Aspect_Comp);
!             end loop;
  
!             --  Do a psuedo pass over the aggregate to ensure its
!             --  validity. The expression with actions is required to
!             --  have a valid node where to place the ABE check during
!             --  resolution.
  
!             Expander_Active := False;
!             Dummy := Make_Expression_With_Actions (Loc,
!               Actions => Empty_List,
!               Expression => New_Copy_Tree (Expression (Aspect)));
!             Resolve_Aggregate (Expression (Dummy), Typ);
!             Expander_Active := True;
!          end Initialize;
  
!          --  Aspect Initializes is never delayed because it is equivalent
!          --  to a source pragma appearing after the related package. To
!          --  deal with forward references, the generated pragma is stored
!          --  in the contract of the related package and later analyzed at
!          --  the end of the declarative region. For details, see routine
!          --  Analyze_Initializes_In_Decl_Part.
  
!          when Aspect_Initializes => Initializes : declare
!             Context : Node_Id := N;
  
!          begin
!             --  When aspect Initializes appears on a generic package,
!             --  it is propagated to the package instance. The context
!             --  in this case is the instance spec.
  
!             if Nkind (Context) = N_Package_Instantiation then
!                Context := Instance_Spec (Context);
!             end if;
  
!             if Nkind (Context) in N_Generic_Package_Declaration
!                                 | N_Package_Declaration
!             then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name                  => Name_Initializes);
!                Insert_Aitem
!                  (Is_Instance =>
!                     Is_Generic_Instance (Defining_Entity (Context)));
  
!             --  Otherwise the context is illegal
  
!             else
!                Error_Msg_NE
!                  ("aspect & must apply to a package declaration",
!                   Aspect, Id);
!             end if;
  
!          end Initializes;
  
!          when Aspect_Max_Entry_Queue_Length =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name => Name_Max_Entry_Queue_Length);
!             Insert_Aitem;
  
!          when Aspect_Max_Queue_Length =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Max_Queue_Length);
!             Insert_Aitem;
  
!          when Aspect_Obsolescent => declare
!             Args : List_Id;
  
!          begin
!             if No (Expr) then
!                Args := No_List;
!             else
!                Args := New_List (
!                  Make_Pragma_Argument_Association (Sloc (Expr),
!                    Expression => Relocate_Node (Expr)));
!             end if;
  
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => Args,
!                Pragma_Name                  => Name_Obsolescent);
!          end;
  
!          when Aspect_Part_Of =>
!             if Nkind (N) in N_Object_Declaration
!                           | N_Package_Instantiation
!               or else Is_Single_Concurrent_Type_Declaration (N)
!             then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name                  => Name_Part_Of);
!                Insert_Aitem;
  
!             else
!                Error_Msg_NE
!                  ("aspect & must apply to package instantiation, "
!                   & "object, single protected type or single task type",
!                   Aspect, Id);
!             end if;
  
!          when Aspect_Potentially_Invalid =>
!             Analyze_Aspect_Potentially_Invalid;
  
!          when Aspect_SPARK_Mode =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_SPARK_Mode);
!             Insert_Aitem;
  
!          --  Aspect Refined_Depends is never delayed because it is
!          --  equivalent to a source pragma which appears in the
!          --  declarations of the related subprogram body. To deal with
!          --  forward references, the generated pragma is stored in the
!          --  contract of the related subprogram body and later analyzed
!          --  at the end of the declarative region. For details, see
!          --  routine Analyze_Refined_Depends_In_Decl_Part.
  
!          when Aspect_Refined_Depends =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Refined_Depends);
!             Insert_Aitem;
  
!          --  Aspect Refined_Global is never delayed because it is
!          --  equivalent to a source pragma which appears in the
!          --  declarations of the related subprogram body. To deal with
!          --  forward references, the generated pragma is stored in the
!          --  contract of the related subprogram body and later analyzed
!          --  at the end of the declarative region. For details, see
!          --  routine Analyze_Refined_Global_In_Decl_Part.
  
!          when Aspect_Refined_Global =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Refined_Global);
!             Insert_Aitem;
  
!          when Aspect_Refined_Post =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Refined_Post);
!             Insert_Aitem;
  
!          when Aspect_Refined_State =>
  
!             --  The corresponding pragma for Refined_State is inserted in
!             --  the declarations of the related package body. This action
!             --  synchronizes both the source and from-aspect versions of
!             --  the pragma.
  
!             if Nkind (N) = N_Package_Body then
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => Relocate_Node (Expr))),
!                   Pragma_Name                  => Name_Refined_State);
!                Insert_Aitem;
  
!             --  Otherwise the context is illegal
  
!             else
!                Error_Msg_NE
!                  ("aspect & must apply to a package body", Aspect, Id);
!             end if;
  
!          when Aspect_Relative_Deadline =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                 Pragma_Name                 => Name_Relative_Deadline);
  
!             --  If the aspect applies to a task, the corresponding pragma
!             --  must appear within its declarations, not after.
  
!             if Nkind (N) = N_Task_Type_Declaration then
!                Insert_Aitem;
!             end if;
  
!          when Aspect_Relaxed_Initialization =>
!             Analyze_Aspect_Relaxed_Initialization;
  
!          --  Aspect Secondary_Stack_Size needs to be converted into a
!          --  pragma for two reasons: the attribute is not analyzed until
!          --  after the expansion of the task type declaration and the
!          --  attribute does not have visibility on the discriminant.
  
!          when Aspect_Secondary_Stack_Size =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  =>
!                  Name_Secondary_Stack_Size);
!             Insert_Aitem;
  
!          when Aspect_User_Aspect =>
!             Analyze_User_Aspect_Aspect_Specification (Aspect);
  
!          --  Case 2e: Annotate aspect
  
!          when Aspect_Annotate | Aspect_GNAT_Annotate =>
!             declare
!                Pargs : constant List_Id := New_List; -- pragma args
!             begin
!                --  The argument can be a single identifier; add it to
!                --  Pargs.
  
!                if Nkind (Expr) = N_Identifier then
  
!                   --  One level of parens is allowed
  
!                   if Paren_Count (Expr) > 1 then
!                      Error_Msg_F ("extra parentheses ignored", Expr);
                    end if;
  
!                   Set_Paren_Count (Expr, 0);
  
!                   Append_To (Pargs,
!                     Make_Pragma_Argument_Association (Sloc (Expr),
!                       Expression => Relocate_Node (Expr)));
  
!                --  Otherwise we must have an aggregate; add all
!                --  expressions to Pargs.
  
!                elsif Nkind (Expr) = N_Aggregate then
  
!                   --  Must be positional
  
!                   if Present (Component_Associations (Expr)) then
!                      Error_Msg_F
!                        ("purely positional aggregate required", Expr);
!                      goto Done_One_Aspect;
                    end if;
  
!                   --  Must not be parenthesized
  
                    if Paren_Count (Expr) /= 0 then
                       Error_Msg_F -- CODEFIX
                         ("redundant parentheses", Expr);
                    end if;
  
!                   declare
!                      Arg : Node_Id := First (Expressions (Expr));
!                   begin
!                      while Present (Arg) loop
!                         Append_To (Pargs,
!                           Make_Pragma_Argument_Association (Sloc (Arg),
!                             Expression => Relocate_Node (Arg)));
!                         Next (Arg);
!                      end loop;
!                   end;
  
!                --  Anything else is illegal
  
!                else
!                   Error_Msg_F ("wrong form for Annotate aspect", Expr);
!                   goto Done_One_Aspect;
!                end if;
  
!                Append_To (Pargs,
!                  Make_Pragma_Argument_Association (Sloc (E_Ref),
!                    Chars      => Name_Entity,
!                    Expression => E_Ref));
  
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => Pargs,
!                   Pragma_Name                  => Name_Annotate);
!             end;
  
!          --  Case 3 : Aspects that don't correspond to pragma/attribute
!          --  definition clause.
  
!          --  Case 3a: The aspects listed below don't correspond to
!          --  pragmas/attributes but do require delayed analysis.
  
!          when Aspect_Default_Value | Aspect_Default_Component_Value =>
!             Error_Msg_Name_1 := Nam;
  
!             if not Is_Type (E) then
!                Error_Msg_N ("aspect% can only apply to a type", Aspect);
  
!             elsif not Is_First_Subtype (E) then
!                Error_Msg_N ("aspect% cannot apply to subtype", Aspect);
  
!             elsif A_Id = Aspect_Default_Value then
!                if not Is_Scalar_Type (E) then
!                   Error_Msg_N
!                     ("aspect% can only be applied to scalar type", Aspect);
!                end if;
  
!             elsif A_Id = Aspect_Default_Component_Value then
!                if not Is_Array_Type (E) then
!                   Error_Msg_N
!                     ("aspect% can only be applied to array type", Aspect);
  
!                elsif not Is_Scalar_Type (Component_Type (E)) then
!                   Error_Msg_N ("aspect% requires scalar components", Aspect);
!                end if;
!             end if;
  
!             if Error_Posted (Aspect) then
!                Delay_Required := False;
!             end if;
  
!          when Aspect_Aggregate =>
!             --  We will be checking that the aspect is not specified on
!             --  an array type in Analyze_Aspects_At_Freeze_Point.
  
!             Validate_Aspect_Aggregate (Expr);
  
!          when Aspect_Stable_Properties =>
!             Validate_Aspect_Stable_Properties
!               (E, Expr, Class_Present => Class_Present (Aspect));
  
!          when Aspect_Designated_Storage_Model =>
!             if not All_Extensions_Allowed then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_GNAT_Extension ("aspect %", Loc);
  
!             elsif not Is_Type (E)
!               or else Ekind (E) /= E_Access_Type
!             then
!                Error_Msg_N
!                  ("can only be specified for pool-specific access type",
!                   Aspect);
!             end if;
  
!          when Aspect_Storage_Model_Type =>
!             if not All_Extensions_Allowed then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_GNAT_Extension ("aspect %", Loc);
  
!             elsif not Is_Type (E)
!               or else not Is_Immutably_Limited_Type (E)
!             then
!                Error_Msg_N
!                  ("can only be specified for immutably limited type",
!                   Aspect);
!             end if;
  
!          when Aspect_Finalizable =>
!             if not Core_Extensions_Allowed then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_GNAT_Extension
!                  ("aspect %", Loc, Is_Core_Extension => True);
!                goto Done_One_Aspect;
  
!             elsif not Is_Type (E) then
!                Error_Msg_N ("can only be specified for a type", Aspect);
!                goto Done_One_Aspect;
!             end if;
  
!          when Aspect_Integer_Literal
!             | Aspect_Real_Literal
!             | Aspect_String_Literal
!          =>
  
!             if not Is_First_Subtype (E) then
!                Error_Msg_N
!                  ("may only be specified for a first subtype", Aspect);
!             end if;
  
!             if Ada_Version < Ada_2022 then
!                Check_Restriction
!                  (No_Implementation_Aspect_Specifications, N);
!             end if;
  
!          --  Case 3b: The aspects listed below don't correspond to
!          --  pragmas/attributes and don't need delayed analysis.
  
!          --  Only the legality checks are done during the analysis, thus
!          --  no delay is required.
  
!          when Aspect_Implicit_Dereference =>
!             Analyze_Aspect_Implicit_Dereference;
  
!          when Aspect_Dimension =>
!             Analyze_Aspect_Dimension (N, Id, Expr);
  
!          when Aspect_Dimension_System =>
!             Analyze_Aspect_Dimension_System (N, Id, Expr);
  
!          when Aspect_Local_Restrictions =>
!             Validate_Aspect_Local_Restrictions (E, Expr);
!             Record_Rep_Item (E, Aspect);
!             pragma Assert (No (Aitem));
!             Delay_Required := False;
  
!          --  Case 4: Aspects requiring special handling
  
!          --  Pre/Post/Test_Case/Contract_Cases/Always_Terminates/
!          --  Exceptional_Cases/Exit_Cases/Program_Exit and
!          --  Subprogram_Variant whose corresponding pragmas take care of
!          --  the delay.
  
!          --  Aspects Pre/Post generate Precondition/Postcondition pragmas
!          --  with a first argument that is the expression, and a second
!          --  argument that is an informative message if the test fails.
!          --  This is inserted right after the declaration, to get the
!          --  required pragma placement. The processing for the pragmas
!          --  takes care of the required delay.
  
!          when Pre_Post_Aspects => Pre_Post : declare
!             Pname : Name_Id;
  
!          begin
!             if A_Id in Aspect_Pre | Aspect_Precondition then
!                Pname := Name_Precondition;
!             else
!                Pname := Name_Postcondition;
!             end if;
  
!             --  Check that the class-wide predicate cannot be applied to
!             --  an operation of a synchronized type. AI12-0182 forbids
!             --  these altogether, while earlier language semantics made
!             --  them legal on tagged synchronized types.
  
!             --  Other legality checks are performed when analyzing the
!             --  contract of the operation.
  
!             if Class_Present (Aspect)
!               and then Is_Concurrent_Type (Current_Scope)
!               and then Ekind (E) in E_Entry | E_Function | E_Procedure
!             then
!                Error_Msg_Name_1 := Original_Aspect_Pragma_Name (Aspect);
!                Error_Msg_N
!                  ("aspect % can only be specified for a primitive "
!                   & "operation of a tagged type", Aspect);
  
!                goto Done_One_Aspect;
!             end if;
  
!             --  Remember class-wide conditions; they will be merged
!             --  with inherited conditions.
  
!             if Class_Present (Aspect)
!               and then A_Id in Aspect_Pre | Aspect_Post
!               and then Is_Subprogram (E)
!               and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
!             then
!                if A_Id = Aspect_Pre then
!                   if Is_Ignored_In_Codegen (Aspect) then
!                      Set_Ignored_Class_Preconditions (E,
!                        New_Copy_Tree (Expr));
!                   else
!                      Set_Class_Preconditions (E, New_Copy_Tree (Expr));
!                   end if;
  
!                --  Postconditions may split into separate aspects, and we
!                --  remember the expression before such split (i.e. when
!                --  the first postcondition is processed).
  
!                elsif No (Class_Postconditions (E))
!                  and then No (Ignored_Class_Postconditions (E))
!                then
!                   if Is_Ignored_In_Codegen (Aspect) then
!                      Set_Ignored_Class_Postconditions (E,
!                        New_Copy_Tree (Expr));
!                   else
!                      Set_Class_Postconditions (E, New_Copy_Tree (Expr));
!                   end if;
!                end if;
!             end if;
  
!             --  Build the precondition/postcondition pragma
  
!             declare
!                Eloc : constant Source_Ptr := Sloc (First_Node (Expr));
!             begin
!                Make_Aitem_Pragma
!                  (Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Eloc,
!                       Chars      => Name_Check,
!                       Expression => Relocate_Expression (Expr))),
!                     Pragma_Name                => Pname);
!             end;
  
!             --  For Pre/Post cases, insert immediately after the entity
!             --  declaration, since that is the required pragma placement.
!             --  Note that for these aspects, we do not have to worry
!             --  about delay issues, since the pragmas themselves deal
!             --  with delay of visibility for the expression analysis.
!             Insert_Aitem;
  
!          end Pre_Post;
  
!          when Aspect_Test_Case => Test_Case : declare
!             Args      : List_Id;
!             Comp_Expr : Node_Id;
!             Comp_Assn : Node_Id;
  
!          begin
!             Args := New_List;
  
!             if Nkind (Parent (N)) = N_Compilation_Unit then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_N ("incorrect placement of aspect %", E);
!                goto Done_One_Aspect;
!             end if;
  
!             if Nkind (Expr) /= N_Aggregate
!               or else Null_Record_Present (Expr)
!             then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_NE
!                  ("wrong syntax for aspect % for &", Id, E);
!                goto Done_One_Aspect;
!             end if;
  
!             --  Check that the expression is a proper aggregate (no
!             --  parentheses).
  
!             if Paren_Count (Expr) /= 0 then
!                Error_Msg_F -- CODEFIX
!                  ("redundant parentheses", Expr);
!                goto Done_One_Aspect;
!             end if;
  
!             --  Create the list of arguments for building the Test_Case
!             --  pragma.
  
!             Comp_Expr := First (Expressions (Expr));
!             while Present (Comp_Expr) loop
!                Append_To (Args,
!                  Make_Pragma_Argument_Association (Sloc (Comp_Expr),
!                    Expression => Relocate_Node (Comp_Expr)));
!                Next (Comp_Expr);
!             end loop;
  
!             Comp_Assn := First (Component_Associations (Expr));
!             while Present (Comp_Assn) loop
!                if List_Length (Choices (Comp_Assn)) /= 1
!                  or else
!                    Nkind (First (Choices (Comp_Assn))) /= N_Identifier
!                then
!                   Error_Msg_Name_1 := Nam;
!                   Error_Msg_NE
!                     ("wrong syntax for aspect % for &", Id, E);
!                   goto Done_One_Aspect;
!                end if;
  
!                Append_To (Args,
!                  Make_Pragma_Argument_Association (Sloc (Comp_Assn),
!                    Chars      => Chars (First (Choices (Comp_Assn))),
!                    Expression =>
!                      Relocate_Node (Expression (Comp_Assn))));
!                Next (Comp_Assn);
!             end loop;
  
!             --  Build the test-case pragma
  
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => Args,
!                Pragma_Name                  => Name_Test_Case);
!          end Test_Case;
  
!          when Aspect_Contract_Cases =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Contract_Cases);
!             Insert_Aitem;
  
!          when Aspect_Exceptional_Cases =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Exceptional_Cases);
!             Insert_Aitem;
  
!          when Aspect_Exit_Cases =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Exit_Cases);
!             Insert_Aitem;
  
!          when Aspect_Program_Exit =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Program_Exit);
!             Insert_Aitem;
  
!          when Aspect_Subprogram_Variant =>
!             Make_Aitem_Pragma
!               (Pragma_Argument_Associations => New_List (
!                  Make_Pragma_Argument_Association (Loc,
!                    Expression => Relocate_Node (Expr))),
!                Pragma_Name                  => Name_Subprogram_Variant);
!             Insert_Aitem;
  
!          --  Case 5: Special handling for aspects with an optional
!          --  boolean argument.
  
!          --  In the delayed case, the corresponding pragma cannot be
!          --  generated yet because the evaluation of the boolean needs
!          --  to be delayed till the freeze point.
  
!          when Aspect_Super => Super :
!          declare
!             Analyze_Parameter_Expressions : constant Boolean := True;
!             --  ???
!             --  We can analyze actual parameter expressions here (with
!             --  no context, like the operand of a type conversion),
!             --  or leave them unanalyzed for now and catch problems
!             --  when we analyze the generated constructor call
!             --  (where overload resolution may provide context that
!             --  resolves some ambiguities).
!             --  For now, we analyze them here to avoid depending
!             --  on legality checking performed during expansion.
!             --  To reverse this decision, set this flag to False.
  
!             procedure Check_Super_Arg
!               (Expr : Node_Id; Aspect : Name_Id := Name_Super)
!               renames Check_Constructor_Initialization_Expression;
  
!          begin
!             --  Error checking
  
!             if not All_Extensions_Allowed then
!                Error_Msg_Name_1 := Nam;
!                Error_Msg_GNAT_Extension ("aspect %", Loc);
!                goto Done_One_Aspect;
!             end if;
  
!             if Nkind (N) /= N_Subprogram_Body then
!                Error_Msg_N ("Super must apply to a constructor body", N);
!             end if;
  
!             --  Without parameter list, the parent parameterless
!             --  constructor is called, nothing more to do here.
  
!             if Present (Expr) then
  
!                --  Handle parameter list of length more than one
!                --  (such a list is parsed as an aggregate).
  
!                if Nkind (Expr) = N_Aggregate then
!                   if Present (Component_Associations (Expr))
!                     or else No (Expressions (Expr))
                    then
                       Error_Msg_N
!                        ("malformed constructor parameter list", N);
  
!                   elsif Analyze_Parameter_Expressions then
                       declare
!                         Param_Expr : Node_Id :=
!                           First (Expressions (Expr));
                       begin
!                         while Present (Param_Expr) loop
!                            Analyze (Param_Expr);
!                            Check_Super_Arg (Param_Expr);
!                            Next (Param_Expr);
!                         end loop;
  
!                         Set_Analyzed (Expr);
!                         --  Someday Vast may complain that this so-called
!                         --  aggregate has no Etype. For now, we mark it
!                         --  as analyzed and hope that nobody trips over
!                         --  it.
                       end;
                    end if;
  
!                --  handle parameter list of length one
  
+                elsif Paren_Count (Expr) = 0 then
                    Error_Msg_N
!                     ("parentheses missing for constructor parameter " &
!                      "list ",
!                      N);
  
!                elsif Analyze_Parameter_Expressions then
!                   Analyze (Expr);
!                   Check_Super_Arg (Expr);
!                end if;
              end if;
+          end Super;
  
!          when Ignored_Aspects =>
!             null; -- nothing to do
  
!          when Boolean_Aspects =>
!             Analyze_Boolean_Aspect;
  
!          --  This is special because for access types we need to generate
!          --  an attribute definition clause. This also works for single
!          --  task declarations, but it does not work for task type
!          --  declarations, because we have the case where the expression
!          --  references a discriminant of the task type. That can't use
!          --  an attribute definition clause because we would not have
!          --  visibility on the discriminant. For that case we must
!          --  generate a pragma in the task definition.
  
!          when Aspect_Storage_Size =>
! 
!             --  Task type case
! 
!             if Ekind (E) = E_Task_Type then
                 declare
!                   Decl : constant Node_Id := Declaration_Node (E);
  
                 begin
!                   pragma Assert (Nkind (Decl) = N_Task_Type_Declaration);
  
!                   --  Create a pragma and put it at the start of the task
!                   --  definition for the task type declaration.
  
!                   Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Loc,
!                          Expression => Relocate_Node (Expr))),
!                      Pragma_Name                  => Name_Storage_Size);
!                   Insert_Aitem;
!                end;
  
!             --  Generate an attribute definition clause for access types
  
!             elsif Is_Access_Type (E) then
!                Make_Aitem_Attr_Def (E_Ref, Nam, Expr);
  
!             --  Misplaced Storage_Size aspect; create a pragma to emit
!             --  the error.
  
!             else
!                Make_Aitem_Pragma
!                    (Pragma_Argument_Associations =>
!                       New_List
!                         (Make_Pragma_Argument_Association
!                            (Loc, Expression => Relocate_Node (Expr))),
!                     Pragma_Name                  => Name_Storage_Size);
!                Insert_Aitem;
!             end if;
  
!          when Aspect_External_Initialization =>
!             Error_Msg_GNAT_Extension
!               ("External_Initialization aspect", Sloc (Aspect));
  
!             --  The External_Initialization aspect specifications that
!             --  are attached to object declarations were already
!             --  processed and detached from the list at an earlier stage,
!             --  so we can only get here if the specification is not in an
!             --  appropriate place.
  
!             Error_Msg_N
!               ("External_Initialization aspect can only be specified " &
!                "for object declarations", Aspect);
!       end case;
  
!       --  The evaluation of the aspect is delayed to the freezing point.
!       --  The pragma or attribute_definition_clause if there is one is then
!       --  attached to the aspect specification which is put in the rep item
!       --  list.
  
!       if Delay_Required then
!          if Present (Aitem) then
!             Set_Is_Delayed_Aspect (Aitem);
!             Decorate_Aspect_Links (Aspect, Aitem);
!          end if;
  
!          Set_Is_Delayed_Aspect (Aspect);
  
!          --  In the case of Default_Value, link the aspect to base type
!          --  as well, even though it appears on a first subtype. This is
!          --  mandated by the semantics of the aspect. Do not establish
!          --  the link when processing the base type itself as this leads
!          --  to a rep item circularity.
  
!          if A_Id = Aspect_Default_Value and then Base_Type (E) /= E then
!             Set_Has_Delayed_Aspects (Base_Type (E));
!             Record_Rep_Item (Base_Type (E), Aspect);
!          end if;
  
!          Set_Has_Delayed_Aspects (E);
!          Record_Rep_Item (E, Aspect);
  
!          if Aspect_Delay (A_Id) = Rep_Aspect then
!             Set_Has_Delayed_Rep_Aspects (E);
!          end if;
!       elsif Present (Aitem) then
!          Insert_Aitem;
!       end if;
  
!       --  If a nonoverridable aspect is explicitly specified for a
!       --  derived type, then check consistency with the parent type.
  
!       if A_Id in Nonoverridable_Aspect_Id
!         and then Nkind (N) = N_Full_Type_Declaration
!         and then Nkind (Type_Definition (N)) = N_Derived_Type_Definition
!         and then not In_Instance_Body
!       then
!          --  Locate the nearest ancestor type that has an explicit aspect
!          --  corresponding to E's aspect, and flag an error on that if
!          --  E's aspect does not confirm the aspect inherited from the
!          --  ancestor.
  
!          --  In order to locate the parent type we must go first to its
!          --  base type because the frontend introduces an implicit base
!          --  type even if there is no constraint attached to it, since
!          --  this is closer to the Ada semantics.
  
!          declare
!             Ancestor_Type   : Entity_Id := Etype (Base_Type (E));
!             Ancestor_Aspect : Node_Id   := Find_Aspect
!                                              (Ancestor_Type, A_Id);
!          begin
!             while Present (Ancestor_Aspect) loop
!                if Comes_From_Source (Ancestor_Aspect)
!                  and then
!                    not Is_Confirming (A_Id, Ancestor_Aspect, Aspect)
!                then
!                   Error_Msg_Name_1 := Aspect_Names (A_Id);
!                   Error_Msg_Sloc := Sloc (Ancestor_Aspect);
  
!                   Error_Msg_N
!                     ("overriding aspect specification for "
!                        & "nonoverridable aspect % does not confirm "
!                        & "aspect specification inherited from #",
!                      Aspect);
  
!                   exit;
                 end if;
  
!                if not Is_Derived_Type (Ancestor_Type) then
!                   exit;
                 end if;
  
!                Ancestor_Type := Etype (Base_Type (Ancestor_Type));
!                Ancestor_Aspect := Find_Aspect (Ancestor_Type, A_Id);
!             end loop;
!          end;
!       end if;
  
!       --  For an aspect that applies to a type, indicate whether it
!       --  appears on a partial view of the type. For SPARK.
  
!       if Is_Type (E) and then Is_Private_Type (E) then
!          Set_Aspect_On_Partial_View (Aspect);
!       end if;
  
!       <<Done_One_Aspect>>
!    end Analyze_One_Aspect;
  
!    -----------------------------------
!    -- Analyze_Aspect_Specifications --
!    -----------------------------------
  
!    procedure Analyze_Aspect_Specifications (N : Node_Id; E : N_Entity_Id) is
!       pragma Assert (Present (E));
  
!       Aspect : Node_Id;
  
!       Ins_Node : Node_Id := N;
!       --  Used to (sometimes) preserve order of pragmas relative to the aspects
!       --  whence they came.
  
!    --  Start of processing for Analyze_Aspect_Specifications
  
!    begin
!       --  The general processing involves building an attribute definition
!       --  clause or a pragma node that corresponds to the aspect. Then in order
!       --  to delay the evaluation of this aspect to the freeze point, we attach
!       --  the corresponding pragma/attribute definition clause to the aspect
!       --  specification node, which is then placed in the Rep Item chain. In
!       --  this case we mark the entity by setting the flag Has_Delayed_Aspects
!       --  and we evaluate the rep item at the freeze point. When the aspect
!       --  doesn't have a corresponding pragma/attribute definition clause, then
!       --  its analysis is simply delayed at the freeze point.
  
!       --  Some special cases don't require delay analysis, thus the aspect is
!       --  analyzed right now.
  
!       --  Note that there is a special handling for Pre, Post, Test_Case,
!       --  Contract_Cases, Always_Terminates, Exit_Cases, Exceptional_Cases,
!       --  Program_Exit and Subprogram_Variant aspects. In these cases, we do
!       --  not have to worry about delay issues, since the pragmas themselves
!       --  deal with delay of visibility for the expression analysis. Thus, we
!       --  just insert the pragma after the node N.
! 
!       --  Loop through aspects
! 
!       Aspect := First (Aspect_Specifications (N));
!       while Present (Aspect) loop
!          --  Skip aspect if already analyzed, to avoid looping in some cases
! 
!          if not Analyzed (Aspect) then
!             Analyze_One_Aspect (N, Ins_Node, E, Aspect);
!          end if;
  
           Next (Aspect);
!       end loop;
  
        if Has_Delayed_Aspects (E) then
           Ensure_Freeze_Node (E);
*************** package body Sem_Ch13 is
*** 6046,6051 ****
--- 6069,6084 ----
                 Error_Msg_N
                   ("aspect specification must appear on initial declaration",
                    Asp);
+ 
+                --  Improve the error message for likely misspelling since the
+                --  Initialize aspect (singular) can be used in stubs but the
+                --  Initializes aspect (plural) cannot and would raise a
+                --  misleading error here.
+ 
+                if Asp_Nam = Name_Initializes then
+                   Error_Msg_Name_1 := Name_Initialize;
+                   Error_Msg_N ("\possible misspelling of%", Asp);
+                end if;
              end if;
  
              Next (Asp);
*************** package body Sem_Ch13 is
*** 8682,8689 ****
        end if;
  
        --  Ignore rep clause on generic actual type. This will already have
!       --  been flagged on the template as an error, and this is the safest
!       --  way to ensure we don't get a junk cascaded message in the instance.
  
        if Is_Generic_Actual_Type (Enumtype) then
           return;
--- 8715,8721 ----
        end if;
  
        --  Ignore rep clause on generic actual type. This will already have
!       --  been flagged on the template as an error.
  
        if Is_Generic_Actual_Type (Enumtype) then
           return;
*************** package body Sem_Ch13 is
*** 10615,10642 ****
        LN       : Node_Id;
        Prag     : Node_Id;
  
-       Create_Pragma : Boolean := False;
-       --  This flag is set when the aspect form is such that it warrants the
-       --  creation of a corresponding pragma.
- 
     begin
!       if Present (Expr) then
!          if Error_Posted (Expr) then
!             null;
! 
!          elsif Is_True (Expr_Value (Expr)) then
!             Create_Pragma := True;
!          end if;
! 
!       --  Otherwise the aspect defaults to True
! 
!       else
!          Create_Pragma := True;
!       end if;
! 
!       --  Nothing to do when the expression is False or is erroneous
  
!       if not Create_Pragma then
           return Empty;
        end if;
  
--- 10647,10659 ----
        LN       : Node_Id;
        Prag     : Node_Id;
  
     begin
!       --  Nothing to do when the expression is False or is illegal
  
!       if Present (Expr)
!          and then (Error_Posted (Expr)
!            or else not Is_True (Expr_Value (Expr)))
!       then
           return Empty;
        end if;
  
*************** package body Sem_Ch13 is
*** 10706,10719 ****
              Make_Identifier (Loc, Chars (Identifier (Asp))),
            Pragma_Argument_Associations => Args);
  
-       --  Decorate the relevant aspect and the pragma
- 
-       Set_Aspect_Rep_Item (Asp, Prag);
- 
-       Set_Corresponding_Aspect      (Prag, Asp);
-       Set_From_Aspect_Specification (Prag);
-       Set_Parent                    (Prag, Asp);
- 
        if Asp_Id = Aspect_Import and then Is_Subprogram (Id) then
           Set_Import_Pragma (Id, Prag);
        end if;
--- 10723,10728 ----
*************** package body Sem_Ch13 is
*** 11984,11992 ****
  
           --  Aspects taking an optional boolean argument
  
!          when Boolean_Aspects
!             | Library_Unit_Aspects
!          =>
              T := Standard_Boolean;
  
           --  Aspects corresponding to attribute definition clauses
--- 11993,11999 ----
  
           --  Aspects taking an optional boolean argument
  
!          when Boolean_Aspects =>
              T := Standard_Boolean;
  
           --  Aspects corresponding to attribute definition clauses
*************** package body Sem_Ch13 is
*** 12318,12326 ****
              | Aspect_Super
              | Aspect_Suppress
              | Aspect_Test_Case
-             | Aspect_Unimplemented
              | Aspect_Unsuppress
              | Aspect_User_Aspect
           =>
              raise Program_Error;
  
--- 12325,12333 ----
              | Aspect_Super
              | Aspect_Suppress
              | Aspect_Test_Case
              | Aspect_Unsuppress
              | Aspect_User_Aspect
+             | Ignored_Aspects
           =>
              raise Program_Error;
  
*************** package body Sem_Ch13 is
*** 12790,12805 ****
     ----------------------------------------
  
     procedure Check_Function_For_Indexing_Aspect
!      (ASN   : Node_Id;
!       Typ   : Entity_Id;
!       Subp  : Entity_Id;
!       Valid : out Boolean)
     is
        Aspect : constant Aspect_Id := Get_Aspect_Id (ASN);
  
-       procedure Illegal_Indexing (Msg : String);
-       --  Report error on illegal candidate for indexing function
- 
        function Is_CW_Or_Access_To_CW
          (Param_Type    : Entity_Id;
           Specific_Type : Entity_Id) return Boolean;
--- 12797,12811 ----
     ----------------------------------------
  
     procedure Check_Function_For_Indexing_Aspect
!      (ASN                 : Node_Id;
!       Typ                 : Entity_Id;
!       Subp                : Entity_Id;
!       Valid               : out Boolean;
!       Has_Eligible_Func   : Boolean;
!       Error_On_Ineligible : Boolean)
     is
        Aspect : constant Aspect_Id := Get_Aspect_Id (ASN);
  
        function Is_CW_Or_Access_To_CW
          (Param_Type    : Entity_Id;
           Specific_Type : Entity_Id) return Boolean;
*************** package body Sem_Ch13 is
*** 12810,12836 ****
        --  For an appropriate access type, return designated type;
        --  otherwise return argument.
  
        function Subp_Is_Dispatching_Op_Of_Typ
          (Subp : Entity_Id;
           Typ  : Entity_Id) return Boolean;
        --  Is subprogram Subp is a dispatching operation of type Typ?
  
!       ----------------------
!       -- Illegal_Indexing --
!       ----------------------
! 
!       --  NOTE: If the semantics of indexing aspects are ever changed
!       --  to be treated like resolution rules instead of legality rules,
!       --  then this procedure could be modified to only issue the error
!       --  if an appropriate function has not yet been found and there are
!       --  no further operations yet to be considered as interpretations
!       --  (i.e., return immediately without a message if Indexing_Found
!       --  or no further candidate functions are yet to be considered).
  
!       procedure Illegal_Indexing (Msg : String) is
        begin
           Error_Msg_NE (Msg, ASN, Typ);
!       end Illegal_Indexing;
  
        ---------------------------
        -- Is_CW_Or_Access_To_CW --
--- 12816,12864 ----
        --  For an appropriate access type, return designated type;
        --  otherwise return argument.
  
+       procedure Report_Ineligible_Indexing_Function (Msg : String);
+       --  Report an error or warning on an ineligible candidate for an indexing
+       --  function. Error messages are issued when Error_On_Ineligible is True;
+       --  otherwise, the message is reported as a warning (unless considered
+       --  likely to be a false-positive warning).
+ 
        function Subp_Is_Dispatching_Op_Of_Typ
          (Subp : Entity_Id;
           Typ  : Entity_Id) return Boolean;
        --  Is subprogram Subp is a dispatching operation of type Typ?
  
!       -----------------------------------------
!       -- Report_Ineligible_Indexing_Function --
!       -----------------------------------------
  
!       procedure Report_Ineligible_Indexing_Function (Msg : String) is
        begin
+          --  Never issue a message on inherited subprograms. That can only
+          --  occur in warning cases, and would be too confusing. Also suppress
+          --  the warning if the first parameter is missing or doesn't match
+          --  the type with the indexing aspect, to limit false positives.
+ 
+          if not Error_On_Ineligible
+            and then
+              (not Comes_From_Source (Subp)
+                 or else
+               not Present (First_Formal (Subp))
+                 or else
+               Base_Type (Etype (First_Formal (Subp))) /= Typ)
+          then
+             return;
+          end if;
+ 
+          --  Set Error_Msg_Warn based on whether errors are wanted, so that
+          --  messages with "<<" will be reported appropriately as warnings
+          --  or errors.
+ 
+          Error_Msg_Warn := not Error_On_Ineligible;
           Error_Msg_NE (Msg, ASN, Typ);
! 
!          Error_Msg_Sloc := Sloc (Subp);
!          Error_Msg_NE ("\ineligible operation & declared#", ASN, Subp);
!       end Report_Ineligible_Indexing_Function;
  
        ---------------------------
        -- Is_CW_Or_Access_To_CW --
*************** package body Sem_Ch13 is
*** 12910,12986 ****
  
        Ret_Type : constant Entity_Id := Etype (Subp);
  
     --  Start of processing for Check_Function_For_Indexing_Aspect
  
     begin
        Valid := False;
  
!       --  If the subprogram isn't declared in the same scope as the type
!       --  E, then it shouldn't be considered (see AI22-0084 as well as
!       --  RM 4.1.6(2/5-3/5), though the latter are apparently intended
!       --  as legality rules, not resolution rules).
  
-       if Scope (Subp) /= Scope (Typ) then
           return;
  
        elsif not Is_Overloadable (Subp) or else No (Ret_Type) then
!          Illegal_Indexing ("illegal indexing function for type&");
           return;
  
        elsif No (First_Formal (Subp)) then
!          Illegal_Indexing
!            ("indexing aspect requires a function that applies to type&");
!          return;
  
-       elsif No (Next_Formal (First_Formal (Subp))) then
-          Error_Msg_Sloc := Sloc (Subp);
-          Illegal_Indexing
-            ("at least two parameters required for indexing function "
-             & "defined #");
           return;
  
!       elsif not Subp_Is_Dispatching_Op_Of_Typ
!                   (Subp => Subp, Typ => Typ)
!          and then not Is_CW_Or_Access_To_CW
!                         (Param_Type => Etype (First_Formal (Subp)),
!                          Specific_Type => Typ)
        then
!          Illegal_Indexing
!            ("indexing aspect requires function with first formal "
!             & "applying to type& or its class-wide type");
           return;
  
        elsif Aspect = Aspect_Constant_Indexing
           and then Is_Anonymous_Access_Type (Etype (First_Formal (Subp)))
           and then not Is_Access_Constant (Etype (First_Formal (Subp)))
        then
!          Illegal_Indexing
             ("Constant_Indexing must apply to function with "
!             & "access-to-constant formal");
           return;
-       end if;
  
        --  For variable_indexing the return type must be a reference type
  
!       if Aspect = Aspect_Variable_Indexing then
           if not Has_Implicit_Dereference (Ret_Type) then
!             Illegal_Indexing
                ("function for Variable_Indexing must return "
!                & "a reference type");
              return;
  
           elsif Is_Access_Constant
                   (Etype (First_Discriminant (Ret_Type)))
           then
!             Illegal_Indexing
                ("function for Variable_Indexing must return an "
!                & "access-to-variable result");
              return;
           end if;
        end if;
  
        Valid := True;
  
        --  Add the acceptable subprogram to the indexing aspect's list
        --  of subprograms.
  
--- 12938,13058 ----
  
        Ret_Type : constant Entity_Id := Etype (Subp);
  
+       Has_Class_Wide_First_Formal : constant Boolean :=
+         Present (First_Formal (Subp))
+           and then
+             Is_CW_Or_Access_To_CW
+               (Param_Type    => Etype (First_Formal (Subp)),
+                Specific_Type => Typ);
+ 
     --  Start of processing for Check_Function_For_Indexing_Aspect
  
     begin
        Valid := False;
  
!       --  If the aspect is already associated with the subprogram, such as in
!       --  the case of a class-wide operation of an inherited aspect coming from
!       --  the parent type, then no further checking needed.
! 
!       if Contains (Aspect_Subprograms (ASN), Subp) then
!          Valid := True;
! 
!          return;
!       end if;
! 
!       --  The name given in an indexing aspect usually denote primitives
!       --  that will be declared in the same scope as the type (by RM 4.1.6(2-3)
!       --  together with 13.1.1(18.4/6)), unless denoting a class-wide function,
!       --  in which case it could be in a nested package. We only want to issue
!       --  a message about a scope violation when errors are requested and there
!       --  is not at least one eligible function identified, as giving warnings
!       --  can result in reporting many false positives (such as on subprograms
!       --  in used packages).
! 
!       if Scope (Subp) /= Scope (Typ)
!         and then not Has_Class_Wide_First_Formal
!       then
!          if not Has_Eligible_Func and then Error_On_Ineligible then
!             Report_Ineligible_Indexing_Function
!               ("indexing aspect requires function with same scope as type&");
!          end if;
  
           return;
  
+       --  Only flag an entity that is not a function when errors are
+       --  requested and there's not at least one eligible function
+       --  identified, and never issue a warning.
+ 
        elsif not Is_Overloadable (Subp) or else No (Ret_Type) then
!          if not Has_Eligible_Func and then Error_On_Ineligible then
!             Report_Ineligible_Indexing_Function
!               ("illegal indexing function for type&");
!          end if;
! 
           return;
  
        elsif No (First_Formal (Subp)) then
!          if not Has_Eligible_Func then
!             Report_Ineligible_Indexing_Function
!               ("indexing aspect requires a function that applies to type&<<");
!          end if;
  
           return;
  
!       elsif not Subp_Is_Dispatching_Op_Of_Typ (Subp => Subp, Typ => Typ)
!         and then not Has_Class_Wide_First_Formal
        then
!          if not Has_Eligible_Func then
!             Report_Ineligible_Indexing_Function
!               ("indexing aspect requires function with first formal "
!                & "applying to type& or its class-wide type<<");
!          end if;
           return;
  
+       elsif No (Next_Formal (First_Formal (Subp))) then
+          if not Has_Eligible_Func then
+             Report_Ineligible_Indexing_Function
+               ("at least two parameters required for indexing function<<");
+          end if;
+ 
        elsif Aspect = Aspect_Constant_Indexing
           and then Is_Anonymous_Access_Type (Etype (First_Formal (Subp)))
           and then not Is_Access_Constant (Etype (First_Formal (Subp)))
        then
!          Report_Ineligible_Indexing_Function
             ("Constant_Indexing must apply to function with "
!             & "access-to-constant formal<<");
           return;
  
        --  For variable_indexing the return type must be a reference type
  
!       elsif Aspect = Aspect_Variable_Indexing then
           if not Has_Implicit_Dereference (Ret_Type) then
!             Report_Ineligible_Indexing_Function
                ("function for Variable_Indexing must return "
!                & "a reference type<<");
              return;
  
           elsif Is_Access_Constant
                   (Etype (First_Discriminant (Ret_Type)))
           then
!             Report_Ineligible_Indexing_Function
                ("function for Variable_Indexing must return an "
!                & "access-to-variable result<<");
              return;
           end if;
        end if;
  
        Valid := True;
  
+       --  If errors are not requested, then return now, without adding this
+       --  eligible function to the indexing aspect's eligible subprograms list.
+       --  It will be added on a later call with Error_On_Ineligible set True.
+ 
+       if not Error_On_Ineligible then
+          return;
+       end if;
+ 
        --  Add the acceptable subprogram to the indexing aspect's list
        --  of subprograms.
  
*************** package body Sem_Ch13 is
*** 14496,14502 ****
        end if;
  
        --  After all forms of overriding have been resolved, a tagged type may
!       --  be left with a set of implicitly declared and possibly erroneous
        --  abstract subprograms, null procedures and subprograms that require
        --  overriding. If this set contains fully conformant homographs, then
        --  one is chosen arbitrarily (already done during resolution), otherwise
--- 14568,14574 ----
        end if;
  
        --  After all forms of overriding have been resolved, a tagged type may
!       --  be left with a set of implicitly declared and possibly-illegal
        --  abstract subprograms, null procedures and subprograms that require
        --  overriding. If this set contains fully conformant homographs, then
        --  one is chosen arbitrarily (already done during resolution), otherwise
*************** package body Sem_Ch13 is
*** 17864,17873 ****
        end if;
  
        Error_Msg_N
!         ("finalizable primitive must be local procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
     function Resolve_Finalization_Procedure
       (N   : Node_Id;
        Typ : Entity_Id)
--- 17936,17949 ----
        end if;
  
        Error_Msg_N
!         ("subprogram must denote primitive procedure whose only formal " &
           "parameter has mode `IN OUT` and is of the finalizable type", N);
     end Resolve_Finalizable_Argument;
  
+    ------------------------------------
+    -- Resolve_Finalization_Procedure --
+    ------------------------------------
+ 
     function Resolve_Finalization_Procedure
       (N   : Node_Id;
        Typ : Entity_Id)
*************** package body Sem_Ch13 is
*** 17884,17889 ****
--- 17960,17966 ----
        begin
           return Ekind (E) = E_Procedure
             and then Scope (E) = Scope (Typ)
+            and then Is_Primitive (E)
             and then Present (First_Formal (E))
             and then Ekind (First_Formal (E)) = E_In_Out_Parameter
             and then Etype (First_Formal (E)) = Typ
*************** package body Sem_Ch13 is
*** 18046,18052 ****
                 then
                    F1 := First_Formal (It.Nam);
  
!                   if Nam = Name_First then
                       if Etype (It.Nam) = Cursor
                         and then No (Next_Formal (F1))
                       then
--- 18123,18129 ----
                 then
                    F1 := First_Formal (It.Nam);
  
!                   if Nam in Name_First | Name_Last then
                       if Etype (It.Nam) = Cursor
                         and then No (Next_Formal (F1))
                       then
*************** package body Sem_Ch13 is
*** 18054,18060 ****
                          exit;
                       end if;
  
!                   elsif Nam = Name_Next then
                       F2 := Next_Formal (F1);
  
                       if Present (F2)
--- 18131,18137 ----
                          exit;
                       end if;
  
!                   elsif Nam in Name_Next | Name_Previous then
                       F2 := Next_Formal (F1);
  
                       if Present (F2)
*************** package body Sem_Ch13 is
*** 18224,18230 ****
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Pred (Entity (Subp_Id)) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
--- 18301,18309 ----
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Is_Entity_Name (Subp_Id)
!               or else not Pred (Entity (Subp_Id))
!             then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch13.ads gcc-17-20260531/gcc/ada/sem_ch13.ads
*** gcc-17-20260524/gcc/ada/sem_ch13.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch13.ads	Sun May 31 22:32:05 2026
***************
*** 26,31 ****
--- 26,32 ----
  with Local_Restrict;
  with Types; use Types;
  with Sem_Disp; use Sem_Disp;
+ with Sinfo.Nodes; use Sinfo.Nodes;
  with Uintp; use Uintp;
  
  package Sem_Ch13 is
*************** package Sem_Ch13 is
*** 41,49 ****
     procedure Analyze_Record_Representation_Clause       (N : Node_Id);
     procedure Analyze_Code_Statement                     (N : Node_Id);
  
!    procedure Analyze_Aspect_Specifications (N : Node_Id; E : Entity_Id);
!    --  This procedure is called to analyze aspect specifications for node N. E
!    --  is the corresponding entity declared by the declaration node N.
  
     procedure Analyze_Aspects_On_Subprogram_Body_Or_Stub (N : Node_Id);
     --  Analyze the aspect specifications of [generic] subprogram body or stub
--- 42,50 ----
     procedure Analyze_Record_Representation_Clause       (N : Node_Id);
     procedure Analyze_Code_Statement                     (N : Node_Id);
  
!    procedure Analyze_Aspect_Specifications (N : Node_Id; E : N_Entity_Id);
!    --  Analyze aspect specifications of declaration N. E is the entity
!    --  declared by N.
  
     procedure Analyze_Aspects_On_Subprogram_Body_Or_Stub (N : Node_Id);
     --  Analyze the aspect specifications of [generic] subprogram body or stub
*************** package Sem_Ch13 is
*** 110,128 ****
     --  at the point an object with an address clause is frozen, as well as for
     --  address clauses for tasks and entries.
  
-    procedure Check_Function_For_Indexing_Aspect
-      (ASN   : Node_Id;
-       Typ   : Entity_Id;
-       Subp  : Entity_Id;
-       Valid : out Boolean);
-    --  Check Subp to see whether it's a valid function for Typ's indexing
-    --  aspect ASN (as specified by the rules given in RM 4.1.6(1-3)), flagging
-    --  an error if Subp is not an eligible indexing function (unless Subp is
-    --  declared outside the scope of E, in which case it's simply ignored
-    --  rather than considered an error; see AI22-0084). If valid for indexing,
-    --  then Subp is added to ASN's Aspect_Subprograms list, and Valid is set
-    --  to True (otherwise False).
- 
     procedure Check_Size
       (N      : Node_Id;
        T      : Entity_Id;
--- 111,116 ----
*************** package Sem_Ch13 is
*** 170,180 ****
     --  in the case of the aspect of a type, Negated will always be False.
  
     function Rep_Item_Too_Early (T : Entity_Id; N : Node_Id) return Boolean;
!    --  Called at start of processing a representation clause/pragma. Used to
!    --  check that the representation item is not being applied to an incomplete
!    --  type or to a generic formal type or a type derived from a generic formal
!    --  type. Returns False if no such error occurs. If this error does occur,
!    --  appropriate error messages are posted on node N, and True is returned.
  
     generic
        with procedure Replace_Type_Reference (N : Node_Id);
--- 158,169 ----
     --  in the case of the aspect of a type, Negated will always be False.
  
     function Rep_Item_Too_Early (T : Entity_Id; N : Node_Id) return Boolean;
!    --  Called at start of processing a representation clause, pragma, or
!    --  aspect. Used to check that the representation item is not being applied
!    --  to an incomplete type or to a generic formal type or a type derived from
!    --  a generic formal type. Returns False if no such error occurs. If this
!    --  error does occur, appropriate error messages are posted on node N, and
!    --  True is returned.
  
     generic
        with procedure Replace_Type_Reference (N : Node_Id);
*************** package Sem_Ch13 is
*** 229,235 ****
     --  Note: Calls to Rep_Item_Too_Late are ignored for the case of attribute
     --  definition clauses which have From_Aspect_Specification set. This is
     --  because such clauses are linked on to the Rep_Item chain in procedure
!    --  Sem_Ch13.Analyze_Aspect_Specifications. See that procedure for details.
  
     procedure Validate_Unchecked_Conversion
       (N        : Node_Id;
--- 218,224 ----
     --  Note: Calls to Rep_Item_Too_Late are ignored for the case of attribute
     --  definition clauses which have From_Aspect_Specification set. This is
     --  because such clauses are linked on to the Rep_Item chain in procedure
!    --  Analyze_Aspect_Specifications. See that procedure for details.
  
     procedure Validate_Unchecked_Conversion
       (N        : Node_Id;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch3.adb gcc-17-20260531/gcc/ada/sem_ch3.adb
*** gcc-17-20260524/gcc/ada/sem_ch3.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch3.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch3 is
*** 2894,2900 ****
           --  generated bodies that have not been analyzed yet), freeze all
           --  types now. Note that in the latter case, the expander must take
           --  care to attach the bodies at a proper place in the tree so as to
!          --  not cause unwanted freezing at that point.
  
           --  It is also necessary to check for a case where both an expression
           --  function is used and the current scope depends on an incomplete
--- 2894,2901 ----
           --  generated bodies that have not been analyzed yet), freeze all
           --  types now. Note that in the latter case, the expander must take
           --  care to attach the bodies at a proper place in the tree so as to
!          --  not cause unwanted freezing at that point. The exception is the
!          --  generated body of an expression function, which does not freeze.
  
           --  It is also necessary to check for a case where both an expression
           --  function is used and the current scope depends on an incomplete
*************** package body Sem_Ch3 is
*** 2941,2951 ****
  
              Adjust_Decl;
  
-             --  The generated body of an expression function does not freeze,
-             --  unless it is a completion, in which case only the expression
-             --  itself freezes. This is handled when the body itself is
-             --  analyzed (see Freeze_Expr_Types, sem_ch6.adb).
- 
              Freeze_All (Freeze_From, Decl);
              Freeze_From := Last_Entity (Current_Scope);
           end if;
--- 2942,2947 ----
*************** package body Sem_Ch3 is
*** 3197,3208 ****
     begin
        if Present (Aspect_Specifications (Parent (Def))) then
           declare
!             Asp : Node_Id;
           begin
              Asp := First (Aspect_Specifications (Parent (Def)));
              while Present (Asp) loop
                 if Chars (Identifier (Asp)) = Name_Unsigned_Base_Range then
!                   Is_Unsigned_Base_Range_Type_Decl := True;
                    exit;
                 end if;
  
--- 3193,3214 ----
     begin
        if Present (Aspect_Specifications (Parent (Def))) then
           declare
!             Asp  : Node_Id;
!             Expr : Node_Id;
! 
           begin
              Asp := First (Aspect_Specifications (Parent (Def)));
              while Present (Asp) loop
                 if Chars (Identifier (Asp)) = Name_Unsigned_Base_Range then
!                   Expr := Expression (Asp);
! 
!                   if Present (Expr) then
!                      Analyze_And_Resolve (Expr, Standard_Boolean);
!                   end if;
! 
!                   Is_Unsigned_Base_Range_Type_Decl :=
!                     No (Expression (Asp))
!                       or else Is_True (Static_Boolean (Expr));
                    exit;
                 end if;
  
*************** package body Sem_Ch3 is
*** 4514,4519 ****
--- 4520,4533 ----
           Generate_Definition (Id);
           Enter_Name (Id);
  
+          --  For artificial return objects created from within a transient
+          --  scope, propagate Return_Applies_To from the enclosing return.
+ 
+          if Is_Return_Object (Id) and then Scope_Is_Transient then
+             Set_Return_Applies_To
+               (Scope (Id), Return_Applies_To (Scope (Scope (Id))));
+          end if;
+ 
           Mark_Coextensions (N, Object_Definition (N));
  
           T := Find_Type_Of_Object (Object_Definition (N), N);
*************** package body Sem_Ch3 is
*** 4769,4776 ****
           --  has been replaced by a renaming declaration during its expansion
           --  (see Expand_N_Case_Expression and Expand_N_If_Expression).
  
!          if Expander_Active
!            and then Nkind (E) in N_Case_Expression | N_If_Expression
             and then Nkind (N) = N_Object_Renaming_Declaration
           then
              goto Leave;
--- 4783,4789 ----
           --  has been replaced by a renaming declaration during its expansion
           --  (see Expand_N_Case_Expression and Expand_N_If_Expression).
  
!          if Nkind (E) in N_Case_Expression | N_If_Expression
             and then Nkind (N) = N_Object_Renaming_Declaration
           then
              goto Leave;
*************** package body Sem_Ch3 is
*** 4865,4870 ****
--- 4878,4896 ----
                ("formal parameter cannot be implicitly converted to "
                 & "class-wide type when Extensions_Visible is False", E);
           end if;
+ 
+          --  Cannot invoke a C++ constructor in the return statement of
+          --  a function with foreign convention, because the extra formal
+          --  BIP_Object_Access is not available.
+ 
+          if Is_CPP_Constructor_Call (E)
+            and then Is_Return_Object (Id)
+            and then Has_Foreign_Convention (Return_Applies_To (Scope (Id)))
+          then
+             Error_Msg_N
+               ("C++ constructor call in return statement of "
+                &  "function with foreign convention", E);
+          end if;
        end if;
  
        --  If the No_Streams restriction is set, check that the type of the
*************** package body Sem_Ch3 is
*** 4904,4910 ****
          and then
            (Present (E)
              or else
!               Is_Partially_Initialized_Type (T, Include_Implicit => False))
          and then not (Constant_Present (N) and then No (E))
        then
           --  If the type has a static predicate and the expression is known at
--- 4930,4938 ----
          and then
            (Present (E)
              or else
!               Is_Partially_Initialized_Type (T,
!                 Include_Implicit => False,
!                 Predicate_Check  => True))
          and then not (Constant_Present (N) and then No (E))
        then
           --  If the type has a static predicate and the expression is known at
*************** package body Sem_Ch3 is
*** 5249,5263 ****
          and then Nkind (E) = N_Aggregate
        then
           Act_T := Etype (E);
- 
-       elsif Needs_Construction (T)
-         and then not Has_Init_Expression (N)
-         and then not Has_Parameterless_Constructor (T)
-         and then not Suppress_Initialization (Id)
-         and then Comes_From_Source (N)
-       then
-          Error_Msg_NE ("no parameterless constructor for&",
-                        Object_Definition (N), T);
        end if;
  
        --  Check No_Wide_Characters restriction
--- 5277,5282 ----
*************** package body Sem_Ch3 is
*** 5461,5472 ****
  
        Check_Eliminated (Id);
  
!       --  Deal with setting In_Private_Part flag if in private part
  
!       if Ekind (Scope (Id)) = E_Package
!         and then In_Private_Part (Scope (Id))
!       then
!          Set_In_Private_Part (Id);
        end if;
  
     <<Leave>>
--- 5480,5490 ----
  
        Check_Eliminated (Id);
  
!       --  Deal with setting In_Package_Body and In_Private_Part flags
  
!       if Ekind (Scope (Id)) = E_Package then
!          Set_In_Package_Body (Id, In_Package_Body (Scope (Id)));
!          Set_In_Private_Part (Id, In_Private_Part (Scope (Id)));
        end if;
  
     <<Leave>>
*************** package body Sem_Ch3 is
*** 6021,6026 ****
--- 6039,6045 ----
                    Set_No_Tagged_Streams_Pragma
                                          (Id, No_Tagged_Streams_Pragma (T));
                    Set_Is_Abstract_Type  (Id, Is_Abstract_Type (T));
+                   Set_Is_CPP_Class      (Id, Is_CPP_Class (T));
                    Set_Class_Wide_Type   (Id, Class_Wide_Type (T));
  
                    if Is_Interface (T) then
*************** package body Sem_Ch3 is
*** 10115,10120 ****
--- 10134,10146 ----
        Set_Has_Primitive_Operations
          (Derived_Type, Has_Primitive_Operations (Parent_Base));
  
+       if Ekind (Derived_Type) = E_Record_Type then
+          Set_Is_Unchecked_Union
+            (Derived_Type, Is_Unchecked_Union (Parent_Base));
+          Set_Has_Unchecked_Union
+            (Derived_Type, Has_Unchecked_Union (Parent_Base));
+       end if;
+ 
        --  Set fields for private derived types
  
        if Is_Private_Type (Derived_Type) then
*************** package body Sem_Ch3 is
*** 10454,10459 ****
--- 10480,10491 ----
        if Is_Tagged_Type (Derived_Type) then
           Set_No_Tagged_Streams_Pragma
             (Derived_Type, No_Tagged_Streams_Pragma (Parent_Type));
+ 
+          --  Propagate information about constructor dependence from parent
+ 
+          Set_Needs_Construction
+            (Derived_Type,
+             Needs_Construction (Parent_Type));
        end if;
  
        --  If the parent has primitive routines and may have not-seen-yet aspect
*************** package body Sem_Ch3 is
*** 12562,12567 ****
--- 12594,12603 ----
           --  source (including the _Call primitive operation of RAS types,
           --  which has to have the flag Comes_From_Source for other purposes):
           --  we assume that the expander will provide the missing completion.
+ 
+          --  Likewise for a stand-alone expression function, whose body may be
+          --  generated outside of the package.
+ 
           --  In case of previous errors, other expansion actions that provide
           --  bodies for null procedures with not be invoked, so inhibit message
           --  in those cases.
*************** package body Sem_Ch3 is
*** 12587,12592 ****
--- 12623,12631 ----
              then
                 null;
  
+             elsif Is_Expression_Function (E) then
+                null;
+ 
              elsif
                 Nkind (Parent (Unit_Declaration_Node (E))) = N_Compilation_Unit
              then
*************** package body Sem_Ch3 is
*** 16844,16849 ****
--- 16883,16905 ----
           if Present (Formal_Of_Actual) then
              Replace_Type (Formal_Of_Actual, New_Formal);
              Next_Formal (Formal_Of_Actual);
+ 
+          --  Do not replace the type when Derived_Type inherits the first
+          --  controlling parameter aspect and this is not the first formal
+          --  of this operation. The exception to this common case is when
+          --  this is a controlling formal; this case corresponds with an
+          --  inherited operation of an ancestor that does not have the
+          --  first controlling parameter aspect.
+ 
+          elsif Is_Tagged_Type (Parent_Type)
+            and then Has_First_Controlling_Parameter_Aspect (Parent_Type)
+            and then Formal /= First_Formal (Parent_Subp)
+            and then not Is_Controlling_Formal (Formal)
+            and then Is_Dispatching_Operation (Parent_Subp)
+            and then not Is_Predefined_Dispatching_Operation (Parent_Subp)
+          then
+             null;
+ 
           else
              Replace_Type (Formal, New_Formal);
           end if;
*************** package body Sem_Ch3 is
*** 19185,19191 ****
           --  of discriminated private type without a full view.
  
           else
!             Insert_Actions (Obj_Def, Freeze_Entity (Base_Type (T), P));
           end if;
  
        --  Ada 2005 AI-406: the object definition in an object declaration
--- 19241,19247 ----
           --  of discriminated private type without a full view.
  
           else
!             Freeze_Before (Obj_Def, Base_Type (T));
           end if;
  
        --  Ada 2005 AI-406: the object definition in an object declaration
*************** package body Sem_Ch3 is
*** 19964,19969 ****
--- 20020,20030 ----
           if not Is_Tagged then
              Append_Elmt (Old_C, Assoc_List);
              Append_Elmt (New_C, Assoc_List);
+ 
+             if Plain_Discrim then
+                Append_Elmt (Discriminal (Old_C), Assoc_List);
+                Append_Elmt (Discriminal (New_C), Assoc_List);
+             end if;
           end if;
        end Inherit_Component;
  
*************** package body Sem_Ch3 is
*** 21778,21787 ****
        --  decoration of the full view and thus cannot be placed with other
        --  similar checks in Find_Type_Name
  
!       if not Is_Limited_Type (Priv_T)
!         and then (Is_Limited_Type (Full_T)
!                    or else Is_Limited_Composite (Full_T))
!       then
           if In_Instance then
              null;
           else
--- 21839,21845 ----
        --  decoration of the full view and thus cannot be placed with other
        --  similar checks in Find_Type_Name
  
!       if not Is_Limited_Type (Priv_T) and then Is_Limited_Type (Full_T) then
           if In_Instance then
              null;
           else
*************** package body Sem_Ch3 is
*** 23474,23487 ****
  
           Propagate_Concurrent_Flags (T, Etype (Component));
  
-          --  Propagate information about constructor dependence
- 
-          if Ekind (Etype (Component)) /= E_Void
-            and then Needs_Construction (Etype (Component))
-          then
-             Set_Needs_Construction (T);
-          end if;
- 
           if Ekind (Component) /= E_Component then
              null;
  
--- 23532,23537 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch4.adb gcc-17-20260531/gcc/ada/sem_ch4.adb
*** gcc-17-20260524/gcc/ada/sem_ch4.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch4.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch4 is
*** 1812,1818 ****
          and then Has_Static_Predicate_Aspect (Exp_Type)
          and then Preanalysis_Active
        then
!          null;
  
        --  Call Analyze_Choices and Check_Choices to do the rest of the work
  
--- 1812,1818 ----
          and then Has_Static_Predicate_Aspect (Exp_Type)
          and then Preanalysis_Active
        then
!          Analyze_Choices (Alternatives (N), Exp_Type);
  
        --  Call Analyze_Choices and Check_Choices to do the rest of the work
  
*************** package body Sem_Ch4 is
*** 2482,2487 ****
--- 2482,2489 ----
           Error_Msg_N ("object renaming or constant declaration expected", A);
        end Check_Action_OK;
  
+       --  Local variables
+ 
        A        : Node_Id;
        EWA_Scop : Entity_Id;
  
*************** package body Sem_Ch4 is
*** 2497,2502 ****
--- 2499,2506 ----
        Set_Parent (EWA_Scop, N);
        Push_Scope (EWA_Scop);
  
+       Set_Scope_Link (N, EWA_Scop);
+ 
        --  If this Expression_With_Actions node comes from source, then it
        --  represents a declare_expression; increment the counter to take note
        --  of that.
*************** package body Sem_Ch4 is
*** 2514,2524 ****
  
        Analyze_Expression (Expression (N));
        Set_Etype (N, Etype (Expression (N)));
-       End_Scope;
  
        if Comes_From_Source (N) then
           In_Declare_Expr := In_Declare_Expr - 1;
        end if;
     end Analyze_Expression_With_Actions;
  
     ---------------------------
--- 2518,2530 ----
  
        Analyze_Expression (Expression (N));
        Set_Etype (N, Etype (Expression (N)));
  
        if Comes_From_Source (N) then
           In_Declare_Expr := In_Declare_Expr - 1;
        end if;
+ 
+       pragma Assert (Current_Scope = Scope_Link (N));
+       End_Scope;
     end Analyze_Expression_With_Actions;
  
     ---------------------------
*************** package body Sem_Ch4 is
*** 4528,4536 ****
        Expr : constant Node_Id   := Expression (N);
        Mark : constant Entity_Id := Subtype_Mark (N);
  
!       I    : Interp_Index;
!       It   : Interp;
!       T    : Entity_Id;
  
     begin
        Find_Type (Mark);
--- 4534,4569 ----
        Expr : constant Node_Id   := Expression (N);
        Mark : constant Entity_Id := Subtype_Mark (N);
  
!       function Same_Class_Wide_Type (Typ, CW_Typ : Entity_Id) return Boolean;
!       --  Return whether Typ is the same class-wide type as CW_Typ. This is
!       --  essentially an equality test modulo the Non_Limited_View attribute.
! 
!       --------------------------
!       -- Same_Class_Wide_Type --
!       --------------------------
! 
!       function Same_Class_Wide_Type (Typ, CW_Typ : Entity_Id) return Boolean is
!          Btyp : constant Entity_Id := Base_Type (Typ);
! 
!       begin
!          if Ekind (Btyp) /= E_Class_Wide_Type then
!             return False;
!          end if;
! 
!          if Has_Non_Limited_View (Btyp) then
!             return Non_Limited_View (Btyp) = Base_Type (CW_Typ);
!          else
!             return Btyp = Base_Type (CW_Typ);
!          end if;
!       end Same_Class_Wide_Type;
! 
!       --  Local variables
! 
!       I  : Interp_Index;
!       It : Interp;
!       T  : Entity_Id;
! 
!    --  Start of processing for Analyze_Qualified_Expression
  
     begin
        Find_Type (Mark);
*************** package body Sem_Ch4 is
*** 4569,4575 ****
  
        if Is_Class_Wide_Type (T) then
           if not Is_Overloaded (Expr) then
!             if Base_Type (Etype (Expr)) /= Base_Type (T)
                and then Etype (Expr) /= Raise_Type
              then
                 if Nkind (Expr) = N_Aggregate then
--- 4602,4608 ----
  
        if Is_Class_Wide_Type (T) then
           if not Is_Overloaded (Expr) then
!             if not Same_Class_Wide_Type (Etype (Expr), T)
                and then Etype (Expr) /= Raise_Type
              then
                 if Nkind (Expr) = N_Aggregate then
*************** package body Sem_Ch4 is
*** 4583,4589 ****
              Get_First_Interp (Expr, I, It);
  
              while Present (It.Nam) loop
!                if Base_Type (It.Typ) /= Base_Type (T) then
                    Remove_Interp (I);
                 end if;
  
--- 4616,4622 ----
              Get_First_Interp (Expr, I, It);
  
              while Present (It.Nam) loop
!                if not Same_Class_Wide_Type (It.Typ, T) then
                    Remove_Interp (I);
                 end if;
  
*************** package body Sem_Ch4 is
*** 4637,4642 ****
--- 4670,4676 ----
  
        Cond    : constant Node_Id := Condition (N);
        Loc     : constant Source_Ptr := Sloc (N);
+       Filter  : Node_Id;
        Loop_Id : Entity_Id;
        QE_Scop : Entity_Id;
  
*************** package body Sem_Ch4 is
*** 4732,4739 ****
--- 4766,4775 ----
  
        if Present (Iterator_Specification (N)) then
           Loop_Id := Defining_Identifier (Iterator_Specification (N));
+          Filter  := Iterator_Filter (Iterator_Specification (N));
        else
           Loop_Id := Defining_Identifier (Loop_Parameter_Specification (N));
+          Filter  := Iterator_Filter (Loop_Parameter_Specification (N));
        end if;
  
        declare
*************** package body Sem_Ch4 is
*** 4782,4792 ****
        begin
           if Warn_On_Suspicious_Contract
             and then not Is_Internal_Name (Chars (Loop_Id))
           then
!             if not Referenced (Loop_Id, Cond) then
!                Error_Msg_N ("?.t?unused variable &", Loop_Id);
!             else
                 Check_Subexpr (Cond, Kind => Full);
              end if;
           end if;
        end;
--- 4818,4834 ----
        begin
           if Warn_On_Suspicious_Contract
             and then not Is_Internal_Name (Chars (Loop_Id))
+            and then not Has_Junk_Name (Loop_Id)
           then
!             --  If there is a filter, then it is less clear whether the loop
!             --  variable is used or not; just ignore this case, for simplicity.
! 
!             if Present (Filter) then
!                null;
!             elsif Referenced (Loop_Id, Cond) then
                 Check_Subexpr (Cond, Kind => Full);
+             elsif not Is_Trivial_Boolean (Cond) then
+                Error_Msg_N ("?.t?unused variable &", Loop_Id);
              end if;
           end if;
        end;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch5.adb gcc-17-20260531/gcc/ada/sem_ch5.adb
*** gcc-17-20260524/gcc/ada/sem_ch5.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch5.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch5 is
*** 94,110 ****
     --  statements. On success, the return value is the entity of the loop
     --  referenced by the statement.
  
-    function Has_Sec_Stack_Call (N : Node_Id) return Boolean;
-    --  N is the node for an arbitrary construct. This function searches the
-    --  construct N to see if it contains a function call that returns on the
-    --  secondary stack, returning True if any such call is found, and False
-    --  otherwise.
- 
-    --  ??? The implementation invokes Sem_Util.Requires_Transient_Scope so it
-    --  will return True if N contains a function call that needs finalization,
-    --  in addition to the above specification. See Analyze_Loop_Statement for
-    --  a similar comment about this entanglement.
- 
     procedure Preanalyze_Range (R_Copy : Node_Id);
     --  Determine expected type of range or domain of iteration of Ada 2012
     --  loop by analyzing separate copy. Do the analysis and resolution of the
--- 94,99 ----
*************** package body Sem_Ch5 is
*** 674,686 ****
        --  Error of assigning to limited type. We do however allow this in
        --  certain cases where the front end generates the assignments.
        --  Comes_From_Source test is needed to allow compiler-generated
!       --  constructor calls or streaming/put_image subprograms, which may
!       --  ignore privacy.
  
        elsif Is_Limited_Type (T1)
          and then not Assignment_OK (Lhs)
          and then not Assignment_OK (Original_Node (Lhs))
!         and then Comes_From_Source (N)
        then
           --  CPP constructors can only be called in declarations
  
--- 663,675 ----
        --  Error of assigning to limited type. We do however allow this in
        --  certain cases where the front end generates the assignments.
        --  Comes_From_Source test is needed to allow compiler-generated
!       --  streaming/put_image subprograms, which may ignore privacy.
  
        elsif Is_Limited_Type (T1)
          and then not Assignment_OK (Lhs)
          and then not Assignment_OK (Original_Node (Lhs))
!         and then (Comes_From_Source (N)
!                    or else Is_Immutably_Limited_Type (T1))
        then
           --  CPP constructors can only be called in declarations
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch5.ads gcc-17-20260531/gcc/ada/sem_ch5.ads
*** gcc-17-20260524/gcc/ada/sem_ch5.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch5.ads	Sun May 31 22:32:05 2026
*************** package Sem_Ch5 is
*** 52,55 ****
--- 52,66 ----
     --  checks to see if the statement is followed by some other statement, and
     --  if so generates an appropriate warning for unreachable code.
  
+    function Has_Sec_Stack_Call (N : Node_Id) return Boolean;
+    --  N is the node for an arbitrary construct. This function searches the
+    --  construct N to see if it contains a function call that returns on the
+    --  secondary stack, returning True if any such call is found, and False
+    --  otherwise.
+ 
+    --  ??? The implementation invokes Sem_Util.Requires_Transient_Scope so it
+    --  will return True if N contains a function call that needs finalization,
+    --  in addition to the above specification. See Analyze_Loop_Statement for
+    --  a similar comment about this entanglement.
+ 
  end Sem_Ch5;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch6.adb gcc-17-20260531/gcc/ada/sem_ch6.adb
*** gcc-17-20260524/gcc/ada/sem_ch6.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch6.adb	Sun May 31 22:32:05 2026
*************** with Sem_Cat;        use Sem_Cat;
*** 62,67 ****
--- 62,68 ----
  with Sem_Ch3;        use Sem_Ch3;
  with Sem_Ch4;        use Sem_Ch4;
  with Sem_Ch5;        use Sem_Ch5;
+ with Sem_Ch7;        use Sem_Ch7;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch9;        use Sem_Ch9;
  with Sem_Ch10;       use Sem_Ch10;
*************** package body Sem_Ch6 is
*** 304,309 ****
--- 305,312 ----
        --  Local variables
  
        Asp      : Node_Id;
+       F_Id     : Node_Id;
+       F_Spec   : Node_Id;
        New_Body : Node_Id;
        New_Spec : Node_Id;
        Orig_N   : Node_Id := Empty;
*************** package body Sem_Ch6 is
*** 361,370 ****
           --  The previous entity may be an expression function as well, in
           --  which case the redeclaration is illegal.
  
!          if Present (Prev)
!            and then Nkind (Original_Node (Unit_Declaration_Node (Prev))) =
!                                                         N_Expression_Function
!          then
              Error_Msg_Sloc := Sloc (Prev);
              Error_Msg_N ("& conflicts with declaration#", Def_Id);
              return;
--- 364,370 ----
           --  The previous entity may be an expression function as well, in
           --  which case the redeclaration is illegal.
  
!          if Present (Prev) and then Is_Expression_Function (Prev) then
              Error_Msg_Sloc := Sloc (Prev);
              Error_Msg_N ("& conflicts with declaration#", Def_Id);
              return;
*************** package body Sem_Ch6 is
*** 442,452 ****
              --  with the function body.
  
              Ghost_Context_Checks_Disabled := True;
!             Freeze_Expr_Types
!               (Def_Id => Def_Id,
!                Typ    => Typ,
                 Expr   => Expr,
!                N      => N);
              Ghost_Context_Checks_Disabled := False;
           end if;
  
--- 442,452 ----
              --  with the function body.
  
              Ghost_Context_Checks_Disabled := True;
!             Freeze_Expr_Types_Before
!               (N      => N,
                 Expr   => Expr,
!                Def_Id => Def_Id,
!                Typ    => Typ);
              Ghost_Context_Checks_Disabled := False;
           end if;
  
*************** package body Sem_Ch6 is
*** 520,540 ****
           Analyze (N);
  
           --  If aspect SPARK_Mode was specified on the body, it needs to be
!          --  repeated both on the generated spec and the body.
  
           Asp := Find_Aspect (Defining_Unit_Name (Spec), Aspect_SPARK_Mode);
  
           if Present (Asp) then
              Asp := New_Copy_Tree (Asp);
              Set_Analyzed (Asp, False);
              Set_Aspect_Specifications (New_Body, New_List (Asp));
           end if;
  
           Def_Id := Defining_Entity (N);
           Set_Is_Inlined (Def_Id);
- 
           Typ := Etype (Def_Id);
  
           --  Establish the linkages between the spec and the body. These are
           --  used when the expression function acts as the prefix of attribute
           --  'Access in order to freeze the original expression which has been
--- 520,568 ----
           Analyze (N);
  
           --  If aspect SPARK_Mode was specified on the body, it needs to be
!          --  repeated both on the generated spec and the body. Remove
!          --  Aspect_Rep_Item from the copy.
  
           Asp := Find_Aspect (Defining_Unit_Name (Spec), Aspect_SPARK_Mode);
  
           if Present (Asp) then
              Asp := New_Copy_Tree (Asp);
              Set_Analyzed (Asp, False);
+             pragma Assert (Present (Aspect_Rep_Item (Asp)));
+             Set_Aspect_Rep_Item (Asp, Empty);
              Set_Aspect_Specifications (New_Body, New_List (Asp));
           end if;
  
           Def_Id := Defining_Entity (N);
           Set_Is_Inlined (Def_Id);
           Typ := Etype (Def_Id);
  
+          --  Propagate the results of the resolution of the specification of
+          --  the declaration to the specification of the body, so that it is
+          --  not done again and potentially out of context.
+ 
+          Set_Result_Definition (New_Spec, New_Occurrence_Of (Typ, Loc));
+ 
+          F_Id := First_Formal (Def_Id);
+          F_Spec := First (Parameter_Specifications (New_Spec));
+          while Present (F_Spec) loop
+             if Nkind (Parameter_Type (F_Spec)) = N_Access_Definition then
+                Set_Subtype_Mark
+                  (Parameter_Type (F_Spec),
+                   New_Occurrence_Of
+                     (Directly_Designated_Type (Etype (F_Id)), Loc));
+             elsif Null_Exclusion_Present (F_Spec) then
+                Set_Parameter_Type
+                  (F_Spec, New_Occurrence_Of (Base_Type (Etype (F_Id)), Loc));
+             else
+                Set_Parameter_Type
+                  (F_Spec, New_Occurrence_Of (Etype (F_Id), Loc));
+             end if;
+ 
+             Next_Formal (F_Id);
+             Next (F_Spec);
+          end loop;
+ 
           --  Establish the linkages between the spec and the body. These are
           --  used when the expression function acts as the prefix of attribute
           --  'Access in order to freeze the original expression which has been
*************** package body Sem_Ch6 is
*** 553,559 ****
              Insert_After (N, New_Body);
  
           --  To prevent premature freeze action, insert the new body at the end
!          --  of the current declarations, or at the end of the package spec.
           --  However, resolve usage names now, to prevent spurious visibility
           --  on later entities. Note that the function can now be called in
           --  the current declarative part, which will appear to be prior to the
--- 581,588 ----
              Insert_After (N, New_Body);
  
           --  To prevent premature freeze action, insert the new body at the end
!          --  of the current declarative part or at the end of the specification
!          --  of the innermost package that is a library unit per RM 13.14(3/5).
           --  However, resolve usage names now, to prevent spurious visibility
           --  on later entities. Note that the function can now be called in
           --  the current declarative part, which will appear to be prior to the
*************** package body Sem_Ch6 is
*** 563,572 ****
  
           else
              declare
!                Decls : List_Id          := List_Containing (N);
!                Par   : constant Node_Id := Parent (Decls);
  
              begin
                 if Nkind (Par) = N_Package_Specification
                   and then Decls = Visible_Declarations (Par)
                   and then not Is_Empty_List (Private_Declarations (Par))
--- 592,610 ----
  
           else
              declare
!                Decls : List_Id := List_Containing (N);
!                Par   : Node_Id := Parent (Decls);
  
              begin
+                while Nkind (Par) = N_Package_Specification
+                  and then not Is_Compilation_Unit (Defining_Entity (Par))
+                  and then not Is_Generic_Instance (Defining_Entity (Par))
+                  and then not Is_Generic_Unit (Defining_Entity (Par))
+                loop
+                   Decls := List_Containing (Parent (Par));
+                   Par := Parent (Decls);
+                end loop;
+ 
                 if Nkind (Par) = N_Package_Specification
                   and then Decls = Visible_Declarations (Par)
                   and then not Is_Empty_List (Private_Declarations (Par))
*************** package body Sem_Ch6 is
*** 655,662 ****
                 --  calls.
  
                 Set_Expression
!                  (Original_Node (Subprogram_Spec (Def_Id)),
!                   Make_Expr_Copy);
  
                 --  Mark static expression functions as inlined, to ensure
                 --  that even calls with nonstatic actuals will be inlined.
--- 693,699 ----
                 --  calls.
  
                 Set_Expression
!                  (Original_Node (Subprogram_Spec (Def_Id)), Make_Expr_Copy);
  
                 --  Mark static expression functions as inlined, to ensure
                 --  that even calls with nonstatic actuals will be inlined.
*************** package body Sem_Ch6 is
*** 838,864 ****
              return;
  
           else
-             --  The resolution of a controlled [extension] aggregate associated
-             --  with a return statement creates a temporary which needs to be
-             --  finalized on function exit. Wrap the return statement inside a
-             --  block so that the finalization machinery can detect this case.
-             --  This early expansion is done only when the return statement is
-             --  not part of a handled sequence of statements.
- 
-             if Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
-               and then Needs_Finalization (R_Type)
-               and then Nkind (Parent (N)) /= N_Handled_Sequence_Of_Statements
-             then
-                Rewrite (N,
-                  Make_Block_Statement (Loc,
-                    Handled_Statement_Sequence =>
-                      Make_Handled_Sequence_Of_Statements (Loc,
-                        Statements => New_List (Relocate_Node (N)))));
- 
-                Analyze (N);
-                return;
-             end if;
- 
              Analyze (Expr);
  
              --  Ada 2005 (AI-251): If the type of the returned object is
--- 875,880 ----
*************** package body Sem_Ch6 is
*** 2374,2386 ****
        Loc       : constant Source_Ptr := Sloc (N);
        Prev_Id   : constant Entity_Id  := Current_Entity_In_Scope (Body_Id);
  
!       Body_Nod         : Node_Id := Empty;
!       Minimum_Acc_Objs : List_Id := No_List;
  
!       Conformant : Boolean;
        Desig_View : Entity_Id := Empty;
        Exch_Views : Elist_Id  := No_Elist;
-       Mask_Types : Elist_Id  := No_Elist;
        Prot_Typ   : Entity_Id := Empty;
        Spec_Decl  : Node_Id   := Empty;
        Spec_Id    : Entity_Id := Empty;
--- 2390,2405 ----
        Loc       : constant Source_Ptr := Sloc (N);
        Prev_Id   : constant Entity_Id  := Current_Entity_In_Scope (Body_Id);
  
!       From_Expression_Function : constant Boolean :=
!         Nkind (N) = N_Subprogram_Body and then Was_Expression_Function (N);
!       --  True if the body was generated either from a stand-alone expression
!       --  function or from an expression function that is a completion, which
!       --  means that it is equivalent to Is_Expression_Function_Or_Completion
!       --  invoked on Spec_Id declared below and not to Is_Expression_Function.
  
!       Acc_Objs   : List_Id   := No_List;
        Desig_View : Entity_Id := Empty;
        Exch_Views : Elist_Id  := No_Elist;
        Prot_Typ   : Entity_Id := Empty;
        Spec_Decl  : Node_Id   := Empty;
        Spec_Id    : Entity_Id := Empty;
*************** package body Sem_Ch6 is
*** 2420,2427 ****
        --  body must be expanded separately to create a subprogram declaration
        --  for it, in order to resolve internal calls to it from other protected
        --  operations.
-       --
-       --  Possibly factor this with Exp_Dist.Copy_Specification ???
  
        procedure Build_Subprogram_Declaration;
        --  Create a matching subprogram declaration for subprogram body N
--- 2439,2444 ----
*************** package body Sem_Ch6 is
*** 2470,2481 ****
        --  Determine whether subprogram Subp_Id is a primitive of a concurrent
        --  type that implements an interface and has a private view.
  
-       function Mask_Unfrozen_Types (Spec_Id : Entity_Id) return Elist_Id;
-       --  N is the body generated for an expression function that is not a
-       --  completion and Spec_Id the defining entity of its spec. Mark all
-       --  the not-yet-frozen types referenced by the simple return statement
-       --  of the function as formally frozen.
- 
        procedure Move_Pragmas (From : Node_Id; To : Node_Id);
        --  Find all suitable source pragmas at the top of subprogram body
        --  From's declarations and move them after arbitrary node To.
--- 2487,2492 ----
*************** package body Sem_Ch6 is
*** 2492,2499 ****
        --  of an entity, we mark the entity as set in source to suppress any
        --  warning on the stylized use of function stubs with a dummy return.
  
!       procedure Unmask_Unfrozen_Types (Unmask_List : Elist_Id);
!       --  Undo the transformation done by Mask_Unfrozen_Types
  
        procedure Verify_Overriding_Indicator;
        --  If there was a previous spec, the entity has been entered in the
--- 2503,2517 ----
        --  of an entity, we mark the entity as set in source to suppress any
        --  warning on the stylized use of function stubs with a dummy return.
  
!       function Subprogram_Entity return Entity_Id is
!         (if Present (Spec_Id) then
!           (if Is_Protected_Type (Scope (Spec_Id))
!              and then Present (Protected_Body_Subprogram (Spec_Id))
!            then Protected_Body_Subprogram (Spec_Id)
!            else Spec_Id)
!          else Body_Id);
!       --  Return the entity of the subprogram whose N is the body, in other
!       --  words the E_Function or E_Procedure entity to be used as a scope.
  
        procedure Verify_Overriding_Indicator;
        --  If there was a previous spec, the entity has been entered in the
*************** package body Sem_Ch6 is
*** 2792,2839 ****
        ----------------------------------------------
  
        procedure Check_Anonymous_Access_Return_With_Tasks is
           Decl : Node_Id;
-          Scop : Entity_Id;
  
        begin
-          if Present (Spec_Id) then
-             Scop := Spec_Id;
-          else
-             Scop := Body_Id;
-          end if;
- 
           if Ekind (Scop) = E_Function
-            and then Ekind (Etype (Scop)) = E_Anonymous_Access_Type
             and then not Is_Thunk (Scop)
  
              --  Skip internally built functions which handle the case of
              --  a null access (see Expand_Interface_Conversion)
  
             and then not (Is_Interface (Designated_Type (Etype (Scop)))
                            and then not Comes_From_Source (Parent (Scop)))
- 
-            and then (Has_Task (Designated_Type (Etype (Scop)))
-                       or else
-                         (Is_Class_Wide_Type (Designated_Type (Etype (Scop)))
-                            and then
-                          Is_Limited_Record
-                            (Etype (Designated_Type (Etype (Scop))))))
             and then Expander_Active
           then
              Decl := Build_Master_Declaration (Loc);
  
!             if Present (Declarations (N)) then
!                Prepend (Decl, Declarations (N));
!             else
!                Set_Declarations (N, New_List (Decl));
!             end if;
  
              Set_Has_Master_Entity (Scop);
-             Set_Master_Id (Etype (Scop), Defining_Identifier (Decl));
  
!             --  Now mark the enclosing construct as a task master
  
              Mark_Construct_As_Task_Master (Parent (N));
           end if;
        end Check_Anonymous_Access_Return_With_Tasks;
  
--- 2810,2852 ----
        ----------------------------------------------
  
        procedure Check_Anonymous_Access_Return_With_Tasks is
+          Scop : constant Entity_Id :=
+                   (if Present (Spec_Id) then Spec_Id else Body_Id);
+ 
           Decl : Node_Id;
  
        begin
           if Ekind (Scop) = E_Function
             and then not Is_Thunk (Scop)
+            and then Ekind (Etype (Scop)) = E_Anonymous_Access_Type
+            and then Might_Have_Tasks (Designated_Type (Etype (Scop)))
  
              --  Skip internally built functions which handle the case of
              --  a null access (see Expand_Interface_Conversion)
  
             and then not (Is_Interface (Designated_Type (Etype (Scop)))
                            and then not Comes_From_Source (Parent (Scop)))
             and then Expander_Active
           then
              Decl := Build_Master_Declaration (Loc);
  
!             Prepend_To (Declarations (N), Decl);
! 
!             --  Although Scop has a _master entity, it is not marked as a task
!             --  master as Build_Master_Entity would do, because its completion
!             --  cannot wait for the tasks it indirectly returns to terminate.
  
              Set_Has_Master_Entity (Scop);
  
!             --  Instead the enclosing construct is marked as a task master
  
              Mark_Construct_As_Task_Master (Parent (N));
+ 
+             Decl := Build_Master_Renaming_Declaration (Etype (Scop), Loc);
+ 
+             Insert_After (First (Declarations (N)), Decl);
+ 
+             Set_Master_Id (Etype (Scop), Defining_Identifier (Decl));
           end if;
        end Check_Anonymous_Access_Return_With_Tasks;
  
*************** package body Sem_Ch6 is
*** 3219,3227 ****
          (Extra_Access : Entity_Id;
           Related_Form : Entity_Id := Empty)
        is
!          Loc      : constant Source_Ptr := Sloc (Body_Nod);
!          Form     : Entity_Id;
!          Obj_Node : Node_Id;
        begin
           --  When no related formal exists then we are dealing with an
           --  extra accessibility formal for a function result.
--- 3232,3242 ----
          (Extra_Access : Entity_Id;
           Related_Form : Entity_Id := Empty)
        is
!          Loc : constant Source_Ptr := Sloc (N);
! 
!          Decl : Node_Id;
!          Form : Entity_Id;
! 
        begin
           --  When no related formal exists then we are dealing with an
           --  extra accessibility formal for a function result.
*************** package body Sem_Ch6 is
*** 3232,3274 ****
              Form := Related_Form;
           end if;
  
!          --  Create the minimum accessibility object
  
!          Obj_Node :=
!             Make_Object_Declaration (Loc,
!              Defining_Identifier =>
!                Make_Temporary
!                  (Loc, 'A', Extra_Access),
!              Object_Definition   => New_Occurrence_Of
!                                       (Standard_Natural, Loc),
!              Expression          =>
!                Make_Attribute_Reference (Loc,
!                  Prefix         => New_Occurrence_Of
!                                      (Standard_Natural, Loc),
!                  Attribute_Name => Name_Min,
!                  Expressions    => New_List (
!                    Make_Integer_Literal (Loc,
!                      Scope_Depth (Body_Id)),
!                    New_Occurrence_Of
!                      (Extra_Access, Loc))));
  
!          --  Add the new local object to the Minimum_Acc_Obj to
!          --  be later prepended to the subprogram's list of
!          --  declarations after we are sure all expansion is
!          --  done.
  
!          if Present (Minimum_Acc_Objs) then
!             Prepend (Obj_Node, Minimum_Acc_Objs);
           else
!             Minimum_Acc_Objs := New_List (Obj_Node);
           end if;
  
           --  Register the object and analyze it
  
!          Set_Minimum_Accessibility
!            (Form, Defining_Identifier (Obj_Node));
  
!          Analyze (Obj_Node);
        end Generate_Minimum_Accessibility;
  
        -------------------------------------
--- 3247,3281 ----
              Form := Related_Form;
           end if;
  
!          --  Declare the minimum accessibility object
  
!          Decl :=
!            Make_Object_Declaration (Loc,
!             Defining_Identifier => Make_Temporary (Loc, 'A', Extra_Access),
!             Object_Definition   => New_Occurrence_Of (Standard_Natural, Loc),
!             Expression          =>
!               Make_Attribute_Reference (Loc,
!                 Prefix         => New_Occurrence_Of (Standard_Natural, Loc),
!                 Attribute_Name => Name_Min,
!                 Expressions    => New_List (
!                   Make_Integer_Literal (Loc, Scope_Depth (Body_Id)),
!                   New_Occurrence_Of (Extra_Access, Loc))));
  
!          --  Add the new local object to the Minimum_Acc_Obj to be later
!          --  prepended to the subprogram's list of declarations after we
!          --  are sure all expansion is done.
  
!          if Present (Acc_Objs) then
!             Prepend (Decl, Acc_Objs);
           else
!             Acc_Objs := New_List (Decl);
           end if;
  
           --  Register the object and analyze it
  
!          Set_Minimum_Accessibility (Form, Defining_Identifier (Decl));
  
!          Analyze (Decl);
        end Generate_Minimum_Accessibility;
  
        -------------------------------------
*************** package body Sem_Ch6 is
*** 3304,3389 ****
           return False;
        end Is_Private_Concurrent_Primitive;
  
-       -------------------------
-       -- Mask_Unfrozen_Types --
-       -------------------------
- 
-       function Mask_Unfrozen_Types (Spec_Id : Entity_Id) return Elist_Id is
-          Result : Elist_Id := No_Elist;
- 
-          function Mask_Type_Refs (Node : Node_Id) return Traverse_Result;
-          --  Mask all types referenced in the subtree rooted at Node as
-          --  formally frozen.
- 
-          --------------------
-          -- Mask_Type_Refs --
-          --------------------
- 
-          function Mask_Type_Refs (Node : Node_Id) return Traverse_Result is
-             procedure Mask_Type (Typ : Entity_Id);
-             --  Mask a given type as formally frozen when outside the current
-             --  scope, or else freeze the type.
- 
-             ---------------
-             -- Mask_Type --
-             ---------------
- 
-             procedure Mask_Type (Typ : Entity_Id) is
-             begin
-                --  Skip Itypes created by the preanalysis
- 
-                if Is_Itype (Typ)
-                  and then Scope_Within_Or_Same (Scope (Typ), Spec_Id)
-                then
-                   return;
-                end if;
- 
-                if not Is_Frozen (Typ) then
-                   if Scope (Typ) /= Current_Scope then
-                      Set_Is_Frozen (Typ);
-                      Append_New_Elmt (Typ, Result);
-                   else
-                      Freeze_Before (N, Typ);
-                   end if;
-                end if;
-             end Mask_Type;
- 
-          --  Start of processing for Mask_Type_Refs
- 
-          begin
-             if Is_Entity_Name (Node) and then Present (Entity (Node)) then
-                Mask_Type (Etype (Entity (Node)));
- 
-                if Ekind (Entity (Node)) in E_Component | E_Discriminant then
-                   Mask_Type (Scope (Entity (Node)));
-                end if;
- 
-             elsif Nkind (Node) in N_Aggregate | N_Null | N_Type_Conversion
-               and then Present (Etype (Node))
-             then
-                Mask_Type (Etype (Node));
-             end if;
- 
-             return OK;
-          end Mask_Type_Refs;
- 
-          procedure Mask_References is new Traverse_Proc (Mask_Type_Refs);
- 
-          --  Local variables
- 
-          Return_Stmt : constant Node_Id :=
-                          First (Statements (Handled_Statement_Sequence (N)));
- 
-       --  Start of processing for Mask_Unfrozen_Types
- 
-       begin
-          pragma Assert (Nkind (Return_Stmt) = N_Simple_Return_Statement);
- 
-          Mask_References (Expression (Return_Stmt));
- 
-          return Result;
-       end Mask_Unfrozen_Types;
- 
        ------------------
        -- Move_Pragmas --
        ------------------
--- 3311,3316 ----
*************** package body Sem_Ch6 is
*** 3486,3505 ****
           end if;
        end Set_Trivial_Subprogram;
  
-       ---------------------------
-       -- Unmask_Unfrozen_Types --
-       ---------------------------
- 
-       procedure Unmask_Unfrozen_Types (Unmask_List : Elist_Id) is
-          Elmt : Elmt_Id := First_Elmt (Unmask_List);
- 
-       begin
-          while Present (Elmt) loop
-             Set_Is_Frozen (Node (Elmt), False);
-             Next_Elmt (Elmt);
-          end loop;
-       end Unmask_Unfrozen_Types;
- 
        ---------------------------------
        -- Verify_Overriding_Indicator --
        ---------------------------------
--- 3413,3418 ----
*************** package body Sem_Ch6 is
*** 3601,3606 ****
--- 3514,3522 ----
                       Ignore_SPARK_Mode_Pragmas_In_Instance;
        --  Save the Ghost and SPARK mode-related data to restore on exit
  
+       Conformant            : Boolean;
+       Saved_In_Inlined_Body : Boolean;
+ 
     --  Start of processing for Analyze_Subprogram_Body_Helper
  
     begin
*************** package body Sem_Ch6 is
*** 3634,3686 ****
        --  generic specification. Determine whether current scope has a
        --  previous declaration.
  
!       --  If the subprogram body is defined within an instance of the same
!       --  name, the instance appears as a package renaming, and will be hidden
!       --  within the subprogram.
! 
!       if Present (Prev_Id)
!         and then not Is_Overloadable (Prev_Id)
!         and then (Nkind (Parent (Prev_Id)) /= N_Package_Renaming_Declaration
!                    or else Comes_From_Source (Prev_Id))
!       then
!          if Is_Generic_Subprogram (Prev_Id) then
!             Spec_Id := Prev_Id;
  
!             --  A subprogram body is Ghost when it is stand-alone and subject
!             --  to pragma Ghost or when the corresponding spec is Ghost. Set
!             --  the mode now to ensure that any nodes generated during analysis
!             --  and expansion are properly marked as Ghost.
  
!             Mark_And_Set_Ghost_Body (N, Spec_Id);
  
!             --  If the body completes the initial declaration of a compilation
!             --  unit which is subject to pragma Elaboration_Checks, set the
!             --  model specified by the pragma because it applies to all parts
!             --  of the unit.
  
!             Install_Elaboration_Model (Spec_Id);
  
!             Set_Is_Compilation_Unit (Body_Id, Is_Compilation_Unit (Spec_Id));
!             Set_Is_Child_Unit       (Body_Id, Is_Child_Unit       (Spec_Id));
  
!             Analyze_Generic_Subprogram_Body (N, Spec_Id);
  
!             if Nkind (N) = N_Subprogram_Body then
!                Check_Missing_Return;
!             end if;
  
!             goto Leave;
  
!          --  Otherwise a previous entity conflicts with the subprogram name.
!          --  Attempting to enter name will post error.
  
!          else
!             Enter_Name (Body_Id);
!             goto Leave;
!          end if;
  
        --  Non-generic case, find the subprogram declaration, if one was seen,
!       --  or enter new overloaded entity in the current scope. If the
        --  Current_Entity is the Body_Id itself, the unit is being analyzed as
        --  part of the context of one of its subunits. No need to redo the
        --  analysis.
--- 3550,3603 ----
        --  generic specification. Determine whether current scope has a
        --  previous declaration.
  
!       if Present (Prev_Id) and then Is_Generic_Subprogram (Prev_Id) then
!          Spec_Id := Prev_Id;
  
!          --  A subprogram body is Ghost when it is stand-alone and subject
!          --  to pragma Ghost or when the corresponding spec is Ghost. Set
!          --  the mode now to ensure that any nodes generated during analysis
!          --  and expansion are properly marked as Ghost.
  
!          Mark_And_Set_Ghost_Body (N, Spec_Id);
  
!          --  If the body completes the initial declaration of a compilation
!          --  unit which is subject to pragma Elaboration_Checks, set the
!          --  model specified by the pragma because it applies to all parts
!          --  of the unit.
  
!          Install_Elaboration_Model (Spec_Id);
  
!          Set_Is_Compilation_Unit (Body_Id, Is_Compilation_Unit (Spec_Id));
!          Set_Is_Child_Unit       (Body_Id, Is_Child_Unit       (Spec_Id));
  
!          Analyze_Generic_Subprogram_Body (N, Spec_Id);
  
!          if Nkind (N) = N_Subprogram_Body then
!             Check_Missing_Return;
!          end if;
  
!          goto Leave;
  
!       --  If the subprogram body is defined within an instance of the same
!       --  name, the instance appears as a package renaming, and will be hidden
!       --  within the subprogram. Otherwise a previous non-overloadable entity
!       --  conflicts with the subprogram. Entering the name will post an error.
!       --  Note that a subprogram body generated from an expression function is
!       --  always the completion of a declaration, either present in the source
!       --  code or synthesized by Analyze_Expression_Function, so the conflict
!       --  is reported on the declaration.
  
!       elsif Present (Prev_Id)
!         and then not Is_Overloadable (Prev_Id)
!         and then (Nkind (Parent (Prev_Id)) /= N_Package_Renaming_Declaration
!                    or else Comes_From_Source (Prev_Id))
!         and then not From_Expression_Function
!       then
!          Enter_Name (Body_Id);
!          goto Leave;
  
        --  Non-generic case, find the subprogram declaration, if one was seen,
!       --  or else enter a new overloaded entity in the current scope. If the
        --  Current_Entity is the Body_Id itself, the unit is being analyzed as
        --  part of the context of one of its subunits. No need to redo the
        --  analysis.
*************** package body Sem_Ch6 is
*** 3805,3811 ****
              --  the mode now to ensure that any nodes generated during analysis
              --  and expansion are properly marked as Ghost.
  
!             Mark_And_Set_Ghost_Body (N, Spec_Id);
  
              --  If the body completes the initial declaration of a compilation
              --  unit which is subject to pragma Elaboration_Checks, set the
--- 3722,3732 ----
              --  the mode now to ensure that any nodes generated during analysis
              --  and expansion are properly marked as Ghost.
  
!             if Is_Expression_Function (Spec_Id) then
!                Mark_And_Set_Ghost_Body_Of_Expression_Function (N, Spec_Id);
!             else
!                Mark_And_Set_Ghost_Body (N, Spec_Id);
!             end if;
  
              --  If the body completes the initial declaration of a compilation
              --  unit which is subject to pragma Elaboration_Checks, set the
*************** package body Sem_Ch6 is
*** 3860,3866 ****
  
        else
           Spec_Decl := Unit_Declaration_Node (Spec_Id);
!          Verify_Overriding_Indicator;
  
           --  For functions with separate spec, if their return type was visible
           --  through a limited-with context clause, their extra formals were
--- 3781,3792 ----
  
        else
           Spec_Decl := Unit_Declaration_Node (Spec_Id);
! 
!          --  No possible inconsistency for an expression function
! 
!          if not Is_Expression_Function (Spec_Id) then
!             Verify_Overriding_Indicator;
!          end if;
  
           --  For functions with separate spec, if their return type was visible
           --  through a limited-with context clause, their extra formals were
*************** package body Sem_Ch6 is
*** 3879,3930 ****
              Compute_Returns_By_Ref (Spec_Id);
           end if;
  
!          --  In general, the spec will be frozen when we start analyzing the
!          --  body. However, for internally generated operations, such as
!          --  wrapper functions for inherited operations with controlling
!          --  results, the spec may not have been frozen by the time we expand
!          --  the freeze actions that include the bodies. In particular, extra
!          --  formals for accessibility or for return-in-place may need to be
!          --  generated. Freeze nodes, if any, are inserted before the current
!          --  body. These freeze actions are also needed in Compile_Only mode to
!          --  enable the proper back-end type annotations.
!          --  They are necessary in any case to ensure proper elaboration order
!          --  in gigi.
! 
!          if Nkind (N) = N_Subprogram_Body
!            and then Was_Expression_Function (N)
!            and then not Has_Completion (Spec_Id)
!            and then Serious_Errors_Detected = 0
!            and then (Expander_Active
!                       or else Operating_Mode = Check_Semantics
!                       or else Is_Ignored_Ghost_Entity_In_Codegen (Spec_Id))
!          then
!             --  The body generated for an expression function that is not a
!             --  completion is a freeze point neither for the profile nor for
!             --  anything else. That's why, in order to prevent any freezing
!             --  during analysis, we need to mask types declared outside the
!             --  expression (and in an outer scope) that are not yet frozen.
!             --  This also needs to be done in the case of an ignored Ghost
!             --  expression function, where the expander isn't active.
! 
!             --  A further complication arises if the expression function is
!             --  a primitive operation of a tagged type: in that case the
!             --  function entity must be frozen before the dispatch table for
!             --  the type is constructed, so it will be frozen like other local
!             --  entities, at the end of the current scope.
! 
!             if not Is_Dispatching_Operation (Spec_Id) then
!                Set_Is_Frozen (Spec_Id);
!             end if;
! 
!             Mask_Types := Mask_Unfrozen_Types (Spec_Id);
  
!          elsif not Is_Frozen (Spec_Id)
!            and then Serious_Errors_Detected = 0
!          then
              Set_Has_Delayed_Freeze (Spec_Id);
              Create_Extra_Formals (Spec_Id, Related_Nod => N);
!             Freeze_Before (N, Spec_Id);
           end if;
        end if;
  
--- 3805,3825 ----
              Compute_Returns_By_Ref (Spec_Id);
           end if;
  
!          --  In most cases the spec is frozen when we start analyzing the body.
!          --  However, for some internally generated operations such as wrapper
!          --  functions for inherited operations with a controlling result, and
!          --  for expression functions, it has not necessarily been frozen yet.
!          --  In particular, extra formals for accessibility or build-in-place
!          --  return purposes may still need to be generated. Freeze nodes are
!          --  inserted before the body, and are necessary to ensure the proper
!          --  elaboration order in the code generator. But we do not freeze the
!          --  profile for them to avoid premature freezing of tagged types.
  
!          if not Is_Frozen (Spec_Id) and then Serious_Errors_Detected = 0 then
              Set_Has_Delayed_Freeze (Spec_Id);
              Create_Extra_Formals (Spec_Id, Related_Nod => N);
!             Freeze_Before (N, Spec_Id,
!               Do_Freeze_Profile => not Is_Wrapper (Spec_Id));
           end if;
        end if;
  
*************** package body Sem_Ch6 is
*** 3987,4001 ****
              then
                 Conformant := True;
  
!             --  Finally, a body generated for an expression function copies
              --  the profile of the function and no check is needed either.
-             --  If the body is the completion of a previous function
-             --  declared elsewhere, the conformance check is required.
  
!             elsif Nkind (N) = N_Subprogram_Body
!               and then Was_Expression_Function (N)
!               and then Sloc (Spec_Id) = Sloc (Body_Id)
!             then
                 Conformant := True;
  
              else
--- 3882,3891 ----
              then
                 Conformant := True;
  
!             --  The body generated for a stand-alone expression function copies
              --  the profile of the function and no check is needed either.
  
!             elsif Is_Expression_Function (Spec_Id) then
                 Conformant := True;
  
              else
*************** package body Sem_Ch6 is
*** 4118,4130 ****
                 Build_Subprogram_Instance_Renamings (N, Current_Scope);
              end if;
  
!             Push_Scope (Spec_Id);
  
              --  Make sure that the subprogram is immediately visible. For
              --  child units that have no separate spec this is indispensable.
              --  Otherwise it is safe albeit redundant.
  
!             Set_Is_Immediately_Visible (Spec_Id);
           end if;
  
           Set_Corresponding_Body (Unit_Declaration_Node (Spec_Id), Body_Id);
--- 4008,4064 ----
                 Build_Subprogram_Instance_Renamings (N, Current_Scope);
              end if;
  
!             --  The body of a stand-alone expression function may be generated
!             --  out of context like an inlined body, so we set In_Inlined_Body
!             --  when analyzing it to bypass visibility constraints on the types
!             --  of operators (the constraints have already been checked during
!             --  the preanalysis of the expression but, unlike resolution per se
!             --  which is not redone, they are checked again to set the Etype).
! 
!             if Is_Expression_Function (Spec_Id) then
!                Saved_In_Inlined_Body := In_Inlined_Body;
!                In_Inlined_Body := True;
! 
!                --  Moreover, if the expression function was declared in the
!                --  private part of its package, we need to temporarily make
!                --  the full view of the private types visible.
! 
!                if Scope (Spec_Id) /= Current_Scope
!                  and then In_Private_Part (Spec_Id)
!                then
!                   declare
!                      S : constant Entity_Id := Scope (Spec_Id);
! 
!                      Ent : Entity_Id;
! 
!                   begin
!                      Ent := First_Entity (S);
!                      while Present (Ent)
!                        and then Ent /= First_Private_Entity (S)
!                      loop
!                         if Is_Private_Base_Type (Ent)
!                           and then Present (Full_View (Ent))
!                           and then Comes_From_Source (Full_View (Ent))
!                           and then Scope (Full_View (Ent)) = Scope (Ent)
!                           and then Ekind (Full_View (Ent)) /= E_Incomplete_Type
!                         then
!                            Exchange_Declarations (Ent);
!                         end if;
! 
!                         Next_Entity (Ent);
!                      end loop;
!                   end;
!                end if;
  
              --  Make sure that the subprogram is immediately visible. For
              --  child units that have no separate spec this is indispensable.
              --  Otherwise it is safe albeit redundant.
  
!             else
!                Set_Is_Immediately_Visible (Spec_Id);
!             end if;
! 
!             Push_Scope (Spec_Id);
           end if;
  
           Set_Corresponding_Body (Unit_Declaration_Node (Spec_Id), Body_Id);
*************** package body Sem_Ch6 is
*** 4150,4157 ****
  
             --  No warnings for expression functions
  
!            and then (Nkind (N) /= N_Subprogram_Body
!                       or else not Was_Expression_Function (N))
           then
              Style.Body_With_No_Spec (N);
           end if;
--- 4084,4090 ----
  
             --  No warnings for expression functions
  
!            and then not From_Expression_Function
           then
              Style.Body_With_No_Spec (N);
           end if;
*************** package body Sem_Ch6 is
*** 4180,4188 ****
           --  An exception in Ada 2012 is that the body created for expression
           --  functions does not freeze.
  
!          if Nkind (N) /= N_Subprogram_Body
!            or else not Was_Expression_Function (N)
!          then
              --  First clear the Is_Public flag on thunks since they are only
              --  referenced locally by dispatch tables and thus never inlined.
  
--- 4113,4119 ----
           --  An exception in Ada 2012 is that the body created for expression
           --  functions does not freeze.
  
!          if not From_Expression_Function then
              --  First clear the Is_Public flag on thunks since they are only
              --  referenced locally by dispatch tables and thus never inlined.
  
*************** package body Sem_Ch6 is
*** 4506,4512 ****
        --  in an actual to a call to a nested subprogram.
  
        --  This method is used to supplement our "small integer model" for
!       --  accessibility-check generation (for more information see
        --  Accessibility_Level).
  
        --  Because we allow accessibility values greater than our expected value
--- 4437,4443 ----
        --  in an actual to a call to a nested subprogram.
  
        --  This method is used to supplement our "small integer model" for
!       --  accessibility check generation (for more information see
        --  Accessibility_Level).
  
        --  Because we allow accessibility values greater than our expected value
*************** package body Sem_Ch6 is
*** 4520,4588 ****
        --  This generated object is referred to as a "minimum accessibility
        --  level."
  
!       if Present (Spec_Id) or else Present (Body_Id) then
!          Body_Nod := Unit_Declaration_Node (Body_Id);
  
           declare
!             Form : Entity_Id;
!          begin
!             --  Grab the appropriate formal depending on whether there exists
!             --  an actual spec for the subprogram or whether we are dealing
!             --  with a protected subprogram.
! 
!             if Present (Spec_Id) then
!                if Present (Protected_Body_Subprogram (Spec_Id)) then
!                   Form := First_Formal (Protected_Body_Subprogram (Spec_Id));
!                else
!                   Form := First_Formal (Spec_Id);
!                end if;
!             else
!                Form := First_Formal (Body_Id);
!             end if;
! 
!             --  Loop through formals if the subprogram is capable of accepting
!             --  a generated local object. If it is not then it is also not
!             --  capable of having local subprograms meaning it would not need
!             --  a minimum accessibility level object anyway.
  
!             if Present (Body_Nod)
!               and then Has_Declarations (Body_Nod)
!               and then Nkind (Body_Nod) /= N_Package_Specification
!             then
!                while Present (Form) loop
  
!                   if Present (Extra_Accessibility (Form))
!                     and then No (Minimum_Accessibility (Form))
!                   then
!                      --  Generate the minimum accessibility level object
  
!                      --    A60b : constant natural := natural'min(1, paramL);
  
!                      Generate_Minimum_Accessibility
!                        (Extra_Accessibility (Form), Form);
!                   end if;
  
!                   Next_Formal (Form);
!                end loop;
  
!                --  Generate the minimum accessibility level object for the
!                --  function's Extra_Accessibility_Of_Result.
  
!                --    A31b : constant natural := natural'min (2, funcL);
  
!                if Ekind (Body_Id) = E_Function
!                  and then Present (Extra_Accessibility_Of_Result (Body_Id))
!                then
!                   Generate_Minimum_Accessibility
!                     (Extra_Accessibility_Of_Result (Body_Id));
  
!                   --  Replace the Extra_Accessibility_Of_Result with the new
!                   --  minimum accessibility object.
  
!                   Set_Extra_Accessibility_Of_Result
!                     (Body_Id, Minimum_Accessibility
!                                 (Extra_Accessibility_Of_Result (Body_Id)));
!                end if;
              end if;
           end;
        end if;
--- 4451,4499 ----
        --  This generated object is referred to as a "minimum accessibility
        --  level."
  
!       --  Loop through formals if the subprogram is capable of accepting
!       --  a generated local object. If it is not, then it is also not
!       --  capable of having local subprograms meaning it would not need
!       --  a minimum accessibility level object anyway.
  
+       if Has_Declarations (N) then
           declare
!             Subp_Id : constant Entity_Id := Subprogram_Entity;
  
!             Formal : Node_Id;
  
!          begin
!             Formal := First_Formal (Subp_Id);
!             while Present (Formal) loop
!                --  Generate the minimum accessibility level object:
  
!                --    Ann : constant natural := natural'min(1, paramL);
  
!                if Present (Extra_Accessibility (Formal)) then
!                   Generate_Minimum_Accessibility
!                     (Extra_Accessibility (Formal), Formal);
!                end if;
  
!                Next_Formal (Formal);
!             end loop;
  
!             --  Generate the minimum accessibility level object for the
!             --  function's Extra_Accessibility_Of_Result:
  
!             --    Ann : constant natural := natural'min (1, funcL);
  
!             if Ekind (Subp_Id) = E_Function
!               and then Present (Extra_Accessibility_Of_Result (Subp_Id))
!             then
!                Generate_Minimum_Accessibility
!                  (Extra_Accessibility_Of_Result (Subp_Id));
  
!                --  Replace the Extra_Accessibility_Of_Result with the new
!                --  minimum accessibility object.
  
!                Set_Extra_Accessibility_Of_Result
!                  (Subp_Id, Minimum_Accessibility
!                              (Extra_Accessibility_Of_Result (Subp_Id)));
              end if;
           end;
        end if;
*************** package body Sem_Ch6 is
*** 4616,4623 ****
        --  (SPARK RM 6.1.12(6)).
  
        if Present (Spec_Id)
!         and then (Is_Expression_Function (Spec_Id)
!                   or else Is_Expression_Function (Body_Id))
          and then Is_Function_With_Side_Effects (Spec_Id)
        then
           if From_Aspect_Specification
--- 4527,4533 ----
        --  (SPARK RM 6.1.12(6)).
  
        if Present (Spec_Id)
!         and then From_Expression_Function
          and then Is_Function_With_Side_Effects (Spec_Id)
        then
           if From_Aspect_Specification
*************** package body Sem_Ch6 is
*** 4729,4746 ****
        Inspect_Deferred_Constant_Completion (Declarations (N));
        Analyze (Handled_Statement_Sequence (N));
  
!       --  Add the generated minimum accessibility objects to the subprogram
!       --  body's list of declarations after analysis of the statements and
!       --  contracts.
  
!       while Is_Non_Empty_List (Minimum_Acc_Objs) loop
!          if Present (Declarations (Body_Nod)) then
!             Prepend (Remove_Head (Minimum_Acc_Objs), Declarations (Body_Nod));
!          else
!             Set_Declarations
!               (Body_Nod, New_List (Remove_Head (Minimum_Acc_Objs)));
!          end if;
!       end loop;
  
        --  Deal with end of scope processing for the body
  
--- 4639,4648 ----
        Inspect_Deferred_Constant_Completion (Declarations (N));
        Analyze (Handled_Statement_Sequence (N));
  
!       --  Prepend the declaration of minimum accessibility objects to the list
!       --  of declarations after analysis of the statements and contracts.
  
!       Prepend_List (Acc_Objs, Declarations (N));
  
        --  Deal with end of scope processing for the body
  
*************** package body Sem_Ch6 is
*** 4749,4754 ****
--- 4651,4701 ----
        Update_Use_Clause_Chain;
        End_Scope;
  
+       --  Cleanup for the body of a stand-alone expression function
+ 
+       if Present (Spec_Id) and then Is_Expression_Function (Spec_Id) then
+          In_Inlined_Body := Saved_In_Inlined_Body;
+ 
+          if Scope (Spec_Id) /= Current_Scope
+            and then In_Private_Part (Spec_Id)
+          then
+             declare
+                S : constant Entity_Id := Scope (Spec_Id);
+ 
+                Ent : Entity_Id;
+ 
+             begin
+                Ent := First_Private_Entity (S);
+                while Present (Ent) loop
+                   if Is_Private_Base_Type (Ent)
+                     and then Present (Full_View (Ent))
+                   then
+                      Exchange_Declarations (Ent);
+                   end if;
+ 
+                   Next_Entity (Ent);
+                end loop;
+             end;
+          end if;
+       end if;
+ 
+       --  Restore the Extra_Accessibility_Of_Result object that was clobbered
+       --  earlier, so that the name of the local temporary does not leak.
+ 
+       if Has_Declarations (N) then
+          declare
+             Subp_Id : constant Entity_Id := Subprogram_Entity;
+ 
+          begin
+             if Ekind (Subp_Id) = E_Function
+               and then Present (Extra_Accessibility_Of_Result (Subp_Id))
+             then
+                Set_Extra_Accessibility_Of_Result (Subp_Id,
+                  Related_Expression (Extra_Accessibility_Of_Result (Subp_Id)));
+             end if;
+          end;
+       end if;
+ 
        --  If we are compiling an entry wrapper, remove the enclosing
        --  synchronized object from the stack.
  
*************** package body Sem_Ch6 is
*** 4807,4815 ****
           --  been preanalyzed already, if 'access was applied to it.
  
           else
!             if Nkind (Original_Node (Unit_Declaration_Node (Spec_Id))) /=
!                                                        N_Expression_Function
!             then
                 pragma Assert (No (Last_Entity (Body_Id)));
                 null;
              end if;
--- 4754,4760 ----
           --  been preanalyzed already, if 'access was applied to it.
  
           else
!             if not Is_Expression_Function (Spec_Id) then
                 pragma Assert (No (Last_Entity (Body_Id)));
                 null;
              end if;
*************** package body Sem_Ch6 is
*** 4961,4969 ****
           --  Check references of the subprogram spec when we are dealing with
           --  an expression function due to it having a generated body.
  
!          if Present (Spec_Id)
!            and then Is_Expression_Function (Spec_Id)
!          then
              Check_References (Spec_Id);
  
           --  Skip the check for subprograms generated for protected subprograms
--- 4906,4912 ----
           --  Check references of the subprogram spec when we are dealing with
           --  an expression function due to it having a generated body.
  
!          if Present (Spec_Id) and then Is_Expression_Function (Spec_Id) then
              Check_References (Spec_Id);
  
           --  Skip the check for subprograms generated for protected subprograms
*************** package body Sem_Ch6 is
*** 5013,5022 ****
           Restore_Limited_Views (Exch_Views);
        end if;
  
-       if Present (Mask_Types) then
-          Unmask_Unfrozen_Types (Mask_Types);
-       end if;
- 
        if Present (Desig_View) then
           Set_Directly_Designated_Type (Etype (Spec_Id), Desig_View);
        end if;
--- 4956,4961 ----
*************** package body Sem_Ch6 is
*** 5278,5287 ****
--- 5217,5258 ----
        -----------------------------------------
  
        procedure Analyze_Direct_Attribute_Definition (Designator : Entity_Id) is
+          procedure Add_Default_Initialize_Aspect;
+          --  Adds a default Initialize aspect specification to the body stub of
+          --  the Designator.
+ 
           function Can_Be_Destructor_Of
             (E : Entity_Id; T : Entity_Id) return Boolean;
           --  Returns whether E can be declared the destructor of T
  
+          -----------------------------------
+          -- Add_Default_Initialize_Aspect --
+          -----------------------------------
+ 
+          procedure Add_Default_Initialize_Aspect is
+             Body_N : constant Node_Id := Unit_Declaration_Node (Designator);
+             Loc    : constant Source_Ptr := Sloc (Body_N);
+ 
+             Default_Initialize : constant Node_Id :=
+               Make_Aspect_Specification (Loc,
+                 Identifier => Make_Identifier (Loc, Name_Initialize),
+                 Expression =>
+                   Make_Aggregate (Loc,
+                     Component_Associations   => New_List (
+                       Make_Component_Association (Loc,
+                         Choices     => New_List (Make_Others_Choice (Loc)),
+                         Box_Present => True)),
+                     Is_Parenthesis_Aggregate => True));
+          begin
+             if No (Aspect_Specifications (Body_N)) then
+                Set_Aspect_Specifications
+                  (Body_N,
+                   New_List (Default_Initialize));
+             else
+                Append_To (Aspect_Specifications (Body_N), Default_Initialize);
+             end if;
+          end Add_Default_Initialize_Aspect;
+ 
           --------------------------
           -- Can_Be_Destructor_Of --
           --------------------------
*************** package body Sem_Ch6 is
*** 5324,5332 ****
              when Name_Constructor =>
                 Error_Msg_Name_1 := Att_Name;
  
!                --  No further action required in a subprogram body
  
                 if Parent_Kind (N) not in N_Subprogram_Declaration then
                    return;
  
                 elsif No (Prefix_E) or else not Is_Type (Prefix_E) then
--- 5295,5309 ----
              when Name_Constructor =>
                 Error_Msg_Name_1 := Att_Name;
  
!                --  If missing, add a default initialization aspect for this
!                --  constructor's body stub: Initialize => (others => <>).
  
                 if Parent_Kind (N) not in N_Subprogram_Declaration then
+                   if not Has_Aspect (Designator, Aspect_Initialize) then
+                      Add_Default_Initialize_Aspect;
+                   end if;
+ 
+                   --  No further action required in a subprogram body
                    return;
  
                 elsif No (Prefix_E) or else not Is_Type (Prefix_E) then
*************** package body Sem_Ch6 is
*** 5492,5498 ****
           --  derived from a synchronized interface.
  
           --  This modification is not done for invariant procedures because
!          --  the corresponding record may not necessarely be visible when the
           --  concurrent type acts as the full view of a private type.
  
           --    package Pack is
--- 5469,5475 ----
           --  derived from a synchronized interface.
  
           --  This modification is not done for invariant procedures because
!          --  the corresponding record may not necessarily be visible when the
           --  concurrent type acts as the full view of a private type.
  
           --    package Pack is
*************** package body Sem_Ch6 is
*** 5660,5668 ****
        --  Checks whether corresponding subtypes named within a subprogram
        --  declaration and body originate from the same declaration, and returns
        --  True when they do. In the case of anonymous access-to-object types,
!       --  checks the designated types. Also returns True when GNAT_Mode is
!       --  enabled, or when the subprogram is marked Is_Internal or occurs
!       --  within a generic instantiation or internal unit (GNAT library unit).
  
        -----------------------
        -- Conformance_Error --
--- 5637,5644 ----
        --  Checks whether corresponding subtypes named within a subprogram
        --  declaration and body originate from the same declaration, and returns
        --  True when they do. In the case of anonymous access-to-object types,
!       --  checks the designated subtypes. Also returns True when the subprogram
!       --  is marked Is_Internal or occurs within a generic instantiation.
  
        -----------------------
        -- Conformance_Error --
*************** package body Sem_Ch6 is
*** 5842,5850 ****
  
        begin
           if not In_Instance
-            and then not In_Internal_Unit (Subp)
             and then not Is_Internal (Subp)
-            and then not GNAT_Mode
             and then
               Ekind (Etype (Decl_Subtype)) not in Access_Subprogram_Kind
           then
--- 5818,5824 ----
*************** package body Sem_Ch6 is
*** 8731,8738 ****
           Original : Entity_Id;
           Root     : Entity_Id;
  
!          function Has_No_Task_Parts_Enabled (E : Entity_Id) return Boolean
!          is (Has_Enabled_Aspect (E, Aspect_No_Task_Parts));
  
           function Collect_Ancestors_With_No_Task_Parts is new
             Collect_Types_In_Hierarchy (Predicate => Has_No_Task_Parts_Enabled);
--- 8705,8712 ----
           Original : Entity_Id;
           Root     : Entity_Id;
  
!          function Has_No_Task_Parts_Enabled (E : Entity_Id) return Boolean is
!            (Has_Enabled_Aspect (E, Aspect_No_Task_Parts));
  
           function Collect_Ancestors_With_No_Task_Parts is new
             Collect_Types_In_Hierarchy (Predicate => Has_No_Task_Parts_Enabled);
*************** package body Sem_Ch6 is
*** 9717,9723 ****
        if Is_Inherited_Operation (S) then
           Append_Inherited_Subprogram (S);
        else
!          Append_Entity (S, Current_Scope);
        end if;
  
        Set_Public_Status (S);
--- 9691,9704 ----
        if Is_Inherited_Operation (S) then
           Append_Inherited_Subprogram (S);
        else
!          Append_Entity (S, Scope (S));
!       end if;
! 
!       --  Deal with setting In_Package_Body and In_Private_Part flags
! 
!       if Ekind (Scope (S)) = E_Package then
!          Set_In_Package_Body (S, In_Package_Body (Scope (S)));
!          Set_In_Private_Part (S, In_Private_Part (Scope (S)));
        end if;
  
        Set_Public_Status (S);
*************** package body Sem_Ch6 is
*** 10112,10122 ****
                 --  Expression functions can be completions, but cannot be
                 --  completed by an explicit body.
  
!                elsif Comes_From_Source (E)
!                  and then Comes_From_Source (N)
                   and then Nkind (N) = N_Subprogram_Body
!                  and then Nkind (Original_Node (Unit_Declaration_Node (E))) =
!                             N_Expression_Function
                 then
                    Error_Msg_Sloc := Sloc (E);
                    Error_Msg_N ("body conflicts with expression function#", N);
--- 10093,10102 ----
                 --  Expression functions can be completions, but cannot be
                 --  completed by an explicit body.
  
!                elsif Comes_From_Source (N)
                   and then Nkind (N) = N_Subprogram_Body
!                  and then Comes_From_Source (E)
!                  and then Is_Expression_Function (E)
                 then
                    Error_Msg_Sloc := Sloc (E);
                    Error_Msg_N ("body conflicts with expression function#", N);
*************** package body Sem_Ch6 is
*** 10930,10938 ****
     procedure Install_Entity (E : Entity_Id) is
        Prev : constant Entity_Id := Current_Entity (E);
     begin
        Set_Is_Immediately_Visible (E);
        Set_Current_Entity (E);
-       pragma Assert (Prev /= E);
        Set_Homonym (E, Prev);
     end Install_Entity;
  
--- 10910,10923 ----
     procedure Install_Entity (E : Entity_Id) is
        Prev : constant Entity_Id := Current_Entity (E);
     begin
+       if Prev = E then
+          --  avoid creating a Homonym-list cycle
+          pragma Assert (Serious_Errors_Detected > 0);
+          return;
+       end if;
+ 
        Set_Is_Immediately_Visible (E);
        Set_Current_Entity (E);
        Set_Homonym (E, Prev);
     end Install_Entity;
  
*************** package body Sem_Ch6 is
*** 11918,11923 ****
--- 11903,11916 ----
                    --  (SPARK RM 6.9(21)).
  
                    Check_Ghost_Primitive (S, B_Typ);
+ 
+                   --  A user-defined primitive equality operation on a
+                   --  non-ghost record type shall not be ghost, unless the
+                   --  record type has only limited views. (SPARK RM 6.9(23))
+ 
+                   if Chars (S) = Name_Op_Eq then
+                      Check_Ghost_Equality_Op (S, B_Typ);
+                   end if;
                 end if;
              end if;
  
*************** package body Sem_Ch6 is
*** 11959,11964 ****
--- 11952,11965 ----
                    --  (SPARK RM 6.9(21)).
  
                    Check_Ghost_Primitive (S, B_Typ);
+ 
+                   --  A user-defined primitive equality operation on a
+                   --  non-ghost record type shall not be ghost, unless the
+                   --  record type has only limited views. (SPARK RM 6.9(23))
+ 
+                   if Chars (S) = Name_Op_Eq then
+                      Check_Ghost_Equality_Op (S, B_Typ);
+                   end if;
                 end if;
  
                 Next_Formal (Formal);
*************** package body Sem_Ch6 is
*** 11992,11997 ****
--- 11993,12004 ----
                 --  (SPARK RM 6.9(21)).
  
                 Check_Ghost_Primitive (S, B_Typ);
+ 
+                --  A user-defined primitive equality operation on a
+                --  non-ghost record type shall not be ghost, unless the
+                --  record type has only limited views. (SPARK RM 6.9(23))
+ 
+                Check_Ghost_Equality_Op (S, B_Typ);
              end if;
           end if;
        end Check_For_Primitive_Subprogram;
*************** package body Sem_Ch6 is
*** 12501,12511 ****
--- 12508,12526 ----
              if Is_Dispatching_Operation (Alias (S)) then
                 Check_Dispatching_Operation (S, Empty);
              end if;
+             Check_For_Primitive_Subprogram (Is_Primitive_Subp);
  
              return;
  
           else
              Report_Conflict (S, E);
+ 
+             --  Prevent cascaded error about missing body
+ 
+             if Is_Package_Or_Generic_Package (E) then
+                Set_Has_Completion (E);
+             end if;
+ 
              return;
           end if;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch7.adb gcc-17-20260531/gcc/ada/sem_ch7.adb
*** gcc-17-20260524/gcc/ada/sem_ch7.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch7.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch7 is
*** 136,144 ****
     --  one entity on its visibility chain, and recurses on the visible part if
     --  the entity is an inner package.
  
-    function Is_Private_Base_Type (E : Entity_Id) return Boolean;
-    --  True for a private type that is not a subtype
- 
     function Is_Visible_Dependent (Dep : Entity_Id) return Boolean;
     --  If the private dependent is a private type whose full view is derived
     --  from the parent type, its full properties are revealed only if we are in
--- 136,141 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch7.ads gcc-17-20260531/gcc/ada/sem_ch7.ads
*** gcc-17-20260524/gcc/ada/sem_ch7.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch7.ads	Sun May 31 22:32:05 2026
*************** package Sem_Ch7 is
*** 42,48 ****
  
     procedure Install_Visible_Declarations (P : Entity_Id);
     procedure Install_Private_Declarations (P : Entity_Id);
- 
     --  On entrance to a package body, make declarations in package spec
     --  immediately visible.
     --
--- 42,47 ----
*************** package Sem_Ch7 is
*** 52,57 ****
--- 51,59 ----
     --  but is deferred until the compilation of the private part of the
     --  child for public child packages.
  
+    function Is_Private_Base_Type (E : Entity_Id) return Boolean;
+    --  True for a private type that is not a subtype
+ 
     function Unit_Requires_Body
       (Pack_Id            : Entity_Id;
        Do_Abstract_States : Boolean := False) return Boolean;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_ch8.adb gcc-17-20260531/gcc/ada/sem_ch8.adb
*** gcc-17-20260524/gcc/ada/sem_ch8.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_ch8.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Ch8 is
*** 3545,3564 ****
              Error_Msg_NE ("subprogram& is not overriding", N, Rename_Spec);
           end if;
  
!          --  AI12-0132: a renames-as-body freezes the expression of any
!          --  expression function that it renames.
  
!          if Is_Entity_Name (Nam)
             and then Is_Expression_Function (Entity (Nam))
             and then not Inside_A_Generic
           then
!             Freeze_Expr_Types
!               (Def_Id => Entity (Nam),
!                Typ    => Etype (Entity (Nam)),
!                Expr   =>
!                  Expression
!                    (Original_Node (Unit_Declaration_Node (Entity (Nam)))),
!                N      => N);
           end if;
  
        --  Normal subprogram renaming (not renaming as body)
--- 3545,3560 ----
              Error_Msg_NE ("subprogram& is not overriding", N, Rename_Spec);
           end if;
  
!          --  RM 13.14(5.2/4): At the occurrence of a renames-as-body whose
!          --  name denotes an expression function, the return expression of
!          --  the expression function causes freezing.
  
!          if Comes_From_Source (N)
!            and then Is_Entity_Name (Nam)
             and then Is_Expression_Function (Entity (Nam))
             and then not Inside_A_Generic
           then
!             Freeze_Expression (Nam);
           end if;
  
        --  Normal subprogram renaming (not renaming as body)
*************** package body Sem_Ch8 is
*** 8167,8173 ****
                 Old_S := Entity (Nam);
              end if;
  
!          elsif Present (First_Formal (Entity (Nam)))
             and then Present (First_Formal (New_S))
             and then Base_Type (Etype (First_Formal (Entity (Nam)))) =
                      Base_Type (Etype (First_Formal (New_S)))
--- 8163,8170 ----
                 Old_S := Entity (Nam);
              end if;
  
!          elsif Can_Have_Formals (Entity (Nam))
!            and then Present (First_Formal (Entity (Nam)))
             and then Present (First_Formal (New_S))
             and then Base_Type (Etype (First_Formal (Entity (Nam)))) =
                      Base_Type (Etype (First_Formal (New_S)))
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_disp.adb gcc-17-20260531/gcc/ada/sem_disp.adb
*** gcc-17-20260524/gcc/ada/sem_disp.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_disp.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Disp is
*** 96,101 ****
--- 96,109 ----
     --  Check whether a primitive operation is inherited from an operation
     --  declared in the visible part of its package.
  
+    procedure Override_Dispatching_Operation
+      (Tagged_Type : Entity_Id;
+       Prev_Op     : Entity_Id;
+       New_Op      : Entity_Id);
+    --  Replace an implicit dispatching operation of the type Tagged_Type
+    --  with an explicit one. Prev_Op is an inherited primitive operation which
+    --  is overridden by the explicit declaration of New_Op.
+ 
     -------------------------------
     -- Add_Dispatching_Operation --
     -------------------------------
*************** package body Sem_Disp is
*** 292,299 ****
       (Typ  : Entity_Id;
        Subp : Entity_Id)
     is
!       Formal    : Entity_Id;
!       Ctrl_Type : Entity_Id;
  
     begin
        --  We skip the check for thunks
--- 300,308 ----
       (Typ  : Entity_Id;
        Subp : Entity_Id)
     is
!       Ctrl_Type  : Entity_Id;
!       Formal     : Entity_Id;
!       Ovr_Formal : Entity_Id := Empty;
  
     begin
        --  We skip the check for thunks
*************** package body Sem_Disp is
*** 302,307 ****
--- 311,320 ----
           return;
        end if;
  
+       if Present (Overridden_Operation (Subp)) then
+          Ovr_Formal := First_Formal (Overridden_Operation (Subp));
+       end if;
+ 
        Formal := First_Formal (Subp);
        while Present (Formal) loop
           Ctrl_Type := Empty;
*************** package body Sem_Disp is
*** 309,315 ****
           --  Common Ada case
  
           if not Has_First_Controlling_Parameter_Aspect (Typ) then
!             Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
  
           --  Type with the First_Controlling_Parameter aspect: for overriding
           --  primitives of a parent type that lacks this aspect, we cannot be
--- 322,350 ----
           --  Common Ada case
  
           if not Has_First_Controlling_Parameter_Aspect (Typ) then
! 
!             --  Formals of a type specifying aspect First_Controlling_Parameter
!             --  are not candidate controlling parameters when they are not
!             --  the first formal of the dispatching primitive. For example:
!             --
!             --     type T1 is tagged ...
!             --     type T2 is tagged ... with First_Controlling_Parameter;
!             --     procedure Prim (X : T1; Y : T2);
!             --
!             --  When T2 does not have the First_Controlling_Parameter aspect
!             --  this example is rejected because a primitive can be dispatching
!             --  in only one type. However, T2 cannot be a candidate controlling
!             --  type for Prim because Y is not its first formal. Therefore,
!             --  this example is accepted.
! 
!             if Is_Tagged_Type (Etype (Formal))
!               and then Has_First_Controlling_Parameter_Aspect (Etype (Formal))
!               and then Formal /= First_Formal (Subp)
!             then
!                null;
!             else
!                Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
!             end if;
  
           --  Type with the First_Controlling_Parameter aspect: for overriding
           --  primitives of a parent type that lacks this aspect, we cannot be
*************** package body Sem_Disp is
*** 332,338 ****
               (Ekind (Subp) = E_Function
                  and then Is_Operator_Name (Chars (Subp)))
           then
!             Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
           end if;
  
           if Present (Ctrl_Type) then
--- 367,381 ----
               (Ekind (Subp) = E_Function
                  and then Is_Operator_Name (Chars (Subp)))
           then
!             --  Overriding a parent primitive
! 
!             if Present (Ovr_Formal)
!               and then not Is_Controlling_Formal (Ovr_Formal)
!             then
!                null;
!             else
!                Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
!             end if;
           end if;
  
           if Present (Ctrl_Type) then
*************** package body Sem_Disp is
*** 412,417 ****
--- 455,464 ----
              end if;
           end if;
  
+          if Present (Overridden_Operation (Subp)) then
+             Next_Formal (Ovr_Formal);
+          end if;
+ 
           Next_Formal (Formal);
        end loop;
  
*************** package body Sem_Disp is
*** 1160,1167 ****
     ---------------------------------
  
     procedure Check_Dispatching_Operation (Subp, Old_Subp : Entity_Id) is
-       function Is_Access_To_Subprogram_Wrapper (E : Entity_Id) return Boolean;
-       --  Return True if E is an access to subprogram wrapper
  
        procedure Warn_On_Late_Primitive_After_Private_Extension
          (Typ  : Entity_Id;
--- 1207,1212 ----
*************** package body Sem_Disp is
*** 1170,1191 ****
        --  if it is a public primitive defined after some private extension of
        --  the tagged type.
  
-       -------------------------------------
-       -- Is_Access_To_Subprogram_Wrapper --
-       -------------------------------------
- 
-       function Is_Access_To_Subprogram_Wrapper (E : Entity_Id) return Boolean
-       is
-          Decl_N : constant Node_Id := Unit_Declaration_Node (E);
-          Par_N  : constant Node_Id := Parent (List_Containing (Decl_N));
- 
-       begin
-          --  Access to subprogram wrappers are declared in the freezing actions
- 
-          return Nkind (Par_N) = N_Freeze_Entity
-            and then Ekind (Entity (Par_N)) = E_Access_Subprogram_Type;
-       end Is_Access_To_Subprogram_Wrapper;
- 
        ----------------------------------------------------
        -- Warn_On_Late_Primitive_After_Private_Extension --
        ----------------------------------------------------
--- 1215,1220 ----
*************** package body Sem_Disp is
*** 1259,1267 ****
  
        --  Wrappers of access to subprograms are not primitive subprograms.
  
!       elsif Is_Wrapper (Subp)
!         and then Is_Access_To_Subprogram_Wrapper (Subp)
!       then
           return;
        end if;
  
--- 1288,1294 ----
  
        --  Wrappers of access to subprograms are not primitive subprograms.
  
!       elsif Is_Access_To_Subprogram_Wrapper (Subp) then
           return;
        end if;
  
*************** package body Sem_Disp is
*** 2414,2419 ****
--- 2441,2454 ----
              return Empty;
           end if;
  
+       --  Deal with controlling function wrappers
+ 
+       elsif Ekind (Subp) = E_Function
+         and then Has_Controlling_Result (Subp)
+         and then Is_Wrapper (Subp)
+       then
+          return Check_Controlling_Type (Etype (Subp), Subp);
+ 
        --  General case
  
        else
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_disp.ads gcc-17-20260531/gcc/ada/sem_disp.ads
*** gcc-17-20260524/gcc/ada/sem_disp.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_disp.ads	Sun May 31 22:32:05 2026
*************** package Sem_Disp is
*** 173,186 ****
     --  controlling operands are also indeterminate. Such a function call may
     --  inherit a tag from an enclosing call.
  
-    procedure Override_Dispatching_Operation
-      (Tagged_Type : Entity_Id;
-       Prev_Op     : Entity_Id;
-       New_Op      : Entity_Id);
-    --  Replace an implicit dispatching operation of the type Tagged_Type
-    --  with an explicit one. Prev_Op is an inherited primitive operation which
-    --  is overridden by the explicit declaration of New_Op.
- 
     procedure Propagate_Tag (Control : Node_Id; Actual : Node_Id);
     --  If a function call given by Actual is tag-indeterminate, its controlling
     --  argument is found in the context, given by Control: either from an
--- 173,178 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_eval.adb gcc-17-20260531/gcc/ada/sem_eval.adb
*** gcc-17-20260524/gcc/ada/sem_eval.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_eval.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Eval is
*** 5351,5356 ****
--- 5351,5365 ----
        then
           return False;
  
+       --  Under GNATprove mode, do not consider T2 in the range of Universal
+       --  Integer (since theoretically they are not); required because
+       --  Universal_Integer is implemented as a 128-bits type.
+ 
+       elsif GNATprove_Mode
+         and then T1 = Universal_Integer
+       then
+          return False;
+ 
        else
           L1 := Type_Low_Bound  (T1);
           H1 := Type_High_Bound (T1);
*************** package body Sem_Eval is
*** 7388,7393 ****
--- 7397,7410 ----
        elsif Is_Universal_Numeric_Type (Typ) then
           return In_Range;
  
+       --  Under GNATprove mode, Universal type expressions are not in range
+       --  of subtype Typ.
+ 
+       elsif GNATprove_Mode
+         and then Is_Universal_Numeric_Type (Etype (N))
+       then
+          return Unknown;
+ 
        --  Never known if not scalar type. Don't know if this can actually
        --  happen, but our spec allows it, so we must check.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_eval.ads gcc-17-20260531/gcc/ada/sem_eval.ads
*** gcc-17-20260524/gcc/ada/sem_eval.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_eval.ads	Sun May 31 22:32:05 2026
*************** package Sem_Eval is
*** 97,103 ****
  
     --  For most legality checking purposes the flag Is_Static_Expression
     --  defined in Sinfo should be used. This package also provides a routine
!    --  called Is_OK_Static_Expression which in addition of checking that an
     --  expression is static in the RM 4.9 sense, it checks that the expression
     --  does not raise constraint error. In fact for certain legality checks not
     --  only do we need to ascertain that the expression is static, but we must
--- 97,103 ----
  
     --  For most legality checking purposes the flag Is_Static_Expression
     --  defined in Sinfo should be used. This package also provides a routine
!    --  called Is_OK_Static_Expression which in addition to checking that an
     --  expression is static in the RM 4.9 sense, it checks that the expression
     --  does not raise constraint error. In fact for certain legality checks not
     --  only do we need to ascertain that the expression is static, but we must
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_prag.adb gcc-17-20260531/gcc/ada/sem_prag.adb
*** gcc-17-20260524/gcc/ada/sem_prag.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_prag.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Prag is
*** 2777,2785 ****
              --  identifiers Normal_Return, Exception_Raised, or Program_Exit.
  
              if Nkind (Exit_Kind) = N_Identifier then
!                if Chars (Exit_Kind) not in Name_Normal_Return
!                                          | Name_Exception_Raised
!                                          | Name_Program_Exit
                 then
                    Error_Msg_N
                      ("exit kind should be Normal_Return, Exception_Raised, " &
--- 2777,2791 ----
              --  identifiers Normal_Return, Exception_Raised, or Program_Exit.
  
              if Nkind (Exit_Kind) = N_Identifier then
!                if Chars (Exit_Kind) = Name_Exception_Raised then
!                   if No_Raise (Spec_Id) then
!                      Error_Msg_N
!                        ("exit kind cannot be Exception_Raised on No_Raise " &
!                           "subprogram",
!                         Exit_Kind);
!                   end if;
!                elsif Chars (Exit_Kind) not in Name_Normal_Return
!                                             | Name_Program_Exit
                 then
                    Error_Msg_N
                      ("exit kind should be Normal_Return, Exception_Raised, " &
*************** package body Sem_Prag is
*** 2812,2817 ****
--- 2818,2829 ----
                          & "Exception_Raised",
                          Exit_Kind);
  
+                   elsif No_Raise (Spec_Id) then
+                      Error_Msg_N
+                        ("exit kind cannot be Exception_Raised on No_Raise " &
+                           "subprogram",
+                         Exit_Kind);
+ 
                    elsif Nkind (Exc) /= N_Identifier then
                       Error_Msg_N
                         ("exception name expected after Exception_Raised",
*************** package body Sem_Prag is
*** 5210,5218 ****
        --  errors out and uses Arg as the pragma argument for the message.
  
        function Fix_Error (Msg : String) return String;
!       --  This is called prior to issuing an error message. Msg is the normal
!       --  error message issued in the pragma case. This routine checks for the
!       --  case of a pragma coming from an aspect in the source, and returns a
        --  message suitable for the aspect case as follows:
        --
        --    Each substring "pragma" is replaced by "aspect"
--- 5222,5230 ----
        --  errors out and uses Arg as the pragma argument for the message.
  
        function Fix_Error (Msg : String) return String;
!       --  This is called prior to issuing an error message. Msg is the error
!       --  message issued in the pragma case. This routine checks for the case
!       --  of a pragma coming from an aspect in the source, and returns a
        --  message suitable for the aspect case as follows:
        --
        --    Each substring "pragma" is replaced by "aspect"
*************** package body Sem_Prag is
*** 12708,12719 ****
  
        --  Deal with unrecognized pragma
  
!       --  Pragma Unsigned_Base_Range temporarily disabled
! 
!       if not Is_Pragma_Name (Pname)
!         or else (Pname = Name_Unsigned_Base_Range
!                   and then not Debug_Flag_Dot_U)
!       then
           declare
              Msg_Issued : Boolean := False;
           begin
--- 12720,12726 ----
  
        --  Deal with unrecognized pragma
  
!       if not Is_Pragma_Name (Pname) then
           declare
              Msg_Issued : Boolean := False;
           begin
*************** package body Sem_Prag is
*** 13397,13404 ****
  
                 --  Local variables
  
!                Opt     : Node_Id;
!                Opt_Nam : Node_Id;
  
              --  Start of processing for Analyze_Abstract_State
  
--- 13404,13414 ----
  
                 --  Local variables
  
!                Expr     : Node_Id;
!                Is_Ghost : Boolean;
!                Level    : Entity_Id;
!                Opt      : Node_Id;
!                Opt_Nam  : Node_Id;
  
              --  Start of processing for Analyze_Abstract_State
  
*************** package body Sem_Prag is
*** 13568,13587 ****
                             Check_Ghost_Synchronous;
  
                             if Present (State_Id) then
!                               Set_Is_Ghost_Entity (State_Id);
  
!                               --  Amend the Assertion_Level coming from the
!                               --  package.
  
!                               if Nkind (Expression (Opt)) /= N_Identifier then
!                                  Error_Pragma_Arg
!                                    ("level name must be an identifier", N);
                                end if;
  
!                               Set_Ghost_Assertion_Level
!                                 (State_Id,
!                                  Get_Assertion_Level
!                                    (Chars (Expression (Opt))));
                             end if;
                          else
                             SPARK_Msg_N ("invalid state option", Opt);
--- 13578,13628 ----
                             Check_Ghost_Synchronous;
  
                             if Present (State_Id) then
!                               Is_Ghost := True;
!                               Expr := Expression (Opt);
  
!                               if Nkind (Expr) /= N_Identifier
!                                 or else
!                                   No (Get_Assertion_Level (Chars (Expr)))
!                               then
!                                  Analyze_And_Resolve (Expr, Standard_Boolean);
  
!                                  if not Is_OK_Static_Expression (Expr) then
!                                     Error_Msg_Name_1 := Pname;
!                                     SPARK_Msg_N
!                                       (Fix_Error
!                                          ("expression used for Ghost "
!                                           & "in pragma % "
!                                           & "must be static"),
!                                        Expr);
!                                  end if;
! 
!                                  if Is_False (Expr_Value (Expr)) then
!                                     Is_Ghost := False;
! 
!                                     --  "Ghostness" cannot be turned off once
!                                     --  enabled within a region (SPARK RM
!                                     --  6.9(8)).
! 
!                                     if Ghost_Config.Ghost_Mode > None then
!                                        Error_Msg_Name_1 := Pname;
!                                        SPARK_Msg_N
!                                          (Fix_Error ("pragma %")
!                                           & " with value ""Ghost ='> False"""
!                                           & " cannot appear"
!                                           & " in a ghost region", N);
!                                     end if;
!                                  end if;
                                end if;
  
!                               Level := Assertion_Level_From_Arg (Expr);
! 
!                               Set_Ghost_Assertion_Level (State_Id, Level);
! 
!                               if Is_Ghost then
!                                  Set_Is_Implicit_Ghost (State_Id, False);
!                                  Set_Is_Ghost_Entity (State_Id);
!                               end if;
                             end if;
                          else
                             SPARK_Msg_N ("invalid state option", Opt);
*************** package body Sem_Prag is
*** 18184,18189 ****
--- 18225,18241 ----
                 end if;
              end if;
  
+             --  Pragma Exceptional_Cases is not allowed when No_Raise is
+             --  specified.
+ 
+             Analyze_If_Present (Pragma_No_Raise);
+ 
+             if No_Raise (Spec_Id) then
+                Error_Msg_N (Fix_Error
+                  ("pragma % cannot apply to No_Raise subprogram"), N);
+                return;
+             end if;
+ 
              --  A pragma that applies to a Ghost entity becomes Ghost for the
              --  purposes of legality checks and removal of ignored Ghost code.
  
*************** package body Sem_Prag is
*** 18370,18375 ****
--- 18422,18429 ----
  
                 Analyze_If_Present (Pragma_SPARK_Mode);
                 Analyze_If_Present (Pragma_Volatile_Function);
+                Analyze_If_Present (Pragma_No_Raise);
+ 
                 Analyze_Exit_Cases_In_Decl_Part (N);
              end if;
           end Exit_Cases;
*************** package body Sem_Prag is
*** 20905,20913 ****
           --  given as a static integer expression which must be in the range of
           --  Ada.Interrupts.Interrupt_ID.
  
           when Pragma_Interrupt_State => Interrupt_State : declare
!             Int_Id : constant Entity_Id := RTE (RE_Interrupt_ID);
!             --  This is the entity Ada.Interrupts.Interrupt_ID;
  
              State_Type : Character;
              --  Set to 's'/'r'/'u' for System/Runtime/User
--- 20959,21000 ----
           --  given as a static integer expression which must be in the range of
           --  Ada.Interrupts.Interrupt_ID.
  
+          --  Note: There are two places where the runtime does significant work
+          --  with interrupt/signals:
+          --
+          --  1. __gnat_install_handler.
+          --  2. Ada.Interrupts and its partition closure, at least for some
+          --     configurations of the runtime.
+          --
+          --  1. kicks in by default whereas 2. only happens for applications
+          --  that have a with clause to Ada.Interrupts. Users who develop
+          --  mixed-language applications sometimes want to opt out of 1., and
+          --  pragma Interrupt_State is the preferred way to do that. So we
+          --  jump through a few hoops to make pragma Interrupt_State *not*
+          --  implicitly pull in Ada.Interrupts, as users who want to suppress
+          --  the effects of 1. surely don't want to enable the effects of 2.
+          --
+          --  The hoops in question are:
+          --
+          --  A. We have a Preelab_Interrupt_ID type in the runtime in a
+          --     preelaborate package. Interrupt_ID trivially derives from this
+          --     type, therefore we can correctly substitute
+          --     Preelab_Interrupt_ID for Interrupt_ID when analyzing
+          --     Interrupt_State pragmas.
+          --  B. The runtime configurations for which Ada.Interrupts has
+          --     significant side effects expose a preelaborate package,
+          --     System.Interrupt_Names, that mirrors Ada.Interrupts.Names. The
+          --     constant declarations of Ada.Interrupts.Names are replaced with
+          --     named numbers so there's no dependency on Ada.Interrupts.
+          --     System.Interrupt_Names is generated from Ada.Interrupts.Names
+          --     during the build of the runtime. Again, we can correctly
+          --     substitute System.Interrupt_Names for Ada.Interrupts.Names when
+          --     analyzing identifiers used in Interrupt_State pragmas.
+ 
           when Pragma_Interrupt_State => Interrupt_State : declare
!             Int_Id : constant Entity_Id := RTE (RE_Preelab_Interrupt_ID);
!             --  This is the entity System.Interrupt_Types.Ada_Interrupt_Id,
!             --  from which Ada.Interrupts.Interrupt_ID directly derives.
  
              State_Type : Character;
              --  Set to 's'/'r'/'u' for System/Runtime/User
*************** package body Sem_Prag is
*** 20921,20928 ****
              Arg1X : constant Node_Id := Get_Pragma_Arg (Arg1);
              --  The first argument to the pragma
  
              Int_Ent : Entity_Id;
!             --  Interrupt entity in Ada.Interrupts.Names
  
           begin
              GNAT_Pragma;
--- 21008,21022 ----
              Arg1X : constant Node_Id := Get_Pragma_Arg (Arg1);
              --  The first argument to the pragma
  
+             Names_Package : constant Entity_Id :=
+               RTE
+                 (if RTE_Available (RE_Interrupt_Names)
+                  then RE_Interrupt_Names
+                  else RE_Names);
+             --  The package we search for Interrupt_ID constants
+ 
              Int_Ent : Entity_Id;
!             --  Interrupt entity in Names_Package
  
           begin
              GNAT_Pragma;
*************** package body Sem_Prag is
*** 20937,20945 ****
  
              if Nkind (Arg1X) = N_Identifier then
  
!                --  Search list of names in Ada.Interrupts.Names
  
!                Int_Ent := First_Entity (RTE (RE_Names));
                 loop
                    if No (Int_Ent) then
                       Error_Pragma_Arg ("invalid interrupt name", Arg1);
--- 21031,21039 ----
  
              if Nkind (Arg1X) = N_Identifier then
  
!                --  Search list of names in Names_Package
  
!                Int_Ent := First_Entity (Names_Package);
                 loop
                    if No (Int_Ent) then
                       Error_Pragma_Arg ("invalid interrupt name", Arg1);
*************** package body Sem_Prag is
*** 29133,29138 ****
--- 29227,29236 ----
        ----------------------
  
        function Check_References (Nod : Node_Id) return Traverse_Result is
+          CW_Disp_Typ : constant Entity_Id :=
+            (if Present (Disp_Typ)
+              then Class_Wide_Type (Disp_Typ)
+              else Empty);
        begin
           if Nkind (Nod) = N_Function_Call
             and then Is_Entity_Name (Name (Nod))
*************** package body Sem_Prag is
*** 29159,29165 ****
                    --  A return object of the type is illegal as well
  
                    if Etype (Func) = Disp_Typ
!                     or else Etype (Func) = Class_Wide_Type (Disp_Typ)
                    then
                       Error_Msg_NE
                         ("operation in class-wide condition must be primitive "
--- 29257,29263 ----
                    --  A return object of the type is illegal as well
  
                    if Etype (Func) = Disp_Typ
!                     or else Etype (Func) = CW_Disp_Typ
                    then
                       Error_Msg_NE
                         ("operation in class-wide condition must be primitive "
*************** package body Sem_Prag is
*** 29171,29177 ****
           elsif Is_Entity_Name (Nod)
             and then
               (Etype (Nod) = Disp_Typ
!                or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
             and then Ekind (Entity (Nod)) in E_Constant | E_Variable
           then
              Error_Msg_NE
--- 29269,29275 ----
           elsif Is_Entity_Name (Nod)
             and then
               (Etype (Nod) = Disp_Typ
!                or else Etype (Nod) = CW_Disp_Typ)
             and then Ekind (Entity (Nod)) in E_Constant | E_Variable
           then
              Error_Msg_NE
*************** package body Sem_Prag is
*** 29180,29186 ****
  
           elsif Nkind (Nod) = N_Explicit_Dereference
             and then (Etype (Nod) = Disp_Typ
!                       or else Etype (Nod) = Class_Wide_Type (Disp_Typ))
             and then (not Is_Entity_Name (Prefix (Nod))
                        or else not Is_Formal (Entity (Prefix (Nod))))
           then
--- 29278,29284 ----
  
           elsif Nkind (Nod) = N_Explicit_Dereference
             and then (Etype (Nod) = Disp_Typ
!                       or else Etype (Nod) = CW_Disp_Typ)
             and then (not Is_Entity_Name (Prefix (Nod))
                        or else not Is_Formal (Entity (Prefix (Nod))))
           then
*************** package body Sem_Prag is
*** 34072,34078 ****
                 then
                    return Stmt;
  
!                elsif Is_Access_Subprogram_Wrapper (Defining_Entity (Stmt))
                   and then Ada_Version >= Ada_2022
                 then
                    return Stmt;
--- 34170,34176 ----
                 then
                    return Stmt;
  
!                elsif Is_Access_To_Subprogram_Wrapper (Defining_Entity (Stmt))
                   and then Ada_Version >= Ada_2022
                 then
                    return Stmt;
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_res.adb gcc-17-20260531/gcc/ada/sem_res.adb
*** gcc-17-20260524/gcc/ada/sem_res.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_res.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Res is
*** 3589,3599 ****
           --  default expression mode (the Freeze_Expression routine tests this
           --  flag and only freezes static types if it is set).
  
-          --  Ada 2012 (AI05-177): The declaration of an expression function
-          --  does not cause freezing, but we never reach here in that case.
-          --  Here we are resolving the corresponding expanded body, so we do
-          --  need to perform normal freezing.
- 
           --  As elsewhere we do not emit freeze node within a generic.
  
           if not Inside_A_Generic then
--- 3589,3594 ----
*************** package body Sem_Res is
*** 5512,5523 ****
  
           if Is_Limited_Type (Etype (E))
             and then Comes_From_Source (N)
!            and then
!              (Comes_From_Source (Parent (N))
!                or else
!                  (Ekind (Current_Scope) = E_Function
!                    and then Nkind (Original_Node (Unit_Declaration_Node
!                               (Current_Scope))) = N_Expression_Function))
             and then not In_Instance_Body
           then
              if not OK_For_Limited_Init (Etype (E), Expression (E)) then
--- 5507,5514 ----
  
           if Is_Limited_Type (Etype (E))
             and then Comes_From_Source (N)
!            and then (Comes_From_Source (Parent (N))
!                       or else Is_Expression_Function (Current_Scope))
             and then not In_Instance_Body
           then
              if not OK_For_Limited_Init (Etype (E), Expression (E)) then
*************** package body Sem_Res is
*** 6663,6690 ****
        --  conditions of subsequent functions or expression functions. Such
        --  calls do not freeze when they appear within generated bodies,
        --  (including the body of another expression function) which would
!       --  place the freeze node in the wrong scope. An expression function
!       --  is frozen in the usual fashion, by the appearance of a real body,
!       --  or at the end of a declarative part. However an implicit call to
        --  an expression function may appear when it is part of a default
        --  expression in a call to an initialization procedure, and must be
        --  frozen now, even if the body is inserted at a later point.
-       --  Otherwise, the call freezes the expression if expander is active,
-       --  for example as part of an object declaration.
  
        if Is_Entity_Name (Subp)
          and then not In_Spec_Expression
          and then not Is_Expression_Function_Or_Completion (Current_Scope)
!         and then not (Chars (Current_Scope) = Name_uWrapped_Statements
!                        and then Is_Expression_Function_Or_Completion
!                                   (Scope (Current_Scope)))
!         and then
!           (not Is_Expression_Function_Or_Completion (Entity (Subp))
!             or else Expander_Active)
        then
           if Is_Expression_Function (Entity (Subp)) then
  
!             --  Force freeze of expression function in call
  
              Set_Comes_From_Source (Subp, True);
              Set_Must_Not_Freeze   (Subp, False);
--- 6654,6675 ----
        --  conditions of subsequent functions or expression functions. Such
        --  calls do not freeze when they appear within generated bodies,
        --  (including the body of another expression function) which would
!       --  place the freeze node in the wrong scope. But an implicit call to
        --  an expression function may appear when it is part of a default
        --  expression in a call to an initialization procedure, and must be
        --  frozen now, even if the body is inserted at a later point.
  
        if Is_Entity_Name (Subp)
          and then not In_Spec_Expression
          and then not Is_Expression_Function_Or_Completion (Current_Scope)
!         and then not
!           (Chars (Current_Scope) = Name_uWrapped_Statements
!             and then
!               Is_Expression_Function_Or_Completion (Scope (Current_Scope)))
        then
           if Is_Expression_Function (Entity (Subp)) then
  
!             --  Force freezing of expression function in call
  
              Set_Comes_From_Source (Subp, True);
              Set_Must_Not_Freeze   (Subp, False);
*************** package body Sem_Res is
*** 6830,6852 ****
  
        else
           --  If the called function is not declared in the main unit and it
!          --  returns the limited view of type then use the available view (as
!          --  is done in Try_Object_Operation) to prevent back-end confusion;
!          --  for the function entity itself. The call must appear in a context
!          --  where the nonlimited view is available. If the function entity is
!          --  in the extended main unit then no action is needed, because the
!          --  back end handles this case. In either case the type of the call
!          --  is the nonlimited view.
  
!          if From_Limited_With (Etype (Nam))
!            and then Present (Available_View (Etype (Nam)))
!          then
              Set_Etype (N, Available_View (Etype (Nam)));
- 
-             if not In_Extended_Main_Code_Unit (Nam) then
-                Set_Etype (Nam, Available_View (Etype (Nam)));
-             end if;
- 
           else
              Set_Etype (N, Etype (Nam));
           end if;
--- 6815,6826 ----
  
        else
           --  If the called function is not declared in the main unit and it
!          --  returns the limited view of a type, then use the available view
!          --  to prevent back-end confusion. The function call must appear in
!          --  a context where the nonlimited view is available.
  
!          if From_Limited_With (Etype (Nam)) then
              Set_Etype (N, Available_View (Etype (Nam)));
           else
              Set_Etype (N, Etype (Nam));
           end if;
*************** package body Sem_Res is
*** 7793,7798 ****
--- 7767,7788 ----
     --  Start of processing for Resolve_Declare_Expression
  
     begin
+       --  Create a transient scope if the type of this declare-expression
+       --  or its expression requires it; this must be done before we push
+       --  in the scope stack the scope of this declare expression (in order
+       --  to properly remove it from the stack on exit from this routine).
+       --  Given that we don't know yet if secondary stack management will
+       --  be needed, we assume the worst case.
+ 
+       if Expander_Active
+         and then (Requires_Transient_Scope (Typ)
+                     or else Has_Sec_Stack_Call (Expr))
+       then
+          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
+       end if;
+ 
+       Push_Scope (Scope_Link (N));
+ 
        Decl := First (Actions (N));
  
        while Present (Decl) loop
*************** package body Sem_Res is
*** 7857,7862 ****
--- 7847,7855 ----
              Next_Elmt (Cursor);
           end loop;
        end;
+ 
+       pragma Assert (Current_Scope = Scope_Link (N));
+       End_Scope;
     end Resolve_Declare_Expression;
  
     -----------------------------------
*************** package body Sem_Res is
*** 8160,8175 ****
             and then not Is_Imported (E)
             and then Nkind (Parent (E)) /= N_Object_Renaming_Declaration
             and then not Needs_Construction (Etype (E))
           then
!             if No_Initialization (Parent (E))
!               or else (Present (Full_View (E))
!                         and then No_Initialization (Parent (Full_View (E))))
!             then
!                null;
!             else
!                Error_Msg_N
!                  ("deferred constant is frozen before completion", N);
!             end if;
           end if;
  
           Eval_Entity_Name (N);
--- 8153,8164 ----
             and then not Is_Imported (E)
             and then Nkind (Parent (E)) /= N_Object_Renaming_Declaration
             and then not Needs_Construction (Etype (E))
+            and then not No_Initialization (Parent (E))
+            and then not (Present (Full_View (E))
+                           and then No_Initialization (Parent (Full_View (E))))
           then
!             Error_Msg_NE
!               ("deferred constant& is frozen before completion", N, E);
           end if;
  
           Eval_Entity_Name (N);
*************** package body Sem_Res is
*** 13033,13049 ****
        --  Likewise when an expression function is being preanalyzed, since the
        --  expression will be reanalyzed as part of the generated body.
  
!       if In_Spec_Expression then
!          declare
!             S : constant Entity_Id := Current_Scope_No_Loops;
!          begin
!             if Ekind (S) = E_Function
!               and then Nkind (Original_Node (Unit_Declaration_Node (S))) =
!                          N_Expression_Function
!             then
!                return;
!             end if;
!          end;
        end if;
  
        Op_Node := New_Node (Operator_Kind (Nam, Is_Binary), Sloc (N));
--- 13022,13031 ----
        --  Likewise when an expression function is being preanalyzed, since the
        --  expression will be reanalyzed as part of the generated body.
  
!       if In_Spec_Expression
!         and then Is_Expression_Function (Current_Scope_No_Loops)
!       then
!          return;
        end if;
  
        Op_Node := New_Node (Operator_Kind (Nam, Is_Binary), Sloc (N));
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_util.adb gcc-17-20260531/gcc/ada/sem_util.adb
*** gcc-17-20260524/gcc/ada/sem_util.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_util.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Util is
*** 143,153 ****
     --  Shared function used to detect effectively volatile objects and
     --  effectively volatile objects for reading.
  
!    function Is_Fully_Initialized_Variant (Typ : Entity_Id) return Boolean;
!    --  Subsidiary to Is_Fully_Initialized_Type. For an unconstrained type
!    --  with discriminants whose default values are static, examine only the
!    --  components in the selected variant to determine whether all of them
!    --  have a default.
  
     function Is_Preelaborable_Function (Id : Entity_Id) return Boolean;
     --  Ada 2022: Determine whether the specified function is suitable as the
--- 143,151 ----
     --  Shared function used to detect effectively volatile objects and
     --  effectively volatile objects for reading.
  
!    function Is_Fully_Initialized_Constrained_Array
!      (Typ : Entity_Id) return Boolean;
!    --  Determines if Typ is a fully initialized constrained array type
  
     function Is_Preelaborable_Function (Id : Entity_Id) return Boolean;
     --  Ada 2022: Determine whether the specified function is suitable as the
*************** package body Sem_Util is
*** 2594,2599 ****
--- 2592,2599 ----
  
     procedure Check_Fully_Declared (T : Entity_Id; N : Node_Id) is
     begin
+       --  The immediate case is an incomplete type
+ 
        if Ekind (T) = E_Incomplete_Type then
  
           --  Ada 2005 (AI-50217): If the type is available through a limited
*************** package body Sem_Util is
*** 2612,2621 ****
                ("premature usage of incomplete}", N, First_Subtype (T));
           end if;
  
!       --  Need comments for these tests ???
  
        elsif Has_Private_Component (T)
          and then not Is_Generic_Type (Root_Type (T))
          and then not In_Spec_Expression
        then
           --  Special case: if T is the anonymous type created for a single
--- 2612,2626 ----
                ("premature usage of incomplete}", N, First_Subtype (T));
           end if;
  
!       --  The other case is a type with a private component (including itself)
!       --  that has not yet received a full declaration. But we exclude formal
!       --  types, as well as references in generic units to entities declared
!       --  outside of them, and all references in spec expressions.
  
        elsif Has_Private_Component (T)
          and then not Is_Generic_Type (Root_Type (T))
+         and then (not Is_Generic_Unit (Current_Scope)
+                    or else Scope_Within_Or_Same (Scope (T), Current_Scope))
          and then not In_Spec_Expression
        then
           --  Special case: if T is the anonymous type created for a single
*************** package body Sem_Util is
*** 2796,2802 ****
                 if Is_Writable_Actual then
  
                    --  Skip checking the error in non-elementary types since
!                   --  RM 6.4.1(6.15/3) is restricted to elementary types, but
                    --  store this actual in Writable_Actuals_List since it is
                    --  needed to perform checks on other constructs that have
                    --  arbitrary order of evaluation (for example, aggregates).
--- 2801,2807 ----
                 if Is_Writable_Actual then
  
                    --  Skip checking the error in non-elementary types since
!                   --  RM 6.4.1(6.16/3) is restricted to elementary types, but
                    --  store this actual in Writable_Actuals_List since it is
                    --  needed to perform checks on other constructs that have
                    --  arbitrary order of evaluation (for example, aggregates).
*************** package body Sem_Util is
*** 2954,2960 ****
        --  call C2 (not including the construct C itself), there is no other
        --  name anywhere within a direct constituent of the construct C other
        --  than the one containing C2, that is known to refer to the same
!       --  object (RM 6.4.1(6.17/3)).
  
        case Nkind (N) is
           when N_Range =>
--- 2959,2965 ----
        --  call C2 (not including the construct C itself), there is no other
        --  name anywhere within a direct constituent of the construct C other
        --  than the one containing C2, that is known to refer to the same
!       --  object (RM 6.4.1(6.18/3)).
  
        case Nkind (N) is
           when N_Range =>
*************** package body Sem_Util is
*** 3201,3207 ****
  
                 --  For an array aggregate, a discrete_choice_list that has
                 --  a nonstatic range is considered as two or more separate
!                --  occurrences of the expression (RM 6.4.1(6.20/3)).
  
                 elsif Is_Array_Type (Etype (N))
                   and then Nkind (N) = N_Aggregate
--- 3206,3212 ----
  
                 --  For an array aggregate, a discrete_choice_list that has
                 --  a nonstatic range is considered as two or more separate
!                --  occurrences of the expression (RM 6.4.1(6.21/3)).
  
                 elsif Is_Array_Type (Etype (N))
                   and then Nkind (N) = N_Aggregate
*************** package body Sem_Util is
*** 5887,5893 ****
              --  predefined "=" operator.
  
              if Is_Overloadable (Id)
!               and then (Is_Type_In_Pkg
                           or else Is_Primitive (Id)
                           or else not Comes_From_Source (Id))
  
--- 5892,5898 ----
              --  predefined "=" operator.
  
              if Is_Overloadable (Id)
!               and then ((Is_Type_In_Pkg and then not In_Package_Body (Id))
                           or else Is_Primitive (Id)
                           or else not Comes_From_Source (Id))
  
*************** package body Sem_Util is
*** 7047,7053 ****
        --  For renamings, return False if the prefix of any dereference within
        --  the renamed object_name is a variable, or any expression within the
        --  renamed object_name contains references to variables or calls on
!       --  nonstatic functions; otherwise return True (RM 6.4.1(6.10/3))
  
        ------------------------
        -- Is_Object_Renaming --
--- 7052,7058 ----
        --  For renamings, return False if the prefix of any dereference within
        --  the renamed object_name is a variable, or any expression within the
        --  renamed object_name contains references to variables or calls on
!       --  nonstatic functions; otherwise return True (RM 6.4.1(6.11/3))
  
        ------------------------
        -- Is_Object_Renaming --
*************** package body Sem_Util is
*** 7382,7387 ****
--- 7387,7398 ----
        pragma Assert (Ekind (Self) = E_Assertion_Level);
        pragma Assert (Ekind (Other) = E_Assertion_Level);
  
+       if Other = Standard_Level_Runtime
+          and then not Is_Same_Or_Depends_On_Level (Self, Standard_Level_Static)
+       then
+          return True;
+       end if;
+ 
        if No (Parent_Levels (Self)) then
           return False;
        end if;
*************** package body Sem_Util is
*** 8577,8603 ****
     function Expression_Of_Expression_Function
       (Subp : Entity_Id) return Node_Id
     is
!       Expr_Func : Node_Id := Empty;
  
     begin
        pragma Assert (Is_Expression_Function_Or_Completion (Subp));
  
!       if Nkind (Original_Node (Subprogram_Spec (Subp))) =
!            N_Expression_Function
!       then
!          Expr_Func := Original_Node (Subprogram_Spec (Subp));
  
!       elsif Nkind (Original_Node (Subprogram_Body (Subp))) =
!               N_Expression_Function
!       then
!          Expr_Func := Original_Node (Subprogram_Body (Subp));
  
!       else
!          pragma Assert (False);
!          null;
        end if;
  
!       return Original_Node (Expression (Expr_Func));
     end Expression_Of_Expression_Function;
  
     -------------------------------
--- 8588,8608 ----
     function Expression_Of_Expression_Function
       (Subp : Entity_Id) return Node_Id
     is
!       Subp_Decl : Node_Id;
  
     begin
        pragma Assert (Is_Expression_Function_Or_Completion (Subp));
  
!       --  The function declaration is either an expression function or is
!       --  completed by an expression function.
  
!       Subp_Decl := Unit_Declaration_Node (Subp);
  
!       if Nkind (Original_Node (Subp_Decl)) /= N_Expression_Function then
!          Subp_Decl := Unit_Declaration_Node (Corresponding_Body (Subp_Decl));
        end if;
  
!       return Expression (Original_Node (Subp_Decl));
     end Expression_Of_Expression_Function;
  
     -------------------------------
*************** package body Sem_Util is
*** 12493,12507 ****
  
     function Has_Inferable_Discriminants (N : Node_Id) return Boolean is
  
!       function Prefix_Is_Formal_Parameter (N : Node_Id) return Boolean;
!       --  Determines whether the left-most prefix of a selected component is a
!       --  formal parameter in a subprogram. Assumes N is a selected component.
  
!       --------------------------------
!       -- Prefix_Is_Formal_Parameter --
!       --------------------------------
  
!       function Prefix_Is_Formal_Parameter (N : Node_Id) return Boolean is
           Sel_Comp : Node_Id;
  
        begin
--- 12498,12513 ----
  
     function Has_Inferable_Discriminants (N : Node_Id) return Boolean is
  
!       function Prefix_Is_Formal_Parameter_Of_EQ (N : Node_Id) return Boolean;
!       --  Determines whether the left-most prefix of selected component N
!       --  is a formal parameter of the predefined equality function of an
!       --  Unchecked_Union type.
  
!       --------------------------------------
!       -- Prefix_Is_Formal_Parameter_Of_EQ --
!       --------------------------------------
  
!       function Prefix_Is_Formal_Parameter_Of_EQ (N : Node_Id) return Boolean is
           Sel_Comp : Node_Id;
  
        begin
*************** package body Sem_Util is
*** 12514,12521 ****
              Sel_Comp := Parent (Sel_Comp);
           end loop;
  
!          return Is_Formal (Entity (Prefix (Sel_Comp)));
!       end Prefix_Is_Formal_Parameter;
  
     --  Start of processing for Has_Inferable_Discriminants
  
--- 12520,12529 ----
              Sel_Comp := Parent (Sel_Comp);
           end loop;
  
!          return Is_Formal (Entity (Prefix (Sel_Comp)))
!            and then
!              Is_Unchecked_Union_Equality (Scope (Entity (Prefix (Sel_Comp))));
!       end Prefix_Is_Formal_Parameter_Of_EQ;
  
     --  Start of processing for Has_Inferable_Discriminants
  
*************** package body Sem_Util is
*** 12533,12546 ****
              return False;
           end if;
  
!          --  A small hack. If we have a per-object constrained selected
!          --  component of a formal parameter, return True since we do not
!          --  know the actual parameter association yet.
  
           return not Has_Per_Object_Constraint (Entity (Selector_Name (N)))
             or else not Is_Unchecked_Union (Etype (Prefix (N)))
             or else Has_Inferable_Discriminants (Prefix (N))
!            or else Prefix_Is_Formal_Parameter (N);
  
        --  A qualified expression has inferable discriminants if its subtype
        --  mark is a constrained Unchecked_Union subtype.
--- 12541,12554 ----
              return False;
           end if;
  
!          --  We need to return True for the component of a formal parameter
!          --  of the predefined equality function of an Unchecked_Union type
!          --  when expanding it (see Expand_Unchecked_Union_Equality).
  
           return not Has_Per_Object_Constraint (Entity (Selector_Name (N)))
             or else not Is_Unchecked_Union (Etype (Prefix (N)))
             or else Has_Inferable_Discriminants (Prefix (N))
!            or else Prefix_Is_Formal_Parameter_Of_EQ (N);
  
        --  A qualified expression has inferable discriminants if its subtype
        --  mark is a constrained Unchecked_Union subtype.
*************** package body Sem_Util is
*** 12739,12756 ****
        return False;
     end Has_Non_Null_Statements;
  
!    ----------------------------------
!    -- Is_Access_Subprogram_Wrapper --
!    ----------------------------------
  
-    function Is_Access_Subprogram_Wrapper (E : Entity_Id) return Boolean is
-       Formal : constant Entity_Id := Last_Formal (E);
     begin
!       return Present (Formal)
!         and then Ekind (Etype (Formal)) in Access_Subprogram_Kind
!         and then Access_Subprogram_Wrapper
!            (Directly_Designated_Type (Etype (Formal))) = E;
!    end Is_Access_Subprogram_Wrapper;
  
     ---------------------------
     -- Is_Explicitly_Aliased --
--- 12747,12773 ----
        return False;
     end Has_Non_Null_Statements;
  
!    -------------------------------------
!    -- Is_Access_To_Subprogram_Wrapper --
!    -------------------------------------
! 
!    function Is_Access_To_Subprogram_Wrapper (E : Entity_Id) return Boolean is
!       Formal : Entity_Id;
  
     begin
!       if not Is_Wrapper (E)
!         or else No (Last_Formal (E))
!       then
!          return False;
! 
!       else
!          Formal := Last_Formal (E);
! 
!          return Ekind (Etype (Formal)) in Access_Subprogram_Kind
!            and then Access_Subprogram_Wrapper
!               (Directly_Designated_Type (Etype (Formal))) = E;
!       end if;
!    end Is_Access_To_Subprogram_Wrapper;
  
     ---------------------------
     -- Is_Explicitly_Aliased --
*************** package body Sem_Util is
*** 15481,15539 ****
                                Next_Elmt (Subp_Elmt);
                             end loop;
  
-                            --  Traverse the primitive operations of the type
-                            --  to locate any indexing functions that have been
-                            --  added to the type (i.e., that have been neither
-                            --  inherited, nor override any of the inherited
-                            --  indexing functions).
- 
-                            --  ??? Note that this doesn't currently account for
-                            --  the possibility of added nonprimitive indexing
-                            --  functions (class-wide functions of the derived
-                            --  type). This presumably would require traversing
-                            --  all of the declarations of the immediately
-                            --  enclosing declaration list, which perhaps we
-                            --  should arguably be doing in any case, rather
-                            --  than separately gathering inherited, overriding,
-                            --  and new indexing functions (and which might also
-                            --  be more efficient). Perhaps this could/should be
-                            --  done in Analyze_Aspects_At_Freeze_Point, but
-                            --  experimenting with that led to difficulties.
- 
-                            declare
-                               Prim_Ops   : constant Elist_Id :=
-                                 Primitive_Operations (Typ);
-                               Prim_Elmt  : Elmt_Id := First_Elmt (Prim_Ops);
-                               Prim_Id    : Entity_Id;
-                               Valid_Func : Boolean;
- 
-                            begin
-                               while Present (Prim_Elmt) loop
-                                  Prim_Id := Node (Prim_Elmt);
- 
-                                  if Chars (Prim_Id) = Chars (Expression (Item))
-                                    and then
-                                      not Is_Inherited_Operation (Prim_Id)
-                                    and then
-                                      not Is_Overriding_Subprogram (Prim_Id)
-                                  then
-                                     --  Verify that the new primitive has
-                                     --  a correct profile to qualify as an
-                                     --  indexing function for Typ.
- 
-                                     Check_Function_For_Indexing_Aspect
-                                       (New_Item, Typ, Prim_Id, Valid_Func);
- 
-                                     if Valid_Func then
-                                        Append_New_Elmt
-                                          (Prim_Id, New_Indexing_Subps);
-                                     end if;
-                                  end if;
- 
-                                  Next_Elmt (Prim_Elmt);
-                               end loop;
-                            end;
- 
                             --  Save new list of indexing functions on aspect
  
                             Set_Aspect_Subprograms
--- 15498,15503 ----
*************** package body Sem_Util is
*** 18133,18145 ****
  
     function Is_Expression_Function (Subp : Entity_Id) return Boolean is
     begin
!       if Ekind (Subp) in E_Function | E_Subprogram_Body then
!          return
!            Nkind (Original_Node (Unit_Declaration_Node (Subp))) =
!              N_Expression_Function;
!       else
!          return False;
!       end if;
     end Is_Expression_Function;
  
     ------------------------------------------
--- 18097,18105 ----
  
     function Is_Expression_Function (Subp : Entity_Id) return Boolean is
     begin
!       return Ekind (Subp) in E_Function | E_Subprogram_Body
!         and then Nkind (Original_Node (Unit_Declaration_Node (Subp))) =
!                                                          N_Expression_Function;
     end Is_Expression_Function;
  
     ------------------------------------------
*************** package body Sem_Util is
*** 18152,18172 ****
        Subp_Decl : Node_Id;
  
     begin
!       if Ekind (Subp) = E_Function then
!          Subp_Decl := Unit_Declaration_Node (Subp);
  
!          --  The function declaration is either an expression function or is
!          --  completed by an expression function body.
  
!          return
!            Is_Expression_Function (Subp)
!              or else (Nkind (Subp_Decl) = N_Subprogram_Declaration
!                        and then Present (Corresponding_Body (Subp_Decl))
!                        and then Is_Expression_Function
!                                   (Corresponding_Body (Subp_Decl)));
  
!       elsif Ekind (Subp) = E_Subprogram_Body then
!          return Is_Expression_Function (Subp);
  
        else
           return False;
--- 18112,18129 ----
        Subp_Decl : Node_Id;
  
     begin
!       --  The function declaration is either an expression function or is
!       --  completed by an expression function.
  
!       if Is_Expression_Function (Subp) then
!          return True;
  
!       elsif Ekind (Subp) = E_Function then
!          Subp_Decl := Unit_Declaration_Node (Subp);
  
!          return Nkind (Subp_Decl) = N_Subprogram_Declaration
!            and then Present (Corresponding_Body (Subp_Decl))
!            and then Is_Expression_Function (Corresponding_Body (Subp_Decl));
  
        else
           return False;
*************** package body Sem_Util is
*** 18302,18388 ****
     -------------------------------
  
     function Is_Fully_Initialized_Type (Typ : Entity_Id) return Boolean is
-    begin
-       --  Scalar types
- 
-       if Is_Scalar_Type (Typ) then
- 
-          --  A scalar type with an aspect Default_Value is fully initialized
- 
-          --  Note: Iniitalize/Normalize_Scalars also ensure full initialization
-          --  of a scalar type, but we don't take that into account here, since
-          --  we don't want these to affect warnings.
- 
-          return Has_Default_Aspect (Typ);
  
!       elsif Is_Access_Type (Typ) then
!          return True;
! 
!       elsif Is_Array_Type (Typ) then
!          if Is_Fully_Initialized_Type (Component_Type (Typ))
!            or else (Ada_Version >= Ada_2012 and then Has_Default_Aspect (Typ))
!          then
!             return True;
!          end if;
! 
!          --  An interesting case, if we have a constrained type one of whose
!          --  bounds is known to be null, then there are no elements to be
!          --  initialized, so all the elements are initialized.
! 
!          if Is_Constrained (Typ) then
!             declare
!                Indx     : Node_Id;
!                Indx_Typ : Entity_Id;
!                Lbd, Hbd : Node_Id;
! 
!             begin
!                Indx := First_Index (Typ);
!                while Present (Indx) loop
!                   if Etype (Indx) = Any_Type then
!                      return False;
! 
!                   --  If index is a range, use directly
! 
!                   elsif Nkind (Indx) = N_Range then
!                      Lbd := Low_Bound  (Indx);
!                      Hbd := High_Bound (Indx);
! 
!                   else
!                      Indx_Typ := Etype (Indx);
! 
!                      if Is_Private_Type (Indx_Typ) then
!                         Indx_Typ := Full_View (Indx_Typ);
!                      end if;
! 
!                      if No (Indx_Typ) or else Etype (Indx_Typ) = Any_Type then
!                         return False;
!                      else
!                         Lbd := Type_Low_Bound  (Indx_Typ);
!                         Hbd := Type_High_Bound (Indx_Typ);
!                      end if;
!                   end if;
! 
!                   if Compile_Time_Known_Value (Lbd)
!                        and then
!                      Compile_Time_Known_Value (Hbd)
!                   then
!                      if Expr_Value (Hbd) < Expr_Value (Lbd) then
!                         return True;
!                      end if;
!                   end if;
! 
!                   Next_Index (Indx);
!                end loop;
!             end;
!          end if;
! 
!          --  If no null indexes, then type is not fully initialized
  
!          return False;
  
!       --  Record types
  
!       elsif Is_Record_Type (Typ) then
           --  Mutably tagged types get default initialized to their parent
           --  subtype's default values.
  
--- 18259,18283 ----
     -------------------------------
  
     function Is_Fully_Initialized_Type (Typ : Entity_Id) return Boolean is
  
!       function Is_Fully_Initialized_Record_Type
!         (Typ : Entity_Id) return Boolean;
!       --  Determines if record type Typ is fully initialized
  
!       function Is_Fully_Initialized_Variant
!         (Typ : Entity_Id) return Boolean;
!       --  Used when checking full type initialization. For an unconstrained
!       --  type with discriminants whose default values are static, examine only
!       --  the components in the selected variant to determine whether all of
!       --  them have a default.
  
!       --------------------------------------
!       -- Is_Fully_Initialized_Record_Type --
!       --------------------------------------
  
!       function Is_Fully_Initialized_Record_Type
!         (Typ : Entity_Id) return Boolean is
!       begin
           --  Mutably tagged types get default initialized to their parent
           --  subtype's default values.
  
*************** package body Sem_Util is
*** 18446,18451 ****
--- 18341,18347 ----
  
           begin
              Comp := First_Component (Typ);
+ 
              while Present (Comp) loop
                 if (No (Parent (Comp))
                      or else No (Expression (Parent (Comp))))
*************** package body Sem_Util is
*** 18464,18484 ****
  
                 Next_Component (Comp);
              end loop;
           end;
  
!          --  No uninitialized components, so type is fully initialized.
!          --  Note that this catches the case of no components as well.
  
           return True;
  
        elsif Is_Concurrent_Type (Typ) then
           return True;
  
!       elsif Is_Private_Type (Typ) then
           declare
              U : constant Entity_Id := Underlying_Type (Typ);
  
           begin
              if No (U) then
                 return False;
              else
--- 18360,18516 ----
  
                 Next_Component (Comp);
              end loop;
+ 
+             --  No uninitialized components, so type is fully initialized.
+             --  Note that this catches the case of no components as well.
+ 
+             return True;
           end;
+       end Is_Fully_Initialized_Record_Type;
  
!       ----------------------------------
!       -- Is_Fully_Initialized_Variant --
!       ----------------------------------
! 
!       function Is_Fully_Initialized_Variant (Typ : Entity_Id) return Boolean is
!          Loc           : constant Source_Ptr := Sloc (Typ);
!          Constraints   : constant List_Id    := New_List;
!          Components    : constant Elist_Id   := New_Elmt_List;
!          Comp_Elmt     : Elmt_Id;
!          Comp_Id       : Node_Id;
!          Comp_List     : Node_Id;
!          Discr         : Entity_Id;
!          Discr_Val     : Node_Id;
! 
!          Report_Errors : Boolean;
!          pragma Warnings (Off, Report_Errors);
! 
!       begin
!          if Serious_Errors_Detected > 0 then
!             return False;
!          end if;
! 
!          if Is_Record_Type (Typ)
!            and then Nkind (Parent (Typ)) = N_Full_Type_Declaration
!            and then
!              Nkind (Type_Definition (Parent (Typ))) = N_Record_Definition
!          then
!             Comp_List := Component_List (Type_Definition (Parent (Typ)));
! 
!             Discr := First_Discriminant (Typ);
!             while Present (Discr) loop
!                if Nkind (Parent (Discr)) = N_Discriminant_Specification then
!                   Discr_Val := Expression (Parent (Discr));
! 
!                   if Present (Discr_Val)
!                     and then Is_OK_Static_Expression (Discr_Val)
!                   then
!                      Append_To (Constraints,
!                        Make_Component_Association (Loc,
!                          Choices    => New_List
!                                          (New_Occurrence_Of (Discr, Loc)),
!                          Expression => New_Copy (Discr_Val)));
!                   else
!                      return False;
!                   end if;
!                else
!                   return False;
!                end if;
! 
!                Next_Discriminant (Discr);
!             end loop;
! 
!             Gather_Components
!               (Typ           => Typ,
!                Comp_List     => Comp_List,
!                Governed_By   => Constraints,
!                Into          => Components,
!                Report_Errors => Report_Errors);
! 
!             --  Check that each component present is fully initialized
! 
!             Comp_Elmt := First_Elmt (Components);
!             while Present (Comp_Elmt) loop
!                Comp_Id := Node (Comp_Elmt);
! 
!                if Ekind (Comp_Id) = E_Component
!                  and then (No (Parent (Comp_Id))
!                             or else No (Expression (Parent (Comp_Id))))
!                  and then not Is_Fully_Initialized_Type (Etype (Comp_Id))
!                then
!                   return False;
!                end if;
! 
!                Next_Elmt (Comp_Elmt);
!             end loop;
! 
!             return True;
! 
!          elsif Is_Private_Type (Typ) then
!             declare
!                U : constant Entity_Id := Underlying_Type (Typ);
! 
!             begin
!                if No (U) then
!                   return False;
!                else
!                   return Is_Fully_Initialized_Variant (U);
!                end if;
!             end;
  
+          else
+             return False;
+          end if;
+       end Is_Fully_Initialized_Variant;
+ 
+    --  Start of processing for Is_Fully_Initialized_Type
+ 
+    begin
+       --  Scalar types
+ 
+       if Is_Scalar_Type (Typ) then
+ 
+          --  A scalar type with an aspect Default_Value is fully initialized
+ 
+          --  Note: Initalize/Normalize_Scalars also ensure full initialization
+          --  of a scalar type, but we don't take that into account here, since
+          --  we don't want these to affect warnings.
+ 
+          return Has_Default_Aspect (Typ);
+ 
+       elsif Is_Access_Type (Typ) then
           return True;
  
+       elsif Is_Array_Type (Typ) then
+          if Is_Fully_Initialized_Type (Component_Type (Typ))
+            or else (Ada_Version >= Ada_2012 and then Has_Default_Aspect (Typ))
+          then
+             return True;
+          end if;
+ 
+          return Is_Fully_Initialized_Constrained_Array (Typ);
+ 
+       --  Record types
+ 
+       elsif Is_Record_Type (Typ) then
+          return Is_Fully_Initialized_Record_Type (Typ);
+ 
+       --  Concurrent types are always considered fully initialized and
+       --  partially initialized.
+ 
        elsif Is_Concurrent_Type (Typ) then
           return True;
  
!       elsif Is_Private_Type (Typ)
!         or else Is_Incomplete_Type (Typ)
!       then
           declare
              U : constant Entity_Id := Underlying_Type (Typ);
  
           begin
+             --  If the underlying type is not available assume partially
+             --  initialized.
+ 
              if No (U) then
                 return False;
              else
*************** package body Sem_Util is
*** 18486,18588 ****
              end if;
           end;
  
        else
           return False;
        end if;
     end Is_Fully_Initialized_Type;
  
!    ----------------------------------
!    -- Is_Fully_Initialized_Variant --
!    ----------------------------------
! 
!    function Is_Fully_Initialized_Variant (Typ : Entity_Id) return Boolean is
!       Loc           : constant Source_Ptr := Sloc (Typ);
!       Constraints   : constant List_Id    := New_List;
!       Components    : constant Elist_Id   := New_Elmt_List;
!       Comp_Elmt     : Elmt_Id;
!       Comp_Id       : Node_Id;
!       Comp_List     : Node_Id;
!       Discr         : Entity_Id;
!       Discr_Val     : Node_Id;
  
!       Report_Errors : Boolean;
!       pragma Warnings (Off, Report_Errors);
  
     begin
!       if Serious_Errors_Detected > 0 then
           return False;
        end if;
  
!       if Is_Record_Type (Typ)
!         and then Nkind (Parent (Typ)) = N_Full_Type_Declaration
!         and then Nkind (Type_Definition (Parent (Typ))) = N_Record_Definition
!       then
!          Comp_List := Component_List (Type_Definition (Parent (Typ)));
! 
!          Discr := First_Discriminant (Typ);
!          while Present (Discr) loop
!             if Nkind (Parent (Discr)) = N_Discriminant_Specification then
!                Discr_Val := Expression (Parent (Discr));
  
!                if Present (Discr_Val)
!                  and then Is_OK_Static_Expression (Discr_Val)
!                then
!                   Append_To (Constraints,
!                     Make_Component_Association (Loc,
!                       Choices    => New_List (New_Occurrence_Of (Discr, Loc)),
!                       Expression => New_Copy (Discr_Val)));
!                else
!                   return False;
!                end if;
!             else
!                return False;
!             end if;
  
!             Next_Discriminant (Discr);
!          end loop;
  
!          Gather_Components
!            (Typ           => Typ,
!             Comp_List     => Comp_List,
!             Governed_By   => Constraints,
!             Into          => Components,
!             Report_Errors => Report_Errors);
  
!          --  Check that each component present is fully initialized
  
!          Comp_Elmt := First_Elmt (Components);
!          while Present (Comp_Elmt) loop
!             Comp_Id := Node (Comp_Elmt);
  
!             if Ekind (Comp_Id) = E_Component
!               and then (No (Parent (Comp_Id))
!                          or else No (Expression (Parent (Comp_Id))))
!               and then not Is_Fully_Initialized_Type (Etype (Comp_Id))
!             then
                 return False;
              end if;
  
!             Next_Elmt (Comp_Elmt);
!          end loop;
! 
!          return True;
  
!       elsif Is_Private_Type (Typ) then
!          declare
!             U : constant Entity_Id := Underlying_Type (Typ);
  
!          begin
!             if No (U) then
!                return False;
!             else
!                return Is_Fully_Initialized_Variant (U);
!             end if;
!          end;
  
!       else
!          return False;
!       end if;
!    end Is_Fully_Initialized_Variant;
  
     -----------------------------------
     -- Is_Function_With_Side_Effects --
--- 18518,18592 ----
              end if;
           end;
  
+       --  For any other type (are there any?) assume partially initialized
+ 
        else
           return False;
        end if;
     end Is_Fully_Initialized_Type;
  
!    --------------------------------------------
!    -- Is_Fully_Initialized_Constrained_Array --
!    --------------------------------------------
  
!    function Is_Fully_Initialized_Constrained_Array
!      (Typ : Entity_Id) return Boolean
!    is
!       Indx     : Node_Id;
!       Indx_Typ : Entity_Id;
!       Lbd, Hbd : Node_Id;
  
     begin
!       if not Is_Constrained (Typ) then
           return False;
        end if;
  
!       --  An interesting case, if we have a constrained type one of whose
!       --  bounds is known to be null, then there are no elements to be
!       --  initialized, so all the elements are initialized.
  
!       Indx := First_Index (Typ);
!       while Present (Indx) loop
!          if Etype (Indx) = Any_Type then
!             return False;
  
!          --  If index is a range, use directly
  
!          elsif Nkind (Indx) = N_Range then
!             Lbd := Low_Bound  (Indx);
!             Hbd := High_Bound (Indx);
  
!          else
!             Indx_Typ := Etype (Indx);
  
!             if Is_Private_Type (Indx_Typ) then
!                Indx_Typ := Full_View (Indx_Typ);
!             end if;
  
!             if No (Indx_Typ) or else Etype (Indx_Typ) = Any_Type then
                 return False;
+             else
+                Lbd := Type_Low_Bound  (Indx_Typ);
+                Hbd := Type_High_Bound (Indx_Typ);
              end if;
+          end if;
  
!          if Compile_Time_Known_Value (Lbd)
!               and then
!             Compile_Time_Known_Value (Hbd)
!          then
!             if Expr_Value (Hbd) < Expr_Value (Lbd) then
!                return True;
!             end if;
!          end if;
  
!          Next_Index (Indx);
!       end loop;
  
!       --  If no null indexes, then type is not fully initialized
  
!       return False;
!    end Is_Fully_Initialized_Constrained_Array;
  
     -----------------------------------
     -- Is_Function_With_Side_Effects --
*************** package body Sem_Util is
*** 18780,18786 ****
          and then Present (Subprogram_Body (Subp))
          and then Was_Expression_Function (Subprogram_Body (Subp))
        then
!          Return_Expr := Expression_Of_Expression_Function (Subp);
  
           --  The returned object must not have a qualified expression and its
           --  nominal subtype must be statically compatible with the result
--- 18784,18791 ----
          and then Present (Subprogram_Body (Subp))
          and then Was_Expression_Function (Subprogram_Body (Subp))
        then
!          Return_Expr :=
!            Original_Node (Expression_Of_Expression_Function (Subp));
  
           --  The returned object must not have a qualified expression and its
           --  nominal subtype must be statically compatible with the result
*************** package body Sem_Util is
*** 20402,20436 ****
  
     function Is_Partially_Initialized_Type
       (Typ              : Entity_Id;
!       Include_Implicit : Boolean := True) return Boolean
     is
!    begin
!       if Is_Scalar_Type (Typ) then
!          return Has_Default_Aspect (Base_Type (Typ));
! 
!       elsif Is_Access_Type (Typ) then
!          return Include_Implicit;
! 
!       elsif Is_Array_Type (Typ) then
! 
!          --  If component type is partially initialized, so is array type
! 
!          if Has_Default_Aspect (Base_Type (Typ))
!            or else Is_Partially_Initialized_Type
!                      (Component_Type (Typ), Include_Implicit)
!          then
!             return True;
! 
!          --  Otherwise we are only partially initialized if we are fully
!          --  initialized (this is the empty array case, no point in us
!          --  duplicating that code here).
! 
!          else
!             return Is_Fully_Initialized_Type (Typ);
!          end if;
  
!       elsif Is_Record_Type (Typ) then
  
           --  A discriminated type is always partially initialized if in
           --  all mode
  
--- 20407,20426 ----
  
     function Is_Partially_Initialized_Type
       (Typ              : Entity_Id;
!       Include_Implicit : Boolean := True;
!       Predicate_Check  : Boolean := False) return Boolean
     is
!       function Is_Partially_Initialized_Record_Type
!         (Typ : Entity_Id) return Boolean;
!       --  Determines if record type Typ is partially initialized
  
!       ------------------------------------------
!       -- Is_Partially_Initialized_Record_Type --
!       ------------------------------------------
  
+       function Is_Partially_Initialized_Record_Type
+         (Typ : Entity_Id) return Boolean is
+       begin
           --  A discriminated type is always partially initialized if in
           --  all mode
  
*************** package body Sem_Util is
*** 20441,20472 ****
  
           elsif Is_Tagged_Type (Typ) then
              return True;
  
!          --  Case of record type with no components
  
!          elsif No (First_Component (Typ)) then
!             return False;
  
!          --  Case of record type with components
  
!          else
!             declare
!                Comp : Entity_Id;
  
!                Component_Present : Boolean := False;
!                --  Set True if at least one component is present. If no
!                --  components are present, then record type is fully
!                --  initialized (another odd case, like the null array).
  
!             begin
!                --  Loop through components
  
-                Comp := First_Component (Typ);
                 while Present (Comp) loop
-                   Component_Present := True;
  
                    --  If a component has an initialization expression then the
!                   --  enclosing record type is partially initialized
  
                    if Present (Parent (Comp))
                      and then Present (Expression (Parent (Comp)))
--- 20431,20470 ----
  
           elsif Is_Tagged_Type (Typ) then
              return True;
+          end if;
  
!          --  Check discriminants and record components
  
!          declare
!             Comp        : Entity_Id;
!             First_Round : constant Natural :=
!                             (if Predicate_Check
!                                and then Has_Discriminants (Typ)
!                              then 1 else 2);
  
!          begin
!             --  Loop through components in two rounds: discriminants first
!             --  (only if we must check discriminants), and record components
!             --  in the second round.
  
!             for Round in First_Round .. 2 loop
!                if Round = 1 then
!                   Comp := First_Discriminant (Typ);
!                else
!                   Comp := First_Component (Typ);
  
!                   --  Case of record type with no components; we consider
!                   --  the type to be initialized.
  
!                   if No (Comp) then
!                      return False;
!                   end if;
!                end if;
  
                 while Present (Comp) loop
  
                    --  If a component has an initialization expression then the
!                   --  enclosing record type is partially initialized.
  
                    if Present (Parent (Comp))
                      and then Present (Expression (Parent (Comp)))
*************** package body Sem_Util is
*** 20476,20506 ****
                    --  If a component is of a type which is itself partially
                    --  initialized, then the enclosing record type is also.
  
!                   elsif Is_Partially_Initialized_Type
!                           (Etype (Comp), Include_Implicit)
                    then
                       return True;
                    end if;
  
!                   Next_Component (Comp);
                 end loop;
  
!                --  No initialized components found. If we found any components
!                --  they were all uninitialized so the result is false.
  
!                if Component_Present then
!                   return False;
  
!                --  But if we found no components, then all the components are
!                --  initialized so we consider the type to be initialized.
  
!                else
!                   return True;
!                end if;
!             end;
           end if;
  
!       --  Concurrent types are always fully initialized
  
        elsif Is_Concurrent_Type (Typ) then
           return True;
--- 20474,20533 ----
                    --  If a component is of a type which is itself partially
                    --  initialized, then the enclosing record type is also.
  
!                   elsif Is_Partially_Initialized_Type (Etype (Comp),
!                           Include_Implicit => Include_Implicit,
!                           Predicate_Check  => Predicate_Check)
                    then
                       return True;
                    end if;
  
!                   Comp := (if Round = 1 then Next_Discriminant (Comp)
!                                         else Next_Component (Comp));
                 end loop;
+             end loop;
  
!             --  No initialized components found. If we found any components
!             --  they were all uninitialized so the result is false.
  
!             return False;
!          end;
!       end Is_Partially_Initialized_Record_Type;
  
!    --  Start of processing for Is_Partially_Initialized_Type
  
!    begin
!       --  Predicate check requires Include_Implicit = False
!       pragma Assert (not Predicate_Check or else not Include_Implicit);
! 
!       if Is_Scalar_Type (Typ) then
!          return Has_Default_Aspect (Base_Type (Typ));
! 
!       elsif Is_Access_Type (Typ) then
!          return Include_Implicit;
! 
!       elsif Is_Array_Type (Typ) then
! 
!          --  If component type is partially initialized, so is array type
! 
!          if Has_Default_Aspect (Base_Type (Typ))
!            or else Is_Partially_Initialized_Type (Component_Type (Typ),
!                      Include_Implicit => Include_Implicit,
!                      Predicate_Check  => Predicate_Check)
!          then
!             return True;
! 
!          --  Otherwise we are only partially initialized if we are fully
!          --  initialized (this includes the empty array case).
! 
!          else
!             return Is_Fully_Initialized_Constrained_Array (Typ);
           end if;
  
!       elsif Is_Record_Type (Typ) then
!          return Is_Partially_Initialized_Record_Type (Typ);
! 
!       --  Concurrent types are always considered fully initialized and
!       --  partially initialized.
  
        elsif Is_Concurrent_Type (Typ) then
           return True;
*************** package body Sem_Util is
*** 20509,20530 ****
        --  type then just assume this partially initialized. Not clear if this
        --  can happen in a non-error case, but no harm in testing for this.
  
!       elsif Is_Private_Type (Typ) then
           declare
              U : constant Entity_Id := Underlying_Type (Typ);
           begin
              if No (U) then
                 return True;
              else
!                return Is_Partially_Initialized_Type (U, Include_Implicit);
              end if;
           end;
  
        --  For any other type (are there any?) assume partially initialized
  
!       else
!          return True;
!       end if;
     end Is_Partially_Initialized_Type;
  
     ------------------------------------
--- 20536,20564 ----
        --  type then just assume this partially initialized. Not clear if this
        --  can happen in a non-error case, but no harm in testing for this.
  
!       elsif Is_Private_Type (Typ)
!         or else Is_Incomplete_Type (Typ)
!       then
           declare
              U : constant Entity_Id := Underlying_Type (Typ);
           begin
+             --  If the underlying type is not available assume partially
+             --  initialized.
+ 
              if No (U) then
                 return True;
              else
!                return Is_Partially_Initialized_Type (U,
!                         Include_Implicit => Include_Implicit,
!                         Predicate_Check  => Predicate_Check);
              end if;
           end;
+       end if;
  
        --  For any other type (are there any?) assume partially initialized
  
!       pragma Assert (False);
!       return True;
     end Is_Partially_Initialized_Type;
  
     ------------------------------------
*************** package body Sem_Util is
*** 27026,27031 ****
--- 27060,27073 ----
           Kind := Policy_In_List (Check_Policy_List_Config);
        end if;
  
+       --  Normalize the policy names
+ 
+       if Kind = Name_Off then
+          Kind := Name_Ignore;
+       elsif Kind = Name_On then
+          Kind := Name_Check;
+       end if;
+ 
        --  The context lacks policy pragmas, determine the mode based on whether
        --  assertions are enabled at the configuration level. This ensures that
        --  the policy is preserved when analyzing generics.
*************** package body Sem_Util is
*** 29147,29153 ****
                        and then not In_Internal_Unit (N);
  
     begin
!       return Result;
     end Should_Ignore_Pragma_Sem;
  
     --------------------
--- 29189,29196 ----
                        and then not In_Internal_Unit (N);
  
     begin
!       return Result
!         or else Get_Aspect_Id (Prag_Name) in Ignored_Aspects;
     end Should_Ignore_Pragma_Sem;
  
     --------------------
*************** package body Sem_Util is
*** 29339,29351 ****
                 return False;
              end if;
  
              declare
                 Comp : constant Entity_Id :=
                   Original_Record_Component (Entity (Selector_Name (N)));
              begin
!               --  AI12-0373 confirms that we should not call
!               --  Has_Discriminant_Dependent_Constraint here which would be
!               --  too strong.
  
                 if Is_Declared_Within_Variant (Comp) then
                    return False;
--- 29382,29402 ----
                 return False;
              end if;
  
+             --  Reject for example subprogram calls in object notation
+ 
+             if Ekind (Entity (Selector_Name (N))) not in E_Component
+                                                        | E_Discriminant
+             then
+                return False;
+             end if;
+ 
              declare
                 Comp : constant Entity_Id :=
                   Original_Record_Component (Entity (Selector_Name (N)));
              begin
!                --  AI12-0373 confirms that we should not call
!                --  Has_Discriminant_Dependent_Constraint here,
!                --  which would be too strong.
  
                 if Is_Declared_Within_Variant (Comp) then
                    return False;
*************** package body Sem_Util is
*** 31597,31602 ****
--- 31648,31658 ----
  
     package body Old_Attr_Util is
        package body Conditional_Evaluation is
+ 
+          function As_Boolean (N : Node_Id) return Node_Id;
+          --  Decorate newly created node with Etype = Standard_Boolean,
+          --  and return it.
+ 
           type Determining_Expr_Context is
             (No_Context, If_Expr, Case_Expr, Short_Circuit_Op, Membership_Test);
  
*************** package body Sem_Util is
*** 31655,31660 ****
--- 31711,31726 ----
           function Is_Known_On_Entry (Expr : Node_Id) return Boolean;
           --  See RM 6.1.1 for definition of term "known on entry".
  
+          ----------------
+          -- As_Boolean --
+          ----------------
+ 
+          function As_Boolean (N : Node_Id) return Node_Id is
+          begin
+             Set_Etype (N, Standard_Boolean);
+             return N;
+          end As_Boolean;
+ 
           --------------------------------------
           -- Conditional_Evaluation_Condition --
           --------------------------------------
*************** package body Sem_Util is
*** 31676,31681 ****
--- 31742,31748 ----
                             Left_Opnd  => Result,
                             Right_Opnd =>
                               Determining_Condition (Determiners (I)));
+                Result := As_Boolean (Result);
              end loop;
              return Result;
           end Conditional_Evaluation_Condition;
*************** package body Sem_Util is
*** 31693,31706 ****
                    if Det.Is_And_Then then
                       return New_Copy_Tree (Det.Expr);
                    else
!                      return Make_Op_Not (Loc, New_Copy_Tree (Det.Expr));
                    end if;
  
                 when If_Expr =>
                    if Det.Is_Then_Part then
                       return New_Copy_Tree (Det.Expr);
                    else
!                      return Make_Op_Not (Loc, New_Copy_Tree (Det.Expr));
                    end if;
  
                 when Case_Expr =>
--- 31760,31775 ----
                    if Det.Is_And_Then then
                       return New_Copy_Tree (Det.Expr);
                    else
!                      return As_Boolean
!                        (Make_Op_Not (Loc, New_Copy_Tree (Det.Expr)));
                    end if;
  
                 when If_Expr =>
                    if Det.Is_Then_Part then
                       return New_Copy_Tree (Det.Expr);
                    else
!                      return As_Boolean
!                        (Make_Op_Not (Loc, New_Copy_Tree (Det.Expr)));
                    end if;
  
                 when Case_Expr =>
*************** package body Sem_Util is
*** 31711,31720 ****
                          Alts := Others_Discrete_Choices (First (Alts));
                       end if;
  
!                      return Make_In (Loc,
!                        Left_Opnd    => New_Copy_Tree (Det.Expr),
!                        Right_Opnd   => Empty,
!                        Alternatives => New_Copy_List (Alts));
                    end;
  
                 when Membership_Test =>
--- 31780,31790 ----
                          Alts := Others_Discrete_Choices (First (Alts));
                       end if;
  
!                      return As_Boolean
!                        (Make_In (Loc,
!                         Left_Opnd    => New_Copy_Tree (Det.Expr),
!                         Right_Opnd   => Empty,
!                         Alternatives => New_Copy_List (Alts)));
                    end;
  
                 when Membership_Test =>
*************** package body Sem_Util is
*** 31747,31758 ****
                       end Copy_Prefix;
  
                    begin
!                      return Make_In (Loc,
!                        Left_Opnd    => New_Copy_Tree (Left_Opnd (Det.Expr)),
!                        Right_Opnd   => Empty,
!                        Alternatives => Copy_Prefix
!                                          (Alternatives (Det.Expr),
!                                           Det.First_Non_Preceding));
                    end;
  
                 when No_Context =>
--- 31817,31829 ----
                       end Copy_Prefix;
  
                    begin
!                      return As_Boolean
!                        (Make_In (Loc,
!                         Left_Opnd    => New_Copy_Tree (Left_Opnd (Det.Expr)),
!                         Right_Opnd   => Empty,
!                         Alternatives => Copy_Prefix
!                           (Alternatives (Det.Expr),
!                            Det.First_Non_Preceding)));
                    end;
  
                 when No_Context =>
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_util.ads gcc-17-20260531/gcc/ada/sem_util.ads
*** gcc-17-20260524/gcc/ada/sem_util.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_util.ads	Sun May 31 22:32:05 2026
*************** package Sem_Util is
*** 711,717 ****
  
     function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean;
     --  Detect suspicious overlapping between actuals in a call, when both are
!    --  writable (RM 2012 6.4.1(6.4/3)).
  
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean;
     --  Functions to detect suspicious overlapping between actuals in a call,
--- 711,717 ----
  
     function Denotes_Same_Object (A1, A2 : Node_Id) return Boolean;
     --  Detect suspicious overlapping between actuals in a call, when both are
!    --  writable (RM 2012 6.4.1(6.5/3)).
  
     function Denotes_Same_Prefix (A1, A2 : Node_Id) return Boolean;
     --  Functions to detect suspicious overlapping between actuals in a call,
*************** package Sem_Util is
*** 1881,1887 ****
     --  pragma Initialize_Scalars or by the binder. Return an expression created
     --  at source location Loc, which denotes the invalid value.
  
!    function Is_Access_Subprogram_Wrapper (E : Entity_Id) return Boolean;
     --  True if E is the constructed wrapper for an access_to_subprogram
     --  type with Pre/Postconditions.
  
--- 1881,1887 ----
     --  pragma Initialize_Scalars or by the binder. Return an expression created
     --  at source location Loc, which denotes the invalid value.
  
!    function Is_Access_To_Subprogram_Wrapper (E : Entity_Id) return Boolean;
     --  True if E is the constructed wrapper for an access_to_subprogram
     --  type with Pre/Postconditions.
  
*************** package Sem_Util is
*** 2161,2167 ****
     function Is_Expression_Function_Or_Completion
       (Subp : Entity_Id) return Boolean;
     --  Determine whether subprogram [body] Subp denotes an expression function
!    --  or is completed by an expression function body.
  
     function Is_Extended_Precision_Floating_Point_Type
       (E : Entity_Id) return Boolean;
--- 2161,2167 ----
     function Is_Expression_Function_Or_Completion
       (Subp : Entity_Id) return Boolean;
     --  Determine whether subprogram [body] Subp denotes an expression function
!    --  or is completed by an expression function.
  
     function Is_Extended_Precision_Floating_Point_Type
       (E : Entity_Id) return Boolean;
*************** package Sem_Util is
*** 2394,2400 ****
  
     function Is_Partially_Initialized_Type
       (Typ              : Entity_Id;
!       Include_Implicit : Boolean := True) return Boolean;
     --  Typ is a type entity. This function returns true if this type is partly
     --  initialized, meaning that an object of the type is at least partly
     --  initialized (in particular in the record case, that at least one
--- 2394,2401 ----
  
     function Is_Partially_Initialized_Type
       (Typ              : Entity_Id;
!       Include_Implicit : Boolean := True;
!       Predicate_Check  : Boolean := False) return Boolean;
     --  Typ is a type entity. This function returns true if this type is partly
     --  initialized, meaning that an object of the type is at least partly
     --  initialized (in particular in the record case, that at least one
*************** package Sem_Util is
*** 2408,2413 ****
--- 2409,2418 ----
     --  access values not explicitly initialized will return True. Otherwise
     --  if Include_Implicit is False, these cases do not count as making the
     --  type be partially initialized.
+    --  Predicate_Check indicates that this function has been invoked to
+    --  determine if a predicate check for Typ is needed. In this context
+    --  discriminants of record types are counted as making the type be
+    --  partially initialized, and Include_Implicit must be False.
  
     function Is_Potentially_Unevaluated (N : Node_Id) return Boolean;
     --  Predicate to implement definition given in RM 2012 6.1.1 (20/3)
diff -Nrcpad gcc-17-20260524/gcc/ada/sem_warn.adb gcc-17-20260531/gcc/ada/sem_warn.adb
*** gcc-17-20260524/gcc/ada/sem_warn.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sem_warn.adb	Sun May 31 22:32:05 2026
*************** package body Sem_Warn is
*** 1613,1619 ****
                          if not Has_Discriminants (Etype (E1))
                            and then
                              Is_Partially_Initialized_Type
!                               (Etype (Parent (UR)), False)
                          then
                             goto Continue;
                          end if;
--- 1613,1620 ----
                          if not Has_Discriminants (Etype (E1))
                            and then
                              Is_Partially_Initialized_Type
!                               (Typ              => Etype (Parent (UR)),
!                                Include_Implicit => False)
                          then
                             goto Continue;
                          end if;
*************** package body Sem_Warn is
*** 3920,3926 ****
        --  known to refer to the same object as the other name; or one of the
        --  two names statically denotes a renaming declaration whose renamed
        --  object_name is known to refer to the same object as the other name
!       --  (RM 6.4.1(6.11/3))
  
        -----------------------------
        -- Explicitly_By_Reference --
--- 3921,3927 ----
        --  known to refer to the same object as the other name; or one of the
        --  two names statically denotes a renaming declaration whose renamed
        --  object_name is known to refer to the same object as the other name
!       --  (RM 6.4.1(6.12/3))
  
        -----------------------------
        -- Explicitly_By_Reference --
*************** package body Sem_Warn is
*** 3979,3985 ****
        --  of an elementary type, then the call is legal only if for each name
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
!       --  out to C that is known to denote the same object (RM 6.4.1(6.15/3))
        --  This has been clarified in AI12-0216 to indicate that the illegality
        --  only occurs if both formals are of an elementary type, because of the
        --  nondeterminism on the write-back of the corresponding actuals.
--- 3980,3986 ----
        --  of an elementary type, then the call is legal only if for each name
        --  N that is passed as a parameter of mode in out or out to the call C,
        --  there is no other name among the other parameters of mode in out or
!       --  out to C that is known to denote the same object (RM 6.4.1(6.16/3))
        --  This has been clarified in AI12-0216 to indicate that the illegality
        --  only occurs if both formals are of an elementary type, because of the
        --  nondeterminism on the write-back of the corresponding actuals.
diff -Nrcpad gcc-17-20260524/gcc/ada/sigtramp-arm-qnx.c gcc-17-20260531/gcc/ada/sigtramp-arm-qnx.c
*** gcc-17-20260524/gcc/ada/sigtramp-arm-qnx.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sigtramp-arm-qnx.c	Sun May 31 22:32:05 2026
***************
*** 43,49 ****
     -- Prototypes for our internal asm stubs --
     -------------------------------------------
  
!    Eventhough our symbols will remain local, the prototype claims "extern"
     and not "static" to prevent compiler complaints about a symbol used but
     never defined.  */
  
--- 43,49 ----
     -- Prototypes for our internal asm stubs --
     -------------------------------------------
  
!    Even though our symbols will remain local, the prototype claims "extern"
     and not "static" to prevent compiler complaints about a symbol used but
     never defined.  */
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sigtramp-vxworks-target.h gcc-17-20260531/gcc/ada/sigtramp-vxworks-target.h
*** gcc-17-20260524/gcc/ada/sigtramp-vxworks-target.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sigtramp-vxworks-target.h	Sun May 31 22:32:05 2026
***************
*** 138,144 ****
  
  #elif defined (i386)
  
! /* These are the cfi colunm numbers */
  
  #define REGNO_EDI 7
  #define REGNO_ESI 6
--- 138,144 ----
  
  #elif defined (i386)
  
! /* These are the cfi column numbers */
  
  #define REGNO_EDI 7
  #define REGNO_ESI 6
***************
*** 176,182 ****
  
  #elif defined (__x86_64__)
  
! /* These are the cfi colunm numbers */
  
  #define REGNO_RAX 0
  #define REGNO_RDX 1
--- 176,182 ----
  
  #elif defined (__x86_64__)
  
! /* These are the cfi column numbers */
  
  #define REGNO_RAX 0
  #define REGNO_RDX 1
diff -Nrcpad gcc-17-20260524/gcc/ada/sigtramp-vxworks.c gcc-17-20260531/gcc/ada/sigtramp-vxworks.c
*** gcc-17-20260524/gcc/ada/sigtramp-vxworks.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sigtramp-vxworks.c	Sun May 31 22:32:05 2026
*************** typedef struct ucontext
*** 88,94 ****
     -- Prototypes for our internal asm stubs --
     -------------------------------------------
  
!    Eventhough our symbols will remain local, the prototype claims "extern"
     and not "static" to prevent compiler complaints about a symbol used but
     never defined.  */
  
--- 88,94 ----
     -- Prototypes for our internal asm stubs --
     -------------------------------------------
  
!    Even though our symbols will remain local, the prototype claims "extern"
     and not "static" to prevent compiler complaints about a symbol used but
     never defined.  */
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sinfo.ads gcc-17-20260531/gcc/ada/sinfo.ads
*** gcc-17-20260524/gcc/ada/sinfo.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sinfo.ads	Sun May 31 22:32:05 2026
*************** package Sinfo is
*** 807,813 ****
     --    Present on an N_Aspect_Specification node. For an aspect that applies
     --    to a type entity, indicates whether the specification appears on the
     --    partial view of a private type or extension. Undefined for aspects
!    --    that apply to other entities.
  
     --  Aspect_Rep_Item
     --    Present in N_Aspect_Specification nodes. Points to the corresponding
--- 807,813 ----
     --    Present on an N_Aspect_Specification node. For an aspect that applies
     --    to a type entity, indicates whether the specification appears on the
     --    partial view of a private type or extension. Undefined for aspects
!    --    that apply to other entities. Used only by SPARK.
  
     --  Aspect_Rep_Item
     --    Present in N_Aspect_Specification nodes. Points to the corresponding
*************** package Sinfo is
*** 900,906 ****
     --    additional cleanup actions carried over from the transient scope.
  
     --  Check_Address_Alignment
!    --    A flag present in N_Attribute_Definition clause for a 'Address
     --    attribute definition. This flag is set if a dynamic check should be
     --    generated at the freeze point for the entity to which this address
     --    clause applies. The reason that we need this flag is that we want to
--- 900,906 ----
     --    additional cleanup actions carried over from the transient scope.
  
     --  Check_Address_Alignment
!    --    A flag present in N_Attribute_Definition_Clause for a 'Address
     --    attribute definition. This flag is set if a dynamic check should be
     --    generated at the freeze point for the entity to which this address
     --    clause applies. The reason that we need this flag is that we want to
*************** package Sinfo is
*** 1522,1531 ****
     --    expansion of an asynchronous entry call. Such a block needs cleanup
     --    handler to assure that the call is cancelled.
  
-    --  Is_Boolean_Aspect
-    --    Present in N_Aspect_Specification node. Set if the aspect is for a
-    --    boolean aspect (i.e. Aspect_Id is in Boolean_Aspect subtype).
- 
     --  Is_Checked
     --    Present in N_Aspect_Specification and N_Pragma nodes. Set for an
     --    assertion aspect or pragma, or check pragma for an assertion, that
--- 1522,1527 ----
*************** package Sinfo is
*** 2265,2270 ****
--- 2261,2271 ----
     --    scope all use this field to reference the corresponding scope entity.
     --    See Einfo for further details.
  
+    --  Scope_Link
+    --    Present in N_Expression_With_Actions nodes. References the internally
+    --    built scope created to provide proper visibility of the declare_items
+    --    to the expander.
+ 
     --  Selector_Name
     --    Present in N_Expanded_Name N_Selected_Component,
     --    N_Generic_Association, and N_Parameter_Association nodes.
*************** package Sinfo is
*** 8103,8108 ****
--- 8104,8110 ----
        --  N_Expression_With_Actions
        --  Actions
        --  Expression
+       --  Scope_Link
        --  plus fields for expression
  
        --  Note: In the final generated tree presented to the code generator,
diff -Nrcpad gcc-17-20260524/gcc/ada/sinput.ads gcc-17-20260531/gcc/ada/sinput.ads
*** gcc-17-20260524/gcc/ada/sinput.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sinput.ads	Sun May 31 22:32:05 2026
***************
*** 46,58 ****
  --    significance, but they are significant for error reporting purposes,
  --    since errors are identified by line and column location.
  
! --  In GNAT, a physical line is ended by any of the sequences LF, CR/LF, or
! --  CR. LF is used in typical Unix systems, CR/LF in DOS systems, and CR
! --  alone in System 7. In addition, we recognize any of these sequences in
  --  any of the operating systems, for better behavior in treating foreign
  --  files (e.g. a Unix file with LF terminators transferred to a DOS system).
  --  Finally, wide character codes in categories Separator, Line and Separator,
! --  Paragraph are considered to be physical line terminators.
  
  with Alloc;
  with Casing; use Casing;
--- 46,58 ----
  --    significance, but they are significant for error reporting purposes,
  --    since errors are identified by line and column location.
  
! --  In GNAT, a physical line is ended by any of the sequences CR, LF, or CR/LF.
! --  CR is used in some MAC systems, LF is used in Unix systems, and CR/LF in
! --  DOS/Windows systems. In addition, we recognize any of these sequences in
  --  any of the operating systems, for better behavior in treating foreign
  --  files (e.g. a Unix file with LF terminators transferred to a DOS system).
  --  Finally, wide character codes in categories Separator, Line and Separator,
! --  Paragraph are considered to be logical line terminators.
  
  with Alloc;
  with Casing; use Casing;
diff -Nrcpad gcc-17-20260524/gcc/ada/snames.adb-tmpl gcc-17-20260531/gcc/ada/snames.adb-tmpl
*** gcc-17-20260524/gcc/ada/snames.adb-tmpl	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/snames.adb-tmpl	Sun May 31 22:32:05 2026
*************** package body Snames is
*** 458,466 ****
                     --  for compatibility with Ada 95 compilers implementing
                     --  only this Ada 2005 extension.
          and then (Ada_Version >= Ada_2012
!                    or else N not in Ada_2012_Reserved_Words)
!         and then (Ada_Version >= Ada_With_All_Extensions
!                    or else N not in GNAT_Extensions_Reserved_Words);
     end Is_Keyword_Name;
  
     --------------------------------
--- 458,464 ----
                     --  for compatibility with Ada 95 compilers implementing
                     --  only this Ada 2005 extension.
          and then (Ada_Version >= Ada_2012
!                    or else N not in Ada_2012_Reserved_Words);
     end Is_Keyword_Name;
  
     --------------------------------
diff -Nrcpad gcc-17-20260524/gcc/ada/snames.ads-tmpl gcc-17-20260531/gcc/ada/snames.ads-tmpl
*** gcc-17-20260524/gcc/ada/snames.ads-tmpl	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/snames.ads-tmpl	Sun May 31 22:32:05 2026
*************** package Snames is
*** 171,176 ****
--- 171,179 ----
     Name_Storage_Model_Type             : constant Name_Id := N + $;
     Name_String_Literal                 : constant Name_Id := N + $;
     Name_Synchronization                : constant Name_Id := N + $;
+    Name_Taint_Sanitizer                : constant Name_Id := N + $;
+    Name_Taint_Sink                     : constant Name_Id := N + $;
+    Name_Taint_Source                   : constant Name_Id := N + $;
     Name_Unimplemented                  : constant Name_Id := N + $;
     Name_User_Aspect                    : constant Name_Id := N + $;
  
*************** package Snames is
*** 1406,1411 ****
--- 1409,1415 ----
  
     Name_Synchronous_Task_Control         : constant Name_Id := N + $;
     Name_Continue                         : constant Name_Id := N + $;
+    Name_Finally                          : constant Name_Id := N + $;
  
     --  Names used to implement iterators over predefined containers
  
*************** package Snames is
*** 1454,1469 ****
     subtype Ada_2012_Reserved_Words is Name_Id
       range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
  
-    --  GNAT extensions reserved words
- 
-    First_GNAT_Extensions_Reserved_Word   : constant Name_Id := N + $;
-    Name_Finally                          : constant Name_Id := N + $;
-    Last_GNAT_Extensions_Reserved_Word    : constant Name_Id := N + $;
- 
-    subtype GNAT_Extensions_Reserved_Words is Name_Id
-      range First_GNAT_Extensions_Reserved_Word ..
-        Last_GNAT_Extensions_Reserved_Word;
- 
     --  Mark last defined name for consistency check in Snames body
  
     Last_Predefined_Name                  : constant Name_Id := N + $;
--- 1458,1463 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/sprint.adb gcc-17-20260531/gcc/ada/sprint.adb
*** gcc-17-20260524/gcc/ada/sprint.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sprint.adb	Sun May 31 22:32:05 2026
*************** package body Sprint is
*** 2360,2365 ****
--- 2360,2370 ----
  
              Sprint_Node (Discrete_Subtype_Definition (Node));
  
+             if Present (Iterator_Filter (Node)) then
+                Write_Str (" when ");
+                Sprint_Node (Iterator_Filter (Node));
+             end if;
+ 
           when N_Loop_Statement =>
              Write_Indent;
  
diff -Nrcpad gcc-17-20260524/gcc/ada/sysdep.c gcc-17-20260531/gcc/ada/sysdep.c
*** gcc-17-20260524/gcc/ada/sysdep.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/sysdep.c	Sun May 31 22:32:05 2026
*************** extern struct tm *localtime_r(const time
*** 100,106 ****
  #include "adaint.h"
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    imcompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
--- 100,106 ----
  #include "adaint.h"
  
  /* Don't use macros versions of this functions on VxWorks since they cause
!    incompatible changes in some VxWorks versions */
  #ifdef __vxworks
  #undef getchar
  #undef putchar
*************** getc_immediate_common (FILE *stream,
*** 394,400 ****
      || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
      || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
      || defined (__QNX__)
!   char c;
    int nread;
    int good_one = 0;
    int eof_ch = 4; /* Ctrl-D */
--- 394,400 ----
      || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
      || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
      || defined (__QNX__)
!   unsigned char c;
    int nread;
    int good_one = 0;
    int eof_ch = 4; /* Ctrl-D */
*************** getc_immediate_common (FILE *stream,
*** 512,518 ****
    struct fd_set readFds;
    /* Timeout before select returns if nothing can be read.  */
    struct timeval timeOut;
!   char c;
    int fd = fileno (stream);
    int nread;
    int option;
--- 512,518 ----
    struct fd_set readFds;
    /* Timeout before select returns if nothing can be read.  */
    struct timeval timeOut;
!   unsigned char c;
    int fd = fileno (stream);
    int nread;
    int option;
diff -Nrcpad gcc-17-20260524/gcc/ada/targparm.ads gcc-17-20260531/gcc/ada/targparm.ads
*** gcc-17-20260524/gcc/ada/targparm.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/targparm.ads	Sun May 31 22:32:05 2026
*************** package Targparm is
*** 267,276 ****
     --
     --  This has some specific effects as follows
     --
!    --    The binder generates the gnat_argc/argv/envp variables in the
!    --    binder file instead of being imported from the run-time library.
!    --    If Command_Line_Args_On_Target is set to False, then the
!    --    generation of these variables is suppressed completely.
     --
     --    The routine __gnat_break_start is defined within the binder file
     --    instead of being imported from the run-time library.
--- 267,276 ----
     --
     --  This has some specific effects as follows
     --
!    --    The binder generates the gnat_argc/argv variables in the binder file
!    --    instead of being imported from the run-time library. If
!    --    Command_Line_Args_On_Target is set to False, then the generation of
!    --    these variables is suppressed completely.
     --
     --    The routine __gnat_break_start is defined within the binder file
     --    instead of being imported from the run-time library.
diff -Nrcpad gcc-17-20260524/gcc/ada/tbuild.ads gcc-17-20260531/gcc/ada/tbuild.ads
*** gcc-17-20260524/gcc/ada/tbuild.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/tbuild.ads	Sun May 31 22:32:05 2026
*************** package Tbuild is
*** 359,365 ****
     procedure Set_NUA (Attr : Name_Id; OK : out Boolean);
     procedure Set_NUP (Prag : Name_Id; OK : out Boolean);
     --  Subprograms for call to Get_Target_Parameters in Gnat1drv, see spec
!    --  of package Targparm for full description of these four subprograms.
     --  These have to be declared at the top level of a package (accessibility
     --  issues), and Gnat1drv is a procedure, so they can't go there.
  
--- 359,365 ----
     procedure Set_NUA (Attr : Name_Id; OK : out Boolean);
     procedure Set_NUP (Prag : Name_Id; OK : out Boolean);
     --  Subprograms for call to Get_Target_Parameters in Gnat1drv, see spec
!    --  of package Targparm for full description of these subprograms.
     --  These have to be declared at the top level of a package (accessibility
     --  issues), and Gnat1drv is a procedure, so they can't go there.
  
diff -Nrcpad gcc-17-20260524/gcc/ada/tempdir.adb gcc-17-20260531/gcc/ada/tempdir.adb
*** gcc-17-20260524/gcc/ada/tempdir.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/tempdir.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,141 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T E M P D I R                               --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2003-2026, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with GNAT.Directory_Operations; use GNAT.Directory_Operations;
- 
- with Opt;      use Opt;
- with Output;   use Output;
- 
- package body Tempdir is
- 
-    Tmpdir_Needs_To_Be_Displayed : Boolean := True;
- 
-    Tmpdir   : constant String := "TMPDIR";
-    Temp_Dir : String_Access   := new String'("");
- 
-    ----------------------
-    -- Create_Temp_File --
-    ----------------------
- 
-    procedure Create_Temp_File
-      (FD   : out File_Descriptor;
-       Name : out Path_Name_Type)
-    is
-       File_Name   : String_Access;
-       Current_Dir : constant String := Get_Current_Dir;
- 
-       function Directory return String;
-       --  Returns Temp_Dir.all if not empty, else return current directory
- 
-       ---------------
-       -- Directory --
-       ---------------
- 
-       function Directory return String is
-       begin
-          if Temp_Dir'Length /= 0 then
-             return Temp_Dir.all;
-          else
-             return Current_Dir;
-          end if;
-       end Directory;
- 
-    --  Start of processing for Create_Temp_File
- 
-    begin
-       if Temp_Dir'Length /= 0 then
- 
-          --  In verbose mode, display once the value of TMPDIR, so that
-          --  if temp files cannot be created, it is easier to understand
-          --  where temp files are supposed to be created.
- 
-          if Verbose_Mode and then Tmpdir_Needs_To_Be_Displayed then
-             Write_Str ("TMPDIR = """);
-             Write_Str (Temp_Dir.all);
-             Write_Line ("""");
-             Tmpdir_Needs_To_Be_Displayed := False;
-          end if;
- 
-          --  Change directory to TMPDIR before creating the temp file,
-          --  then change back immediately to the previous directory.
- 
-          Change_Dir (Temp_Dir.all);
-          Create_Temp_File (FD, File_Name);
-          Change_Dir (Current_Dir);
- 
-       else
-          Create_Temp_File (FD, File_Name);
-       end if;
- 
-       if FD = Invalid_FD then
-          Write_Line ("could not create temporary file in " & Directory);
-          Name := No_Path;
- 
-       else
-          declare
-             Path_Name : constant String :=
-                           Normalize_Pathname
-                             (Directory & Directory_Separator & File_Name.all);
-          begin
-             Name_Len := Path_Name'Length;
-             Name_Buffer (1 .. Name_Len) := Path_Name;
-             Name := Name_Find;
-             Free (File_Name);
-          end;
-       end if;
-    end Create_Temp_File;
- 
-    ------------------
-    -- Use_Temp_Dir --
-    ------------------
- 
-    procedure Use_Temp_Dir (Status : Boolean) is
-       Dir : String_Access;
- 
-    begin
-       if Status then
-          Dir := Getenv (Tmpdir);
-       end if;
- 
-       Free (Temp_Dir);
- 
-       if Dir /= null
-         and then Dir'Length > 0
-         and then Is_Absolute_Path (Dir.all)
-         and then Is_Directory (Dir.all)
-       then
-          Temp_Dir := new String'(Normalize_Pathname (Dir.all));
-       else
-          Temp_Dir := new String'("");
-       end if;
- 
-       Free (Dir);
-    end Use_Temp_Dir;
- 
- --  Start of elaboration for package Tempdir
- 
- begin
-    Use_Temp_Dir (Status => True);
- end Tempdir;
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/tempdir.ads gcc-17-20260531/gcc/ada/tempdir.ads
*** gcc-17-20260524/gcc/ada/tempdir.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/tempdir.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              T E M P D I R                               --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2003-2026, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This package is used by gnatmake and by the Project Manager to create
- --  temporary files.  If environment variable TMPDIR is defined and
- --  designates an absolute path, temporary files are create in this directory.
- --  Otherwise, temporary files are created in the current working directory.
- 
- with Namet; use Namet;
- 
- with GNAT.OS_Lib; use GNAT.OS_Lib;
- 
- package Tempdir is
- 
-    procedure Create_Temp_File
-      (FD   : out File_Descriptor;
-       Name : out Path_Name_Type);
-    --  Create a temporary text file and return its file descriptor and
-    --  its path name as a Name_Id. If environment variable TMPDIR is defined
-    --  and its value is an absolute path, the temp file is created in the
-    --  directory designated by TMPDIR, otherwise, it is created in the current
-    --  directory. If temporary file cannot be created, FD gets the value
-    --  Invalid_FD and Name gets the value No_Name.
- 
-    procedure Use_Temp_Dir (Status : Boolean);
-    --  Specify if the temp file should be created in the system temporary
-    --  directory as specified by the corresponding environment variables. If
-    --  Status is False, the temp files will be created into the current working
-    --  directory.
- 
- end Tempdir;
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/ada/terminals.c gcc-17-20260531/gcc/ada/terminals.c
*** gcc-17-20260524/gcc/ada/terminals.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/terminals.c	Sun May 31 22:32:05 2026
*************** __gnat_setup_winsize (void *desc ATTRIBU
*** 1158,1164 ****
  #define USE_CLONE_DEVICE "/dev/ptc"
  #elif defined (__hpux__)
  /* On HP-UX we use the streamed version. Using the non streamed version is not
!    recommanded (through "/dev/ptym/clone"). Indeed it seems that there are
     issues to detect process terminations. */
  #define USE_CLONE_DEVICE "/dev/ptmx"
  #endif
--- 1158,1164 ----
  #define USE_CLONE_DEVICE "/dev/ptc"
  #elif defined (__hpux__)
  /* On HP-UX we use the streamed version. Using the non streamed version is not
!    recommended (through "/dev/ptym/clone"). Indeed it seems that there are
     issues to detect process terminations. */
  #define USE_CLONE_DEVICE "/dev/ptmx"
  #endif
*************** __gnat_new_tty (void)
*** 1645,1651 ****
  /* __gnat_close_tty - close a terminal
   *
   * PARAMETERS
!  *   desc  a pty_desc strucure
   */
  void __gnat_close_tty (pty_desc* desc)
  {
--- 1645,1651 ----
  /* __gnat_close_tty - close a terminal
   *
   * PARAMETERS
!  *   desc  a pty_desc structure
   */
  void __gnat_close_tty (pty_desc* desc)
  {
*************** void __gnat_close_tty (pty_desc* desc)
*** 1656,1662 ****
  /* __gnat_tty_name - return slave side device name
   *
   * PARAMETERS
!  *   desc  a pty_desc strucure
   * RETURN VALUE
   *   a string
   */
--- 1656,1662 ----
  /* __gnat_tty_name - return slave side device name
   *
   * PARAMETERS
!  *   desc  a pty_desc structure
   * RETURN VALUE
   *   a string
   */
*************** __gnat_tty_name (pty_desc* desc)
*** 1669,1675 ****
  /* __gnat_tty_name - return master side fd
   *
   * PARAMETERS
!  *   desc  a pty_desc strucure
   * RETURN VALUE
   *   a fd
   */
--- 1669,1675 ----
  /* __gnat_tty_name - return master side fd
   *
   * PARAMETERS
!  *   desc  a pty_desc structure
   * RETURN VALUE
   *   a fd
   */
diff -Nrcpad gcc-17-20260524/gcc/ada/tracebak.c gcc-17-20260531/gcc/ada/tracebak.c
*** gcc-17-20260524/gcc/ada/tracebak.c	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/tracebak.c	Sun May 31 22:32:05 2026
*************** struct layout
*** 341,347 ****
  #define FRAME_OFFSET(FP) 0
  #define PC_ADJUST -4
  
! /* Eventhough the base PPC ABI states that a toplevel frame entry
     should to feature a null backchain, AIX might expose a null return
     address instead.  */
  
--- 341,347 ----
  #define FRAME_OFFSET(FP) 0
  #define PC_ADJUST -4
  
! /* Even though the base PPC ABI states that a toplevel frame entry
     should to feature a null backchain, AIX might expose a null return
     address instead.  */
  
diff -Nrcpad gcc-17-20260524/gcc/ada/treepr.adb gcc-17-20260531/gcc/ada/treepr.adb
*** gcc-17-20260524/gcc/ada/treepr.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/treepr.adb	Sun May 31 22:32:05 2026
*************** package body Treepr is
*** 445,450 ****
--- 445,478 ----
        Pop_Output;
     end rpec;
  
+    ----------
+    -- pech --
+    ----------
+ 
+    procedure pech (From : Entity_Id) is
+    begin
+       Push_Output;
+       Set_Standard_Output;
+ 
+       Print_Entity_Chain (From, Rev => False, Only_Header => True);
+ 
+       Pop_Output;
+    end pech;
+ 
+    ----------
+    -- rpech --
+    ----------
+ 
+    procedure rpech (From : Entity_Id) is
+    begin
+       Push_Output;
+       Set_Standard_Output;
+ 
+       Print_Entity_Chain (From, Rev => True, Only_Header => True);
+ 
+       Pop_Output;
+    end rpech;
+ 
     --------
     -- pl --
     --------
*************** package body Treepr is
*** 634,640 ****
     -- Print_Entity_Chain --
     ------------------------
  
!    procedure Print_Entity_Chain (From : Entity_Id; Rev : Boolean := False) is
        Ent : Entity_Id := From;
     begin
        Printing_Descendants := False;
--- 662,672 ----
     -- Print_Entity_Chain --
     ------------------------
  
!    procedure Print_Entity_Chain (
!      From : Entity_Id;
!      Rev : Boolean := False;
!      Only_Header : Boolean := False)
!    is
        Ent : Entity_Id := From;
     begin
        Printing_Descendants := False;
*************** package body Treepr is
*** 648,661 ****
              Prefix_Char : constant Character :=
                (if Present (Next_Ent) then '|' else ' ');
           begin
!             Print_Node (Ent, "", Prefix_Char);
  
              exit when No (Next_Ent);
  
              Ent := Next_Ent;
  
!             Print_Char ('|');
!             Print_Eol;
           end;
        end loop;
     end Print_Entity_Chain;
--- 680,714 ----
              Prefix_Char : constant Character :=
                (if Present (Next_Ent) then '|' else ' ');
           begin
!             if Only_Header then
!                Print_Str ("- ");
!                Print_Node_Header (Node_Id (Ent));
!             else
!                Print_Node (Ent, "", Prefix_Char);
!             end if;
! 
!             if Present (Next_Ent) then
!                if not Rev
!                  and then Prev_Entity (Next_Ent) /= Ent
!                then
!                   Print_Str (" !! - Prev (Next (^^^^)) = ");
!                   Print_Node_Header (Prev_Entity (Next_Ent));
!                elsif Rev
!                  and then Next_Entity (Next_Ent) /= Ent
!                then
!                   Print_Str (" !! - Next (Prev (^^^^)) = ");
!                   Print_Node_Header (Next_Entity (Next_Ent));
!                end if;
!             end if;
  
              exit when No (Next_Ent);
  
              Ent := Next_Ent;
  
!             if not Only_Header then
!                Print_Char ('|');
!                Print_Eol;
!             end if;
           end;
        end loop;
     end Print_Entity_Chain;
diff -Nrcpad gcc-17-20260524/gcc/ada/treepr.ads gcc-17-20260531/gcc/ada/treepr.ads
*** gcc-17-20260524/gcc/ada/treepr.ads	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/treepr.ads	Sun May 31 22:32:05 2026
*************** package Treepr is
*** 60,70 ****
     --  Prints the subtree consisting of the given element list and all its
     --  referenced descendants.
  
!    procedure Print_Entity_Chain (From : Entity_Id; Rev : Boolean := False);
!    --  Prints the entity chain From is on, starting from From. In other words,
!    --  prints From and then recursively follow the Next_Entity field. If Rev is
!    --  True, prints the chain backwards, i.e. follow the Last_Entity field
!    --  instead of Next_Entity.
  
     --  The following debugging procedures are intended to be called from gdb.
     --  Note that in several cases there are synonyms which represent historical
--- 60,78 ----
     --  Prints the subtree consisting of the given element list and all its
     --  referenced descendants.
  
!    procedure Print_Entity_Chain (
!      From : Entity_Id;
!      Rev : Boolean := False;
!      Only_Header : Boolean := False);
!    --  Prints the entity chain from From. In other words, prints From and then
!    --  recursively follow the Next_Entity field. If Rev is True, prints the
!    --  chain backwards, i.e. follow the Prev_Entity field instead of
!    --  Next_Entity. It also prints an extra line in case the
!    --  Next_Entity/Prev_Entity links are inconsistent. i.e.
!    --     Prev_Entity (Next_Entity (E)) /= E.
!    --
!    --  If Only_Header is True, only prints one line for each node instead of
!    --  printing the node and all its fields.
  
     --  The following debugging procedures are intended to be called from gdb.
     --  Note that in several cases there are synonyms which represent historical
*************** package Treepr is
*** 113,120 ****
--- 121,139 ----
     pragma Export (Ada, pec);
     --  Print From and the entities that follow it on its entity chain
  
+    procedure pech (From : Entity_Id);
+    pragma Export (Ada, pech);
+    --  Print node header for From and the entities that follow it on its entity
+    --  chain.
+ 
     procedure rpec (From : Entity_Id);
     pragma Export (Ada, rpec);
     --  Like pec, but walk the entity chain backwards. The 'r' stands for
     --  "reverse".
+ 
+    procedure rpech (From : Entity_Id);
+    pragma Export (Ada, rpech);
+    --  Like pech, but walk the entity chain backwards. The 'r' stands for
+    --  "reverse".
+ 
  end Treepr;
diff -Nrcpad gcc-17-20260524/gcc/ada/vast.adb gcc-17-20260531/gcc/ada/vast.adb
*** gcc-17-20260524/gcc/ada/vast.adb	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ada/vast.adb	Sun May 31 22:32:05 2026
*************** with Output;
*** 48,53 ****
--- 48,54 ----
  with Sem_Aux;
  with Sem_Util;
  with Sinfo.Nodes;    use Sinfo.Nodes;
+ with Sinfo.Utils;    use Sinfo.Utils;
  with Sinput;
  with Table;
  with Types;          use Types;
*************** package body VAST is
*** 67,81 ****
  
     type Check_Enum is
       (Check_Other,
        Check_Sloc,
        Check_Analyzed,
        Check_Error_Nodes,
        Check_FE_Only,
        Check_Sharing,
        Check_Parent_Present,
        Check_Parent_Correct,
        Check_Scope_Present,
!       Check_Scope_Correct);
  
     type Check_Status is
       --  Action in case of check failure:
--- 68,105 ----
  
     type Check_Enum is
       (Check_Other,
+       --  Checks other than listed below. These should all pass.
        Check_Sloc,
+       --  Check that nodes have a Sloc.
        Check_Analyzed,
+       --  Check that the Analyzed flag is True for all nodes.
        Check_Error_Nodes,
+       --  Check that there are no Error nodes in the tree.
+       Check_Entity_Chain,
+       --  Check that the entity chain is consistent when traversed in both
+       --  directions (Next_Entity and Prev_Entity).
        Check_FE_Only,
+       --  Check that front-end-only nodes (i.e. nodes that should not be passed
+       --  to the back end) are not present.
        Check_Sharing,
+       --  Check that the tree is treeish; a node cannot be a subtree of two or
+       --  more parents. This one is hopeless.
        Check_Parent_Present,
+       --  Check that each node has a non-Empty Parent field.
        Check_Parent_Correct,
+       --  Check that the Parent points to the right node (the one we came from
+       --  in the tree walk). Note that Parents cannot be correct if there is
+       --  sharing; Parent can't point to more than one node.
        Check_Scope_Present,
!       --  Check that each Entity has a non-Empty Scope field.
!       Check_Scope_Correct,
!       --  Check that each Entity has a correct Scope field.
!       Check_Corresponding_Aspect);
!       --  Check that the Corresponding_Aspect and related fields are correct.
!       --  Currently, only pragmas have Corresponding_Aspect, but we should
!       --  probably add it to attribute definition clauses. Then we could
!       --  get rid of From_Aspect_Specification, which should always equal
!       --  Present(Corresponding_Aspect(...)).
  
     type Check_Status is
       --  Action in case of check failure:
*************** package body VAST is
*** 90,101 ****
        Check_Sloc => Disabled,
        Check_Analyzed => Disabled,
        Check_Error_Nodes => Enabled,
        Check_FE_Only => Disabled,
        Check_Sharing => Disabled,
        Check_Parent_Present => Enabled,
        Check_Parent_Correct => Disabled,
        Check_Scope_Present => Print_And_Continue,
!       Check_Scope_Correct => Print_And_Continue);
  --      others => Print_And_Continue);
  --      others => Enabled);
  --      others => Disabled);
--- 114,127 ----
        Check_Sloc => Disabled,
        Check_Analyzed => Disabled,
        Check_Error_Nodes => Enabled,
+       Check_Entity_Chain => Print_And_Continue,
        Check_FE_Only => Disabled,
        Check_Sharing => Disabled,
        Check_Parent_Present => Enabled,
        Check_Parent_Correct => Disabled,
        Check_Scope_Present => Print_And_Continue,
!       Check_Scope_Correct => Print_And_Continue,
!       Check_Corresponding_Aspect => Print_And_Continue);
  --      others => Print_And_Continue);
  --      others => Enabled);
  --      others => Disabled);
*************** package body VAST is
*** 124,129 ****
--- 150,157 ----
  
     type Pass_Number is range 1 .. 2;
     Pass : Pass_Number;
+    --  We walk the tree twice (with Pass = 1, then Pass = 2), so that we can
+    --  compute information in Pass 1, and then check it in Pass 2.
  
     procedure VAST;
     --  Called by VAST_If_Enabled to do all the checking
*************** package body VAST is
*** 248,253 ****
--- 276,286 ----
     --  This is typically "Chars (N)" or "Chars (Defining_Identifier (N))" or
     --  similar.
  
+    procedure Check_Entity_Chain (E : Entity_Id);
+    --  Checks for all elements Elt of the entity chain starting from E that if
+    --  there is a next element for Elt in the chain, its Prev_Entity points at
+    --  Elt.
+ 
     procedure Check_Scope (N : Node_Id);
     --  Check that the Scope of N makes sense
  
*************** package body VAST is
*** 498,503 ****
--- 531,551 ----
        end if;
     end Assert;
  
+    ------------------------
+    -- Check_Entity_Chain --
+    ------------------------
+    procedure Check_Entity_Chain (E : Entity_Id) is
+       Entity_It : Entity_Id := E;
+    begin
+       while Present (Entity_It) loop
+          if Present (Next_Entity (Entity_It)) then
+             Assert (Prev_Entity (Next_Entity (Entity_It))
+                     = Entity_It, Check_Entity_Chain);
+          end if;
+          Next_Entity (Entity_It);
+       end loop;
+    end Check_Entity_Chain;
+ 
     -----------------
     -- Check_Scope --
     -----------------
*************** package body VAST is
*** 506,511 ****
--- 554,561 ----
        use Exp_Tss, Sem_Util;
     begin
        if Present (Scope (N)) then
+          Check_Entity_Chain (First_Entity (Scope (N)));
+ 
           if False then -- ????
              Assert (Enclosing_Declaration (Scope (N)) =
                      Enclosing_Declaration (Enclosing_Declaration (N)),
*************** package body VAST is
*** 605,610 ****
--- 655,691 ----
                 Assert (Parent (N) = Ancestor_Node (1), Check_Parent_Correct);
              end if;
        end case;
+ 
+       --  Check that From_Aspect_Specification, Corresponding_Aspect, and
+       --  Aspect_Rep_Item are consistent with one another.
+ 
+       if Nkind (N) in N_Aspect_Specification then
+          if Present (Aspect_Rep_Item (N)) then
+             Assert (Nkind (Aspect_Rep_Item (N)) = N_Pragma,
+                     Check_Corresponding_Aspect);
+ 
+             --  If the above check fails, the test below may raise predicate
+             --  failures, no need to check for pragma/aspect consistency for
+             --  other nodes.
+             if Nkind (Aspect_Rep_Item (N)) = N_Pragma then
+                Assert (From_Aspect_Specification (Aspect_Rep_Item (N)),
+                        Check_Corresponding_Aspect);
+                Assert (Corresponding_Aspect (Aspect_Rep_Item (N)) = N,
+                        Check_Corresponding_Aspect);
+             end if;
+          end if;
+       end if;
+ 
+       if Nkind (N) = N_Pragma then
+          Assert
+            (From_Aspect_Specification (N) = Present (Corresponding_Aspect (N)),
+             Check_Corresponding_Aspect);
+          if From_Aspect_Specification (N) then
+             Assert
+               (Aspect_Rep_Item (Corresponding_Aspect (N)) = N,
+                Check_Corresponding_Aspect);
+          end if;
+       end if;
     end Do_Node_Pass_2;
  
     -------------
*************** package body VAST is
*** 655,662 ****
        --  subtrees get placed inside the pragmas without removing
        --  them from the original aspect specifications.
  
!       if Pass = 2 and then Nodes_Info (N).Count > 1 and then
!         not Nodes_Info (N).In_Aspect -- ????cuts failures by 1.9
        then
           declare
              Count : constant String :=
--- 736,744 ----
        --  subtrees get placed inside the pragmas without removing
        --  them from the original aspect specifications.
  
!       if Pass = 2 and then Nodes_Info (N).Count > 1
!         and then not Nodes_Info (N).In_Aspect
!       --  Ignoring In_Aspect cases cuts failures by a factor of 1.9
        then
           declare
              Count : constant String :=
diff -Nrcpad gcc-17-20260524/gcc/ada/xsintnam.sed gcc-17-20260531/gcc/ada/xsintnam.sed
*** gcc-17-20260524/gcc/ada/xsintnam.sed	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/ada/xsintnam.sed	Sun May 31 22:32:05 2026
***************
*** 0 ****
--- 1,32 ----
+ #Indicate that the output was generated.
+ /package Ada.Interrupts.Names/i\
+ --  Generated from Ada.Interrupts.Names for use by pragma Interrupt_State
+ 
+ #Disable style checks.
+ /package Ada.Interrupts.Names/i\
+ pragma Style_Checks ("N");
+ 
+ #Turn constants into named numbers.
+ s/constant Interrupt_ID/constant/g
+ 
+ #Rename the package and add the Preelaborate aspect.
+ s/package Ada.Interrupts.Names/package System.Interrupt_Names with Preelaborate/g
+ s/end Ada.Interrupts.Names/end System.Interrupt_Names/g
+ 
+ #Update the copyright header.
+ /A D A . I N T E R R U P T S . N A M E S/c\
+ --                S Y S T E M . I N T E R R U P T S _ N A M E S             --
+ 
+ #The VxWorks and RTEMS versions of Ada.Interrupts.Names define a Hardware_Interrupts
+ #subtype that references Interrupt_ID. Filter the subtype definition.
+ /   subtype Hardware_Interrupts is Interrupt_ID/d
+ /     range Interrupt_ID'First .. System.OS_Interface.Max_HW_Interrupt;/d
+ /   --  Range of values that can be used for hardware interrupts/d
+ 
+ #The VxWorks and RTEMS versions of Ada.Interrupts.Names also don't define any
+ #interrupt constants, so just removing the subtype declaration we get an "unused
+ #with clause" warning. Silence it.
+ /with System.OS_Interface;/i\
+ pragma Warnings (Off);
+ /with System.OS_Interface;/a\
+ pragma Warnings (On);
diff -Nrcpad gcc-17-20260524/gcc/adjust-alignment.cc gcc-17-20260531/gcc/adjust-alignment.cc
*** gcc-17-20260524/gcc/adjust-alignment.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/adjust-alignment.cc	Sun May 31 22:32:05 2026
*************** pass_adjust_alignment::execute (function
*** 64,70 ****
  
    FOR_EACH_LOCAL_DECL (fun, i, var)
      {
!       /* Don't adjust aligment for static local var and hard register var.  */
        if (is_global_var (var) || DECL_HARD_REGISTER (var))
  	continue;
  
--- 64,70 ----
  
    FOR_EACH_LOCAL_DECL (fun, i, var)
      {
!       /* Don't adjust alignment for static local var and hard register var.  */
        if (is_global_var (var) || DECL_HARD_REGISTER (var))
  	continue;
  
diff -Nrcpad gcc-17-20260524/gcc/algol68/ChangeLog gcc-17-20260531/gcc/algol68/ChangeLog
*** gcc-17-20260524/gcc/algol68/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,50 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* a68-imports-archive.cc (struct Archive_fl_header): Fix typos.
+ 	* a68-imports.cc (encoded_mode_free): Likewise.
+ 	* a68-low-chars.cc (a68_char_repr): Likewise.
+ 	* a68-low-clauses.cc (a68_lower_label): Likewise.
+ 	(a68_lower_labeled_unit): Likewise.
+ 	(a68_lower_completer): Likewise.
+ 	(a68_lower_initialiser_series): Likewise.
+ 	(a68_lower_case_clause): Likewise.
+ 	* a68-low-decls.cc (a68_lower_variable_declaration): Likewise.
+ 	(a68_lower_procedure_variable_declaration): Likewise.
+ 	* a68-low-ints.cc (a68_get_int_skip_tree): Likewise.
+ 	(a68_int_maxval): Likewise.
+ 	* a68-low-moids.cc (lower_struct_mode): Likewise.
+ 	* a68-low-multiples.cc (a68_multiple_single_bound_check): Likewise.
+ 	* a68-low-prelude.cc (a68_lower_divab3): Likewise.
+ 	(a68_lower_upb3): Likewise.
+ 	(a68_lower_lwb3): Likewise.
+ 	* a68-low-procs.cc (a68_get_proc_skip_tree): Likewise.
+ 	* a68-low-reals.cc (a68_real_maxval): Likewise.
+ 	(a68_real_minval): Likewise.
+ 	* a68-low-units.cc (a68_lower_identifier): Likewise.
+ 	* a68-low.cc (a68_low_assignation): Likewise.
+ 	* a68-moids-misc.cc (a68_is_firm): Likewise.
+ 	(a68_is_coercible_series): Likewise.
+ 	* a68-parser-bottom-up.cc (strange_separator): Likewise.
+ 	(a68_bottom_up_parser): Likewise.
+ 	* a68-parser-prelude.cc (stand_prelude): Likewise.
+ 	* a68-parser-scanner.cc (a68_lexical_analyser): Likewise.
+ 	* a68-parser-scope.cc (a68_scope_checker): Likewise.
+ 	* a68-parser-serial-dsa.cc (serial_dsa_check_serial_clause): Likewise.
+ 	* a68-parser-taxes.cc (test_firmly_related_ops_local): Likewise.
+ 	* a68-parser.cc: Likewise.
+ 	* a68-types.h (struct KEYWORD_T): Likewise.
+ 	(struct OPTIONS_T): Likewise.
+ 	(struct NODE_T): Likewise.
+ 	(struct MODE_CACHE_T): Likewise.
+ 	* ga68-coding-guidelines.texi: Likewise.
+ 	* ga68.texi: Likewise.
+ 
+ 2026-05-24  Peter Damianov  <peter0x44@disroot.org>
+ 
+ 	* a68-lang.cc (a68_handle_option): Open file in binary mode.
+ 	* a68-parser-scanner.cc (read_source_file): Open file in binary mode.
+ 	(include_files): Likewise.
+ 
  2026-05-20  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* a68-parser-prelude.cc (gnu_prelude): Map FLOOR(L real):L int
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-imports-archive.cc gcc-17-20260531/gcc/algol68/a68-imports-archive.cc
*** gcc-17-20260524/gcc/algol68/a68-imports-archive.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-imports-archive.cc	Sun May 31 22:32:05 2026
*************** struct Archive_fl_header
*** 74,80 ****
  };
  
  // The header of an entry in an archive.  This is all readable text,
! // padded with spaces where necesary.
  
  struct Archive_header
  {
--- 74,80 ----
  };
  
  // The header of an entry in an archive.  This is all readable text,
! // padded with spaces where necessary.
  
  struct Archive_header
  {
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-imports.cc gcc-17-20260531/gcc/algol68/a68-imports.cc
*** gcc-17-20260524/gcc/algol68/a68-imports.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-imports.cc	Sun May 31 22:32:05 2026
***************
*** 79,85 ****
      } while (0)
  
  /* Parse module map information in MAP and add entries to A68_MODULE_FILES
!    accordingly.  Existing entries in the map are overriden without warning.
  
     If MAP is not a valid module map specification then this function returns
     `false' and sets *ERRMSG to some explanatory message.  Otherwise it returns
--- 79,85 ----
      } while (0)
  
  /* Parse module map information in MAP and add entries to A68_MODULE_FILES
!    accordingly.  Existing entries in the map are overridden without warning.
  
     If MAP is not a valid module map specification then this function returns
     `false' and sets *ERRMSG to some explanatory message.  Otherwise it returns
*************** encoded_mode_free (struct encoded_mode *
*** 664,670 ****
        break;
      case GA68_MODE_STRUCT:
        /* Note that the field names are installed in moids in
! 	 encoded_mode_to_moid, so we shoud not free them.  */
        free (em->data.sct.fields);
        break;
      case GA68_MODE_UNION:
--- 664,670 ----
        break;
      case GA68_MODE_STRUCT:
        /* Note that the field names are installed in moids in
! 	 encoded_mode_to_moid, so we should not free them.  */
        free (em->data.sct.fields);
        break;
      case GA68_MODE_UNION:
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-chars.cc gcc-17-20260531/gcc/algol68/a68-low-chars.cc
*** gcc-17-20260524/gcc/algol68/a68-low-chars.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-chars.cc	Sun May 31 22:32:05 2026
*************** a68_char_repr (NODE_T *p, tree val)
*** 107,113 ****
  		      fold_convert (a68_char_type, c));
  }
  
! /* the ABS of a CHAR is an INT containing an unique value for each permissable
     char value.  */
  
  tree
--- 107,113 ----
  		      fold_convert (a68_char_type, c));
  }
  
! /* the ABS of a CHAR is an INT containing an unique value for each permissible
     char value.  */
  
  tree
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-clauses.cc gcc-17-20260531/gcc/algol68/a68-low-clauses.cc
*** gcc-17-20260524/gcc/algol68/a68-low-clauses.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-clauses.cc	Sun May 31 22:32:05 2026
*************** a68_lower_label (NODE_T *p, LOW_CTX_T ct
*** 107,113 ****
  
    a68_add_decl (label_decl);
  
!   /* Return the accummulated LABEL_EXPRs.  */
    tree label_expr = build1 (LABEL_EXPR, void_type_node, label_decl);
    if (expr)
      return fold_build2_loc (a68_get_node_location (p),
--- 107,113 ----
  
    a68_add_decl (label_decl);
  
!   /* Return the accumulated LABEL_EXPRs.  */
    tree label_expr = build1 (LABEL_EXPR, void_type_node, label_decl);
    if (expr)
      return fold_build2_loc (a68_get_node_location (p),
*************** a68_lower_labeled_unit (NODE_T *p, LOW_C
*** 147,153 ****
     that a completer can only appear inside a serial clause.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to travese on these nodes explicitly and ignore the returned
     value.  */
  
  tree
--- 147,153 ----
     that a completer can only appear inside a serial clause.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to traverse on these nodes explicitly and ignore the returned
     value.  */
  
  tree
*************** a68_lower_completer (NODE_T *p ATTRIBUTE
*** 173,179 ****
     BLOCK.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to travese on these nodes explicitly and ignore the returned
     value.  */
  
  tree
--- 173,179 ----
     BLOCK.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to traverse on these nodes explicitly and ignore the returned
     value.  */
  
  tree
*************** a68_lower_initialiser_series (NODE_T *p,
*** 205,211 ****
     See the function body to see the lowering actions.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to travese on these nodes explicitly and ignore the returned
     value.  */
  
  tree
--- 205,211 ----
     See the function body to see the lowering actions.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to traverse on these nodes explicitly and ignore the returned
     value.  */
  
  tree
*************** a68_lower_case_clause (NODE_T *p ATTRIBU
*** 858,864 ****
     clause.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to travese on these nodes explicitly and ignore the returned
     value.  */
  
  tree
--- 858,864 ----
     clause.
  
     This function always returns NULL_TREE, so the traversing code shall always
!    be careful to traverse on these nodes explicitly and ignore the returned
     value.  */
  
  tree
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-decls.cc gcc-17-20260531/gcc/algol68/a68-low-decls.cc
*** gcc-17-20260524/gcc/algol68/a68-low-decls.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-decls.cc	Sun May 31 22:32:05 2026
*************** a68_lower_variable_declaration (NODE_T *
*** 164,170 ****
  	{
  	  /* The qualifier determines what kind of generator is used in the
  	     variable declaration.  This is already annotated in the tax entry
! 	     for the definining identifier.  */
  	  declarer = NEXT (q);
  	  defining_identifier = NEXT (NEXT (q));
  	}
--- 164,170 ----
  	{
  	  /* The qualifier determines what kind of generator is used in the
  	     variable declaration.  This is already annotated in the tax entry
! 	     for the defining identifier.  */
  	  declarer = NEXT (q);
  	  defining_identifier = NEXT (NEXT (q));
  	}
*************** a68_lower_procedure_variable_declaration
*** 576,582 ****
        else if (IS (q, QUALIFIER))
  	/* The qualifier determines what kind of generator is used in the
  	   variable declaration.  This is already annotated in the tax entry
! 	   for the definining identifier.  */
  	defining_identifier = NEXT (NEXT (q));
        else
  	gcc_unreachable ();
--- 576,582 ----
        else if (IS (q, QUALIFIER))
  	/* The qualifier determines what kind of generator is used in the
  	   variable declaration.  This is already annotated in the tax entry
! 	   for the defining identifier.  */
  	defining_identifier = NEXT (NEXT (q));
        else
  	gcc_unreachable ();
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-ints.cc gcc-17-20260531/gcc/algol68/a68-low-ints.cc
*** gcc-17-20260524/gcc/algol68/a68-low-ints.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-ints.cc	Sun May 31 22:32:05 2026
*************** a68_get_int_skip_tree (MOID_T *m)
*** 65,71 ****
    return build_int_cst (type, 0);
  }
  
! /* Given an integral type, build the maximum value expressable in that
     type.  */
  
  tree
--- 65,71 ----
    return build_int_cst (type, 0);
  }
  
! /* Given an integral type, build the maximum value expressible in that
     type.  */
  
  tree
*************** a68_int_maxval (tree type)
*** 74,80 ****
    return fold_convert (type, TYPE_MAX_VALUE (type));
  }
  
! /* Given an integral type, build the minimum value expressable in that
     type.  */
  
  tree
--- 74,80 ----
    return fold_convert (type, TYPE_MAX_VALUE (type));
  }
  
! /* Given an integral type, build the minimum value expressible in that
     type.  */
  
  tree
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-moids.cc gcc-17-20260531/gcc/algol68/a68-low-moids.cc
*** gcc-17-20260524/gcc/algol68/a68-low-moids.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-moids.cc	Sun May 31 22:32:05 2026
*************** lower_struct_mode (MOID_T *m)
*** 275,281 ****
    TYPE_FIELDS (struct_type) = NULL_TREE;
    TYPE_CXX_ODR_P (struct_type) = 0;
    CTYPE (m) = struct_type;
!   TYPE_LANG_SPECIFIC (struct_type) = a68_build_lang_type (m); /* XXX this will get overrided. */
  
    /* Add field declarations.  */
    chain_struct_fields (PACK (m), struct_type);
--- 275,281 ----
    TYPE_FIELDS (struct_type) = NULL_TREE;
    TYPE_CXX_ODR_P (struct_type) = 0;
    CTYPE (m) = struct_type;
!   TYPE_LANG_SPECIFIC (struct_type) = a68_build_lang_type (m); /* XXX this will get overridden. */
  
    /* Add field declarations.  */
    chain_struct_fields (PACK (m), struct_type);
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-multiples.cc gcc-17-20260531/gcc/algol68/a68-low-multiples.cc
*** gcc-17-20260524/gcc/algol68/a68-low-multiples.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-multiples.cc	Sun May 31 22:32:05 2026
***************
*** 64,70 ****
     There is a triplet per dimension in the multiple.  The number of dimensions
     in a row mode is static and is determined at compile-time.
  
!    The infomation stored for each triplet is:
  
       lb%     is the lower bound of the dimension.
       ub%     is the upper bound of the dimension.
--- 64,70 ----
     There is a triplet per dimension in the multiple.  The number of dimensions
     in a row mode is static and is determined at compile-time.
  
!    The information stored for each triplet is:
  
       lb%     is the lower bound of the dimension.
       ub%     is the upper bound of the dimension.
*************** a68_multiple_single_bound_check (NODE_T
*** 882,888 ****
  
  /* Return a tree that checks whether the given DIM is a valid dimension/rank of
     a boundable object with dimension BOUNDABLE_DIM.  If the provided DIM is not
!    a valid dimention then a call to the run-time function ARRAYDIM is
     performed.
  
     BOUNDABLE_DIM and DIM must be of type sizetype.  They are both one-based.
--- 882,888 ----
  
  /* Return a tree that checks whether the given DIM is a valid dimension/rank of
     a boundable object with dimension BOUNDABLE_DIM.  If the provided DIM is not
!    a valid dimension then a call to the run-time function ARRAYDIM is
     performed.
  
     BOUNDABLE_DIM and DIM must be of type sizetype.  They are both one-based.
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-prelude.cc gcc-17-20260531/gcc/algol68/a68-low-prelude.cc
*** gcc-17-20260524/gcc/algol68/a68-low-prelude.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-prelude.cc	Sun May 31 22:32:05 2026
*************** a68_lower_divab3 (NODE_T *p, LOW_CTX_T c
*** 580,586 ****
  /* UPB comes in two flavors.
  
     The unary operator returns the upper bound of the first dimension of the
!    operand multple.
  
     The binary operator returns the upper bound of the given dimension of the
     operand multiple.  The dimension is one-based.  If the specified dimension
--- 580,586 ----
  /* UPB comes in two flavors.
  
     The unary operator returns the upper bound of the first dimension of the
!    operand multiple.
  
     The binary operator returns the upper bound of the given dimension of the
     operand multiple.  The dimension is one-based.  If the specified dimension
*************** a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx
*** 630,636 ****
  /* LWB comes in two flavors.
  
     The unary operator returns the lower bound of the first dimension of the
!    operand multple.
  
     The binary operator returns the lower bound of the given dimension of the
     operand multiple.  The dimension is one-based.  If the specified dimension
--- 630,636 ----
  /* LWB comes in two flavors.
  
     The unary operator returns the lower bound of the first dimension of the
!    operand multiple.
  
     The binary operator returns the lower bound of the given dimension of the
     operand multiple.  The dimension is one-based.  If the specified dimension
*************** a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx
*** 681,687 ****
  /* ELEMS comes in two flavors.
  
     The unary operator returns the number of elements in the first dimension of
!    the operand multple.
  
     DIM must be a size.
  
--- 681,687 ----
  /* ELEMS comes in two flavors.
  
     The unary operator returns the number of elements in the first dimension of
!    the operand multiple.
  
     DIM must be a size.
  
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-procs.cc gcc-17-20260531/gcc/algol68/a68-low-procs.cc
*** gcc-17-20260524/gcc/algol68/a68-low-procs.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-procs.cc	Sun May 31 22:32:05 2026
***************
*** 47,52 ****
  tree
  a68_get_proc_skip_tree (MOID_T *m)
  {
!   /* A SKIP for a procecure mode lowers to a NULL pointer to a function.  */
    return build_int_cst (CTYPE (m), 0);
  }
--- 47,52 ----
  tree
  a68_get_proc_skip_tree (MOID_T *m)
  {
!   /* A SKIP for a procedure mode lowers to a NULL pointer to a function.  */
    return build_int_cst (CTYPE (m), 0);
  }
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-reals.cc gcc-17-20260531/gcc/algol68/a68-low-reals.cc
*** gcc-17-20260524/gcc/algol68/a68-low-reals.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-reals.cc	Sun May 31 22:32:05 2026
*************** a68_real_maxval (tree type)
*** 97,103 ****
    return build_real (type, max);
  }
  
! /* Given a real type, build the minimum value expressable with that type.  */
  
  tree
  a68_real_minval (tree type)
--- 97,103 ----
    return build_real (type, max);
  }
  
! /* Given a real type, build the minimum value expressible with that type.  */
  
  tree
  a68_real_minval (tree type)
*************** a68_real_minval (tree type)
*** 108,114 ****
  }
  
  /* Given a real type, build the smallest value which can be meaningfully added
!    to or substracted from 1.  */
  
  tree
  a68_real_smallval (tree type)
--- 108,114 ----
  }
  
  /* Given a real type, build the smallest value which can be meaningfully added
!    to or subtracted from 1.  */
  
  tree
  a68_real_smallval (tree type)
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low-units.cc gcc-17-20260531/gcc/algol68/a68-low-units.cc
*** gcc-17-20260524/gcc/algol68/a68-low-units.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low-units.cc	Sun May 31 22:32:05 2026
*************** a68_lower_identifier (NODE_T *p, LOW_CTX
*** 148,154 ****
  	}
  
        /* If the identifier refers to a FUNCTION_DECL, this means the
! 	 declaration was made by a procecure-identity-dclaration or a
  	 proc-identity-declaration of a formal hole.  The applied identifier in
  	 that case refers to the address of the corresponding function.  */
        if (TREE_CODE (id_decl) == FUNCTION_DECL)
--- 148,154 ----
  	}
  
        /* If the identifier refers to a FUNCTION_DECL, this means the
! 	 declaration was made by a procedure-identity-dclaration or a
  	 proc-identity-declaration of a formal hole.  The applied identifier in
  	 that case refers to the address of the corresponding function.  */
        if (TREE_CODE (id_decl) == FUNCTION_DECL)
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-low.cc gcc-17-20260531/gcc/algol68/a68-low.cc
*** gcc-17-20260524/gcc/algol68/a68-low.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-low.cc	Sun May 31 22:32:05 2026
*************** a68_low_assignation (NODE_T *p,
*** 1005,1011 ****
      {
        /* Make a deep copy of the rhs.  Note that we have to use the heap
  	 because the scope of the lhs may be older than the scope of the rhs.
! 	 XXX this can be ommitted if a68_multiple_copy_elems below supports
  	 overlapping multiples.  */
        if (HAS_ROWS (mode_rhs))
  	rhs = a68_low_dup (rhs, true /* use_heap */);
--- 1005,1011 ----
      {
        /* Make a deep copy of the rhs.  Note that we have to use the heap
  	 because the scope of the lhs may be older than the scope of the rhs.
! 	 XXX this can be omitted if a68_multiple_copy_elems below supports
  	 overlapping multiples.  */
        if (HAS_ROWS (mode_rhs))
  	rhs = a68_low_dup (rhs, true /* use_heap */);
*************** a68_low_assignation (NODE_T *p,
*** 1016,1022 ****
  	{
  	  /* Assigning to a flexible name updates descriptor with new bounds
  	     and also sets the elements to the dup of the rhs.  No boundscheck
! 	     is peformed.  XXX but bound checking in contained values may be
  	     necessary, ghost elements.  */
  	  if (POINTER_TYPE_P (TREE_TYPE (lhs))
  	      && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs))
--- 1016,1022 ----
  	{
  	  /* Assigning to a flexible name updates descriptor with new bounds
  	     and also sets the elements to the dup of the rhs.  No boundscheck
! 	     is performed.  XXX but bound checking in contained values may be
  	     necessary, ghost elements.  */
  	  if (POINTER_TYPE_P (TREE_TYPE (lhs))
  	      && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs))
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-moids-misc.cc gcc-17-20260531/gcc/algol68/a68-moids-misc.cc
*** gcc-17-20260524/gcc/algol68/a68-moids-misc.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-moids-misc.cc	Sun May 31 22:32:05 2026
*************** a68_is_firm (MOID_T *p, MOID_T *q)
*** 710,716 ****
     NO_MOID if P cannot be widened to Q.
  
     This means that if P is known to widen to Q (a68_is_widenable (P,Q) return
!    true) this function can be invoked repeteadly and it will eventually return
     Q.  */
  
  MOID_T *
--- 710,716 ----
     NO_MOID if P cannot be widened to Q.
  
     This means that if P is known to widen to Q (a68_is_widenable (P,Q) return
!    true) this function can be invoked repeatedly and it will eventually return
     Q.  */
  
  MOID_T *
*************** a68_is_coercible_series (MOID_T *p, MOID
*** 1012,1018 ****
  
  /* Whether P can be coerced to Q in a C context.
  
!    If P is a STOWED modes serie (A, B, ...) and Q is a routine mode like `proc
     (X, Y, ...)' then this routine determines whether A can be coerced to X, B
     to Y, etc.  */
  
--- 1012,1018 ----
  
  /* Whether P can be coerced to Q in a C context.
  
!    If P is a STOWED modes series (A, B, ...) and Q is a routine mode like `proc
     (X, Y, ...)' then this routine determines whether A can be coerced to X, B
     to Y, etc.  */
  
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-bottom-up.cc gcc-17-20260531/gcc/algol68/a68-parser-bottom-up.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-bottom-up.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-bottom-up.cc	Sun May 31 22:32:05 2026
*************** strange_separator (NODE_T *p)
*** 268,274 ****
       reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP);
       reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP);
  
!    We know that at much only one of these reductions will succeed, becuase if
     the first reduction succeeds, then P gets changed to LABEL which cannot
     match ENCLOSED_CLAUSE.
  
--- 268,274 ----
       reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP);
       reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP);
  
!    We know that at much only one of these reductions will succeed, because if
     the first reduction succeeds, then P gets changed to LABEL which cannot
     match ENCLOSED_CLAUSE.
  
*************** strange_separator (NODE_T *p)
*** 302,308 ****
  
     Note how, when presented with a sequence of labels like `l1: l2: l3: ...',
     the first call to "reduce" will succeed, turning Q into a LABEL.  Then the
!    second call to "reduce" will also succed, reducing to another LABEL and
     setting SIGA to "true".  In subsequent iterations of the loop the first call
     will always fail, and the second call will keep succeeding as more sequences
     of DEFINING_IDENTIFIER, COLON_SYMBOL get matched.  */
--- 302,308 ----
  
     Note how, when presented with a sequence of labels like `l1: l2: l3: ...',
     the first call to "reduce" will succeed, turning Q into a LABEL.  Then the
!    second call to "reduce" will also succeed, reducing to another LABEL and
     setting SIGA to "true".  In subsequent iterations of the loop the first call
     will always fail, and the second call will keep succeeding as more sequences
     of DEFINING_IDENTIFIER, COLON_SYMBOL get matched.  */
*************** a68_bottom_up_parser (NODE_T *p)
*** 539,545 ****
  
     looking for declarations of indicants, priorities and operators
     (a68_extract_{indicants,priorities,operators}).  Using this information , it
!    determines the nature of bold tags occuring in the branch, by turning
     BOLD_TAG nodes into either INDICANT nodes or OPERATOR nodes
     (a68_elaborate_bold_tags).
  
--- 539,545 ----
  
     looking for declarations of indicants, priorities and operators
     (a68_extract_{indicants,priorities,operators}).  Using this information , it
!    determines the nature of bold tags occurring in the branch, by turning
     BOLD_TAG nodes into either INDICANT nodes or OPERATOR nodes
     (a68_elaborate_bold_tags).
  
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-prelude.cc gcc-17-20260531/gcc/algol68/a68-parser-prelude.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-prelude.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-prelude.cc	Sun May 31 22:32:05 2026
*************** stand_prelude (void)
*** 831,837 ****
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID);
    a68_op (A68_STD, "LENG", m, a68_lower_bitleng2);
!   /* SHORT BITS operatos.  */
    m = a68_proc (M_SHORT_INT, M_SHORT_BITS, NO_MOID);
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_SHORT_BITS, M_SHORT_INT, NO_MOID);
--- 831,837 ----
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID);
    a68_op (A68_STD, "LENG", m, a68_lower_bitleng2);
!   /* SHORT BITS operators.  */
    m = a68_proc (M_SHORT_INT, M_SHORT_BITS, NO_MOID);
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_SHORT_BITS, M_SHORT_INT, NO_MOID);
*************** stand_prelude (void)
*** 893,899 ****
    a68_op (A68_STD, "LENG", m, a68_lower_bitleng2);
    m = a68_proc (M_SHORT_BITS, M_BITS, NO_MOID);
    a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2);
!   /* LONG BITS operatos.  */
    m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID);
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID);
--- 893,899 ----
    a68_op (A68_STD, "LENG", m, a68_lower_bitleng2);
    m = a68_proc (M_SHORT_BITS, M_BITS, NO_MOID);
    a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2);
!   /* LONG BITS operators.  */
    m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID);
    a68_op (A68_STD, "ABS", m, a68_lower_bitabs2);
    m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID);
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-scanner.cc gcc-17-20260531/gcc/algol68/a68-parser-scanner.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-scanner.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-scanner.cc	Sun May 31 22:32:05 2026
*************** a68_lexical_analyser (const char *filena
*** 2331,2337 ****
      s = STRING (l);
    tokenise_source (&root, 0, false, &l, &s, &start_l, &start_c);
  
!   /* Detemine whether the actual file contents resulted in some token.  This is
       used in order to provide better diagnostics for empty source files or
       files containing only comments or pragmats.  These are not valid Algol 68
       packets.  */
--- 2331,2337 ----
      s = STRING (l);
    tokenise_source (&root, 0, false, &l, &s, &start_l, &start_c);
  
!   /* Determine whether the actual file contents resulted in some token.  This is
       used in order to provide better diagnostics for empty source files or
       files containing only comments or pragmats.  These are not valid Algol 68
       packets.  */
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-scope.cc gcc-17-20260531/gcc/algol68/a68-parser-scope.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-scope.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-scope.cc	Sun May 31 22:32:05 2026
*************** a68_scope_checker (NODE_T *p)
*** 1048,1054 ****
    /* PROC and FORMAT identities can now be assigned a scope.  */
    bind_scope_to_tags (p);
  
!   /* Now check evertyhing else.  */
    gcc_assert (IS (p, PACKET));
    if (IS (SUB (p), PARTICULAR_PROGRAM))
      scope_particular_program (SUB (p));
--- 1048,1054 ----
    /* PROC and FORMAT identities can now be assigned a scope.  */
    bind_scope_to_tags (p);
  
!   /* Now check everything else.  */
    gcc_assert (IS (p, PACKET));
    if (IS (SUB (p), PARTICULAR_PROGRAM))
      scope_particular_program (SUB (p));
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-serial-dsa.cc gcc-17-20260531/gcc/algol68/a68-parser-serial-dsa.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-serial-dsa.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-serial-dsa.cc	Sun May 31 22:32:05 2026
*************** serial_dsa_check_serial_clause (NODE_T *
*** 39,45 ****
      {
        if (IS (p, GENERATOR))
  	{
! 	  /* LOC generators always result in dyamic stack allocation regardless
  	     of the mode of the allocated value.  */
  	  if (IS (SUB (p), LOC_SYMBOL))
  	    {
--- 39,45 ----
      {
        if (IS (p, GENERATOR))
  	{
! 	  /* LOC generators always result in dynamic stack allocation regardless
  	     of the mode of the allocated value.  */
  	  if (IS (SUB (p), LOC_SYMBOL))
  	    {
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser-taxes.cc gcc-17-20260531/gcc/algol68/a68-parser-taxes.cc
*** gcc-17-20260524/gcc/algol68/a68-parser-taxes.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser-taxes.cc	Sun May 31 22:32:05 2026
*************** test_firmly_related_ops_local (NODE_T *p
*** 587,593 ****
  			    }
  			}
  
! 		      /* Report only one level of hidding or it gets messy.  */
  		      break;
  		    }
  		}
--- 587,593 ----
  			    }
  			}
  
! 		      /* Report only one level of hiding or it gets messy.  */
  		      break;
  		    }
  		}
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-parser.cc gcc-17-20260531/gcc/algol68/a68-parser.cc
*** gcc-17-20260524/gcc/algol68/a68-parser.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-parser.cc	Sun May 31 22:32:05 2026
***************
*** 92,98 ****
         does not check VICTAL correctness of declarers. This is done separately.
  
    The parser sets up symbol tables and populates them as far as needed to parse
!   the source. After the bottom-up parser terminates succesfully, the symbol tables
    are completed.
  
     (4) Next, modes are collected and rules for well-formedness and structural
--- 92,98 ----
         does not check VICTAL correctness of declarers. This is done separately.
  
    The parser sets up symbol tables and populates them as far as needed to parse
!   the source. After the bottom-up parser terminates successfully, the symbol tables
    are completed.
  
     (4) Next, modes are collected and rules for well-formedness and structural
diff -Nrcpad gcc-17-20260524/gcc/algol68/a68-types.h gcc-17-20260531/gcc/algol68/a68-types.h
*** gcc-17-20260524/gcc/algol68/a68-types.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/a68-types.h	Sun May 31 22:32:05 2026
*************** struct GTY((chain_next ("%h.more"), chai
*** 164,176 ****
  /* A MOID_T represents a mode indicator.
  
     NUMBER is an unique number assigned to the moid when it gets created.  A
!    renumber_moids function exists in a68-parser-modes.cc but it dosn't seem to
     be used at all.
  
     ATTRIBUTE characterizes the kind of mode and is one of the values defined in
     a68-parser-attrs.def.  Valid values are:
  
!      PROC_SYMBOL for procecure modes.
       ROWS_SYMBOL for row modes.
       REF_SYMBOL for reference modes.
       FLEX_SYMBOL for flexible reference modes.
--- 164,176 ----
  /* A MOID_T represents a mode indicator.
  
     NUMBER is an unique number assigned to the moid when it gets created.  A
!    renumber_moids function exists in a68-parser-modes.cc but it doesn't seem to
     be used at all.
  
     ATTRIBUTE characterizes the kind of mode and is one of the values defined in
     a68-parser-attrs.def.  Valid values are:
  
!      PROC_SYMBOL for procedure modes.
       ROWS_SYMBOL for row modes.
       REF_SYMBOL for reference modes.
       FLEX_SYMBOL for flexible reference modes.
*************** struct GTY((chain_next ("%h.more"), chai
*** 200,206 ****
     The interpretation of DIM depends on the kind of mode:
     - In VOID_SYMBOL, STANDARD or INDICANT mode, if DIM is positive it
       specifies the size of the longsety of the mode.  If DIM is negative then
!      abs (DIM) is the size of hte shortsety of the mode.
     - In ROW modes, DIM is the number of dimensions.
     - In STRUCT modes, DIM is the number of fields.
     - In UNION modes, DIM is the number of united modes.
--- 200,206 ----
     The interpretation of DIM depends on the kind of mode:
     - In VOID_SYMBOL, STANDARD or INDICANT mode, if DIM is positive it
       specifies the size of the longsety of the mode.  If DIM is negative then
!      abs (DIM) is the size of the shortsety of the mode.
     - In ROW modes, DIM is the number of dimensions.
     - In STRUCT modes, DIM is the number of fields.
     - In UNION modes, DIM is the number of united modes.
*************** struct GTY(()) OPTIONS_T
*** 343,349 ****
     value of access DIRIDEN.
  
     DIRWOST (direct working stack) is very much like DIRIDEN, except that the
!    value is stored in WOST% rathern than in IDST%.  This access is used for the
     result of an action when this result does not preexist in memory and hence
     has to be constructed in WOST%.
  
--- 343,349 ----
     value of access DIRIDEN.
  
     DIRWOST (direct working stack) is very much like DIRIDEN, except that the
!    value is stored in WOST% rather than in IDST%.  This access is used for the
     result of an action when this result does not preexist in memory and hence
     has to be constructed in WOST%.
  
*************** struct GTY((chain_next ("%h.next"), chai
*** 470,476 ****
     routine texts.  This attribute is set for all the nodes in the syntax tree
     by the taxes collector and originally used by ALGOL 68 Genie's monitor.
     Even if at the moment this is not used by GCC, this field and the
!    correponding machinery is still here in case it is useful in the future.
  
     PRIORITY (accessed as PRIO) is used by operator tree nodes and specifies the
     priority of the operator denoted by the node.  This is set tree wide by the
--- 470,476 ----
     routine texts.  This attribute is set for all the nodes in the syntax tree
     by the taxes collector and originally used by ALGOL 68 Genie's monitor.
     Even if at the moment this is not used by GCC, this field and the
!    corresponding machinery is still here in case it is useful in the future.
  
     PRIORITY (accessed as PRIO) is used by operator tree nodes and specifies the
     priority of the operator denoted by the node.  This is set tree wide by the
*************** struct MODE_CACHE_T
*** 768,774 ****
     buffer is known to be big enough to hold any substring from the source file.
     It is initialized in read_source_file.
  
!    MAX_SCAN_BUF_LENGTH is the useable size of SCAN_BUF.  This is used by the
     scanner to grow SCAN_BUF as it includes other files.
  
     TAG_NUMBER is a global counter used by the parser to assign an unique number
--- 768,774 ----
     buffer is known to be big enough to hold any substring from the source file.
     It is initialized in read_source_file.
  
!    MAX_SCAN_BUF_LENGTH is the usable size of SCAN_BUF.  This is used by the
     scanner to grow SCAN_BUF as it includes other files.
  
     TAG_NUMBER is a global counter used by the parser to assign an unique number
diff -Nrcpad gcc-17-20260524/gcc/algol68/ga68-coding-guidelines.texi gcc-17-20260531/gcc/algol68/ga68-coding-guidelines.texi
*** gcc-17-20260524/gcc/algol68/ga68-coding-guidelines.texi	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/ga68-coding-guidelines.texi	Sun May 31 22:32:05 2026
*************** int i = -10;
*** 317,323 ****
  @{ Always a space after bold monadic operator @}
  int i = ABS (base + offset)
  
! @{ Spaces in dyadic opeator @}
  total := a + b;
  index := cnt +:= 1;
  total := (a + b);
--- 317,323 ----
  @{ Always a space after bold monadic operator @}
  int i = ABS (base + offset)
  
! @{ Spaces in dyadic operator @}
  total := a + b;
  index := cnt +:= 1;
  total := (a + b);
*************** mode MyString = [1:10@@]MyChar,
*** 362,368 ****
  While indexing and trimming a multiple, never put a space between the
  indexed tertiary and the SUB symbol.
  
! Do not put spaces direcly within indexers and trimmers, unless for
  indentation purposes.  As an exception to this rule, you can put a
  single space before the "at" operator @code{@@} if desired.
  
--- 362,368 ----
  While indexing and trimming a multiple, never put a space between the
  indexed tertiary and the SUB symbol.
  
! Do not put spaces directly within indexers and trimmers, unless for
  indentation purposes.  As an exception to this rule, you can put a
  single space before the "at" operator @code{@@} if desired.
  
diff -Nrcpad gcc-17-20260524/gcc/algol68/ga68.texi gcc-17-20260531/gcc/algol68/ga68.texi
*** gcc-17-20260524/gcc/algol68/ga68.texi	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/algol68/ga68.texi	Sun May 31 22:32:05 2026
*************** values of these enquiries are also deter
*** 2084,2090 ****
  operating system targeted by the compiler.
  
  @deftypevr Constant @B{int} {int lengths}
! 1 plus the number of extra lenghts of integers which are meaningful.
  @end deftypevr
  
  @deftypevr Constant @B{int} {int shorths}
--- 2084,2090 ----
  operating system targeted by the compiler.
  
  @deftypevr Constant @B{int} {int lengths}
! 1 plus the number of extra lengths of integers which are meaningful.
  @end deftypevr
  
  @deftypevr Constant @B{int} {int shorths}
*************** The largest integral value.
*** 2096,2102 ****
  @end deftypevr
  
  @deftypevr Constant @B{int} {real lengths}
! 1 plus the number of extra lenghts of real numbers which are
  meaningful.
  @end deftypevr
  
--- 2096,2102 ----
  @end deftypevr
  
  @deftypevr Constant @B{int} {real lengths}
! 1 plus the number of extra lengths of real numbers which are
  meaningful.
  @end deftypevr
  
*************** to @code{b}.
*** 2695,2701 ****
  @subsection Conversions
  
  @deftypefn Operator {} {@B{ABS}} {= (@B{char} a) @B{int}}
! Monadic operator that yields an unique integer for each permissable
  value of @code{@B{char}}.
  @end deftypefn
  
--- 2695,2701 ----
  @subsection Conversions
  
  @deftypefn Operator {} {@B{ABS}} {= (@B{char} a) @B{int}}
! Monadic operator that yields an unique integer for each permissible
  value of @code{@B{char}}.
  @end deftypefn
  
diff -Nrcpad gcc-17-20260524/gcc/alias.cc gcc-17-20260531/gcc/alias.cc
*** gcc-17-20260524/gcc/alias.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/alias.cc	Sun May 31 22:32:05 2026
*************** alias_set_subset_of (alias_set_type set1
*** 464,470 ****
   	     them subset of each other.  */
  	  if (set1 == voidptr_set || set2 == voidptr_set)
  	    return true;
! 	  /* If SET2 contains universal pointer's alias set, then we consdier
   	     every (non-universal) pointer.  */
  	  if (ase2->children && set1 != voidptr_set
  	      && ase2->children->get (voidptr_set))
--- 464,470 ----
   	     them subset of each other.  */
  	  if (set1 == voidptr_set || set2 == voidptr_set)
  	    return true;
! 	  /* If SET2 contains universal pointer's alias set, then we consider
   	     every (non-universal) pointer.  */
  	  if (ase2->children && set1 != voidptr_set
  	      && ase2->children->get (voidptr_set))
*************** alias_ptr_types_compatible_p (tree t1, t
*** 850,856 ****
  	    == TYPE_MAIN_VARIANT (TREE_TYPE (t2)));
  }
  
! /* Create emptry alias set entry.  */
  
  alias_set_entry *
  init_alias_set_entry (alias_set_type set)
--- 850,856 ----
  	    == TYPE_MAIN_VARIANT (TREE_TYPE (t2)));
  }
  
! /* Create empty alias set entry.  */
  
  alias_set_entry *
  init_alias_set_entry (alias_set_type set)
*************** get_alias_set (tree t)
*** 1115,1121 ****
  	  /* Assign the alias set to both p and t.
  	     We cannot call get_alias_set (p) here as that would trigger
  	     infinite recursion when p == t.  In other cases it would just
! 	     trigger unnecesary legwork of rebuilding the pointer again.  */
  	  gcc_checking_assert (p == TYPE_MAIN_VARIANT (p));
  	  if (TYPE_ALIAS_SET_KNOWN_P (p))
  	    set = TYPE_ALIAS_SET (p);
--- 1115,1121 ----
  	  /* Assign the alias set to both p and t.
  	     We cannot call get_alias_set (p) here as that would trigger
  	     infinite recursion when p == t.  In other cases it would just
! 	     trigger unnecessary legwork of rebuilding the pointer again.  */
  	  gcc_checking_assert (p == TYPE_MAIN_VARIANT (p));
  	  if (TYPE_ALIAS_SET_KNOWN_P (p))
  	    set = TYPE_ALIAS_SET (p);
*************** record_component_aliases (tree type, ali
*** 1308,1314 ****
  	      alias_set_type set = get_alias_set (t);
  	      record_alias_subset (superset, set);
  	      /* If the field has alias-set zero make sure to still record
! 		 any componets of it.  This makes sure that for
  		   struct A {
  		     struct B {
  		       int i;
--- 1308,1314 ----
  	      alias_set_type set = get_alias_set (t);
  	      record_alias_subset (superset, set);
  	      /* If the field has alias-set zero make sure to still record
! 		 any components of it.  This makes sure that for
  		   struct A {
  		     struct B {
  		       int i;
*************** base_alias_check (rtx x, rtx x_base, rtx
*** 2243,2249 ****
       alias one another, though "char a; long b;" cannot.  AND addresses may
       implicitly alias surrounding objects; i.e. unaligned access in DImode
       via AND address can alias all surrounding object types except those
!      with aligment 8 or higher.  */
    if (GET_CODE (x) == AND && GET_CODE (y) == AND)
      return true;
    if (GET_CODE (x) == AND
--- 2243,2249 ----
       alias one another, though "char a; long b;" cannot.  AND addresses may
       implicitly alias surrounding objects; i.e. unaligned access in DImode
       via AND address can alias all surrounding object types except those
!      with alignment 8 or higher.  */
    if (GET_CODE (x) == AND && GET_CODE (y) == AND)
      return true;
    if (GET_CODE (x) == AND
diff -Nrcpad gcc-17-20260524/gcc/alloc-pool.h gcc-17-20260531/gcc/alloc-pool.h
*** gcc-17-20260524/gcc/alloc-pool.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/alloc-pool.h	Sun May 31 22:32:05 2026
*************** extern ALLOC_POOL_ID_TYPE last_id;
*** 37,43 ****
  class pool_usage: public mem_usage
  {
  public:
!   /* Default contructor.  */
    pool_usage (): m_element_size (0), m_pool_name ("") {}
    /* Constructor.  */
    pool_usage (size_t allocated, size_t times, size_t peak,
--- 37,43 ----
  class pool_usage: public mem_usage
  {
  public:
!   /* Default constructor.  */
    pool_usage (): m_element_size (0), m_pool_name ("") {}
    /* Constructor.  */
    pool_usage (size_t allocated, size_t times, size_t peak,
diff -Nrcpad gcc-17-20260524/gcc/analyzer/ChangeLog gcc-17-20260531/gcc/analyzer/ChangeLog
*** gcc-17-20260524/gcc/analyzer/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,34 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* access-diagram.cc: Fix typos.
+ 	* analyzer.cc (fixup_tree_for_diagnostic_1): Likewise.
+ 	(tree_to_json): Likewise.
+ 	* bounds-checking.cc: Likewise.
+ 	* constraint-manager.cc (constraint_manager::impossible_derived_conditions_p): Likewise.
+ 	* diagnostic-manager.cc (prune_frame): Likewise.
+ 	* engine.cc (get_eh_outedge): Likewise.
+ 	(maybe_process_run_of_enodes): Likewise.
+ 	* inlining-iterator.h: Likewise.
+ 	* ops.cc (call_and_return_op::execute): Likewise.
+ 	* pending-diagnostic.h (class pending_diagnostic): Likewise.
+ 	* region-model-asm.cc: Likewise.
+ 	* region-model.cc (check_one_function_attr_null_terminated_string_arg): Likewise.
+ 	(region_model::deref_rvalue): Likewise.
+ 	(region_model::scan_for_null_terminator): Likewise.
+ 	(region_model::check_for_null_terminated_string_arg): Likewise.
+ 	(model_merger::mergeable_svalue_p): Likewise.
+ 	(test_canonicalization_4): Likewise.
+ 	* region.cc (region::accept): Likewise.
+ 	* setjmp-longjmp.cc (region_model::on_longjmp): Likewise.
+ 	* sm-fd.cc: Likewise.
+ 	* sm-malloc.cc: Likewise.
+ 	* sm-taint.cc: Likewise.
+ 	* store.cc (binding_cluster::maybe_get_compound_binding): Likewise.
+ 	(binding_cluster::can_merge_p): Likewise.
+ 	(store::replay_call_summary): Likewise.
+ 	* svalue.cc (svalue::can_merge_p): Likewise.
+ 	(widening_svalue::eval_condition_without_cm): Likewise.
+ 
  2026-05-20  David Malcolm  <dmalcolm@redhat.com>
  
  	* region-model-manager.cc
diff -Nrcpad gcc-17-20260524/gcc/analyzer/access-diagram.cc gcc-17-20260531/gcc/analyzer/access-diagram.cc
*** gcc-17-20260524/gcc/analyzer/access-diagram.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/access-diagram.cc	Sun May 31 22:32:05 2026
*************** public:
*** 2192,2198 ****
    const theme &get_theme () const { return m_theme; }
  
  private:
!   /* Figure out all of the boundaries of interest when visualizing ths op.  */
    std::unique_ptr<boundaries>
    find_boundaries () const
    {
--- 2192,2198 ----
    const theme &get_theme () const { return m_theme; }
  
  private:
!   /* Figure out all of the boundaries of interest when visualizing the op.  */
    std::unique_ptr<boundaries>
    find_boundaries () const
    {
diff -Nrcpad gcc-17-20260524/gcc/analyzer/analyzer.cc gcc-17-20260531/gcc/analyzer/analyzer.cc
*** gcc-17-20260524/gcc/analyzer/analyzer.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/analyzer.cc	Sun May 31 22:32:05 2026
*************** get_stmt_location (const gimple *stmt, f
*** 70,76 ****
  static tree
  fixup_tree_for_diagnostic_1 (tree expr, hash_set<tree> *visited);
  
! /* Attemp to generate a tree for the LHS of ASSIGN_STMT.
     VISITED must be non-NULL; it is used to ensure termination.  */
  
  static tree
--- 70,76 ----
  static tree
  fixup_tree_for_diagnostic_1 (tree expr, hash_set<tree> *visited);
  
! /* Attempt to generate a tree for the LHS of ASSIGN_STMT.
     VISITED must be non-NULL; it is used to ensure termination.  */
  
  static tree
*************** tree_to_json (tree node)
*** 238,244 ****
  
  /* Generate a JSON value for EVENT_ID.
     This is intended for debugging the analyzer rather than serialization and
!    thus is a string matching those seen in event messags (or null,
     for unknown).  */
  
  std::unique_ptr<json::value>
--- 238,244 ----
  
  /* Generate a JSON value for EVENT_ID.
     This is intended for debugging the analyzer rather than serialization and
!    thus is a string matching those seen in event messages (or null,
     for unknown).  */
  
  std::unique_ptr<json::value>
diff -Nrcpad gcc-17-20260524/gcc/analyzer/bounds-checking.cc gcc-17-20260531/gcc/analyzer/bounds-checking.cc
*** gcc-17-20260524/gcc/analyzer/bounds-checking.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/bounds-checking.cc	Sun May 31 22:32:05 2026
*************** protected:
*** 253,259 ****
    bit_range m_out_of_bounds_bits;
  };
  
! /* Abstract subclass to complaing about concrete out-of-bounds
     past the end of the buffer.  */
  
  class concrete_past_the_end : public concrete_out_of_bounds
--- 253,259 ----
    bit_range m_out_of_bounds_bits;
  };
  
! /* Abstract subclass to complain about concrete out-of-bounds
     past the end of the buffer.  */
  
  class concrete_past_the_end : public concrete_out_of_bounds
diff -Nrcpad gcc-17-20260524/gcc/analyzer/constraint-manager.cc gcc-17-20260531/gcc/analyzer/constraint-manager.cc
*** gcc-17-20260524/gcc/analyzer/constraint-manager.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/constraint-manager.cc	Sun May 31 22:32:05 2026
*************** constraint_manager::impossible_derived_c
*** 2689,2695 ****
  		  && iter_binop->get_type ())
  		if (iter_binop->get_arg1 ()->get_kind () == SK_CONSTANT)
  		  {
! 		    /* Try evalating EC_SVAL with LHS
  		       as the value of EC_SVAL's lhs, and see if it's
  		       consistent with existing knowledge.  */
  		    const svalue *subst_bin_op
--- 2689,2695 ----
  		  && iter_binop->get_type ())
  		if (iter_binop->get_arg1 ()->get_kind () == SK_CONSTANT)
  		  {
! 		    /* Try evaluating EC_SVAL with LHS
  		       as the value of EC_SVAL's lhs, and see if it's
  		       consistent with existing knowledge.  */
  		    const svalue *subst_bin_op
diff -Nrcpad gcc-17-20260524/gcc/analyzer/diagnostic-manager.cc gcc-17-20260531/gcc/analyzer/diagnostic-manager.cc
*** gcc-17-20260524/gcc/analyzer/diagnostic-manager.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/diagnostic-manager.cc	Sun May 31 22:32:05 2026
*************** public:
*** 1410,1416 ****
    /* Handle interactions between the dedupe winners, so that some
       diagnostics can supercede others (of different kinds).
  
!      We want use-after-free to supercede use-of-unitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the use-after-free.  */
  
--- 1410,1416 ----
    /* Handle interactions between the dedupe winners, so that some
       diagnostics can supercede others (of different kinds).
  
!      We want use-after-free to supercede use-of-uninitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the use-after-free.  */
  
*************** prune_frame (checker_path *path, int &id
*** 2948,2954 ****
     is disabled and will prune the diagnostic of all events within a
     system header, only keeping the entry and exit events to the header.
     This should be called after diagnostic_manager::prune_interproc_events
!    so that sucessive events [system header call, system header return]
     are preserved thereafter.
  
     Given a diagnostics path diving into a system header in the form
--- 2948,2954 ----
     is disabled and will prune the diagnostic of all events within a
     system header, only keeping the entry and exit events to the header.
     This should be called after diagnostic_manager::prune_interproc_events
!    so that successive events [system header call, system header return]
     are preserved thereafter.
  
     Given a diagnostics path diving into a system header in the form
diff -Nrcpad gcc-17-20260524/gcc/analyzer/engine.cc gcc-17-20260531/gcc/analyzer/engine.cc
*** gcc-17-20260524/gcc/analyzer/engine.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/engine.cc	Sun May 31 22:32:05 2026
*************** get_eh_outedge (const supernode &snode)
*** 1399,1405 ****
    return nullptr;
  }
  
! /* Given THROWN_ENODE, which expreses a throw or rethrow occurring at
     THROW_STMT, unwind intraprocedurally and interprocedurally to find
     the next eh_dispatch statement to handle exceptions, if any.
  
--- 1399,1405 ----
    return nullptr;
  }
  
! /* Given THROWN_ENODE, which expresses a throw or rethrow occurring at
     THROW_STMT, unwind intraprocedurally and interprocedurally to find
     the next eh_dispatch statement to handle exceptions, if any.
  
*************** maybe_process_run_of_enodes (exploded_no
*** 3267,3273 ****
      return false;
  
    if (logger)
!     logger->log ("got run of %i bulk-mergable enodes going to SN: %i",
  		 enodes.length (), dst_snode->m_id);
  
    /* All of these enodes have a shared intraprocedural successor point
--- 3267,3273 ----
      return false;
  
    if (logger)
!     logger->log ("got run of %i bulk-mergeable enodes going to SN: %i",
  		 enodes.length (), dst_snode->m_id);
  
    /* All of these enodes have a shared intraprocedural successor point
diff -Nrcpad gcc-17-20260524/gcc/analyzer/inlining-iterator.h gcc-17-20260531/gcc/analyzer/inlining-iterator.h
*** gcc-17-20260524/gcc/analyzer/inlining-iterator.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/inlining-iterator.h	Sun May 31 22:32:05 2026
*************** private:
*** 112,118 ****
     The early inliner runs before the analyzer, which can lead to confusing
     output.
  
!    Tne base fndecl and depth within a checker_event are from call strings
     in program_points, which reflect the call strings after inlining.
     This class lets us offset the depth and fix up the reported fndecl and
     stack depth to better reflect the user's original code.  */
--- 112,118 ----
     The early inliner runs before the analyzer, which can lead to confusing
     output.
  
!    The base fndecl and depth within a checker_event are from call strings
     in program_points, which reflect the call strings after inlining.
     This class lets us offset the depth and fix up the reported fndecl and
     stack depth to better reflect the user's original code.  */
diff -Nrcpad gcc-17-20260524/gcc/analyzer/ops.cc gcc-17-20260531/gcc/analyzer/ops.cc
*** gcc-17-20260524/gcc/analyzer/ops.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/ops.cc	Sun May 31 22:32:05 2026
*************** void
*** 909,915 ****
  call_and_return_op::execute (operation_context &op_ctxt) const
  {
    /* Can we turn this into an interprocedural call, and execute within
!      the called fuction?  */
    const program_state &old_state  = op_ctxt.get_initial_state ();
    program_state dst_state (old_state);
    op_region_model_context ctxt (op_ctxt, dst_state);
--- 909,915 ----
  call_and_return_op::execute (operation_context &op_ctxt) const
  {
    /* Can we turn this into an interprocedural call, and execute within
!      the called function?  */
    const program_state &old_state  = op_ctxt.get_initial_state ();
    program_state dst_state (old_state);
    op_region_model_context ctxt (op_ctxt, dst_state);
diff -Nrcpad gcc-17-20260524/gcc/analyzer/pending-diagnostic.h gcc-17-20260531/gcc/analyzer/pending-diagnostic.h
*** gcc-17-20260524/gcc/analyzer/pending-diagnostic.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/pending-diagnostic.h	Sun May 31 22:32:05 2026
*************** class pending_diagnostic
*** 352,358 ****
    }
  
    /* Precision-of-wording vfunc for describing an interprocedural call
!      carrying critial state for the diagnostic, from caller to callee.
  
       For example a double-free diagnostic might use:
       - "passing freed pointer 'ptr' in call to 'deallocator' from 'test'"
--- 352,358 ----
    }
  
    /* Precision-of-wording vfunc for describing an interprocedural call
!      carrying critical state for the diagnostic, from caller to callee.
  
       For example a double-free diagnostic might use:
       - "passing freed pointer 'ptr' in call to 'deallocator' from 'test'"
*************** class pending_diagnostic
*** 367,373 ****
    }
  
    /* Precision-of-wording vfunc for describing an interprocedural return
!      within the diagnostic path that carries critial state for the
       diagnostic, from callee back to caller.
  
       For example, a deref-of-unchecked-malloc diagnostic might use:
--- 367,373 ----
    }
  
    /* Precision-of-wording vfunc for describing an interprocedural return
!      within the diagnostic path that carries critical state for the
       diagnostic, from callee back to caller.
  
       For example, a deref-of-unchecked-malloc diagnostic might use:
diff -Nrcpad gcc-17-20260524/gcc/analyzer/region-model-asm.cc gcc-17-20260531/gcc/analyzer/region-model-asm.cc
*** gcc-17-20260524/gcc/analyzer/region-model-asm.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/region-model-asm.cc	Sun May 31 22:32:05 2026
*************** namespace ana {
*** 44,50 ****
     Specifically, we want to:
  
     (a) mark asm outputs and certain other regions as having been written to,
!        to avoid false postives from -Wanalyzer-use-of-uninitialized-value.
  
     (b) identify some of these stmts as "deterministic" so that we can
         write consistent outputs given consistent inputs, so that we can
--- 44,50 ----
     Specifically, we want to:
  
     (a) mark asm outputs and certain other regions as having been written to,
!        to avoid false positives from -Wanalyzer-use-of-uninitialized-value.
  
     (b) identify some of these stmts as "deterministic" so that we can
         write consistent outputs given consistent inputs, so that we can
diff -Nrcpad gcc-17-20260524/gcc/analyzer/region-model.cc gcc-17-20260531/gcc/analyzer/region-model.cc
*** gcc-17-20260524/gcc/analyzer/region-model.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/region-model.cc	Sun May 31 22:32:05 2026
*************** check_one_function_attr_null_terminated_
*** 2622,2628 ****
  }
  
  /* Check CALL a call to external function CALLEE_FNDECL for any uses
!    of __attribute__ ((null_terminated_string_arg)), compaining
     to CTXT about any issues.
  
     Use RDWR_IDX for tracking uses of __attribute__ ((access, ....).  */
--- 2622,2628 ----
  }
  
  /* Check CALL a call to external function CALLEE_FNDECL for any uses
!    of __attribute__ ((null_terminated_string_arg)), complaining
     to CTXT about any issues.
  
     Use RDWR_IDX for tracking uses of __attribute__ ((access, ....).  */
*************** region_model::deref_rvalue (const svalue
*** 3327,3333 ****
  	  {
  	  case POINTER_PLUS_EXPR:
  	    {
! 	      /* If we have a symbolic value expressing pointer arithmentic,
  		 try to convert it to a suitable region.  */
  	      const region *parent_region
  		= deref_rvalue (binop_sval->get_arg0 (), NULL_TREE, ctxt);
--- 3327,3333 ----
  	  {
  	  case POINTER_PLUS_EXPR:
  	    {
! 	      /* If we have a symbolic value expressing pointer arithmetic,
  		 try to convert it to a suitable region.  */
  	      const region *parent_region
  		= deref_rvalue (binop_sval->get_arg0 (), NULL_TREE, ctxt);
*************** region_model::scan_for_null_terminator (
*** 4657,4663 ****
  
     Complain and return nullptr if:
     - the buffer pointed to isn't null-terminated
!    - the buffer pointed to has any uninitalized bytes before any 0-terminator
     - any of the reads aren't within the bounds of the underlying base region
  
     Otherwise, return a svalue for strlen of the buffer (*not* including
--- 4657,4663 ----
  
     Complain and return nullptr if:
     - the buffer pointed to isn't null-terminated
!    - the buffer pointed to has any uninitialized bytes before any 0-terminator
     - any of the reads aren't within the bounds of the underlying base region
  
     Otherwise, return a svalue for strlen of the buffer (*not* including
*************** region_model::check_for_null_terminated_
*** 4685,4691 ****
  
     Complain and return nullptr if:
     - the buffer pointed to isn't null-terminated
!    - the buffer pointed to has any uninitalized bytes before any 0-terminator
     - any of the reads aren't within the bounds of the underlying base region
  
     Otherwise, return a svalue.  This will be the number of bytes read
--- 4685,4691 ----
  
     Complain and return nullptr if:
     - the buffer pointed to isn't null-terminated
!    - the buffer pointed to has any uninitialized bytes before any 0-terminator
     - any of the reads aren't within the bounds of the underlying base region
  
     Otherwise, return a svalue.  This will be the number of bytes read
*************** public:
*** 6622,6628 ****
    void visit_constant_svalue (const constant_svalue *sval) final override
    {
      /* At the point the analyzer runs, constant integer operands in a floating
!        point expression are already implictly converted to floating-points.
         Thus, we do prefer to report non-constants such that the diagnostic
         always reports a floating-point operand.  */
      tree type = sval->get_type ();
--- 6622,6628 ----
    void visit_constant_svalue (const constant_svalue *sval) final override
    {
      /* At the point the analyzer runs, constant integer operands in a floating
!        point expression are already implicitly converted to floating-points.
         Thus, we do prefer to report non-constants such that the diagnostic
         always reports a floating-point operand.  */
      tree type = sval->get_type ();
*************** model_merger::mergeable_svalue_p (const
*** 7342,7348 ****
  {
    if (m_ext_state)
      {
!       /* Reject merging svalues that have non-purgable sm-state,
  	 to avoid falsely reporting memory leaks by merging them
  	 with something else.  For example, given a local var "p",
  	 reject the merger of a:
--- 7342,7348 ----
  {
    if (m_ext_state)
      {
!       /* Reject merging svalues that have non-purgeable sm-state,
  	 to avoid falsely reporting memory leaks by merging them
  	 with something else.  For example, given a local var "p",
  	 reject the merger of a:
*************** test_canonicalization_4 ()
*** 8560,8566 ****
  
  /* Assert that if we have two region_model instances
     with values VAL_A and VAL_B for EXPR that they are
!    mergable.  Write the merged model to *OUT_MERGED_MODEL,
     and the merged svalue ptr to *OUT_MERGED_SVALUE.
     If VAL_A or VAL_B are nullptr_TREE, don't populate EXPR
     for that region_model.  */
--- 8560,8566 ----
  
  /* Assert that if we have two region_model instances
     with values VAL_A and VAL_B for EXPR that they are
!    mergeable.  Write the merged model to *OUT_MERGED_MODEL,
     and the merged svalue ptr to *OUT_MERGED_SVALUE.
     If VAL_A or VAL_B are nullptr_TREE, don't populate EXPR
     for that region_model.  */
diff -Nrcpad gcc-17-20260524/gcc/analyzer/region.cc gcc-17-20260531/gcc/analyzer/region.cc
*** gcc-17-20260524/gcc/analyzer/region.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/region.cc	Sun May 31 22:32:05 2026
*************** region::accept (visitor *v) const
*** 1225,1231 ****
      m_parent->accept (v);
  }
  
! /* Return true if this is a symbolic region for deferencing an
     unknown ptr.
     We shouldn't attempt to bind values for this region (but
     can unbind values for other regions).  */
--- 1225,1231 ----
      m_parent->accept (v);
  }
  
! /* Return true if this is a symbolic region for dereferencing an
     unknown ptr.
     We shouldn't attempt to bind values for this region (but
     can unbind values for other regions).  */
diff -Nrcpad gcc-17-20260524/gcc/analyzer/setjmp-longjmp.cc gcc-17-20260531/gcc/analyzer/setjmp-longjmp.cc
*** gcc-17-20260524/gcc/analyzer/setjmp-longjmp.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/setjmp-longjmp.cc	Sun May 31 22:32:05 2026
*************** region_model::on_longjmp (const gcall &l
*** 315,321 ****
        /* Decorate the return value from setjmp as being unmergeable,
  	 so that we don't attempt to merge states with it as zero
  	 with states in which it's nonzero, leading to a clean distinction
! 	 in the exploded_graph betweeen the first return and the second
  	 return.  */
        fake_retval_sval = m_mgr->get_or_create_unmergeable (fake_retval_sval);
  
--- 315,321 ----
        /* Decorate the return value from setjmp as being unmergeable,
  	 so that we don't attempt to merge states with it as zero
  	 with states in which it's nonzero, leading to a clean distinction
! 	 in the exploded_graph between the first return and the second
  	 return.  */
        fake_retval_sval = m_mgr->get_or_create_unmergeable (fake_retval_sval);
  
diff -Nrcpad gcc-17-20260524/gcc/analyzer/sm-fd.cc gcc-17-20260531/gcc/analyzer/sm-fd.cc
*** gcc-17-20260524/gcc/analyzer/sm-fd.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/sm-fd.cc	Sun May 31 22:32:05 2026
*************** public:
*** 205,211 ****
    /* A bound socket after a successful call to "listen" (stream or unknown).  */
    state_t m_listening_stream_socket;
  
!   /* (i) the new FD as a result of a succesful call to "accept" on a
       listening socket (via a passive open), or
       (ii) an active socket after a successful call to "connect"
       (via an active open).  */
--- 205,211 ----
    /* A bound socket after a successful call to "listen" (stream or unknown).  */
    state_t m_listening_stream_socket;
  
!   /* (i) the new FD as a result of a successful call to "accept" on a
       listening socket (via a passive open), or
       (ii) an active socket after a successful call to "connect"
       (via an active open).  */
diff -Nrcpad gcc-17-20260524/gcc/analyzer/sm-malloc.cc gcc-17-20260531/gcc/analyzer/sm-malloc.cc
*** gcc-17-20260524/gcc/analyzer/sm-malloc.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/sm-malloc.cc	Sun May 31 22:32:05 2026
*************** public:
*** 1219,1225 ****
    /* Implementation of pending_diagnostic::supercedes_p for
       null-deref.
  
!      We want null-deref to supercede use-of-unitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the null-deref.  */
  
--- 1219,1225 ----
    /* Implementation of pending_diagnostic::supercedes_p for
       null-deref.
  
!      We want null-deref to supercede use-of-uninitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the null-deref.  */
  
*************** public:
*** 1394,1400 ****
    /* Implementation of pending_diagnostic::supercedes_p for
       use_after_free.
  
!      We want use-after-free to supercede use-of-unitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the use-after-free.
       (this is because we fully purge information about freed
--- 1394,1400 ----
    /* Implementation of pending_diagnostic::supercedes_p for
       use_after_free.
  
!      We want use-after-free to supercede use-of-uninitialized-value,
       so that if we have these at the same stmt, we don't emit
       a use-of-uninitialized, just the use-after-free.
       (this is because we fully purge information about freed
*************** public:
*** 1633,1639 ****
  	return false;
        }
  
!     /* Reject the warning if the check occurs within a macro defintion.
         This avoids false positives for such code as:
  
  	#define throw_error \
--- 1633,1639 ----
  	return false;
        }
  
!     /* Reject the warning if the check occurs within a macro definition.
         This avoids false positives for such code as:
  
  	#define throw_error \
diff -Nrcpad gcc-17-20260524/gcc/analyzer/sm-taint.cc gcc-17-20260531/gcc/analyzer/sm-taint.cc
*** gcc-17-20260524/gcc/analyzer/sm-taint.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/sm-taint.cc	Sun May 31 22:32:05 2026
*************** public:
*** 926,932 ****
  	 diagnostic.  */
        return expansion_point_location_if_in_system_header (loc);
      else if (in_system_header_at (loc))
!       /* For events, we want to show the implemenation of the assert
  	 macro when we're describing them.  */
        return linemap_resolve_location (line_table, loc,
  				       LRK_SPELLING_LOCATION,
--- 926,932 ----
  	 diagnostic.  */
        return expansion_point_location_if_in_system_header (loc);
      else if (in_system_header_at (loc))
!       /* For events, we want to show the implementation of the assert
  	 macro when we're describing them.  */
        return linemap_resolve_location (line_table, loc,
  				       LRK_SPELLING_LOCATION,
diff -Nrcpad gcc-17-20260524/gcc/analyzer/store.cc gcc-17-20260531/gcc/analyzer/store.cc
*** gcc-17-20260524/gcc/analyzer/store.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/store.cc	Sun May 31 22:32:05 2026
*************** binding_cluster::maybe_get_compound_bind
*** 2250,2256 ****
  		 Add it to result_map, offsetting accordingly.  */
  	      result_map.insert (subrange, sval);
  
! 	      /* Clobber default_map, removing/trimming/spliting where
  		 it overlaps with offset_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr, subrange);
  	    }
--- 2250,2256 ----
  		 Add it to result_map, offsetting accordingly.  */
  	      result_map.insert (subrange, sval);
  
! 	      /* Clobber default_map, removing/trimming/splitting where
  		 it overlaps with offset_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr, subrange);
  	    }
*************** binding_cluster::maybe_get_compound_bind
*** 2279,2285 ****
  
  	      result_map.insert (reg_subrange, overlap_sval);
  
! 	      /* Clobber default_map, removing/trimming/spliting where
  		 it overlaps with overlap_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr, reg_subrange);
  	    }
--- 2279,2285 ----
  
  	      result_map.insert (reg_subrange, overlap_sval);
  
! 	      /* Clobber default_map, removing/trimming/splitting where
  		 it overlaps with overlap_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr, reg_subrange);
  	    }
*************** binding_cluster::can_merge_p (const bind
*** 2443,2449 ****
  	= mgr->get_svalue_manager ()->get_or_create_unknown_svalue (type);
  
        /* ...but reject the merger if this sval shouldn't be mergeable
! 	 (e.g. reject merging svalues that have non-purgable sm-state,
  	 to avoid falsely reporting memory leaks by merging them
  	 with something else).  */
        if (!bound_sval->can_merge_p (unknown_sval, sval_mgr, merger))
--- 2443,2449 ----
  	= mgr->get_svalue_manager ()->get_or_create_unknown_svalue (type);
  
        /* ...but reject the merger if this sval shouldn't be mergeable
! 	 (e.g. reject merging svalues that have non-purgeable sm-state,
  	 to avoid falsely reporting memory leaks by merging them
  	 with something else).  */
        if (!bound_sval->can_merge_p (unknown_sval, sval_mgr, merger))
*************** store::replay_call_summary (call_summary
*** 4033,4039 ****
    if (summary.m_called_unknown_fn)
      {
        /* A call to an external function occurred in the summary.
! 	 Hence we need to invalidate our knownledge of globals,
  	 escaped regions, etc.  */
        on_unknown_fncall (r.get_call_stmt (),
  			 r.get_store_manager (),
--- 4033,4039 ----
    if (summary.m_called_unknown_fn)
      {
        /* A call to an external function occurred in the summary.
! 	 Hence we need to invalidate our knowledge of globals,
  	 escaped regions, etc.  */
        on_unknown_fncall (r.get_call_stmt (),
  			 r.get_store_manager (),
diff -Nrcpad gcc-17-20260524/gcc/analyzer/svalue.cc gcc-17-20260531/gcc/analyzer/svalue.cc
*** gcc-17-20260524/gcc/analyzer/svalue.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/analyzer/svalue.cc	Sun May 31 22:32:05 2026
*************** svalue::can_merge_p (const svalue *other
*** 337,343 ****
  	return nullptr;
      }
  
!   /* Reject merging svalues that have non-purgable sm-state,
       to avoid falsely reporting memory leaks by merging them
       with something else.  */
    if (!merger->mergeable_svalue_p (this))
--- 337,343 ----
  	return nullptr;
      }
  
!   /* Reject merging svalues that have non-purgeable sm-state,
       to avoid falsely reporting memory leaks by merging them
       with something else.  */
    if (!merger->mergeable_svalue_p (this))
*************** widening_svalue::eval_condition_without_
*** 2165,2171 ****
  	case LT_EXPR:
  	  {
  	    /* [BASE, +INF) OP RHS:
! 	       This is either true or false at +ve ininity,
  	       It can be true for points X where X OP RHS, so we have either
  	       "false", or "unknown".  */
  	    tree base_op_rhs = fold_binary (op, boolean_type_node,
--- 2165,2171 ----
  	case LT_EXPR:
  	  {
  	    /* [BASE, +INF) OP RHS:
! 	       This is either true or false at +ve infinity,
  	       It can be true for points X where X OP RHS, so we have either
  	       "false", or "unknown".  */
  	    tree base_op_rhs = fold_binary (op, boolean_type_node,
diff -Nrcpad gcc-17-20260524/gcc/asan.cc gcc-17-20260531/gcc/asan.cc
*** gcc-17-20260524/gcc/asan.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/asan.cc	Sun May 31 22:32:05 2026
*************** insert_if_then_before_iter (gcond *cond,
*** 2696,2702 ****
  }
  
  /* Build (base_addr >> ASAN_SHADOW_SHIFT) + asan_shadow_offset ().
!    If RETURN_ADDRESS is set to true, return memory location instread
     of a value in the shadow memory.  */
  
  static tree
--- 2696,2702 ----
  }
  
  /* Build (base_addr >> ASAN_SHADOW_SHIFT) + asan_shadow_offset ().
!    If RETURN_ADDRESS is set to true, return memory location instead
     of a value in the shadow memory.  */
  
  static tree
*************** asan_expand_check_ifn (gimple_stmt_itera
*** 4121,4127 ****
  	   {
  	     //asan instrumentation code goes here.
  	   }
! 	 // falltrough instructions, starting with *ITER.  */
  
        g = gimple_build_cond (NE_EXPR,
  			    len,
--- 4121,4127 ----
  	   {
  	     //asan instrumentation code goes here.
  	   }
! 	 // fallthrough instructions, starting with *ITER.  */
  
        g = gimple_build_cond (NE_EXPR,
  			    len,
*************** hwasan_expand_check_ifn (gimple_stmt_ite
*** 4983,4989 ****
  	   {
  	     // hwasan instrumentation code goes here.
  	   }
! 	 // falltrough instructions, starting with *ITER.  */
  
        g = gimple_build_cond (NE_EXPR,
  			    len,
--- 4983,4989 ----
  	   {
  	     // hwasan instrumentation code goes here.
  	   }
! 	 // fallthrough instructions, starting with *ITER.  */
  
        g = gimple_build_cond (NE_EXPR,
  			    len,
diff -Nrcpad gcc-17-20260524/gcc/asan.h gcc-17-20260531/gcc/asan.h
*** gcc-17-20260524/gcc/asan.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/asan.h	Sun May 31 22:32:05 2026
*************** sanitize_flags_p (sanitize_code_type fla
*** 267,273 ****
    return result_flags;
  }
  
! /* Return true when coverage sanitization should happend for FN function.  */
  
  inline bool
  sanitize_coverage_p (const_tree fn = current_function_decl)
--- 267,273 ----
    return result_flags;
  }
  
! /* Return true when coverage sanitization should happen for FN function.  */
  
  inline bool
  sanitize_coverage_p (const_tree fn = current_function_decl)
diff -Nrcpad gcc-17-20260524/gcc/asm-toplevel.cc gcc-17-20260531/gcc/asm-toplevel.cc
*** gcc-17-20260524/gcc/asm-toplevel.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/asm-toplevel.cc	Sun May 31 22:32:05 2026
*************** analyze_toplevel_extended_asm ()
*** 120,126 ****
  
  /* Checks all toplevel assembly contents and compares them with known symbols.
     Marks those symbols with relevant flags.
!    Heuristics: Detects anything in assembly that looks like an identifer.
  
     This pass must be in WPA, otherwise we will not see all possibly referenced
     symbols - if a symbol is only declared, it will not be in the callgraph if
--- 120,126 ----
  
  /* Checks all toplevel assembly contents and compares them with known symbols.
     Marks those symbols with relevant flags.
!    Heuristics: Detects anything in assembly that looks like an identifier.
  
     This pass must be in WPA, otherwise we will not see all possibly referenced
     symbols - if a symbol is only declared, it will not be in the callgraph if
diff -Nrcpad gcc-17-20260524/gcc/attr-fnspec.h gcc-17-20260531/gcc/attr-fnspec.h
*** gcc-17-20260524/gcc/attr-fnspec.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/attr-fnspec.h	Sun May 31 22:32:05 2026
*************** public:
*** 186,192 ****
    }
  
    /* Return true if the pointed-to type of the argument correspond to the
!      size of the memory acccess.  */
    bool
    arg_access_size_given_by_type_p (unsigned int i) const
    {
--- 186,192 ----
    }
  
    /* Return true if the pointed-to type of the argument correspond to the
!      size of the memory access.  */
    bool
    arg_access_size_given_by_type_p (unsigned int i) const
    {
diff -Nrcpad gcc-17-20260524/gcc/attribs.cc gcc-17-20260531/gcc/attribs.cc
*** gcc-17-20260524/gcc/attribs.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/attribs.cc	Sun May 31 22:32:05 2026
*************** decl_attributes (tree *node, tree attrib
*** 853,859 ****
        bool no_add_attrs = false;
  
        /* Check for exclusions with other attributes on the current
! 	 declation as well as the last declaration of the same
  	 symbol already processed (if one exists).  Detect and
  	 reject incompatible attributes.  */
        bool built_in = flags & ATTR_FLAG_BUILT_IN;
--- 853,859 ----
        bool no_add_attrs = false;
  
        /* Check for exclusions with other attributes on the current
! 	 declaration as well as the last declaration of the same
  	 symbol already processed (if one exists).  Detect and
  	 reject incompatible attributes.  */
        bool built_in = flags & ATTR_FLAG_BUILT_IN;
diff -Nrcpad gcc-17-20260524/gcc/auto-profile.cc gcc-17-20260531/gcc/auto-profile.cc
*** gcc-17-20260524/gcc/auto-profile.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/auto-profile.cc	Sun May 31 22:32:05 2026
*************** function_instance::match (cgraph_node *n
*** 1713,1719 ****
        fprintf (dump_file, "\n");
      }
    basic_block bb;
!   /* Sets used to track if entires in auto-profile are useful.  */
    hash_set<const count_info *> counts;
    hash_set<const count_info *> targets;
    hash_set<const function_instance *> functions;
--- 1713,1719 ----
        fprintf (dump_file, "\n");
      }
    basic_block bb;
!   /* Sets used to track if entries in auto-profile are useful.  */
    hash_set<const count_info *> counts;
    hash_set<const count_info *> targets;
    hash_set<const function_instance *> functions;
*************** function_instance::match (cgraph_node *n
*** 1756,1762 ****
  	  inline_stack stack;
  
  	  /* We do not assign discriminators to PHI nodes.
! 	     In case we every start using them, we wil need to
  	     update tree-cfg.cc::assign_discriminators.  */
  	  gcc_assert (gimple_location (phi) == UNKNOWN_LOCATION);
  	  get_inline_stack_in_node (gimple_location (phi), &stack, node);
--- 1756,1762 ----
  	  inline_stack stack;
  
  	  /* We do not assign discriminators to PHI nodes.
! 	     In case we every start using them, we will need to
  	     update tree-cfg.cc::assign_discriminators.  */
  	  gcc_assert (gimple_location (phi) == UNKNOWN_LOCATION);
  	  get_inline_stack_in_node (gimple_location (phi), &stack, node);
*************** function_instance::remove_icall_target (
*** 2359,2365 ****
  	n++;
        }
    /* TODO: If we add support for multiple targets, we may want to
!      remove only those we succesfully inlined.  */
    gcc_assert (n);
  }
  
--- 2359,2365 ----
  	n++;
        }
    /* TODO: If we add support for multiple targets, we may want to
!      remove only those we successfully inlined.  */
    gcc_assert (n);
  }
  
*************** autofdo_source_profile::offline_external
*** 2389,2395 ****
  	{
  	  /* Watch for duplicate entries.
  	     This seems to happen in practice and may be useful to distinguish
! 	     multiple static symbols of the same name, but we do not realy
  	     have a way to differentiate them in get_symbol_name lookup.  */
  	  int index = afdo_string_table->get_index (n1);
  	  if (index != (int)i)
--- 2389,2395 ----
  	{
  	  /* Watch for duplicate entries.
  	     This seems to happen in practice and may be useful to distinguish
! 	     multiple static symbols of the same name, but we do not really
  	     have a way to differentiate them in get_symbol_name lookup.  */
  	  int index = afdo_string_table->get_index (n1);
  	  if (index != (int)i)
*************** autofdo_source_profile::offline_external
*** 2517,2523 ****
  	    = afdo_string_table->get_cgraph_node (last_name);
  	  if (dump_file)
  	    fprintf (dump_file, "New name %s %s\n", name,
! 		     n ? "wth corresponding definition"
  		     : "with no corresponding definition");
  	  if (n)
  	    seen.add (last_name);
--- 2517,2523 ----
  	    = afdo_string_table->get_cgraph_node (last_name);
  	  if (dump_file)
  	    fprintf (dump_file, "New name %s %s\n", name,
! 		     n ? "with corresponding definition"
  		     : "with no corresponding definition");
  	  if (n)
  	    seen.add (last_name);
*************** afdo_set_bb_count (basic_block bb, hash_
*** 3563,3569 ****
     3. BB1 and BB2 are in the same loop nest.
     This function finds the equivalent class for each basic block, and
     stores a pointer to the first BB in its equivalent class. Meanwhile,
!    set bb counts for the same equivalent class to be idenical. Update
     ANNOTATED_BB for the first BB in its equivalent class.  */
  
  static void
--- 3563,3569 ----
     3. BB1 and BB2 are in the same loop nest.
     This function finds the equivalent class for each basic block, and
     stores a pointer to the first BB in its equivalent class. Meanwhile,
!    set bb counts for the same equivalent class to be identical. Update
     ANNOTATED_BB for the first BB in its equivalent class.  */
  
  static void
*************** scale_bbs (const vec <basic_block> &bbs,
*** 3978,3984 ****
  	b->count = b->count.force_guessed () * scale;
  
  	/* If we scaled to 0, make it auto-fdo since that is treated
! 	   less agressively.  */
  	if (!b->count.nonzero_p () && o.nonzero_p ())
  	  b->count = profile_count::zero ().afdo ();
  	if (dump_file)
--- 3978,3984 ----
  	b->count = b->count.force_guessed () * scale;
  
  	/* If we scaled to 0, make it auto-fdo since that is treated
! 	   less aggressively.  */
  	if (!b->count.nonzero_p () && o.nonzero_p ())
  	  b->count = profile_count::zero ().afdo ();
  	if (dump_file)
*************** afdo_adjust_guessed_profile (bb_set *ann
*** 4208,4214 ****
  		 boundary = true;
  		 annotated_count += AFDO_EINFO (e)->get_count ();
  	       }
! 	     /* If source is anotated, combine with static
  		probability prediction.
  		TODO: We can do better in case some of edges out are
  		annotated and distribute only remaining count out of BB.  */
--- 4208,4214 ----
  		 boundary = true;
  		 annotated_count += AFDO_EINFO (e)->get_count ();
  	       }
! 	     /* If source is annotated, combine with static
  		probability prediction.
  		TODO: We can do better in case some of edges out are
  		annotated and distribute only remaining count out of BB.  */
diff -Nrcpad gcc-17-20260524/gcc/basic-block.h gcc-17-20260531/gcc/basic-block.h
*** gcc-17-20260524/gcc/basic-block.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/basic-block.h	Sun May 31 22:32:05 2026
*************** find_fallthru_edge (vec<edge, va_gc> *ed
*** 550,556 ****
    return e;
  }
  
! /* Check tha probability is sane.  */
  
  inline void
  check_probability (int prob)
--- 550,556 ----
    return e;
  }
  
! /* Check that probability is sane.  */
  
  inline void
  check_probability (int prob)
diff -Nrcpad gcc-17-20260524/gcc/bbitmap.h gcc-17-20260531/gcc/bbitmap.h
*** gcc-17-20260524/gcc/bbitmap.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/bbitmap.h	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 28,34 ****
     Sets are stored as a fixed length array of uint64_t elements.  The length of
     this array is given as a template parameter.  */
  
! /* Use recusive templated functions to define constexpr operations.  */
  template<int M>
  struct bbitmap_operators
  {
--- 28,34 ----
     Sets are stored as a fixed length array of uint64_t elements.  The length of
     this array is given as a template parameter.  */
  
! /* Use recursive templated functions to define constexpr operations.  */
  template<int M>
  struct bbitmap_operators
  {
diff -Nrcpad gcc-17-20260524/gcc/bitmap.cc gcc-17-20260531/gcc/bitmap.cc
*** gcc-17-20260524/gcc/bitmap.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/bitmap.cc	Sun May 31 22:32:05 2026
*************** bitmap_list_find_element (bitmap head, u
*** 414,427 ****
  
  /* Splay-tree view of bitmaps.
  
!    This is an almost one-to-one the implementatin of the simple top-down
     splay tree in Sleator and Tarjan's "Self-adjusting Binary Search Trees".
     It is probably not the most efficient form of splay trees, but it should
     be good enough to experiment with this idea of bitmaps-as-trees.
  
     For all functions below, the variable or function argument "t" is a node
     in the tree, and "e" is a temporary or new node in the tree.  The rest
!    is sufficiently straigh-forward (and very well explained in the paper)
     that comment would only clutter things.  */
  
  static inline void
--- 414,427 ----
  
  /* Splay-tree view of bitmaps.
  
!    This is an almost one-to-one the implementation of the simple top-down
     splay tree in Sleator and Tarjan's "Self-adjusting Binary Search Trees".
     It is probably not the most efficient form of splay trees, but it should
     be good enough to experiment with this idea of bitmaps-as-trees.
  
     For all functions below, the variable or function argument "t" is a node
     in the tree, and "e" is a temporary or new node in the tree.  The rest
!    is sufficiently straight-forward (and very well explained in the paper)
     that comment would only clutter things.  */
  
  static inline void
*************** bitmap_last_set_bit (const_bitmap a)
*** 1329,1341 ****
      elt = elt->next;
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
!   for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 1; ix--)
      {
        word = elt->bits[ix];
        if (word)
  	goto found_bit;
      }
!   gcc_assert (elt->bits[ix] != 0);
   found_bit:
    bit_no += ix * BITMAP_WORD_BITS;
  #if GCC_VERSION >= 3004
--- 1329,1341 ----
      elt = elt->next;
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
!   for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 0; ix--)
      {
        word = elt->bits[ix];
        if (word)
  	goto found_bit;
      }
!   gcc_unreachable ();
   found_bit:
    bit_no += ix * BITMAP_WORD_BITS;
  #if GCC_VERSION >= 3004
diff -Nrcpad gcc-17-20260524/gcc/bitmap.h gcc-17-20260531/gcc/bitmap.h
*** gcc-17-20260524/gcc/bitmap.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/bitmap.h	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 64,70 ****
     For random-access sparse sets of unknown universe, the binary tree
     representation is likely to be a more suitable choice.  Theoretical
     access times for the binary tree representation are better than those
!    for the linked-list, but in practice this is only true for truely
     random access.
  
     Often the most suitable representation during construction of the set
--- 64,70 ----
     For random-access sparse sets of unknown universe, the binary tree
     representation is likely to be a more suitable choice.  Theoretical
     access times for the binary tree representation are better than those
!    for the linked-list, but in practice this is only true for truly
     random access.
  
     Often the most suitable representation during construction of the set
*************** along with GCC; see the file COPYING3.
*** 218,224 ****
  class bitmap_usage: public mem_usage
  {
  public:
!   /* Default contructor.  */
    bitmap_usage (): m_nsearches (0), m_search_iter (0) {}
    /* Constructor.  */
    bitmap_usage (size_t allocated, size_t times, size_t peak,
--- 218,224 ----
  class bitmap_usage: public mem_usage
  {
  public:
!   /* Default constructor.  */
    bitmap_usage (): m_nsearches (0), m_search_iter (0) {}
    /* Constructor.  */
    bitmap_usage (size_t allocated, size_t times, size_t peak,
diff -Nrcpad gcc-17-20260524/gcc/btfout.cc gcc-17-20260531/gcc/btfout.cc
*** gcc-17-20260524/gcc/btfout.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/btfout.cc	Sun May 31 22:32:05 2026
*************** static GTY (()) section * btf_info_secti
*** 51,57 ****
  
  #define BTF_INFO_SECTION_FLAGS (SECTION_DEBUG)
  
! /* Maximum size (in bytes) for an artifically generated BTF label.  */
  
  #define MAX_BTF_LABEL_BYTES 40
  
--- 51,57 ----
  
  #define BTF_INFO_SECTION_FLAGS (SECTION_DEBUG)
  
! /* Maximum size (in bytes) for an artificially generated BTF label.  */
  
  #define MAX_BTF_LABEL_BYTES 40
  
*************** btf_asm_type (ctf_dtdef_ref dtd)
*** 409,415 ****
        if (dtd->dtd_data.ctti_type == CTF_K_UNION)
  	btf_kflag = 1;
  
!       /* PR debug/111735.  Encode foward-declared enums as BTF_KIND_ENUM
  	 with vlen=0.  A representation for these is not formally defined;
  	 this is the de-facto standard used by other tools like clang
  	 and pahole.  */
--- 409,415 ----
        if (dtd->dtd_data.ctti_type == CTF_K_UNION)
  	btf_kflag = 1;
  
!       /* PR debug/111735.  Encode forward-declared enums as BTF_KIND_ENUM
  	 with vlen=0.  A representation for these is not formally defined;
  	 this is the de-facto standard used by other tools like clang
  	 and pahole.  */
*************** output_btf_vars (ctf_container_ref ctfc)
*** 691,697 ****
  }
  
  /* Output BTF string records. The BTF strings section is a concatenation
!    of the standard and auxilliary string tables in the ctf container.  */
  
  static void
  output_btf_strs (ctf_container_ref ctfc)
--- 691,697 ----
  }
  
  /* Output BTF string records. The BTF strings section is a concatenation
!    of the standard and auxiliary string tables in the ctf container.  */
  
  static void
  output_btf_strs (ctf_container_ref ctfc)
*************** btf_add_used_type_1 (ctf_container_ref c
*** 1204,1210 ****
  	    farg->farg_type = btf_add_used_type_1 (ctfc, farg->farg_type,
  						   false, false,
  						   create_fixups);
! 	    /* Note: argument names are stored in the auxilliary string table,
  	       since CTF does not include arg names.  That table has not been
  	       cleared, so no need to re-add argument names here.  */
  	  }
--- 1204,1210 ----
  	    farg->farg_type = btf_add_used_type_1 (ctfc, farg->farg_type,
  						   false, false,
  						   create_fixups);
! 	    /* Note: argument names are stored in the auxiliary string table,
  	       since CTF does not include arg names.  That table has not been
  	       cleared, so no need to re-add argument names here.  */
  	  }
diff -Nrcpad gcc-17-20260524/gcc/builtins.cc gcc-17-20260531/gcc/builtins.cc
*** gcc-17-20260524/gcc/builtins.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/builtins.cc	Sun May 31 22:32:05 2026
*************** string_length (const void *ptr, unsigned
*** 569,575 ****
     than what a C strlen call would return.
  
     ELTSIZE is 1 for normal single byte character strings, and 2 or
!    4 for wide characer strings.  ELTSIZE is by default 1.
  
     The value returned is of type `ssizetype'.  */
  
--- 569,575 ----
     than what a C strlen call would return.
  
     ELTSIZE is 1 for normal single byte character strings, and 2 or
!    4 for wide character strings.  ELTSIZE is by default 1.
  
     The value returned is of type `ssizetype'.  */
  
*************** expand_builtin_setjmp_setup (rtx buf_add
*** 928,934 ****
  
  /* Construct the trailing part of a __builtin_setjmp call.  This is
     also called directly by the SJLJ exception handling code.
!    If RECEIVER_LABEL is NULL, instead contruct a nonlocal goto handler.  */
  
  void
  expand_builtin_setjmp_receiver (rtx receiver_label)
--- 928,934 ----
  
  /* Construct the trailing part of a __builtin_setjmp call.  This is
     also called directly by the SJLJ exception handling code.
!    If RECEIVER_LABEL is NULL, instead construct a nonlocal goto handler.  */
  
  void
  expand_builtin_setjmp_receiver (rtx receiver_label)
*************** inline_expand_builtin_bytecmp (tree exp,
*** 7662,7668 ****
  		       || fcode == BUILT_IN_STRNCMP
  		       || fcode == BUILT_IN_MEMCMP);
  
!   /* On a target where the type of the call (int) has same or narrower presicion
       than unsigned char, give up the inlining expansion.  */
    if (TYPE_PRECISION (unsigned_char_type_node)
        >= TYPE_PRECISION (TREE_TYPE (exp)))
--- 7662,7668 ----
  		       || fcode == BUILT_IN_STRNCMP
  		       || fcode == BUILT_IN_MEMCMP);
  
!   /* On a target where the type of the call (int) has same or narrower precision
       than unsigned char, give up the inlining expansion.  */
    if (TYPE_PRECISION (unsigned_char_type_node)
        >= TYPE_PRECISION (TREE_TYPE (exp)))
*************** fold_builtin_bit_query (location_t loc,
*** 10483,10489 ****
        /* Only keep second argument to IFN_CLZ/IFN_CTZ if it is the
  	 value defined at zero during GIMPLE, or for large/huge _BitInt
  	 (which are then lowered during bitint lowering).  */
!       if (arg2 && TREE_CODE (TREE_TYPE (arg0)) != BITINT_TYPE)
  	{
  	  int val;
  	  if (fcode == BUILT_IN_CLZG)
--- 10483,10489 ----
        /* Only keep second argument to IFN_CLZ/IFN_CTZ if it is the
  	 value defined at zero during GIMPLE, or for large/huge _BitInt
  	 (which are then lowered during bitint lowering).  */
!       if (arg2 && !BITINT_TYPE_P (TREE_TYPE (arg0)))
  	{
  	  int val;
  	  if (fcode == BUILT_IN_CLZG)
diff -Nrcpad gcc-17-20260524/gcc/builtins.def gcc-17-20260531/gcc/builtins.def
*** gcc-17-20260524/gcc/builtins.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/builtins.def	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 218,224 ****
  	       false, true, true, ATTRS, false, \
  	       flag_openacc)
  /* Set NONANSI_P = false to enable the builtins also with -fno-nonansi-builtins,
!    esp. as -std=c++../c.. imply that flag and -fopenacc should be othogonal.  */
  #undef DEF_GOACC_BUILTIN_COMPILER
  #define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
--- 218,225 ----
  	       false, true, true, ATTRS, false, \
  	       flag_openacc)
  /* Set NONANSI_P = false to enable the builtins also with -fno-nonansi-builtins,
!    esp. as -std=c++../c.. imply that flag and -fopenacc should be
!    orthogonal.  */
  #undef DEF_GOACC_BUILTIN_COMPILER
  #define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
*************** along with GCC; see the file COPYING3.
*** 235,241 ****
  		|| flag_openmp \
  		|| flag_tree_parallelize_loops > 1))
  /* Set NONANSI_P = false to enable the builtins also with -fno-nonansi-builtins,
!    esp. as -std=c++../c.. imply that flag and -fopenmp should be othogonal.  */
  #undef DEF_GOMP_BUILTIN_COMPILER
  #define DEF_GOMP_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
--- 236,242 ----
  		|| flag_openmp \
  		|| flag_tree_parallelize_loops > 1))
  /* Set NONANSI_P = false to enable the builtins also with -fno-nonansi-builtins,
!    esp. as -std=c++../c.. imply that flag and -fopenmp should be orthogonal.  */
  #undef DEF_GOMP_BUILTIN_COMPILER
  #define DEF_GOMP_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
diff -Nrcpad gcc-17-20260524/gcc/c/ChangeLog gcc-17-20260531/gcc/c/ChangeLog
*** gcc-17-20260524/gcc/c/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,52 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* c-decl.cc (pop_file_scope): Fix typos.
+ 	(diagnose_mismatched_decls): Likewise.
+ 	(parser_xref_tag): Likewise.
+ 	(verify_counted_by_attribute): Likewise.
+ 	* c-fold.cc (c_disable_warnings): Likewise.
+ 	* c-parser.cc (c_parser_do_statement): Likewise.
+ 	(c_parser_expression): Likewise.
+ 	(c_parser_objc_at_property_declaration): Likewise.
+ 	* c-tree.h (struct c_declspecs): Likewise.
+ 	* c-typeck.cc (build_access_with_size_for_counted_by): Likewise.
+ 	(build_modify_expr): Likewise.
+ 	(c_find_omp_var_r): Likewise.
+ 	* gimple-parser.cc (c_parser_gimple_compound_statement): Likewise.
+ 
+ 2026-05-30  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* c-decl.cc (diagnose_mismatched_decls): Adapt.
+ 	* c-tree.h (comptypes, comptypes_check_enum_int): Adapt.
+ 	(comptypes_check_different_types): Remove.
+ 	* c-typeck.cc (compatible_types_for_indirection_note_p): Fix.
+ 	(comptypes_internal): Remove outdated info from comment.
+ 	(comptypes, comptypes_check_enum_int): Adapt.
+ 	(comptypes_check_different_types,comp_parm_types): Remove.
+ 	(comp_target_types,build_function_call_vec,digest_init): Adapt.
+ 
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-parser.cc (c_parser_enum_specifier): Implement
+ 	C2Y N3705: bit-precise enum.  Allow for flag_isoc2y enumerated
+ 	types with BITINT_TYPE as underlying type.
+ 	* c-lang.cc (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Redefine.
+ 	* c-tree.h (c_enum_underlying_base_type): Declare.
+ 	* c-objc-common.cc (c_enum_underlying_base_type): New function.
+ 	* c-decl.cc (finish_struct): Use BITINT_TYPE_P macro.
+ 	* c-typeck.cc (perform_integral_promotions): Promote bit-fields with
+ 	enum type with underlying fixed _BitInt type to that _BitInt type.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* c-parser.cc (c_parser_omp_allocate): Reject
+ 	omp_{cgroup,pteam,thread}_mem_alloc for static variables.
+ 
+ 2026-05-25  Sam James  <sam@gentoo.org>
+ 
+ 	* c-parser.cc: Delete errant optimize pragma.
+ 
  2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
  
  	* c-typeck.cc (build_conditional_expr): Likewise.
diff -Nrcpad gcc-17-20260524/gcc/c/c-decl.cc gcc-17-20260531/gcc/c/c-decl.cc
*** gcc-17-20260524/gcc/c/c-decl.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-decl.cc	Sun May 31 22:32:05 2026
*************** pop_file_scope (void)
*** 1537,1543 ****
    maybe_apply_pending_pragma_weaks ();
  }
  
! /* Whether we are curently inside the initializer for an
     underspecified object definition (C23 auto or constexpr).  */
  static bool in_underspecified_init;
  
--- 1537,1543 ----
    maybe_apply_pending_pragma_weaks ();
  }
  
! /* Whether we are currently inside the initializer for an
     underspecified object definition (C23 auto or constexpr).  */
  static bool in_underspecified_init;
  
*************** diagnose_mismatched_decls (tree newdecl,
*** 2203,2210 ****
    bool enum_and_int_p = false;
    auto_diagnostic_group d;
  
!   int comptypes_result = comptypes_check_enum_int (oldtype, newtype,
! 						   &enum_and_int_p);
    if (!comptypes_result)
      {
        if (TREE_CODE (olddecl) == FUNCTION_DECL
--- 2203,2210 ----
    bool enum_and_int_p = false;
    auto_diagnostic_group d;
  
!   bool comptypes_result = comptypes_check_enum_int (oldtype, newtype,
! 						    &enum_and_int_p);
    if (!comptypes_result)
      {
        if (TREE_CODE (olddecl) == FUNCTION_DECL
*************** diagnose_mismatched_decls (tree newdecl,
*** 2359,2365 ****
  		      if (comptypes (oldtype, trytype))
  			{
  			  *newtypep = newtype = trytype;
! 			  comptypes_result = 1;
  			}
  		    }
  		}
--- 2359,2365 ----
  		      if (comptypes (oldtype, trytype))
  			{
  			  *newtypep = newtype = trytype;
! 			  comptypes_result = true;
  			}
  		    }
  		}
*************** diagnose_mismatched_decls (tree newdecl,
*** 2399,2410 ****
       compatible.  */
    if (TREE_CODE (newdecl) == TYPE_DECL)
      {
!       bool types_different = false;
! 
!       comptypes_result
! 	= comptypes_check_different_types (oldtype, newtype, &types_different);
! 
!       if (comptypes_result != 1 || types_different)
  	{
  	  error ("redefinition of typedef %q+D with different type", newdecl);
  	  locate_old_decl (olddecl);
--- 2399,2405 ----
       compatible.  */
    if (TREE_CODE (newdecl) == TYPE_DECL)
      {
!       if (!comptypes_same_p (oldtype, newtype))
  	{
  	  error ("redefinition of typedef %q+D with different type", newdecl);
  	  locate_old_decl (olddecl);
*************** diagnose_mismatched_decls (tree newdecl,
*** 2573,2579 ****
  			"but not here");
  	    }
  	}
!       /* Check if these are unmergable overlapping FMV declarations.  */
        if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
  	  && diagnose_versioned_decls (olddecl, newdecl))
  	return false;
--- 2568,2574 ----
  			"but not here");
  	    }
  	}
!       /* Check if these are unmergeable overlapping FMV declarations.  */
        if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
  	  && diagnose_versioned_decls (olddecl, newdecl))
  	return false;
*************** pushdecl (tree x)
*** 3457,3463 ****
  	  && TREE_CODE (x) == FUNCTION_DECL && DECL_FILE_SCOPE_P (b_use->decl)
  	  && DECL_FILE_SCOPE_P (x)
  	  && disjoint_version_decls (x, b_use->decl)
! 	  && comptypes (vistype, type) != 0)
  	{
  	  maybe_mark_function_versioned (b_use->decl);
  	  maybe_mark_function_versioned (b->decl);
--- 3452,3458 ----
  	  && TREE_CODE (x) == FUNCTION_DECL && DECL_FILE_SCOPE_P (b_use->decl)
  	  && DECL_FILE_SCOPE_P (x)
  	  && disjoint_version_decls (x, b_use->decl)
! 	  && comptypes (vistype, type))
  	{
  	  maybe_mark_function_versioned (b_use->decl);
  	  maybe_mark_function_versioned (b->decl);
*************** parser_xref_tag (location_t loc, enum tr
*** 8822,8828 ****
  
    ref = lookup_tag (code, name, has_enum_type_specifier, &refloc);
  
!   /* If the visble type is still being defined, see if there is
       an earlier definition (which may be complete).  We do not
       have to loop because nested redefinitions are not allowed.  */
    if (flag_isoc23 && ref && C_TYPE_BEING_DEFINED (ref))
--- 8817,8823 ----
  
    ref = lookup_tag (code, name, has_enum_type_specifier, &refloc);
  
!   /* If the visible type is still being defined, see if there is
       an earlier definition (which may be complete).  We do not
       have to loop because nested redefinitions are not allowed.  */
    if (flag_isoc23 && ref && C_TYPE_BEING_DEFINED (ref))
*************** verify_counted_by_attribute (tree outmos
*** 9549,9555 ****
  
  	  tree fieldname = TREE_VALUE (TREE_VALUE (attr_counted_by));
  
! 	  /* Verify the argument of the attrbute is a valid field of the
  	     containing structure.  */
  
  	  tree counted_by_field = lookup_field (outmost_struct_type,
--- 9544,9550 ----
  
  	  tree fieldname = TREE_VALUE (TREE_VALUE (attr_counted_by));
  
! 	  /* Verify the argument of the attribute is a valid field of the
  	     containing structure.  */
  
  	  tree counted_by_field = lookup_field (outmost_struct_type,
*************** finish_struct (location_t loc, tree t, t
*** 9847,9854 ****
  	    }
  	  if (width != TYPE_PRECISION (type))
  	    {
! 	      if (TREE_CODE (type) == BITINT_TYPE
! 		  && width >= (TYPE_UNSIGNED (type) ? 1 : 2))
  		TREE_TYPE (field)
  		  = build_bitint_type (width, TYPE_UNSIGNED (type));
  	      else
--- 9842,9849 ----
  	    }
  	  if (width != TYPE_PRECISION (type))
  	    {
! 	      if (BITINT_TYPE_P (type)
! 		  && width >= ((TYPE_UNSIGNED (type) || flag_isoc2y) ? 1 : 2))
  		TREE_TYPE (field)
  		  = build_bitint_type (width, TYPE_UNSIGNED (type));
  	      else
diff -Nrcpad gcc-17-20260524/gcc/c/c-fold.cc gcc-17-20260531/gcc/c/c-fold.cc
*** gcc-17-20260524/gcc/c/c-fold.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-fold.cc	Sun May 31 22:32:05 2026
*************** c_disable_warnings (bool disable)
*** 40,50 ****
    if (disable)
      {
        ++c_inhibit_evaluation_warnings;
-       fold_defer_overflow_warnings ();
      }
  }
  
! /* If ENABLE is true, reenable issuing warnings.  */
  
  static void
  c_enable_warnings (bool enable)
--- 40,49 ----
    if (disable)
      {
        ++c_inhibit_evaluation_warnings;
      }
  }
  
! /* If ENABLE is true, re-enable issuing warnings.  */
  
  static void
  c_enable_warnings (bool enable)
*************** c_enable_warnings (bool enable)
*** 52,58 ****
    if (enable)
      {
        --c_inhibit_evaluation_warnings;
-       fold_undefer_and_ignore_overflow_warnings ();
      }
  }
  
--- 51,56 ----
diff -Nrcpad gcc-17-20260524/gcc/c/c-lang.cc gcc-17-20260531/gcc/c/c-lang.cc
*** gcc-17-20260524/gcc/c/c-lang.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-lang.cc	Sun May 31 22:32:05 2026
*************** enum c_language_kind c_language = clk_c;
*** 39,44 ****
--- 39,46 ----
  #define LANG_HOOKS_INIT c_objc_common_init
  #undef LANG_HOOKS_INIT_TS
  #define LANG_HOOKS_INIT_TS c_common_init_ts
+ #undef LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE
+ #define LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE c_enum_underlying_base_type
  
  #if CHECKING_P
  #undef LANG_HOOKS_RUN_LANG_SELFTESTS
diff -Nrcpad gcc-17-20260524/gcc/c/c-objc-common.cc gcc-17-20260531/gcc/c/c-objc-common.cc
*** gcc-17-20260524/gcc/c/c-objc-common.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-objc-common.cc	Sun May 31 22:32:05 2026
*************** c_type_dwarf_attribute (const_tree type,
*** 487,489 ****
--- 487,504 ----
  
    return -1;
  }
+ 
+ /* The C version of the enum_underlying_base_type langhook.  */
+ 
+ tree
+ c_enum_underlying_base_type (const_tree type)
+ {
+   tree underlying_type = ENUM_UNDERLYING_TYPE (type);
+ 
+   if (! ENUM_FIXED_UNDERLYING_TYPE_P (type))
+     underlying_type
+       = c_common_type_for_mode (TYPE_MODE (underlying_type),
+ 				TYPE_UNSIGNED (underlying_type));
+ 
+   return underlying_type;
+ }
diff -Nrcpad gcc-17-20260524/gcc/c/c-parser.cc gcc-17-20260531/gcc/c/c-parser.cc
*** gcc-17-20260524/gcc/c/c-parser.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-parser.cc	Sun May 31 22:32:05 2026
***************
*** 1,5 ****
- #pragma GCC optimize("O0")
  /* Parser for C and Objective-C.
     Copyright (C) 1987-2026 Free Software Foundation, Inc.
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
--- 1,5 ----
  /* Parser for C and Objective-C.
+ 
     Copyright (C) 1987-2026 Free Software Foundation, Inc.
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
*************** c_parser_enum_specifier (c_parser *parse
*** 4182,4188 ****
        if (specs->default_int_p)
  	error_at (enum_loc, "no %<enum%> underlying type specified");
        else if (TREE_CODE (specs->type) != INTEGER_TYPE
! 	       && TREE_CODE (specs->type) != BOOLEAN_TYPE)
  	{
  	  error_at (enum_loc, "invalid %<enum%> underlying type");
  	  specs->type = integer_type_node;
--- 4182,4189 ----
        if (specs->default_int_p)
  	error_at (enum_loc, "no %<enum%> underlying type specified");
        else if (TREE_CODE (specs->type) != INTEGER_TYPE
! 	       && TREE_CODE (specs->type) != BOOLEAN_TYPE
! 	       && (!flag_isoc2y || TREE_CODE (specs->type) != BITINT_TYPE))
  	{
  	  error_at (enum_loc, "invalid %<enum%> underlying type");
  	  specs->type = integer_type_node;
*************** location_t last_init_list_comma;
*** 6624,6630 ****
     nested braced lists.  NESTED_P is true for nested braced lists,
     false for the list of a compound literal or the list that is the
     top-level initializer in a declaration.  VARSIZE_P indicates
!    wether the object to be initialized has a variable size.  */
  
  static struct c_expr
  c_parser_braced_init (c_parser *parser, tree type, bool nested_p,
--- 6625,6631 ----
     nested braced lists.  NESTED_P is true for nested braced lists,
     false for the list of a compound literal or the list that is the
     top-level initializer in a declaration.  VARSIZE_P indicates
!    whether the object to be initialized has a variable size.  */
  
  static struct c_expr
  c_parser_braced_init (c_parser *parser, tree type, bool nested_p,
*************** c_parser_do_statement (c_parser *parser,
*** 9160,9166 ****
     In Objective-C, there are two additional variants:
  
     foreach-statement:
!      for ( expression in expresssion ) statement
       for ( declaration in expression ) statement
  
     This is inconsistent with C, because the second variant is allowed
--- 9161,9167 ----
     In Objective-C, there are two additional variants:
  
     foreach-statement:
!      for ( expression in expression ) statement
       for ( declaration in expression ) statement
  
     This is inconsistent with C, because the second variant is allowed
*************** c_parser_expression (c_parser *parser)
*** 14287,14293 ****
  	mark_exp_read (lhsval);
        if (c_parser_next_token_is (parser, CPP_EMBED))
  	{
! 	  /* Users aren't interested in milions of -Wunused-value
  	     warnings when using #embed inside of a comma expression,
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
--- 14288,14294 ----
  	mark_exp_read (lhsval);
        if (c_parser_next_token_is (parser, CPP_EMBED))
  	{
! 	  /* Users aren't interested in millions of -Wunused-value
  	     warnings when using #embed inside of a comma expression,
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
*************** c_parser_objc_at_property_declaration (c
*** 15781,15787 ****
  	    }
  
  	  /* If we see a comma here, then keep going - even if we already
! 	     saw a syntax error.  For simple mistakes e.g. (asign, getter=x)
  	     this makes a more useful output and avoid spurious warnings about
  	     missing attributes that are, in fact, specified after the one with
  	     the syntax error.  */
--- 15782,15788 ----
  	    }
  
  	  /* If we see a comma here, then keep going - even if we already
! 	     saw a syntax error.  For simple mistakes e.g. (assign, getter=x)
  	     this makes a more useful output and avoid spurious warnings about
  	     missing attributes that are, in fact, specified after the one with
  	     the syntax error.  */
*************** c_parser_omp_allocate (c_parser *parser)
*** 23629,23634 ****
--- 23630,23648 ----
  			"%<allocator%> clause requires a predefined allocator as "
  			"%qD is static", var);
  	    }
+ 	  else if (allocator
+ 		   && (wi::eq_p (wi::to_widest (allocator),
+ 				 GOMP_OMP_PREDEF_ALLOC_CGROUP)
+ 		       || wi::eq_p (wi::to_widest (allocator),
+ 				    GOMP_OMP_PREDEF_ALLOC_PTEAM)
+ 		       || wi::eq_p (wi::to_widest (allocator),
+ 				    GOMP_OMP_PREDEF_ALLOC_THREAD)))
+ 	    {
+ 	      error_at (allocator_loc,
+ 			"%<allocator%> clause for static variable %qD must not "
+ 			"be %<omp_cgroup_mem_alloc%>, %<omp_pteam_mem_alloc%>, "
+ 			"or %<omp_thread_mem_alloc%>", var);
+ 	    }
  	}
        if (allocator)
  	{
diff -Nrcpad gcc-17-20260524/gcc/c/c-tree.h gcc-17-20260531/gcc/c/c-tree.h
*** gcc-17-20260524/gcc/c/c-tree.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-tree.h	Sun May 31 22:32:05 2026
*************** struct c_declspecs {
*** 458,464 ****
    BOOL_BITFIELD complex_p : 1;
    /* Whether "inline" was specified.  */
    BOOL_BITFIELD inline_p : 1;
!   /* Whether "_Noreturn" was speciied.  */
    BOOL_BITFIELD noreturn_p : 1;
    /* Whether "__thread" or "_Thread_local" was specified.  */
    BOOL_BITFIELD thread_p : 1;
--- 458,464 ----
    BOOL_BITFIELD complex_p : 1;
    /* Whether "inline" was specified.  */
    BOOL_BITFIELD inline_p : 1;
!   /* Whether "_Noreturn" was specified.  */
    BOOL_BITFIELD noreturn_p : 1;
    /* Whether "__thread" or "_Thread_local" was specified.  */
    BOOL_BITFIELD thread_p : 1;
*************** extern void c_initialize_diagnostics (di
*** 786,791 ****
--- 786,792 ----
  extern bool c_var_mod_p (tree x, tree fn);
  extern alias_set_type c_get_alias_set (tree);
  extern int c_type_dwarf_attribute (const_tree, int);
+ extern tree c_enum_underlying_base_type (const_tree);
  
  /* in c-typeck.cc */
  extern int in_alignof;
*************** extern tree c_objc_common_truthvalue_con
*** 851,861 ****
  						 tree = integer_type_node);
  extern tree require_complete_type (location_t, tree);
  extern bool same_translation_unit_p (const_tree, const_tree);
! extern int comptypes (tree, tree);
  extern bool comptypes_same_p (tree, tree);
  extern bool comptypes_equiv_p (tree, tree);
! extern int comptypes_check_different_types (tree, tree, bool *);
! extern int comptypes_check_enum_int (tree, tree, bool *);
  extern bool c_mark_addressable (tree, bool = false, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
--- 852,861 ----
  						 tree = integer_type_node);
  extern tree require_complete_type (location_t, tree);
  extern bool same_translation_unit_p (const_tree, const_tree);
! extern bool comptypes (tree, tree);
  extern bool comptypes_same_p (tree, tree);
  extern bool comptypes_equiv_p (tree, tree);
! extern bool comptypes_check_enum_int (tree, tree, bool *);
  extern bool c_mark_addressable (tree, bool = false, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
diff -Nrcpad gcc-17-20260524/gcc/c/c-typeck.cc gcc-17-20260531/gcc/c/c-typeck.cc
*** gcc-17-20260524/gcc/c/c-typeck.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/c-typeck.cc	Sun May 31 22:32:05 2026
*************** comptypes_check_for_composite (tree t1,
*** 1576,1589 ****
  bool
  compatible_types_for_indirection_note_p (tree type1, tree type2)
  {
!   return comptypes (type1, type2) == 1;
  }
  
! /* Return 1 if TYPE1 and TYPE2 are compatible types for assignment
!    or various other operations.  Return 2 if they are compatible
!    but a warning may be needed if you use them together.  */
  
! int
  comptypes (tree type1, tree type2)
  {
    struct comptypes_data data = { };
--- 1576,1588 ----
  bool
  compatible_types_for_indirection_note_p (tree type1, tree type2)
  {
!   return comptypes (type1, type2);
  }
  
! /* Return true if TYPE1 and TYPE2 are compatible types for assignment
!    or various other operations.  */
  
! bool
  comptypes (tree type1, tree type2)
  {
    struct comptypes_data data = { };
*************** comptypes (tree type1, tree type2)
*** 1591,1597 ****
  
    gcc_checking_assert (!ret || comptypes_verify (type1, type2));
  
!   return ret ? (data.warning_needed ? 2 : 1) : 0;
  }
  
  
--- 1590,1596 ----
  
    gcc_checking_assert (!ret || comptypes_verify (type1, type2));
  
!   return ret;
  }
  
  
*************** comptypes_same_p (tree type1, tree type2
*** 1613,1622 ****
  }
  
  
! /* Like comptypes, but if it returns non-zero because enum and int are
     compatible, it sets *ENUM_AND_INT_P to true.  */
  
! int
  comptypes_check_enum_int (tree type1, tree type2, bool *enum_and_int_p)
  {
    struct comptypes_data data = { };
--- 1612,1621 ----
  }
  
  
! /* Like comptypes, but if it returns true because enum and int are
     compatible, it sets *ENUM_AND_INT_P to true.  */
  
! bool
  comptypes_check_enum_int (tree type1, tree type2, bool *enum_and_int_p)
  {
    struct comptypes_data data = { };
*************** comptypes_check_enum_int (tree type1, tr
*** 1625,1648 ****
  
    gcc_checking_assert (!ret || comptypes_verify (type1, type2));
  
!   return ret ? (data.warning_needed ? 2 : 1) : 0;
  }
  
- /* Like comptypes, but if it returns nonzero for different types, it
-    sets *DIFFERENT_TYPES_P to true.  */
- 
- int
- comptypes_check_different_types (tree type1, tree type2,
- 				 bool *different_types_p)
- {
-   struct comptypes_data data = { };
-   bool ret = comptypes_internal (type1, type2, &data);
-   *different_types_p = data.different_types_p;
- 
-   gcc_checking_assert (!ret || comptypes_verify (type1, type2));
- 
-   return ret ? (data.warning_needed ? 2 : 1) : 0;
- }
  
  
  /* Like comptypes, but if it returns true for struct and union types
--- 1624,1632 ----
  
    gcc_checking_assert (!ret || comptypes_verify (type1, type2));
  
!   return ret;
  }
  
  
  
  /* Like comptypes, but if it returns true for struct and union types
*************** comptypes_equiv_p (tree type1, tree type
*** 1703,1711 ****
     If two functions types are not compatible only because one is
     an old-style definition that does not have self-promoting arguments,
     then this can be ignored by setting 'ignore_promoting_args_p'.
!    For 'equiv' we can compute equivalency classes (see above).
!    This differs from comptypes, in that we don't free the seen
!    types.  */
  
  static bool
  comptypes_internal (const_tree type1, const_tree type2,
--- 1687,1693 ----
     If two functions types are not compatible only because one is
     an old-style definition that does not have self-promoting arguments,
     then this can be ignored by setting 'ignore_promoting_args_p'.
!    For 'equiv' we can compute equivalency classes (see above).  */
  
  static bool
  comptypes_internal (const_tree type1, const_tree type2,
*************** comptypes_internal (const_tree type1, co
*** 1880,1926 ****
  static bool
  comp_target_types (location_t location, tree ttl, tree ttr)
  {
-   int val;
-   int val_ped;
    tree mvl = TREE_TYPE (ttl);
    tree mvr = TREE_TYPE (ttr);
    addr_space_t asl = TYPE_ADDR_SPACE (mvl);
    addr_space_t asr = TYPE_ADDR_SPACE (mvr);
    addr_space_t as_common;
-   bool enum_and_int_p;
  
    /* Fail if pointers point to incompatible address spaces.  */
    if (!addr_space_superset (asl, asr, &as_common))
      return 0;
  
-   /* For pedantic record result of comptypes on arrays before losing
-      qualifiers on the element type below. */
-   val_ped = 1;
- 
-   if (TREE_CODE (mvl) == ARRAY_TYPE
-       && TREE_CODE (mvr) == ARRAY_TYPE)
-     val_ped = comptypes (mvl, mvr);
- 
    /* Qualifiers on element types of array types that are
       pointer targets are also removed.  */
!   mvl = remove_qualifiers (mvl);
!   mvr = remove_qualifiers (mvr);
! 
!   enum_and_int_p = false;
!   val = comptypes_check_enum_int (mvl, mvr, &enum_and_int_p);
  
!   if (val == 1 && val_ped != 1)
!     pedwarn_c11 (location, OPT_Wpedantic, "invalid use of pointers to arrays with different qualifiers "
! 					  "in ISO C before C23");
  
!   if (val == 2)
      pedwarn (location, OPT_Wpedantic, "types are not quite compatible");
  
!   if (val == 1 && enum_and_int_p && warn_cxx_compat)
      warning_at (location, OPT_Wc___compat,
  		"pointer target types incompatible in C++");
  
!   return val;
  }
  
  /* Subroutines of `comptypes'.  */
--- 1862,1901 ----
  static bool
  comp_target_types (location_t location, tree ttl, tree ttr)
  {
    tree mvl = TREE_TYPE (ttl);
    tree mvr = TREE_TYPE (ttr);
    addr_space_t asl = TYPE_ADDR_SPACE (mvl);
    addr_space_t asr = TYPE_ADDR_SPACE (mvr);
    addr_space_t as_common;
  
    /* Fail if pointers point to incompatible address spaces.  */
    if (!addr_space_superset (asl, asr, &as_common))
      return 0;
  
    /* Qualifiers on element types of array types that are
       pointer targets are also removed.  */
!   struct comptypes_data data = { };
!   if (!comptypes_internal (remove_qualifiers (mvl),
! 			   remove_qualifiers (mvr), &data))
!     return false;
  
!   /* For pedantic use comptypes on arrays before removing
!      qualifiers on the element type. */
!   if (TREE_CODE (mvl) == ARRAY_TYPE
!       && TREE_CODE (mvr) == ARRAY_TYPE
!       && !comptypes (mvl, mvr))
!     pedwarn_c11 (location, OPT_Wpedantic, "invalid use of pointers to arrays "
! 					  "with different qualifiers in ISO C "
! 					  "before C23");
  
!   if (data.warning_needed)
      pedwarn (location, OPT_Wpedantic, "types are not quite compatible");
  
!   if (data.enum_and_int_p && warn_cxx_compat)
      warning_at (location, OPT_Wc___compat,
  		"pointer target types incompatible in C++");
  
!   return true;
  }
  
  /* Subroutines of `comptypes'.  */
*************** perform_integral_promotions (tree exp)
*** 2826,2834 ****
    if (TREE_CODE (exp) == COMPONENT_REF
        && DECL_C_BIT_FIELD (TREE_OPERAND (exp, 1)))
      {
!       if (TREE_CODE (DECL_BIT_FIELD_TYPE (TREE_OPERAND (exp, 1)))
! 	  == BITINT_TYPE)
! 	return convert (DECL_BIT_FIELD_TYPE (TREE_OPERAND (exp, 1)), exp);
        /* If it's thinner than an int, promote it like a
  	 c_promoting_integer_type_p, otherwise leave it alone.  */
        if (compare_tree_int (DECL_SIZE (TREE_OPERAND (exp, 1)),
--- 2801,2814 ----
    if (TREE_CODE (exp) == COMPONENT_REF
        && DECL_C_BIT_FIELD (TREE_OPERAND (exp, 1)))
      {
!       if (BITINT_TYPE_P (DECL_BIT_FIELD_TYPE (TREE_OPERAND (exp, 1))))
! 	{
! 	  tree btype = DECL_BIT_FIELD_TYPE (TREE_OPERAND (exp, 1));
! 	  if (TREE_CODE (btype) == BITINT_TYPE)
! 	    return convert (btype, exp);
! 	  else
! 	    return convert (ENUM_UNDERLYING_TYPE (btype), exp);
! 	}
        /* If it's thinner than an int, promote it like a
  	 c_promoting_integer_type_p, otherwise leave it alone.  */
        if (compare_tree_int (DECL_SIZE (TREE_OPERAND (exp, 1)),
*************** build_access_with_size_for_counted_by (l
*** 3264,3270 ****
    bool is_fam = c_flexible_array_member_type_p (TREE_TYPE (ref));
  
    /* The result type of the call is a pointer to the flexible array type;
!      or is the original ponter type to the pointer field with counted_by.  */
    tree result_type = is_fam ? c_build_pointer_type (TREE_TYPE (ref))
  		     : TREE_TYPE (ref);
  
--- 3244,3250 ----
    bool is_fam = c_flexible_array_member_type_p (TREE_TYPE (ref));
  
    /* The result type of the call is a pointer to the flexible array type;
!      or is the original pointer type to the pointer field with counted_by.  */
    tree result_type = is_fam ? c_build_pointer_type (TREE_TYPE (ref))
  		     : TREE_TYPE (ref);
  
*************** inform_declaration (tree decl, tree func
*** 4311,4323 ****
        }
  }
  
- /* C implementation of callback for use when checking param types.  */
- 
- static bool
- comp_parm_types (tree wanted_type, tree actual_type)
- {
-   return comptypes (wanted_type, actual_type);
- }
  
  /* Build a function call to function FUNCTION with parameters PARAMS.
     If FUNCTION is the result of resolving an overloaded target built-in,
--- 4291,4296 ----
*************** build_function_call_vec (location_t loc,
*** 4440,4446 ****
    /* Check that the arguments to the function are valid.  */
    bool warned_p = check_function_arguments (loc, fundecl, fntype,
  					    nargs, argarray, &arg_loc,
! 					    comp_parm_types);
  
    if (TYPE_QUALS (return_type) != TYPE_UNQUALIFIED
        && !VOID_TYPE_P (return_type))
--- 4413,4419 ----
    /* Check that the arguments to the function are valid.  */
    bool warned_p = check_function_arguments (loc, fundecl, fntype,
  					    nargs, argarray, &arg_loc,
! 					    comptypes);
  
    if (TYPE_QUALS (return_type) != TYPE_UNQUALIFIED
        && !VOID_TYPE_P (return_type))
*************** build_modify_expr (location_t location,
*** 7817,7823 ****
        lhs = c_fully_fold (lhs, false, NULL, true);
        lhs = stabilize_reference (lhs);
  
!       /* Construct the RHS for any non-atomic compound assignemnt. */
        if (!is_atomic_op)
          {
  	  /* If in LHS op= RHS the RHS has side-effects, ensure they
--- 7790,7796 ----
        lhs = c_fully_fold (lhs, false, NULL, true);
        lhs = stabilize_reference (lhs);
  
!       /* Construct the RHS for any non-atomic compound assignment. */
        if (!is_atomic_op)
          {
  	  /* If in LHS op= RHS the RHS has side-effects, ensure they
*************** digest_init (location_t init_loc, tree d
*** 9954,9962 ****
        bool char_array = (typ1 == char_type_node
  			 || typ1 == signed_char_type_node
  			 || typ1 == unsigned_char_type_node);
!       bool wchar_array = !!comptypes (typ1, wchar_type_node);
!       bool char16_array = !!comptypes (typ1, char16_type_node);
!       bool char32_array = !!comptypes (typ1, char32_type_node);
  
        if (char_array || wchar_array || char16_array || char32_array)
  	{
--- 9927,9935 ----
        bool char_array = (typ1 == char_type_node
  			 || typ1 == signed_char_type_node
  			 || typ1 == unsigned_char_type_node);
!       bool wchar_array = comptypes (typ1, wchar_type_node);
!       bool char16_array = comptypes (typ1, char16_type_node);
!       bool char32_array = comptypes (typ1, char32_type_node);
  
        if (char_array || wchar_array || char16_array || char32_array)
  	{
*************** c_find_omp_var_r (tree *tp, int *, void
*** 16515,16521 ****
    return NULL_TREE;
  }
  
! /* Finish OpenMP iterators ITER.  Return true if they are errorneous
     and clauses containing them should be removed.  */
  
  static bool
--- 16488,16494 ----
    return NULL_TREE;
  }
  
! /* Finish OpenMP iterators ITER.  Return true if they are erroneous
     and clauses containing them should be removed.  */
  
  static bool
diff -Nrcpad gcc-17-20260524/gcc/c/gimple-parser.cc gcc-17-20260531/gcc/c/gimple-parser.cc
*** gcc-17-20260524/gcc/c/gimple-parser.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c/gimple-parser.cc	Sun May 31 22:32:05 2026
*************** c_parser_gimple_compound_statement (gimp
*** 452,458 ****
    if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
      return false;
  
!   /* A compund statement starts with optional declarations.  */
    while (c_parser_next_tokens_start_declaration (parser))
      {
        c_parser_gimple_declaration (parser);
--- 452,458 ----
    if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
      return false;
  
!   /* A compound statement starts with optional declarations.  */
    while (c_parser_next_tokens_start_declaration (parser))
      {
        c_parser_gimple_declaration (parser);
diff -Nrcpad gcc-17-20260524/gcc/c-family/ChangeLog gcc-17-20260531/gcc/c-family/ChangeLog
*** gcc-17-20260524/gcc/c-family/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,29 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* c-attribs.cc (append_access_attr): Fix typos.
+ 	(append_access_attr_idxs): Likewise.
+ 	(has_attribute): Likewise.
+ 	* c-common.cc (get_cpp_ttype_from_string_type): Likewise.
+ 	(cb_get_suggestion): Likewise.
+ 	(maybe_add_include_fixit): Likewise.
+ 	* c-common.h (convert_vector_to_array_for_subscript): Likewise.
+ 	* c-cppbuiltin.cc (builtin_define_type_max): Likewise.
+ 	* c-format.cc (check_format_info_main): Likewise.
+ 	(check_format_types): Likewise.
+ 	* c-omp.cc (c_omp_categorize_directive): Likewise.
+ 	* c-opts.cc (c_common_post_options): Likewise.
+ 	* c-ubsan.cc (ubsan_instrument_bounds): Likewise.
+ 
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-attribs.cc (type_valid_for_vector_size): Use BITINT_TYPE_P macro.
+ 	* c-common.cc (c_common_get_narrower): For ENUMERAL_TYPE with
+ 	BITINT_TYPE as underlying type convert to the underlying type.
+ 	(c_common_signed_or_unsigned_type): Use BITINT_TYPE_P macro.
+ 	(sync_resolve_size): Likewise.
+ 	(atomic_bitint_fetch_using_cas_loop): Likewise.
+ 	(resolve_overloaded_builtin): Likewise.
+ 
  2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
  
  	* c-warn.cc (warn_for_sign_compare): Remove strict_overflow_p
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-attribs.cc gcc-17-20260531/gcc/c-family/c-attribs.cc
*** gcc-17-20260524/gcc/c-family/c-attribs.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-attribs.cc	Sun May 31 22:32:05 2026
*************** type_valid_for_vector_size (tree type, t
*** 4885,4891 ****
        || !tree_fits_uhwi_p (TYPE_SIZE_UNIT (type))
        || TREE_CODE (type) == BOOLEAN_TYPE
        || hardbool_p
!       || TREE_CODE (type) == BITINT_TYPE)
      {
        if (error_p)
  	error ("invalid vector type for attribute %qE", atname);
--- 4885,4891 ----
        || !tree_fits_uhwi_p (TYPE_SIZE_UNIT (type))
        || TREE_CODE (type) == BOOLEAN_TYPE
        || hardbool_p
!       || BITINT_TYPE_P (type))
      {
        if (error_p)
  	error ("invalid vector type for attribute %qE", atname);
*************** append_access_attr (tree node[3], tree a
*** 5407,5413 ****
    rdwr_map new_idxs;
    init_attr_rdwr_indices (&new_idxs, ataccess);
  
!   /* The current access specification alrady applied.  */
    rdwr_map cur_idxs;
    init_attr_rdwr_indices (&cur_idxs, attrs);
  
--- 5407,5413 ----
    rdwr_map new_idxs;
    init_attr_rdwr_indices (&new_idxs, ataccess);
  
!   /* The current access specification already applied.  */
    rdwr_map cur_idxs;
    init_attr_rdwr_indices (&cur_idxs, attrs);
  
*************** append_access_attr_idxs (tree node[3], t
*** 5613,5621 ****
  
  /* Handle the access attribute for function type NODE[0], with the function
     DECL optionally in NODE[1].  The handler is called both in response to
!    an explict attribute access on a declaration with a mode and one or two
     positional arguments, and for internally synthesized access specifications
!    with a string argument optionally followd by a DECL or expression
     representing a VLA bound.  To speed up parsing, the handler transforms
     the attribute and its arguments into a string.  */
  
--- 5613,5621 ----
  
  /* Handle the access attribute for function type NODE[0], with the function
     DECL optionally in NODE[1].  The handler is called both in response to
!    an explicit attribute access on a declaration with a mode and one or two
     positional arguments, and for internally synthesized access specifications
!    with a string argument optionally followed by a DECL or expression
     representing a VLA bound.  To speed up parsing, the handler transforms
     the attribute and its arguments into a string.  */
  
*************** has_attribute (location_t atloc, tree t,
*** 7031,7037 ****
  		  if (TREE_CODE (v1) == IDENTIFIER_NODE
  		      || TREE_CODE (v2) == IDENTIFIER_NODE)
  		    /* Two identifiers are the same if their values are
! 		       equal (that's handled above).  Otherwise ther are
  		       either not the same or oneis not an identifier.  */
  		    return false;
  
--- 7031,7037 ----
  		  if (TREE_CODE (v1) == IDENTIFIER_NODE
  		      || TREE_CODE (v2) == IDENTIFIER_NODE)
  		    /* Two identifiers are the same if their values are
! 		       equal (that's handled above).  Otherwise they are
  		       either not the same or oneis not an identifier.  */
  		    return false;
  
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-common.cc gcc-17-20260531/gcc/c-family/c-common.cc
*** gcc-17-20260524/gcc/c-family/c-common.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-common.cc	Sun May 31 22:32:05 2026
*************** get_cpp_ttype_from_string_type (tree str
*** 945,951 ****
    return CPP_OTHER;
  }
  
! /* The global record of string concatentations, for use in
     extracting locations within string literals.  */
  
  GTY(()) string_concat_db *g_string_concat_db;
--- 945,951 ----
    return CPP_OTHER;
  }
  
! /* The global record of string concatenations, for use in
     extracting locations within string literals.  */
  
  GTY(()) string_concat_db *g_string_concat_db;
*************** c_common_get_narrower (tree op, int *uns
*** 1380,1385 ****
--- 1380,1388 ----
    if (TREE_CODE (TREE_TYPE (op)) == ENUMERAL_TYPE
        && ENUM_IS_SCOPED (TREE_TYPE (op)))
      {
+       if (BITINT_TYPE_P (TREE_TYPE (op)))
+ 	return fold_convert (ENUM_UNDERLYING_TYPE (TREE_TYPE (op)), op);
+ 
        /* C++0x scoped enumerations don't implicitly convert to integral
  	 type; if we stripped an explicit conversion to a larger type we
  	 need to replace it so common_type will still work.  */
*************** c_common_signed_or_unsigned_type (int un
*** 2818,2824 ****
        || TYPE_UNSIGNED (type) == unsignedp)
      return type;
  
!   if (TREE_CODE (type) == BITINT_TYPE
        /* signed _BitInt(1) is invalid before C2Y, avoid creating that.  */
        && (unsignedp || flag_isoc2y || TYPE_PRECISION (type) > 1))
      return build_bitint_type (TYPE_PRECISION (type), unsignedp);
--- 2821,2827 ----
        || TYPE_UNSIGNED (type) == unsignedp)
      return type;
  
!   if (BITINT_TYPE_P (type)
        /* signed _BitInt(1) is invalid before C2Y, avoid creating that.  */
        && (unsignedp || flag_isoc2y || TYPE_PRECISION (type) > 1))
      return build_bitint_type (TYPE_PRECISION (type), unsignedp);
*************** pointer_int_sum (location_t loc, enum tr
*** 3422,3433 ****
  	}
      }
  
-   /* We are manipulating pointer values, so we don't need to warn
-      about relying on undefined signed overflow.  We disable the
-      warning here because we use integer types so fold won't know that
-      they are really pointers.  */
-   fold_defer_overflow_warnings ();
- 
    /* If what we are about to multiply by the size of the elements
       contains a constant term, apply distributive law
       and multiply that constant term separately.
--- 3425,3430 ----
*************** pointer_int_sum (location_t loc, enum tr
*** 3476,3483 ****
  
        ret = fold_build_pointer_plus_loc (loc, ptrop, intop);
  
-       fold_undefer_and_ignore_overflow_warnings ();
- 
        return ret;
      }
  
--- 3473,3478 ----
*************** pointer_int_sum (location_t loc, enum tr
*** 3506,3513 ****
  
    ret = fold_build_pointer_plus_loc (loc, ptrop, intop);
  
-   fold_undefer_and_ignore_overflow_warnings ();
- 
    return ret;
  }
  
--- 3501,3506 ----
*************** sync_resolve_size (tree function, vec<tr
*** 7747,7753 ****
  
    size = tree_to_uhwi (TYPE_SIZE_UNIT (type));
    if (size == 16
!       && TREE_CODE (type) == BITINT_TYPE
        && !targetm.scalar_mode_supported_p (TImode))
      {
        if (fetch && !orig_format)
--- 7740,7746 ----
  
    size = tree_to_uhwi (TYPE_SIZE_UNIT (type));
    if (size == 16
!       && BITINT_TYPE_P (type)
        && !targetm.scalar_mode_supported_p (TImode))
      {
        if (fetch && !orig_format)
*************** sync_resolve_size (tree function, vec<tr
*** 7758,7764 ****
    if (size == 1 || size == 2 || size == 4 || size == 8 || size == 16)
      return size;
  
!   if (fetch && !orig_format && TREE_CODE (type) == BITINT_TYPE)
      return -1;
  
   incompatible:
--- 7751,7757 ----
    if (size == 1 || size == 2 || size == 4 || size == 8 || size == 16)
      return size;
  
!   if (fetch && !orig_format && BITINT_TYPE_P (type))
      return -1;
  
   incompatible:
*************** atomic_bitint_fetch_using_cas_loop (loca
*** 8486,8492 ****
  
    tree nonatomic_lhs_type = TREE_TYPE (TREE_TYPE ((*orig_params)[0]));
    nonatomic_lhs_type = TYPE_MAIN_VARIANT (nonatomic_lhs_type);
!   gcc_assert (TREE_CODE (nonatomic_lhs_type) == BITINT_TYPE);
  
    tree lhs_addr = (*orig_params)[0];
    tree val = convert (nonatomic_lhs_type, (*orig_params)[1]);
--- 8479,8485 ----
  
    tree nonatomic_lhs_type = TREE_TYPE (TREE_TYPE ((*orig_params)[0]));
    nonatomic_lhs_type = TYPE_MAIN_VARIANT (nonatomic_lhs_type);
!   gcc_assert (BITINT_TYPE_P (nonatomic_lhs_type));
  
    tree lhs_addr = (*orig_params)[0];
    tree val = convert (nonatomic_lhs_type, (*orig_params)[1]);
*************** resolve_overloaded_builtin (location_t l
*** 8879,8885 ****
  	if (new_return)
  	  {
  	    /* Cast function result from I{1,2,4,8,16} to the required type.  */
! 	    if (TREE_CODE (TREE_TYPE (new_return)) == BITINT_TYPE)
  	      {
  		struct bitint_info info;
  		unsigned prec = TYPE_PRECISION (TREE_TYPE (new_return));
--- 8872,8878 ----
  	if (new_return)
  	  {
  	    /* Cast function result from I{1,2,4,8,16} to the required type.  */
! 	    if (BITINT_TYPE_P (TREE_TYPE (new_return)))
  	      {
  		struct bitint_info info;
  		unsigned prec = TYPE_PRECISION (TREE_TYPE (new_return));
*************** cb_get_suggestion (cpp_reader *, const c
*** 9757,9763 ****
    return bm.get_best_meaningful_candidate ();
  }
  
! /* Return the latice point which is the wider of the two FLT_EVAL_METHOD
     modes X, Y.  This isn't just  >, as the FLT_EVAL_METHOD values added
     by C TS 18661-3 for interchange  types that are computed in their
     native precision are larger than the C11 values for evaluating in the
--- 9750,9756 ----
    return bm.get_best_meaningful_candidate ();
  }
  
! /* Return the lattice point which is the wider of the two FLT_EVAL_METHOD
     modes X, Y.  This isn't just  >, as the FLT_EVAL_METHOD values added
     by C TS 18661-3 for interchange  types that are computed in their
     native precision are larger than the C11 values for evaluating in the
*************** maybe_add_include_fixit (rich_location *
*** 10244,10250 ****
  /* Attempt to convert a braced array initializer list CTOR for array
     TYPE into a STRING_CST for convenience and efficiency.  Return
     the converted string on success or the original ctor on failure.
!    Also, for non-convertable CTORs which contain RAW_DATA_CST values
     among the elts try to extend the range of RAW_DATA_CSTs.  */
  
  static tree
--- 10237,10243 ----
  /* Attempt to convert a braced array initializer list CTOR for array
     TYPE into a STRING_CST for convenience and efficiency.  Return
     the converted string on success or the original ctor on failure.
!    Also, for non-convertible CTORs which contain RAW_DATA_CST values
     among the elts try to extend the range of RAW_DATA_CSTs.  */
  
  static tree
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-common.h gcc-17-20260531/gcc/c-family/c-common.h
*** gcc-17-20260524/gcc/c-family/c-common.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-common.h	Sun May 31 22:32:05 2026
*************** extern tree build_userdef_literal (tree
*** 1593,1599 ****
  
  extern bool convert_vector_to_array_for_subscript (location_t, tree *, tree);
  
! /* Possibe cases of scalar_to_vector conversion.  */
  enum stv_conv {
    stv_error,        /* Error occurred.  */
    stv_nothing,      /* Nothing happened.  */
--- 1593,1599 ----
  
  extern bool convert_vector_to_array_for_subscript (location_t, tree *, tree);
  
! /* Possible cases of scalar_to_vector conversion.  */
  enum stv_conv {
    stv_error,        /* Error occurred.  */
    stv_nothing,      /* Nothing happened.  */
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-cppbuiltin.cc gcc-17-20260531/gcc/c-family/c-cppbuiltin.cc
*** gcc-17-20260524/gcc/c-family/c-cppbuiltin.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-cppbuiltin.cc	Sun May 31 22:32:05 2026
*************** builtin_define_type_max (const char *mac
*** 2050,2056 ****
    builtin_define_type_minmax (NULL, macro, type);
  }
  
! /* Given a value with COUNT LSBs set, fill BUF with a hexidecimal
     representation of that value.  For example, a COUNT of 10 would
     return "0x3ff".  */
  
--- 2050,2056 ----
    builtin_define_type_minmax (NULL, macro, type);
  }
  
! /* Given a value with COUNT LSBs set, fill BUF with a hexadecimal
     representation of that value.  For example, a COUNT of 10 would
     return "0x3ff".  */
  
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-format.cc gcc-17-20260531/gcc/c-family/c-format.cc
*** gcc-17-20260524/gcc/c-family/c-format.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-format.cc	Sun May 31 22:32:05 2026
*************** check_format_info_main (format_check_res
*** 3884,3890 ****
    init_dollar_format_checking (info->first_arg_num, first_fillin_param);
  
    /* In GCC diagnostic functions check plain directives (substrings within
!      the format string that don't start with %) for quoting and punctuations
       problems.  */
    bool ck_plain = (!info->is_raw
  		   && (info->format_type == gcc_diag_format_type
--- 3884,3890 ----
    init_dollar_format_checking (info->first_arg_num, first_fillin_param);
  
    /* In GCC diagnostic functions check plain directives (substrings within
!      the format string that don't start with %) for quoting and punctuation
       problems.  */
    bool ck_plain = (!info->is_raw
  		   && (info->format_type == gcc_diag_format_type
*************** check_format_info_main (format_check_res
*** 4025,4031 ****
  				    format_chars - orig_format_chars,
  				    OPT_Wformat_,
  				    "%qc directive redundant after prior "
! 				    "occurence of the same", format_char);
  	  else if (!color_begin)
  	    format_warning_at_char (format_string_loc, format_string_cst,
  				    format_chars - orig_format_chars,
--- 4025,4031 ----
  				    format_chars - orig_format_chars,
  				    OPT_Wformat_,
  				    "%qc directive redundant after prior "
! 				    "occurrence of the same", format_char);
  	  else if (!color_begin)
  	    format_warning_at_char (format_string_loc, format_string_cst,
  				    format_chars - orig_format_chars,
*************** check_format_types (const substring_loc
*** 4375,4381 ****
  /* Given type TYPE, attempt to dereference the type N times
     (e.g. from ("int ***", 2) to "int *")
  
!    Return the derefenced type, with any qualifiers
     such as "const" stripped from the result, or
     NULL if unsuccessful (e.g. TYPE is not a pointer type).  */
  
--- 4375,4381 ----
  /* Given type TYPE, attempt to dereference the type N times
     (e.g. from ("int ***", 2) to "int *")
  
!    Return the dereferenced type, with any qualifiers
     such as "const" stripped from the result, or
     NULL if unsuccessful (e.g. TYPE is not a pointer type).  */
  
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-omp.cc gcc-17-20260531/gcc/c-family/c-omp.cc
*** gcc-17-20260524/gcc/c-family/c-omp.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-omp.cc	Sun May 31 22:32:05 2026
*************** c_omp_categorize_directive (const char *
*** 5034,5040 ****
    return NULL;
  }
  
! /* Auxilliary helper function for c_omp_expand_variant_construct.  */
  
  static tree
  c_omp_expand_variant_construct_r (vec<struct omp_variant> &candidates,
--- 5034,5040 ----
    return NULL;
  }
  
! /* Auxiliary helper function for c_omp_expand_variant_construct.  */
  
  static tree
  c_omp_expand_variant_construct_r (vec<struct omp_variant> &candidates,
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-opts.cc gcc-17-20260531/gcc/c-family/c-opts.cc
*** gcc-17-20260524/gcc/c-family/c-opts.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-opts.cc	Sun May 31 22:32:05 2026
*************** c_common_post_options (const char **pfil
*** 865,871 ****
    sanitize_cpp_opts ();
  
    /* Don't register include chains if under -fpreprocessed since we might not
!      have correct sysroot this mode, and this may cause file permssion
       issue.  */
    if (!cpp_opts->preprocessed)
      register_include_chains (parse_in, sysroot, iprefix, imultilib,
--- 865,871 ----
    sanitize_cpp_opts ();
  
    /* Don't register include chains if under -fpreprocessed since we might not
!      have correct sysroot this mode, and this may cause file permission
       issue.  */
    if (!cpp_opts->preprocessed)
      register_include_chains (parse_in, sysroot, iprefix, imultilib,
diff -Nrcpad gcc-17-20260524/gcc/c-family/c-ubsan.cc gcc-17-20260531/gcc/c-family/c-ubsan.cc
*** gcc-17-20260524/gcc/c-family/c-ubsan.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c-ubsan.cc	Sun May 31 22:32:05 2026
*************** ubsan_instrument_bounds (location_t loc,
*** 560,566 ****
  /* Instrument array bounds for the pointer array address which is
     a call to .ACCESS_WITH_SIZE.  We create special
     builtin, that gets expanded in the sanopt pass, and make an array
!    dimention of it.  POINTER_ADDR is the pointer array's base address.
     *INDEX is an index to the array.
     IGNORE_OFF_BY_ONE is true if the POINTER_ADDR is not inside an
     INDIRECT_REF.
--- 560,566 ----
  /* Instrument array bounds for the pointer array address which is
     a call to .ACCESS_WITH_SIZE.  We create special
     builtin, that gets expanded in the sanopt pass, and make an array
!    dimension of it.  POINTER_ADDR is the pointer array's base address.
     *INDEX is an index to the array.
     IGNORE_OFF_BY_ONE is true if the POINTER_ADDR is not inside an
     INDIRECT_REF.
diff -Nrcpad gcc-17-20260524/gcc/c-family/c.opt gcc-17-20260531/gcc/c-family/c.opt
*** gcc-17-20260524/gcc/c-family/c.opt	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/c-family/c.opt	Sun May 31 22:32:05 2026
*************** Wstrict-null-sentinel
*** 1443,1452 ****
  C++ ObjC++ Warning Var(warn_strict_null_sentinel)
  Warn about uncasted NULL used as sentinel.
  
- Wstrict-overflow=
- C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) IntegerRange(0, 5)
- ;
- 
  Wstrict-prototypes
  C ObjC Var(warn_strict_prototypes) Warning
  Warn about unprototyped function declarations.
--- 1443,1448 ----
diff -Nrcpad gcc-17-20260524/gcc/calls.cc gcc-17-20260531/gcc/calls.cc
*** gcc-17-20260524/gcc/calls.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/calls.cc	Sun May 31 22:32:05 2026
*************** static void compute_argument_addresses (
*** 159,164 ****
--- 159,166 ----
  static rtx rtx_for_function_call (tree, tree);
  static void load_register_parameters (struct arg_data *, int, rtx *, int,
  				      int, bool *);
+ static rtx allocate_call_dynamic_stack_space (rtx, unsigned int, HOST_WIDE_INT,
+ 					      rtx *, poly_int64 *);
  static int special_function_p (const_tree, int);
  static bool check_sibcall_argument_overlap_1 (rtx);
  static bool check_sibcall_argument_overlap (rtx_insn *, struct arg_data *,
*************** mark_stack_region_used (poly_uint64 lowe
*** 211,216 ****
--- 213,240 ----
      stack_usage_watermark = MIN (stack_usage_watermark, const_lower);
  }
  
+ /* Allocate temporary call-related stack space with ALIGN alignment.
+ 	 Save the stack pointer on first use so the caller can restore it after
+ 	 the call sequence completes.  */
+ 
+ static rtx
+ allocate_call_dynamic_stack_space (rtx size, unsigned int align,
+ 				   HOST_WIDE_INT known_size,
+ 				   rtx *old_stack_level,
+ 				   poly_int64 *old_pending_adj)
+ {
+   if (*old_stack_level == 0)
+     {
+       emit_stack_save (SAVE_BLOCK, old_stack_level);
+       *old_pending_adj = pending_stack_adjust;
+       pending_stack_adjust = 0;
+     }
+ 
+   /* We can pass TRUE as the 5th argument because we just saved the stack
+ 	   pointer and will restore it right after the call.  */
+   return allocate_dynamic_stack_space (size, align, align, known_size, true);
+ }
+ 
  /* Force FUNEXP into a form suitable for the address of a CALL,
     and return that as an rtx.  Also load the static chain register
     if FNDECL is a nested function.
*************** initialize_argument_information (int num
*** 1481,1510 ****
  
  	      if (!COMPLETE_TYPE_P (type)
  		  || TREE_CODE (TYPE_SIZE_UNIT (type)) != INTEGER_CST
  		  || (flag_stack_check == GENERIC_STACK_CHECK
  		      && compare_tree_int (TYPE_SIZE_UNIT (type),
  					   STACK_CHECK_MAX_VAR_SIZE) > 0))
  		{
! 		  /* This is a variable-sized object.  Make space on the stack
! 		     for it.  */
  		  rtx size_rtx = expr_size (args[i].tree_value);
  
! 		  if (*old_stack_level == 0)
! 		    {
! 		      emit_stack_save (SAVE_BLOCK, old_stack_level);
! 		      *old_pending_adj = pending_stack_adjust;
! 		      pending_stack_adjust = 0;
! 		    }
! 
! 		  /* We can pass TRUE as the 4th argument because we just
! 		     saved the stack pointer and will restore it right after
! 		     the call.  */
! 		  copy = allocate_dynamic_stack_space (size_rtx,
! 						       TYPE_ALIGN (type),
! 						       TYPE_ALIGN (type),
! 						       max_int_size_in_bytes
! 						       (type),
! 						       true);
  		  copy = gen_rtx_MEM (BLKmode, copy);
  		  set_mem_attributes (copy, type, 1);
  		}
--- 1505,1527 ----
  
  	      if (!COMPLETE_TYPE_P (type)
  		  || TREE_CODE (TYPE_SIZE_UNIT (type)) != INTEGER_CST
+ 		  || (targetm.calls.overaligned_stack_slot_required ()
+ 		      && TYPE_ALIGN (type) > MAX_SUPPORTED_STACK_ALIGNMENT)
  		  || (flag_stack_check == GENERIC_STACK_CHECK
  		      && compare_tree_int (TYPE_SIZE_UNIT (type),
  					   STACK_CHECK_MAX_VAR_SIZE) > 0))
  		{
! 		  /* Variable-sized or over-aligned by-reference arguments cannot
! 		     use a regular stack temp when the target can't guarantee the
! 		     requested alignment for stack slots.  Allocate temporary
! 		     space dynamically and restore the stack right after the call.  */
  		  rtx size_rtx = expr_size (args[i].tree_value);
  
! 		  copy = allocate_call_dynamic_stack_space (size_rtx,
! 						 TYPE_ALIGN (type),
! 						 max_int_size_in_bytes (type),
! 						 old_stack_level,
! 						 old_pending_adj);
  		  copy = gen_rtx_MEM (BLKmode, copy);
  		  set_mem_attributes (copy, type, 1);
  		}
*************** expand_call (tree exp, rtx target, int i
*** 2911,2918 ****
  	    /* For variable-sized objects, we must be called with a target
  	       specified.  If we were to allocate space on the stack here,
  	       we would have no way of knowing when to free it.  */
! 	    rtx d = assign_temp (rettype, 1, 1);
! 	    structure_value_addr = XEXP (d, 0);
  	    target = 0;
  	  }
        }
--- 2928,2950 ----
  	    /* For variable-sized objects, we must be called with a target
  	       specified.  If we were to allocate space on the stack here,
  	       we would have no way of knowing when to free it.  */
! 	    if (targetm.calls.overaligned_stack_slot_required ()
! 		&& TYPE_ALIGN (rettype) > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	      {
! 		unsigned HOST_WIDE_INT size;
! 
! 		gcc_checking_assert (TREE_CODE (TYPE_SIZE_UNIT (rettype))
! 				     == INTEGER_CST);
! 		size = tree_to_uhwi (TYPE_SIZE_UNIT (rettype));
! 		structure_value_addr = allocate_call_dynamic_stack_space (
! 		  gen_int_mode (size, Pmode), TYPE_ALIGN (rettype), size,
! 		  &old_stack_level, &old_pending_adj);
! 	      }
! 	    else
! 	      {
! 		rtx d = assign_temp (rettype, 1, 1);
! 		structure_value_addr = XEXP (d, 0);
! 	      }
  	    target = 0;
  	  }
        }
diff -Nrcpad gcc-17-20260524/gcc/ccmp.cc gcc-17-20260531/gcc/ccmp.cc
*** gcc-17-20260524/gcc/ccmp.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ccmp.cc	Sun May 31 22:32:05 2026
*************** get_compare_parts (tree t, rtx_code *rco
*** 159,165 ****
     result of the previous CMP or CCMP.  The function expands the
     next compare based on G which is ANDed/ORed with the previous
     compare depending on CODE.
!    PREP_SEQ returns all insns to prepare opearands for compare.
     GEN_SEQ returns all compare insns.  */
  static rtx
  expand_ccmp_next (tree op, tree_code code, rtx prev,
--- 159,165 ----
     result of the previous CMP or CCMP.  The function expands the
     next compare based on G which is ANDed/ORed with the previous
     compare depending on CODE.
!    PREP_SEQ returns all insns to prepare operands for compare.
     GEN_SEQ returns all compare insns.  */
  static rtx
  expand_ccmp_next (tree op, tree_code code, rtx prev,
*************** expand_ccmp_next (tree op, tree_code cod
*** 182,188 ****
  
     hook gen_ccmp_first is used to expand the first compare.
     hook gen_ccmp_next is used to expand the following CCMP.
!    PREP_SEQ returns all insns to prepare opearand.
     GEN_SEQ returns all compare insns.  */
  static rtx
  expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq)
--- 182,188 ----
  
     hook gen_ccmp_first is used to expand the first compare.
     hook gen_ccmp_next is used to expand the following CCMP.
!    PREP_SEQ returns all insns to prepare operand.
     GEN_SEQ returns all compare insns.  */
  static rtx
  expand_ccmp_expr_1 (gimple *g, rtx_insn **prep_seq, rtx_insn **gen_seq)
diff -Nrcpad gcc-17-20260524/gcc/ccmp.h gcc-17-20260531/gcc/ccmp.h
*** gcc-17-20260524/gcc/ccmp.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/ccmp.h	Sun May 31 22:32:05 2026
***************
*** 1,4 ****
! /* Conditional comapre related functions.
     Copyright (C) 2014-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Conditional compare related functions.
     Copyright (C) 2014-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-17-20260524/gcc/cfg.cc gcc-17-20260531/gcc/cfg.cc
*** gcc-17-20260524/gcc/cfg.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfg.cc	Sun May 31 22:32:05 2026
*************** update_bb_profile_for_threading (basic_b
*** 977,983 ****
    gcc_assert (bb == taken_edge->src);
  
    /* If there is no profile or the threaded path is never executed
!      we don't need to upate.  */
    if (!bb->count.initialized_p ()
        || count == profile_count::zero ())
      return;
--- 977,983 ----
    gcc_assert (bb == taken_edge->src);
  
    /* If there is no profile or the threaded path is never executed
!      we don't need to update.  */
    if (!bb->count.initialized_p ()
        || count == profile_count::zero ())
      return;
diff -Nrcpad gcc-17-20260524/gcc/cfganal.cc gcc-17-20260531/gcc/cfganal.cc
*** gcc-17-20260524/gcc/cfganal.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfganal.cc	Sun May 31 22:32:05 2026
*************** post_order_compute (int *post_order, boo
*** 742,748 ****
  
  /* Helper routine for inverted_rev_post_order_compute
     flow_dfs_compute_reverse_execute, and the reverse-CFG
!    deapth first search in dominance.cc.
     BB has to belong to a region of CFG
     unreachable by inverted traversal from the exit.
     i.e. there's no control flow path from ENTRY to EXIT
--- 742,748 ----
  
  /* Helper routine for inverted_rev_post_order_compute
     flow_dfs_compute_reverse_execute, and the reverse-CFG
!    depth first search in dominance.cc.
     BB has to belong to a region of CFG
     unreachable by inverted traversal from the exit.
     i.e. there's no control flow path from ENTRY to EXIT
*************** ret_from_find_loops:
*** 1304,1310 ****
  	    dest_scc = bb_data[dest_scc].scc;
  	  if (src_scc == dest_scc)
  	    continue;
! 	  /* When dest_scc is nested insde src_scc it's not an
  	     exit.  */
  	  int tem_dest_scc = dest_scc;
  	  unsigned dest_scc_depth = 0;
--- 1304,1310 ----
  	    dest_scc = bb_data[dest_scc].scc;
  	  if (src_scc == dest_scc)
  	    continue;
! 	  /* When dest_scc is nested inside src_scc it's not an
  	     exit.  */
  	  int tem_dest_scc = dest_scc;
  	  unsigned dest_scc_depth = 0;
diff -Nrcpad gcc-17-20260524/gcc/cfgbuild.cc gcc-17-20260531/gcc/cfgbuild.cc
*** gcc-17-20260524/gcc/cfgbuild.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfgbuild.cc	Sun May 31 22:32:05 2026
*************** find_many_sub_basic_blocks (sbitmap bloc
*** 791,797 ****
  	/* If nothing changed, there is no need to create new BBs.  */
  	if (EDGE_COUNT (bb->succs) == n_succs[bb->index])
  	  {
! 	    /* In rare occassions RTL expansion might have mistakely assigned
  	       a probabilities different from what is in CFG.  This happens
  	       when we try to split branch to two but optimize out the
  	       second branch during the way. See PR81030.  */
--- 791,797 ----
  	/* If nothing changed, there is no need to create new BBs.  */
  	if (EDGE_COUNT (bb->succs) == n_succs[bb->index])
  	  {
! 	    /* In rare occasions RTL expansion might have mistakely assigned
  	       a probabilities different from what is in CFG.  This happens
  	       when we try to split branch to two but optimize out the
  	       second branch during the way. See PR81030.  */
diff -Nrcpad gcc-17-20260524/gcc/cfgexpand.cc gcc-17-20260531/gcc/cfgexpand.cc
*** gcc-17-20260524/gcc/cfgexpand.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfgexpand.cc	Sun May 31 22:32:05 2026
*************** vars_ssa_cache::dump (FILE *file)
*** 722,728 ****
  /* Returns the filled in cache for NAME.
     This will fill in the cache if it does not exist already.
     Returns an empty for ssa names that can't contain pointers
!    (only intergal types and pointer types will contain pointers).  */
  
  const_bitmap
  vars_ssa_cache::operator() (tree name)
--- 722,728 ----
  /* Returns the filled in cache for NAME.
     This will fill in the cache if it does not exist already.
     Returns an empty for ssa names that can't contain pointers
!    (only integral types and pointer types will contain pointers).  */
  
  const_bitmap
  vars_ssa_cache::operator() (tree name)
*************** add_scope_conflicts_1 (vars_ssa_cache &c
*** 900,906 ****
  	    {
  	      /* When we are inheriting live variables from our predecessors
  		 through a CFG merge we might not see an actual mention of
! 		 the variables to record the approprate conflict as defs/uses
  		 might be through indirect stores/loads.  For this reason
  		 we have to make sure each live variable conflicts with
  		 each other.  When there's just a single predecessor the
--- 900,906 ----
  	    {
  	      /* When we are inheriting live variables from our predecessors
  		 through a CFG merge we might not see an actual mention of
! 		 the variables to record the appropriate conflict as defs/uses
  		 might be through indirect stores/loads.  For this reason
  		 we have to make sure each live variable conflicts with
  		 each other.  When there's just a single predecessor the
*************** set_parm_rtl (tree parm, rtx x)
*** 1697,1703 ****
  					      TYPE_MODE (TREE_TYPE (parm)),
  					      TYPE_ALIGN (TREE_TYPE (parm)));
  
!       /* If the variable alignment is very large we'll dynamicaly
  	 allocate it, which means that in-frame portion is just a
  	 pointer.  ??? We've got a pseudo for sure here, do we
  	 actually dynamically allocate its spilling area if needed?
--- 1697,1703 ----
  					      TYPE_MODE (TREE_TYPE (parm)),
  					      TYPE_ALIGN (TREE_TYPE (parm)));
  
!       /* If the variable alignment is very large we'll dynamically
  	 allocate it, which means that in-frame portion is just a
  	 pointer.  ??? We've got a pseudo for sure here, do we
  	 actually dynamically allocate its spilling area if needed?
*************** expand_one_ssa_partition (tree var)
*** 1847,1853 ****
  					  TYPE_MODE (TREE_TYPE (var)),
  					  TYPE_ALIGN (TREE_TYPE (var)));
  
!   /* If the variable alignment is very large we'll dynamicaly allocate
       it, which means that in-frame portion is just a pointer.  */
    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
      align = GET_MODE_ALIGNMENT (Pmode);
--- 1847,1853 ----
  					  TYPE_MODE (TREE_TYPE (var)),
  					  TYPE_ALIGN (TREE_TYPE (var)));
  
!   /* If the variable alignment is very large we'll dynamically allocate
       it, which means that in-frame portion is just a pointer.  */
    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
      align = GET_MODE_ALIGNMENT (Pmode);
*************** expand_one_var (tree var, bool toplevel,
*** 2075,2081 ****
        else
  	align = MINIMUM_ALIGNMENT (var, DECL_MODE (var), DECL_ALIGN (var));
  
!       /* If the variable alignment is very large we'll dynamicaly allocate
  	 it, which means that in-frame portion is just a pointer.  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
  	align = GET_MODE_ALIGNMENT (Pmode);
--- 2075,2081 ----
        else
  	align = MINIMUM_ALIGNMENT (var, DECL_MODE (var), DECL_ALIGN (var));
  
!       /* If the variable alignment is very large we'll dynamically allocate
  	 it, which means that in-frame portion is just a pointer.  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
  	align = GET_MODE_ALIGNMENT (Pmode);
*************** expand_debug_expr (tree exp)
*** 4924,4930 ****
        /* Fall through.  */
  
      case INTEGER_CST:
!       if (TREE_CODE (TREE_TYPE (exp)) == BITINT_TYPE
  	  && TYPE_MODE (TREE_TYPE (exp)) == BLKmode)
  	return NULL;
        /* FALLTHRU */
--- 4924,4930 ----
        /* Fall through.  */
  
      case INTEGER_CST:
!       if (BITINT_TYPE_P (TREE_TYPE (exp))
  	  && TYPE_MODE (TREE_TYPE (exp)) == BLKmode)
  	return NULL;
        /* FALLTHRU */
*************** discover_nonconstant_array_refs_r (tree
*** 6748,6754 ****
    /* References of size POLY_INT_CST to a fixed-size object must go
       through memory.  It's more efficient to force that here than
       to create temporary slots on the fly.
!      RTL expansion expectes TARGET_MEM_REF to always address actual memory.
       Also, force to stack non-BLKmode vars accessed through VIEW_CONVERT_EXPR
       to BLKmode type.  */
    else if (TREE_CODE (t) == TARGET_MEM_REF
--- 6748,6754 ----
    /* References of size POLY_INT_CST to a fixed-size object must go
       through memory.  It's more efficient to force that here than
       to create temporary slots on the fly.
!      RTL expansion expects TARGET_MEM_REF to always address actual memory.
       Also, force to stack non-BLKmode vars accessed through VIEW_CONVERT_EXPR
       to BLKmode type.  */
    else if (TREE_CODE (t) == TARGET_MEM_REF
*************** pass_expand::execute (function *fun)
*** 7084,7091 ****
    crtl->init_stack_alignment ();
    fun->cfg->max_jumptable_ents = 0;
  
!   /* Resovle the function section.  Some targets, like ARM EABI rely on knowledge
!      of the function section at exapnsion time to predict distance of calls.  */
    resolve_unique_section (current_function_decl, 0, flag_function_sections);
  
    /* Expand the variables recorded during gimple lowering.  */
--- 7084,7091 ----
    crtl->init_stack_alignment ();
    fun->cfg->max_jumptable_ents = 0;
  
!   /* Resolve the function section.  Some targets, like ARM EABI rely on knowledge
!      of the function section at expansion time to predict distance of calls.  */
    resolve_unique_section (current_function_decl, 0, flag_function_sections);
  
    /* Expand the variables recorded during gimple lowering.  */
diff -Nrcpad gcc-17-20260524/gcc/cfgloop.cc gcc-17-20260531/gcc/cfgloop.cc
*** gcc-17-20260524/gcc/cfgloop.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfgloop.cc	Sun May 31 22:32:05 2026
*************** likely_max_stmt_executions_int (class lo
*** 2008,2014 ****
  bool
  get_estimated_loop_iterations (class loop *loop, widest_int *nit)
  {
!   /* Even if the bound is not recorded, possibly we can derrive one from
       profile.  */
    if (!loop->any_estimate)
      {
--- 2008,2014 ----
  bool
  get_estimated_loop_iterations (class loop *loop, widest_int *nit)
  {
!   /* Even if the bound is not recorded, possibly we can derive one from
       profile.  */
    if (!loop->any_estimate)
      {
diff -Nrcpad gcc-17-20260524/gcc/cfgloopanal.cc gcc-17-20260531/gcc/cfgloopanal.cc
*** gcc-17-20260524/gcc/cfgloopanal.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfgloopanal.cc	Sun May 31 22:32:05 2026
*************** loop_count_in (const class loop *loop)
*** 265,271 ****
     entry of the loop.  If this is the case initialize RET with the number
     of iterations.
  
!    RELIABLE is set if profile indiates that the returned value should be
     realistic estimate.  (This is the case if we read profile and did not
     messed it up yet and not the case of guessed profiles.)
  
--- 265,271 ----
     entry of the loop.  If this is the case initialize RET with the number
     of iterations.
  
!    RELIABLE is set if profile indicates that the returned value should be
     realistic estimate.  (This is the case if we read profile and did not
     messed it up yet and not the case of guessed profiles.)
  
diff -Nrcpad gcc-17-20260524/gcc/cfgloopmanip.cc gcc-17-20260531/gcc/cfgloopmanip.cc
*** gcc-17-20260524/gcc/cfgloopmanip.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cfgloopmanip.cc	Sun May 31 22:32:05 2026
*************** loop_exit_for_scaling (class loop *loop)
*** 559,565 ****
     If DESIRED_COUNT is NULL, loop entry count will be used.
     In consistent profile usually loop exists as many times as it is entred.
  
!    Return updated exit if successfull and NULL otherwise. */
  
  edge
  update_loop_exit_probability_scale_dom_bbs (class loop *loop,
--- 559,565 ----
     If DESIRED_COUNT is NULL, loop entry count will be used.
     In consistent profile usually loop exists as many times as it is entred.
  
!    Return updated exit if successful and NULL otherwise. */
  
  edge
  update_loop_exit_probability_scale_dom_bbs (class loop *loop,
*************** update_loop_exit_probability_scale_dom_b
*** 619,625 ****
  
        If B2 count is smaller than desired exit edge count
        the profile was inconsistent with the newly discovered upper bound.
!       Probablity of edge B1->B2 is too low.  We do not attempt to fix
        that (as it is hard in general).  */
    if (desired_count > exit_edge->src->count
        && exit_edge->src->count.differs_from_p (desired_count))
--- 619,625 ----
  
        If B2 count is smaller than desired exit edge count
        the profile was inconsistent with the newly discovered upper bound.
!       Probability of edge B1->B2 is too low.  We do not attempt to fix
        that (as it is hard in general).  */
    if (desired_count > exit_edge->src->count
        && exit_edge->src->count.differs_from_p (desired_count))
*************** update_loop_exit_probability_scale_dom_b
*** 630,636 ****
  		   loop->num);
  	  exit_edge->src->count.dump (dump_file, cfun);
  	  fprintf (dump_file,
! 		   " which is smaller then desired count of exitting loop ");
  	  desired_count.dump (dump_file, cfun);
  	  fprintf (dump_file, ". Profile update is impossible.\n");
  	}
--- 630,636 ----
  		   loop->num);
  	  exit_edge->src->count.dump (dump_file, cfun);
  	  fprintf (dump_file,
! 		   " which is smaller then desired count of exiting loop ");
  	  desired_count.dump (dump_file, cfun);
  	  fprintf (dump_file, ". Profile update is impossible.\n");
  	}
*************** update_loop_exit_probability_scale_dom_b
*** 689,697 ****
  /* Scale profile in LOOP by P.
     If ITERATION_BOUND is not -1, scale even further if loop is predicted
     to iterate too many times.
!    Before caling this function, preheader block profile should be already
     scaled to final count.  This is necessary because loop iterations are
!    determined by comparing header edge count to latch ege count and thus
     they need to be scaled synchronously.  */
  
  void
--- 689,697 ----
  /* Scale profile in LOOP by P.
     If ITERATION_BOUND is not -1, scale even further if loop is predicted
     to iterate too many times.
!    Before calling this function, preheader block profile should be already
     scaled to final count.  This is necessary because loop iterations are
!    determined by comparing header edge count to latch edge count and thus
     they need to be scaled synchronously.  */
  
  void
diff -Nrcpad gcc-17-20260524/gcc/cgraph.cc gcc-17-20260531/gcc/cgraph.cc
*** gcc-17-20260524/gcc/cgraph.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cgraph.cc	Sun May 31 22:32:05 2026
*************** add_detected_attribute_1 (cgraph_node *n
*** 3083,3089 ****
        add_detected_attribute_1 (e->caller, attr, changed);
  }
  
! /* Add attribyte ATTR to function and its aliases.  */
  
  bool
  cgraph_node::add_detected_attribute (const char *attr)
--- 3083,3089 ----
        add_detected_attribute_1 (e->caller, attr, changed);
  }
  
! /* Add attribute ATTR to function and its aliases.  */
  
  bool
  cgraph_node::add_detected_attribute (const char *attr)
*************** cgraph_edge::maybe_hot_p (sreal scale)
*** 3442,3448 ****
    if (caller->frequency == NODE_FREQUENCY_HOT)
      return true;
  
!   /* Use IPA count and if it s not available appy local heuristics.  */
    if (c.initialized_p ())
      {
        /* A special case; AFDO zero means that function may quite possibly
--- 3442,3448 ----
    if (caller->frequency == NODE_FREQUENCY_HOT)
      return true;
  
!   /* Use IPA count and if it s not available apply local heuristics.  */
    if (c.initialized_p ())
      {
        /* A special case; AFDO zero means that function may quite possibly
diff -Nrcpad gcc-17-20260524/gcc/cgraph.h gcc-17-20260531/gcc/cgraph.h
*** gcc-17-20260524/gcc/cgraph.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cgraph.h	Sun May 31 22:32:05 2026
*************** public:
*** 219,225 ****
    void clone_references (symtab_node *node);
  
    /* Remove all stmt references in non-speculative references.
!      Those are not maintained during inlining & clonning.
       The exception are speculative references that are updated along
       with callgraph edges associated with them.  */
    void clone_referring (symtab_node *node);
--- 219,225 ----
    void clone_references (symtab_node *node);
  
    /* Remove all stmt references in non-speculative references.
!      Those are not maintained during inlining & cloning.
       The exception are speculative references that are updated along
       with callgraph edges associated with them.  */
    void clone_referring (symtab_node *node);
*************** public:
*** 237,243 ****
    void remove_stmt_references (gimple *stmt);
  
    /* Remove all stmt references in non-speculative references.
!      Those are not maintained during inlining & clonning.
       The exception are speculative references that are updated along
       with callgraph edges associated with them.  */
    void clear_stmts_in_references (void);
--- 237,243 ----
    void remove_stmt_references (gimple *stmt);
  
    /* Remove all stmt references in non-speculative references.
!      Those are not maintained during inlining & cloning.
       The exception are speculative references that are updated along
       with callgraph edges associated with them.  */
    void clear_stmts_in_references (void);
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1303,1309 ****
    /* Turn profile to global0.  Walk into inlined functions.  */
    void make_profile_global0 (profile_quality quality);
  
!   /* Scale profile by NUM/DEN.  Walk into inlined funtion.  */
    void apply_scale (profile_count num, profile_count den);
  
    /* Scale profile to given IPA_COUNT.
--- 1303,1309 ----
    /* Turn profile to global0.  Walk into inlined functions.  */
    void make_profile_global0 (profile_quality quality);
  
!   /* Scale profile by NUM/DEN.  Walk into inlined function.  */
    void apply_scale (profile_count num, profile_count den);
  
    /* Scale profile to given IPA_COUNT.
*************** public:
*** 1962,1968 ****
       pairs all linked to single statement.
  
       Note that ref may point to different symbol than the corresponding call
!      becuase the speculated edge may have been optimized (redirected to
       a clone) or inlined.
  
       Given an edge which is part of speculative call, return the first
--- 1962,1968 ----
       pairs all linked to single statement.
  
       Note that ref may point to different symbol than the corresponding call
!      because the speculated edge may have been optimized (redirected to
       a clone) or inlined.
  
       Given an edge which is part of speculative call, return the first
*************** public:
*** 2011,2017 ****
       target2.  */
    cgraph_edge *speculative_call_for_target (cgraph_node *);
  
!   /* Return REF corresponding to direct call in the specualtive call
       sequence.  */
    ipa_ref *speculative_call_target_ref ()
    {
--- 2011,2017 ----
       target2.  */
    cgraph_edge *speculative_call_for_target (cgraph_node *);
  
!   /* Return REF corresponding to direct call in the speculative call
       sequence.  */
    ipa_ref *speculative_call_target_ref ()
    {
diff -Nrcpad gcc-17-20260524/gcc/cif-code.def gcc-17-20260531/gcc/cif-code.def
*** gcc-17-20260524/gcc/cif-code.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cif-code.def	Sun May 31 22:32:05 2026
*************** DEFCIFCODE(VARIADIC_THUNK, CIF_FINAL_ERR
*** 103,109 ****
  DEFCIFCODE(ORIGINALLY_INDIRECT_CALL, CIF_FINAL_NORMAL,
  	   N_("originally indirect function call not considered for inlining"))
  
! /* Ths edge represents an indirect edge with a yet-undetermined callee .  */
  DEFCIFCODE(INDIRECT_UNKNOWN_CALL, CIF_FINAL_NORMAL,
  	   N_("indirect function call with a yet undetermined callee"))
  
--- 103,109 ----
  DEFCIFCODE(ORIGINALLY_INDIRECT_CALL, CIF_FINAL_NORMAL,
  	   N_("originally indirect function call not considered for inlining"))
  
! /* The edge represents an indirect edge with a yet-undetermined callee .  */
  DEFCIFCODE(INDIRECT_UNKNOWN_CALL, CIF_FINAL_NORMAL,
  	   N_("indirect function call with a yet undetermined callee"))
  
diff -Nrcpad gcc-17-20260524/gcc/cobol/ChangeLog gcc-17-20260531/gcc/cobol/ChangeLog
*** gcc-17-20260524/gcc/cobol/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,167 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* compare.cc (alpha_compare): Fix typos.
+ 	* Make-lang.in: Fix typos.
+ 	* except.cc (cbl_enabled_exceptions_t::turn_on_off): Likewise.
+ 	* genapi.cc (MAX_AFTERS): Likewise.
+ 	(cobol_compare): Likewise.
+ 	(enter_program_common): Likewise.
+ 	(parser_bsearch_end): Likewise.
+ 	(parser_set_pointers): Likewise.
+ 	* gengen.cc (chain_parameter_to_function): Likewise.
+ 	* gengen.h (gg_return): Likewise.
+ 	* genutil.cc (refer_is_clean): Likewise.
+ 	* lexio.cc (right_margin): Likewise.
+ 	(maybe_add_space): Likewise.
+ 	* messages.cc: Likewise.
+ 	* parse_ante.h (procedure_division_ready): Likewise.
+ 	* structs.cc (create_cblc_field_t): Likewise.
+ 	* symbols.cc (special_pair_cmp): Likewise.
+ 	(symbol_table_init): Likewise.
+ 	(symbol_label_add): Likewise.
+ 	* symbols.h: Likewise.
+ 	* util.cc (date_time_fmt): Likewise.
+ 	(cobol_lineno): Likewise.
+ 
+ 2026-05-29  Robert Dubner  <rdubner@symas.com>
+ 	    James K. Lowden  <jklowden@cobolworx.com>
+ 	    Xavier Del Campo  <xdelcampo@symas.com>
+ 
+ 	* Make-lang.in: Include gcobc script.
+ 	* cdf.y: Change formal parameters of cdf_literalize().
+ 	* cobol1.cc (cobol_langhook_handle_option): Add OPT_ftrunc option.
+ 	* compare.cc (total_digits_tree): Remove debugging statements.
+ 	(float_compare): Likewise.
+ 	* copybook.h (class copybook_elem_t): Update conditional close().
+ 	* dts.h: Change copyright notice.
+ 	* gcobc: Likewise.
+ 	* gcobol.1: Likewise.
+ 	* gcobol.3: Likewise.
+ 	* gcobolspec.cc (COMPAT_LIBRARY): POSIX compatibility.
+ 	(POSIX_LIBRARY): Likewise.
+ 	(lang_specific_driver): Likewise.
+ 	* genapi.cc (section_label): Missing LABEL_EXPR detection.
+ 	(paragraph_label): Likewise.
+ 	(internal_perform_through): Likewise.
+ 	(enter_program_common): Add comment.
+ 	(parser_enter_program): Change current_program_index() handling.
+ 	(build_alter_switch): Missing LABEL_EXPR detection.
+ 	(parser_display_internal): Handle REFER_T_ADDRESS_OF flag.
+ 	(create_and_call): ADDRESS OF is passed BY VALUE.
+ 	* gengen.cc (LOOK_FOR_MISSING_LABELS_not): Missing LABEL_EXPR
+ 	detection.
+ 	(dump_missing_labels): Likewise.
+ 	(gg_append_statement): Likewise.
+ 	(gg_struct_field_ref): Likewise.
+ 	(LABEL_ROOT): Likewise.
+ 	(gg_create_goto_pair): Likewise.
+ 	(scm_dump_generic_nodes): Forward declaration.
+ 	(gg_leaving_the_source_code_file): Missing LABEL_EXPR detection.
+ 	(label_decl_text_from_expr): New function.
+ 	* gengen.h (gg_create_assembler_name): New declaration.
+ 	(label_decl_text_from_expr): New declaration.
+ 	* genmath.cc (uchar_f_node): Fast ADD N TO NUMERIC-DISPLAY.
+ 	(uchar_ten_node): Likewise.
+ 	(fast_add): Likewise.
+ 	(fast_subtract): Likewise.
+ 	(parser_add): Likewise.
+ 	(add_floats): Likewise.
+ 	(ordinary_add_format_1): Likewise.
+ 	(ordinary_subtract_format_1): Likewise.
+ 	(add_case_1): Likewise.
+ 	(add_case_2): Likewise.
+ 	(add_case_3): Likewise.
+ 	(parser_multiply): Likewise.
+ 	(add_case_4): Likewise.
+ 	(add_litN_to_numdisp): Likewise.
+ 	(add_format_1): Likewise.
+ 	(add_format_2): Likewise.
+ 	(add_format_3): Likewise.
+ 	(subtract_floats): Likewise.
+ 	(subtract_format_1): Likewise.
+ 	(subtract_format_2): Likewise.
+ 	(subtract_format_3): Likewise.
+ 	(parser_subtract): Likewise.
+ 	* genutil.cc (refer_has_depends): False when type == FldIndex.
+ 	* lang-specs.h: Add fdefaultbyte, fstatic-call, ftrunc.
+ 	* lang.opt: Add ftrunc.
+ 	* lexio.cc (cdftext::open_input): Improved error message.
+ 	* parse.y: CDF support, POSIX support.
+ 	* parse_ante.h (cbl_division_t): Different enum.
+ 	(mode_syntax_only): New implementation of syntax_only.
+ 	(parse_error_inc): Likewise.
+ 	(resume_parsing): Likewise.
+ 	(successful_parse): Likewise.
+ 	(name_of): Formal parameter is now const.
+ 	(nice_name_of): Likewise.
+ 	(ast_op): Chanage formal parameters.
+ 	(prototype_ok): COBOL function prototypes.
+ 	(struct prototype_type_t): Likewise.
+ 	(is_allowed_name): Likewise.
+ 	(prototype_add): Likewise.
+ 	(prototype_args): Likewise.
+ 	(verify_args): Likewise.
+ 	(valid_pointer_relop): New function.
+ 	(field_value_all): Eliminate.
+ 	(current_field): COBOL function prototypes.
+ 	(ast_enter_exit_section): Improved error messages.
+ 	(data_division_ready): Improved mode_syntax_only.
+ 	(file_section_fd_set): Change "return false" to "return 0".
+ 	(ast_end_program): Improved mode_syntax_only.
+ 	* scan_ante.h (symbol_function_token): Use symbol_function_any().
+ 	(symbol_exists): Change for() loop termination.
+ 	(typed_name): COBOL function prototypes.
+ 	* structs.cc: Support for buffered FILE READ.
+ 	* symbols.cc (symbol_field_location): Use field_locs[] map.
+ 	(symbol_table_extend): Likewise.
+ 	(is_prototypical): COBOL function prototypes.
+ 	(symbol_elem_cmp): Likewise.
+ 	(symbol_program): Likewise.
+ 	(struct symbol_elem_t): Likewise.
+ 	(symbol_function): Likewise.
+ 	(enum protoreq_t): Likewise.
+ 	(symbol_function_impl): Likewise.
+ 	(struct cbl_label_t): Likewise.
+ 	(symbol_function_any): Likewise.
+ 	(symbols_dump): Likewise.
+ 	(cbl_field_t::attr_str): Likewise.
+ 	(field_str): Likewise.
+ 	(symbols_update): Likewise.
+ 	(symbol_field_add): Likewise.
+ 	(symbol_field_same_as): Likewise.
+ 	(cbl_alphabet_t::reencode): Detect iconv() errors.
+ 	(symbol_program_add): COBOL function prototypes.
+ 	* symbols.h (enum dspc_t): Enum for Division, Section, Paragraph,
+ 	Clause.
+ 	(cbl_prototype_ok): COBOL function prototypes.
+ 	(valid_move): Handle strong typing.
+ 	(struct parameter_t): Improved function parameter handling.
+ 	(struct cbl_ffi_arg_t): Likewise.
+ 	(struct cbl_label_t): COBOL function prototypes.
+ 	(struct function_descr_t): Likewise.
+ 	(struct cbl_alphabet_t): Detect iconv() errors.
+ 	(struct cbl_file_t): Support for LINAGE and the like.
+ 	(prototype_args):COBOL function prototypes.
+ 	(is_prototypical):COBOL function prototypes.
+ 	(is_numeric): Refmods are not numeric.
+ 	(struct symbol_elem_t): Additional declarations.
+ 	* symfind.cc (update_symbol_map2): Use symbols map.
+ 	* token_names.h: New comment.
+ 	* util.cc (cbl_prototype_ok): COBOL function prototypes.
+ 	(cdf_literalize): New formal parameters.
+ 	(effective_type): New function.
+ 	(valid_move): Handle strong typing.
+ 	(cobol_trunc_binary): Handle new ftrunc option.
+ 	(parse_error_reset): Forward declaration.
+ 	(parse_file): Formatting.
+ 	* util.h (cobol_trunc_binary): New declaration.
+ 
+ 2026-05-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR cobol/125404
+ 	* symfind.cc (symbol_find): Add assertion that ancestors vector
+ 	is not empty.
+ 
  2026-05-12  Robert Dubner  <rdubner@symas.com>
  
  	* Make-lang.in: Incorporate new gcc/cobol/compare.cc file.
diff -Nrcpad gcc-17-20260524/gcc/cobol/Make-lang.in gcc-17-20260531/gcc/cobol/Make-lang.in
*** gcc-17-20260524/gcc/cobol/Make-lang.in	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/Make-lang.in	Sun May 31 22:32:05 2026
*************** cobol/scan.cc: cobol/scan.l
*** 165,171 ****
  	$(FLEX) -o$@ $(LFLAGS) $< 2>$@~ || { cat $@~ >&1; exit 1; }
  	awk  '! /$(FLEX_WARNING)/ {print > "/dev/stderr"; nerr++}	\
  	     END {print "$(FLEX):", NR, "messages" > "/dev/stderr"}' $@~
- 	@rm $@~
  
  
  # To establish prerequisites for parse.o, cdf.o, and scan.o,
--- 165,170 ----
*************** cobol/scan.o: cobol/scan.cc			\
*** 244,249 ****
--- 243,256 ----
  	cobol/cdf.cc				\
  	cobol/parse.cc
  
+ # As opposed to other objects, gcobc is a shell script and therefore
+ # is only installed. In other words,no build step is necessary.
+ # However, some tests rely on gcobc being available from the build tree.
+ gcobc$(exeext): $(srcdir)/cobol/gcobc
+ 	cp $< $@
+ 
+ cobol: gcobc$(exeext)
+ 
  # Update token names if the generator script is installed
  # (by a developer) and there's been a change. 
  $(srcdir)/cobol/token_names.h: cobol/parse.cc
*************** cobol.mostlyclean:
*** 365,371 ****
  
  gcobol.clean:
  # This is intended for non-general use.  It is a last-ditch effort to flush
! # out all oject files and executable code for gcobol and libgcobol, causing 
  # a complete rebuild of all executable code.
  	rm -fr gcobol cobol1 cobol/*		\
  	../*/libgcobol/*
--- 372,378 ----
  
  gcobol.clean:
  # This is intended for non-general use.  It is a last-ditch effort to flush
! # out all object files and executable code for gcobol and libgcobol, causing 
  # a complete rebuild of all executable code.
  	rm -fr gcobol cobol1 cobol/*		\
  	../*/libgcobol/*
diff -Nrcpad gcc-17-20260524/gcc/cobol/cdf.y gcc-17-20260531/gcc/cobol/cdf.y
*** gcc-17-20260524/gcc/cobol/cdf.y	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/cdf.y	Sun May 31 22:32:05 2026
*************** void input_file_status_notify();
*** 154,161 ****
    cdfval_t negate( cdfval_base_t lhs );
  
    cbl_field_t
!   cdf_literalize( const std::string& name, const cdfval_t& value );
! 
  }
  
  %{
--- 154,161 ----
    cdfval_t negate( cdfval_base_t lhs );
  
    cbl_field_t
!   cdf_literalize( const cbl_loc_t& loc,
!                   const std::string& name, const cdfval_t& value, bool init = true );
  }
  
  %{
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 359,365 ****
  		    YYERROR;
  		  }
                    if( symbols_begin() < symbols_end() ) {
!                     cbl_field_t field = cdf_literalize($NAME, $value);
                      symbol_field_add(current_program_index(), &field);                    
                    }
  
--- 359,365 ----
  		    YYERROR;
  		  }
                    if( symbols_begin() < symbols_end() ) {
!                     cbl_field_t field = cdf_literalize(@NAME, $NAME, $value);
                      symbol_field_add(current_program_index(), &field);                    
                    }
  
diff -Nrcpad gcc-17-20260524/gcc/cobol/cobol1.cc gcc-17-20260531/gcc/cobol/cobol1.cc
*** gcc-17-20260524/gcc/cobol/cobol1.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/cobol1.cc	Sun May 31 22:32:05 2026
*************** cobol_langhook_handle_option (size_t sco
*** 412,417 ****
--- 412,421 ----
              }
              return true;
  
+         case OPT_ftrunc:
+             cobol_trunc_binary(cobol_trunc_bin);
+             return true;
+ 
          case OPT_M:
              cobol_set_pp_option('M');
              return true;
diff -Nrcpad gcc-17-20260524/gcc/cobol/compare.cc gcc-17-20260531/gcc/cobol/compare.cc
*** gcc-17-20260524/gcc/cobol/compare.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/compare.cc	Sun May 31 22:32:05 2026
*************** total_digits_tree( tree &left_rdigits,
*** 301,309 ****
                                          right_side.field->data.digits)));
      }
  
-   // gg_printf("KILROY  LEFT %d\n", left_rdigits, NULL_TREE);
-   // gg_printf("KILROY RIGHT %d\n", right_rdigits, NULL_TREE);
- 
    // We can reduce the two rdigits values by the common portion of both.  This
    // will leave one of them at zero
    IF( left_rdigits, gt_op, right_rdigits )
--- 301,306 ----
*************** alpha_compare(tree        &left,
*** 751,757 ****
        {
        // They are the same size, and neither is national or display.  This is
        // highly weird.  The only thing I can think causing it would be two
!       // files with different speci fied encodings.  Just have the left side
        // win.
        do_it = true;
        }
--- 748,754 ----
        {
        // They are the same size, and neither is national or display.  This is
        // highly weird.  The only thing I can think causing it would be two
!       // files with different specified encodings.  Just have the left side
        // win.
        do_it = true;
        }
*************** float_compare(tree        &left,
*** 1294,1304 ****
    right = gg_define_variable(type);
    gg_assign(right, gg_cast(type, rightv));
  
- //  gg_printf("KILROY %f %f\n",
- //            gg_cast(DOUBLE, left),
- //            gg_cast(DOUBLE, right),
- //            NULL_TREE);
- 
    if( right_side.field->attr & intermediate_e )
      {
      tree rdigits = gg_define_variable(INT);
--- 1291,1296 ----
diff -Nrcpad gcc-17-20260524/gcc/cobol/copybook.h gcc-17-20260531/gcc/cobol/copybook.h
*** gcc-17-20260524/gcc/cobol/copybook.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/copybook.h	Sun May 31 22:32:05 2026
*************** class copybook_elem_t {
*** 83,89 ****
    void clear() {
      suppress = false;
      nsubexpr = 0;
!     if( fd ) close(fd);
      fd = -1;
      // TODO: free src & tgt
      replacements.clear();
--- 83,89 ----
    void clear() {
      suppress = false;
      nsubexpr = 0;
!     if( fd >= 0 ) close(fd);
      fd = -1;
      // TODO: free src & tgt
      replacements.clear();
diff -Nrcpad gcc-17-20260524/gcc/cobol/dts.h gcc-17-20260531/gcc/cobol/dts.h
*** gcc-17-20260524/gcc/cobol/dts.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/dts.h	Sun May 31 22:32:05 2026
***************
*** 1,5 ****
  /*
!  * Contributed to the public domain by James K. Lowden
   * Tuesday October 17, 2023
   *
   * This stand-in for std::regex was written because the implementation provided
--- 1,35 ----
  /*
!  *
!  * Copyright (c) 2021-2026 Symas Corporation
!  *
!  * Redistribution and use in source and binary forms, with or without
!  * modification, are permitted provided that the following conditions are
!  * met:
!  *
!  * * Redistributions of source code must retain the above copyright
!  *   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
!  *   in the documentation and/or other materials provided with the
!  *   distribution.
!  * * Neither the name of the Symas Corporation nor the names of its
!  *   contributors may be used to endorse or promote products derived from
!  *   this software without specific prior written permission.
!  *
!  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
!  */
! 
! /* Contributed by James K. Lowden
   * Tuesday October 17, 2023
   *
   * This stand-in for std::regex was written because the implementation provided
diff -Nrcpad gcc-17-20260524/gcc/cobol/except.cc gcc-17-20260531/gcc/cobol/except.cc
*** gcc-17-20260524/gcc/cobol/except.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/except.cc	Sun May 31 22:32:05 2026
*************** cbl_enabled_exceptions_t::turn_on_off( b
*** 189,195 ****
                                             ec_cmp(ec, elem.ec); } )) ) {
        erase(p);
      }
!     // Keep the EC as an override if a higher-level would othewise apply.
      p = std::find_if( begin(), end(),
                        [ec = type]( const auto& elem ) {
                          return
--- 189,195 ----
                                             ec_cmp(ec, elem.ec); } )) ) {
        erase(p);
      }
!     // Keep the EC as an override if a higher-level would otherwise apply.
      p = std::find_if( begin(), end(),
                        [ec = type]( const auto& elem ) {
                          return
*************** cbl_enabled_exceptions_t::turn_on_off( b
*** 213,219 ****
                                               ec_cmp(ec, elem.ec); } )) ) {
          erase(p);
        }
!       // Keep the EC as an override if a higher-level would othewise apply.
        p = std::find_if( begin(), end(),
                          [ec = type, file]( const auto& elem ) {
                            return
--- 213,219 ----
                                               ec_cmp(ec, elem.ec); } )) ) {
          erase(p);
        }
!       // Keep the EC as an override if a higher-level would otherwise apply.
        p = std::find_if( begin(), end(),
                          [ec = type, file]( const auto& elem ) {
                            return
diff -Nrcpad gcc-17-20260524/gcc/cobol/gcobc gcc-17-20260531/gcc/cobol/gcobc
*** gcc-17-20260524/gcc/cobol/gcobc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gcobc	Sun May 31 22:32:05 2026
***************
*** 1,8 ****
  #! /bin/sh -e
  
  #
! # COPYRIGHT
! # The gcobc program is in public domain.
  # If it breaks then you get to keep both pieces.
  #
  # This file emulates the GnuCOBOL cobc compiler to a limited degree.
--- 1,34 ----
  #! /bin/sh -e
  
  #
! # Copyright (c) 2021-2026 Symas Corporation
! #
! # Redistribution and use in source and binary forms, with or without
! # modification, are permitted provided that the following conditions are
! # met:
! #
! # * Redistributions of source code must retain the above copyright
! #   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
! #   in the documentation and/or other materials provided with the
! #   distribution.
! # * Neither the name of the Symas Corporation nor the names of its
! #   contributors may be used to endorse or promote products derived from
! #   this software without specific prior written permission.
! #
! # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
! # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
! # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
! # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
! # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
! # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
! # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
! # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
! # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
! # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! #
  # If it breaks then you get to keep both pieces.
  #
  # This file emulates the GnuCOBOL cobc compiler to a limited degree.
*************** do
*** 207,216 ****
          -echo) echo="echo"
                 ;;
  
!         -fec=* | -fno-ec=*)
              opt="$(echo "$opt" | sed -E 's/-f(no-)?ec=/-f\1cobol-exceptions=EC-/g')"
               opts="$opts $opt"
               ;;
           -ext)
              pending_arg="-copyext "
               ;;
--- 233,244 ----
          -echo) echo="echo"
                 ;;
  
!         -fec=*)
              opt="$(echo "$opt" | sed -E 's/-f(no-)?ec=/-f\1cobol-exceptions=EC-/g')"
               opts="$opts $opt"
               ;;
+         -fno-ec=*)
+              ;;  # just ignore for now to work around "sorry unimplemented" errors
           -ext)
              pending_arg="-copyext "
               ;;
*************** do
*** 423,433 ****
          #
          # Options that may have a space  before the argument, or not
          #
!         -I | -L | -MF | -MT )
              pending_arg=$opt
              ;;
          # no-space version: just concatenate
!         -I* | -L* | -MF* | -MT* )
              opts="$opts $opt"
              ;;
          
--- 451,463 ----
          #
          # Options that may have a space  before the argument, or not
          #
!         # Note that -B is not supported as per cobc syntax, but it might
!         # still be required by gcc users.
!         -B | -I | -L | -MF | -MT )
              pending_arg=$opt
              ;;
          # no-space version: just concatenate
!         -B* | -I* | -L* | -MF* | -MT* )
              opts="$opts $opt"
              ;;
          
*************** do
*** 467,473 ****
          -std=mf | -std=mf-strict)  dialect=mf
                                     ;;
                        # GnuCOBOL's default and GCC's dialect for GnuCOBOL
!         -std=default) dialect=gnu  
                        ;;
                        # GCC COBOL targets COBOL2024 "mostly backward to COBOL85"
          -std=cobol*)  dialect="" 
--- 497,503 ----
          -std=mf | -std=mf-strict)  dialect=mf
                                     ;;
                        # GnuCOBOL's default and GCC's dialect for GnuCOBOL
!         -std=default) dialect="mf gnu"
                        ;;
                        # GCC COBOL targets COBOL2024 "mostly backward to COBOL85"
          -std=cobol*)  dialect="" 
*************** do
*** 497,503 ****
               # opts="$opts --version"
              ;;
          # pass through, strangely -Wall is not supported
!         -w | -W | -Wextra) opts="$opts $opt"
               ;;
          -Wno-*) no_warn "$opt"
               ;;
--- 527,535 ----
               # opts="$opts --version"
              ;;
          # pass through, strangely -Wall is not supported
!         # note that cobc does not support gcc's -Wl options, but they
!         # might be passed anyway for different reasons e.g.: -Wl,rpath.
!         -w | -W | -Wextra | -Wl,*) opts="$opts $opt"
               ;;
          -Wno-*) no_warn "$opt"
               ;;
*************** fi
*** 549,555 ****
  
  if [ "$echo" ]
  then
!     echo $gcobol $mode $opts
      exit
  fi
  
--- 581,587 ----
  
  if [ "$echo" ]
  then
!     echo $gcobol $mode $dialect $opts
      exit
  fi
  
diff -Nrcpad gcc-17-20260524/gcc/cobol/gcobol.1 gcc-17-20260531/gcc/cobol/gcobol.1
*** gcc-17-20260524/gcc/cobol/gcobol.1	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gcobol.1	Sun May 31 22:32:05 2026
***************
*** 1,7 ****
  .ds lang COBOL
  .ds gcobol GCC\ \*[lang]\ Front-end
  .ds isostd ISO/IEC 1989:2023
! .Dd \& February 2025
  .Dt GCOBOL 1\& "GCC \*[lang] Compiler"
  .Os Linux
  .Sh NAME
--- 1,7 ----
  .ds lang COBOL
  .ds gcobol GCC\ \*[lang]\ Front-end
  .ds isostd ISO/IEC 1989:2023
! .Dd \& May 2026
  .Dt GCOBOL 1\& "GCC \*[lang] Compiler"
  .Os Linux
  .Sh NAME
***************
*** 24,32 ****
  .Op Fl fcobol-exceptions Ar exception Ns Op Ns \/, Ns Ar exception Ns ...
  .Op Fl copyext Ar ext
  .Op Fl ffixed-form | Fl ffree-form
! .Op Fl findicator-column
  .Op Fl fexec-charset= Ns Ar encoding
  .Op Fl fexec-national-charset= Ns Ar encoding
  .ig
  .Op Fl collseq Ar encoding Ns \/, Fl ncolseq Ar encoding
  ..
--- 24,33 ----
  .Op Fl fcobol-exceptions Ar exception Ns Op Ns \/, Ns Ar exception Ns ...
  .Op Fl copyext Ar ext
  .Op Fl ffixed-form | Fl ffree-form
! .Op Fl findicator-column Ns Ar column
  .Op Fl fexec-charset= Ns Ar encoding
  .Op Fl fexec-national-charset= Ns Ar encoding
+ .Op Fl fno-trunc
  .ig
  .Op Fl collseq Ar encoding Ns \/, Fl ncolseq Ar encoding
  ..
*************** is an encoding name as defined by
*** 358,364 ****
  .Xr iconv 3 .
  To use an EBCDIC encoding for data items, one might use
  .D1 Fl fexec-national-charset= Ns Li CP1140
! for example. 
  .
  .It Fl dialect Ar dialect-name
  By default,
--- 359,378 ----
  .Xr iconv 3 .
  To use an EBCDIC encoding for data items, one might use
  .D1 Fl fexec-national-charset= Ns Li CP1140
! for example.
! .It Fl fno-trunc
! Affects
! .Sy BINARY
! data-items.  
! For arithmetic assignment and
! .Sy MOVE ,
! limit the value to the number of digits specified in the
! .Sy PICTURE ,
! not the capacity that the size of the binary storage would otherwise allow.
! Truncation happens from the left, meaning that
! .D1 77 RECEIVER PICTURE 9(3).
! .D1 MOVE 1000 TO RECEIVER.
! results in 0, not 100.  
  .
  .It Fl dialect Ar dialect-name
  By default,
*************** alphanumeric literal, or a
*** 799,805 ****
  data item.
  .Pp
  .Nm
! supports static linking where possible, unless defeated by
  .Fl fno-static-call .
  If the parameter value is known at compile time, the compiler produces
  an external reference to be resolved by the linker.  The referenced
--- 813,819 ----
  data item.
  .Pp
  .Nm
! uses static linking unless defeated by
  .Fl fno-static-call .
  If the parameter value is known at compile time, the compiler produces
  an external reference to be resolved by the linker.  The referenced
*************** ends with a call to
*** 876,883 ****
  .Xr abort 3
  and process termination. 
  .Pp
! Not all Exception Conditions are implemented.  Any attempt to enable
! an EC that that is not implemented produces a warning message.
  The following are implemented:
  .Pp
  .Bl -tag -offset 5n -compact
--- 890,896 ----
  .Xr abort 3
  and process termination. 
  .Pp
! Not all Exception Conditions are implemented.  
  The following are implemented:
  .Pp
  .Bl -tag -offset 5n -compact
*************** or
*** 1077,1082 ****
--- 1090,1151 ----
  Name of the start element tag or empty element tag.
  .El
  .
+ .Ss MicroFocus and GnuCOBOL Runtime Library
+ GnuCOBOL emulates some of the
+ .Dq "runtime library"
+ functions defined originally by MicroFocus COBOL (now owned by Rocket Software).
+ .Nm
+ includes a library,
+ .Pa libgcobol-compat-gnu ,
+ that
+ .Dq "emulates the emulation" ,
+ i.e., mimic the GnuCOBOL implementation. This version includes these functions:
+ .Bl -tag -compact
+ .It Sy CBL_ALLOC_MEM
+ .It Sy CBL_CHECK_FILE_EXIST
+ .It Sy CBL_CLOSE_FILE
+ .It Sy CBL_CREATE_FILE
+ .It Sy CBL_DELETE_FILE
+ .It Sy CBL_FREE_MEM
+ .It Sy CBL_OPEN_FILE
+ .It Sy CBL_READ_FILE
+ .It Sy CBL_WRITE_FILE
+ .El
+ These functions are implemented in COBOL as User Defined Functions.  
+ They are documented in man pages included with this distribution of
+ .Nm .
+ .
+ .Ss POSIX Bindings
+ To facilitate access to POSIX functions (in particular for the above
+ compatibility functions),
+ .Nm
+ includes
+ .Pa libgcobol-posix.so .
+ This library is written in COBOL as User Defined Functions. The
+ following functions are included:
+ .Bl -tag -compact
+ .It Sy posix-close
+ .It Sy posix-exit
+ .It Sy posix-fstat
+ .It Sy posix-ftruncate
+ .It Sy posix-localtime
+ .It Sy posix-lseek
+ .It Sy posix-mkdir
+ .It Sy posix-open
+ .It Sy posix-read
+ .It Sy posix-stat
+ .It Sy posix-unlink
+ .It Sy posix-write
+ .El
+ These functions have the same signature as defined by POSIX: the same
+ parameters, and the same return status.  If a string is NUL-terminated
+ according to POSIX, the COBOL functions accept ordinary COBOL
+ .Sy "PIC X"
+ data-items, and supply the NUL as needed.
+ .Pp
+ The POSIX bindings are not documented separately on the theory that
+ the POSIX definition suffices.
+ .
  .Sh ISO \*[lang] Implementation Status
  .Ss USAGE Data Types
  .Nm
*************** suite has been identified.
*** 1232,1238 ****
  .
  .Ss CDF Text Manipulation
  .Bl -tag -width >>DEFINE
! .It Sy COPY Ar copybook Li Oo OF|BY Ar library Oc Oo Sy REPLACING ... Oc
  If
  .Ar copybook
  is a literal, it treated a literal filename, which either does or does not exist.  If
--- 1301,1307 ----
  .
  .Ss CDF Text Manipulation
  .Bl -tag -width >>DEFINE
! .It Sy COPY Ar copybook Li Oo OF|IN Ar library Oc Oo Sy REPLACING ... Oc
  If
  .Ar copybook
  is a literal, it treated a literal filename, which either does or does not exist.  If
*************** are not compatible with that of any othe
*** 1996,1999 ****
--- 2065,2098 ----
  to the I/O support will be readily available to the paying customer.
  .El
  .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
  .\" .Sh BUGS
diff -Nrcpad gcc-17-20260524/gcc/cobol/gcobol.3 gcc-17-20260531/gcc/cobol/gcobol.3
*** gcc-17-20260524/gcc/cobol/gcobol.3	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gcobol.3	Sun May 31 22:32:05 2026
*************** structure is to allow the use of other I
*** 326,328 ****
--- 326,358 ----
  The library is not well tested, not least because it is not implemented.
  .Sh BUGS
  The future is yet to come.
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/gcc/cobol/gcobolspec.cc gcc-17-20260531/gcc/cobol/gcobolspec.cc
*** gcc-17-20260524/gcc/cobol/gcobolspec.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gcobolspec.cc	Sun May 31 22:32:05 2026
*************** int lang_specific_extra_outfiles = 0;
*** 69,74 ****
--- 69,82 ----
  #define COBOL_LIBRARY "gcobol"
  #endif
  
+ #ifndef COMPAT_LIBRARY
+ #define COMPAT_LIBRARY "gcobol_compat_gnu"
+ #endif
+ 
+ #ifndef POSIX_LIBRARY
+ #define POSIX_LIBRARY "gcobol_posix"
+ #endif
+ 
  #define SPEC_FILE "libgcobol.spec"
  
  /* The original argument list and related info is copied here.  */
*************** static const struct cl_decoded_option *o
*** 78,83 ****
--- 86,93 ----
  static std::vector<cl_decoded_option>new_opt;
  
  static bool need_libgcobol = true;
+ static bool need_libcompat = false; // This one need for dialect mf or ibm
+ static bool need_libposix = false;
  
  // #define NOISY 1
  
*************** lang_specific_driver (struct cl_decoded_
*** 160,165 ****
--- 170,177 ----
  
    // Separate flags for a couple of static libraries
    bool static_libgcobol  = false;
+   bool static_libcompat  = false;
+   bool static_libposix   = false;
    bool static_in_general = false;
  
    /*  WEIRDNESS ALERT:
*************** lang_specific_driver (struct cl_decoded_
*** 350,355 ****
--- 362,377 ----
             cool facility for handling --help and --verbose --help.  */
          return;
  
+       case OPT_dialect:
+         if(    strstr(decoded_options[i].arg, "ibm")
+             || strstr(decoded_options[i].arg, "mf") )
+           {
+           need_libcompat = true;
+           // libcompat depends on libposix.
+           need_libposix = true;
+           }
+         break;
+ 
        default:
          break;
        }
*************** lang_specific_driver (struct cl_decoded_
*** 485,490 ****
--- 507,517 ----
        }
      }
  
+     char dir_separator[] = {DIR_SEPARATOR, 0},
+       *tooldir = concat (STANDARD_EXEC_PREFIX, DEFAULT_TARGET_MACHINE,
+                          dir_separator, DEFAULT_TARGET_VERSION,
+                          dir_separator, "cobol", NULL);
+ 
    /*  As described above, we have empirically noticed that when the command line
        explicitly specifies libgcobol.a as an input, a following -lgcobol causes
        the "on exit" functions of the library to be executed twice.  This can
*************** lang_specific_driver (struct cl_decoded_
*** 514,519 ****
--- 541,564 ----
      {
      add_arg_lib(COBOL_LIBRARY, static_libgcobol);
      }
+   if( need_libcompat )
+     {
+     char *gnu = concat(tooldir, dir_separator, "compat", dir_separator, "gnu", NULL);
+     add_arg_lib(COMPAT_LIBRARY, static_libcompat);
+ 
+     // Inject the installation prefix paths to the libcompat copybooks.
+     // Note that these paths are inevitably leaked as append_option
+     // takes a const char *, but does not copy the string.
+     // Ideally, these paths could be constructed at preprocessor-time,
+     // but unfortunately DIR_SEPARATOR defines an integer, not a string.
+     // Maybe a DIR_SEPARATOR-like macro could be defined instead, but that
+     // can be fragile in terms of portability, and the usual practice in
+     // gcc is to dynamically define it as a 2-element array, anyway.
+     append_option(OPT_I, concat(gnu, dir_separator, "lib", NULL), 1);
+     append_option(OPT_I, concat(gnu, dir_separator, "cpy", NULL), 1);
+     append_option(OPT_I, concat(gnu, dir_separator, "udf", NULL), 1);
+     free(gnu);
+     }
    if( need_libdl )
      {
      add_arg_lib(DL_LIBRARY, false);
*************** lang_specific_driver (struct cl_decoded_
*** 522,527 ****
--- 567,583 ----
      {
      add_arg_lib(STDCPP_LIBRARY, false);
      }
+   if( need_libposix )
+     {
+     char *posix = concat(tooldir, dir_separator, "posix", NULL);
+ 
+     add_arg_lib(POSIX_LIBRARY, static_libposix);
+     // Inject the paths to the libposix copybooks.
+     // As explained above, note that these paths are inevitably leaked.
+     append_option(OPT_I, concat(posix, dir_separator, "cpy", NULL), 1);
+     append_option(OPT_I, concat(posix, dir_separator, "udf", NULL), 1);
+     free(posix);
+     }
  
    if( prior_main )
      {
*************** lang_specific_driver (struct cl_decoded_
*** 529,534 ****
--- 585,592 ----
      fatal_error(input_location, "%s", ach);
      }
  
+   free(tooldir);
+ 
    // We now take the new_opt vector, and turn it into an array of
    // cl_decoded_option
  
diff -Nrcpad gcc-17-20260524/gcc/cobol/genapi.cc gcc-17-20260531/gcc/cobol/genapi.cc
*** gcc-17-20260524/gcc/cobol/genapi.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/genapi.cc	Sun May 31 22:32:05 2026
*************** static bool auto_advance_is_AFTER_advanc
*** 186,192 ****
  
  #define MAX_AFTERS 8
  
! // These variables contol a little state machine.  When a simple -main is in
  // effect, the first program in the module becomes the target of a main()
  // that we synthesize function.  When -main=module:progid is in effect, we
  // create a main() that calls progid.  When active, progid is kept in
--- 186,192 ----
  
  #define MAX_AFTERS 8
  
! // These variables control a little state machine.  When a simple -main is in
  // effect, the first program in the module becomes the target of a main()
  // that we synthesize function.  When -main=module:progid is in effect, we
  // create a main() that calls progid.  When active, progid is kept in
*************** section_label(struct cbl_proc_t *procedu
*** 2081,2086 ****
--- 2081,2092 ----
    // Go see if there was an ALTER statement targeting this procedure
    gg_append_statement(procedure->alter_switch_goto);
    // Lay down the label we will return to if there is no ALTER in play
+ #if 0
+   fprintf(stderr,
+           "section_label for %s %s\n",
+           procedure->label->name,
+           label_decl_text_from_expr(procedure->no_alter_label));
+ #endif
    gg_append_statement(procedure->no_alter_label);
    }
  
*************** paragraph_label(struct cbl_proc_t *proce
*** 2159,2164 ****
--- 2165,2176 ----
    // Go see if there was an ALTER statement targeting this procedure
    gg_append_statement(procedure->alter_switch_goto);
    // Lay down the label we will return to if there is no ALTER in play
+ #if 0
+   fprintf(stderr,
+           "paragraph_label for %s %s\n",
+           procedure->label->name,
+           label_decl_text_from_expr(procedure->no_alter_label));
+ #endif
    gg_append_statement(procedure->no_alter_label);
    }
  
*************** internal_perform_through( cbl_label_t *p
*** 2746,2759 ****
  
    size_t dispatch_index = proc2->pseudo_return_decls.size();
  
!   // We need to create the unnamed return address that we
    // will instantiate right after the goto:
    tree return_address_decl = build_decl(  UNKNOWN_LOCATION,
                                            LABEL_DECL,
!                                           NULL_TREE,
                                            void_type_node);
    DECL_CONTEXT(return_address_decl) = current_function->function_decl;
    TREE_USED(return_address_decl) = 1;
  
    tree return_label_expr = build1(LABEL_EXPR,
                                    void_type_node,
--- 2758,2777 ----
  
    size_t dispatch_index = proc2->pseudo_return_decls.size();
  
!   // We need to create the return address that we
    // will instantiate right after the goto:
+ 
+   static int id = 1;
+   char *psz;
+   psz = xasprintf("_perfret%d", id++);
+ 
    tree return_address_decl = build_decl(  UNKNOWN_LOCATION,
                                            LABEL_DECL,
!                                           gg_create_assembler_name(psz),
                                            void_type_node);
    DECL_CONTEXT(return_address_decl) = current_function->function_decl;
    TREE_USED(return_address_decl) = 1;
+   free(psz);
  
    tree return_label_expr = build1(LABEL_EXPR,
                                    void_type_node,
*************** enter_program_common(const char *funcnam
*** 3147,3154 ****
    trace1_init();
    }
  
! /*  Creates a function for program-id 'funcname_'.  Returns 1 when funcname_
!     is "main" and the -main compiler switch is active for this moudle */
  
  void
  parser_enter_program( const char *funcname_,
--- 3165,3175 ----
    trace1_init();
    }
  
! /*  Creates a function for program-id 'funcname_'.  Returns 1 when funcname_ is
!     "main" and the -main compiler switch is active for this module symbol_table
!     has been initialized, and the current program has been entered into it. For
!     a top-level program, the program's program is 0, else it is the symbol
!     table index of the containing program.  */
  
  void
  parser_enter_program( const char *funcname_,
*************** parser_enter_program( const char *funcna
*** 3163,3169 ****
  
    char *mangled_name = cobol_name_mangler(funcname_);
  
!   size_t parent_index = current_program_index();
    char *funcname;
    if( parent_index )
      {
--- 3184,3193 ----
  
    char *mangled_name = cobol_name_mangler(funcname_);
  
!   size_t iprog  = current_program_index();
!   assert(iprog);
! 
!   size_t parent_index = symbol_at(iprog)->program;
    char *funcname;
    if( parent_index )
      {
*************** build_alter_switch(cbl_proc_t *proc, con
*** 3398,3403 ****
--- 3422,3434 ----
        // And follow up with a goto expression for the pseudo-return location.
        if( i == 0 )
          {
+ #if 0
+         fprintf(stderr,
+                 "build_alter_switch(1) for %s %s %p\n",
+                 proc->label->name,
+                 label_decl_text_from_expr(proc->no_alter_goto),
+                 (void *)GOTO_DESTINATION(proc->no_alter_goto));
+ #endif
          gg_append_statement(proc->no_alter_goto);
          }
        else
*************** build_alter_switch(cbl_proc_t *proc, con
*** 3419,3426 ****
  
      current_function->statement_list_stack.pop_back();
      }
    gg_append_statement(proc->no_alter_goto);
- 
    }
  
  static void
--- 3450,3463 ----
  
      current_function->statement_list_stack.pop_back();
      }
+ #if 0
+   fprintf(stderr,
+           "build_alter_switch(2) for %s %s %p\n",
+           proc->label->name,
+           label_decl_text_from_expr(proc->no_alter_goto),
+           (void *)GOTO_DESTINATION(proc->no_alter_goto));
+ #endif
    gg_append_statement(proc->no_alter_goto);
    }
  
  static void
*************** parser_display_internal(tree file_descri
*** 5065,5077 ****
      }
    else
      {
      if( refer_is_clean(refer) )
        {
        gg_call(VOID,
                "__gg__display_clean",
                gg_get_address_of(refer.field->var_decl_node),
                file_descriptor,
!               advance ? integer_one_node : integer_zero_node,
                NULL_TREE );
        }
      else
--- 5102,5116 ----
      }
    else
      {
+     int flags  = advance ? 1 : 0;
+         flags |= refer.addr_of ? REFER_T_ADDRESS_OF : 0;
      if( refer_is_clean(refer) )
        {
        gg_call(VOID,
                "__gg__display_clean",
                gg_get_address_of(refer.field->var_decl_node),
                file_descriptor,
!               build_int_cst_type(INT, flags),
                NULL_TREE );
        }
      else
*************** parser_display_internal(tree file_descri
*** 5087,5093 ****
                refer_offset(refer),
                refer_size_source(  refer),
                file_descriptor,
!               advance ? integer_one_node : integer_zero_node,
                NULL_TREE );
        if( refer.refmod.from || refer.refmod.len )
          {
--- 5126,5132 ----
                refer_offset(refer),
                refer_size_source(  refer),
                file_descriptor,
!               build_int_cst_type(INT, flags),
                NULL_TREE );
        if( refer.refmod.from || refer.refmod.len )
          {
*************** parser_bsearch_end( cbl_label_t* name )
*** 12021,12027 ****
    // Arriving here means that either the search ran out without finding
    // anything, (see the test up at TOP:), or else we just fell through from
    // the statements that executed after all the WHEN/AFTER clauses were
!   // satisifed by equality (meaning there were no jumps to TOO_SMALL: or
    // TOO_LARGE).  In other words: we're done.
    gg_append_statement(bsearch->bottom.label);
  
--- 12060,12066 ----
    // Arriving here means that either the search ran out without finding
    // anything, (see the test up at TOP:), or else we just fell through from
    // the statements that executed after all the WHEN/AFTER clauses were
!   // satisfied by equality (meaning there were no jumps to TOO_SMALL: or
    // TOO_LARGE).  In other words: we're done.
    gg_append_statement(bsearch->bottom.label);
  
*************** create_and_call(size_t narg,
*** 13112,13117 ****
--- 13151,13163 ----
  
      if( args[i].refer.field && args[i].refer.field->type == FldLiteralN )
        {
+       // Literals have to be passed by value
+       crv = by_value_e;
+       }
+ 
+     if( args[i].attr == address_of_e || args[i].refer.addr_of )
+       {
+       // ADDRESS OF has to be passed by value.
        crv = by_value_e;
        }
  
*************** create_and_call(size_t narg,
*** 13232,13243 ****
          // For BY VALUE, we take whatever we've been given and do our best to
          // make a 64-bit value out of it, although we move to 128 bits when
          // necessary.
!         switch(args[i].attr)
            {
            case address_of_e:
              {
              arguments[i] = gg_define_size_t();
              gg_assign(arguments[i], gg_cast(SIZE_T, location ));
              break;
              }
  
--- 13278,13297 ----
          // For BY VALUE, we take whatever we've been given and do our best to
          // make a 64-bit value out of it, although we move to 128 bits when
          // necessary.
! 
!         cbl_ffi_arg_attr_t attr = args[i].attr;
!         if( args[i].refer.addr_of )
!           {
!           attr = address_of_e;
!           }
! 
!         switch(attr)
            {
            case address_of_e:
              {
              arguments[i] = gg_define_size_t();
              gg_assign(arguments[i], gg_cast(SIZE_T, location ));
+             gg_assign(length, build_int_cst_type(SIZE_T, 8));
              break;
              }
  
*************** create_and_call(size_t narg,
*** 13245,13250 ****
--- 13299,13305 ----
              {
              arguments[i] = gg_define_size_t();
              gg_assign(arguments[i], gg_cast(SIZE_T, length));
+             gg_assign(length, build_int_cst_type(SIZE_T, 8));
              break;
              }
  
*************** create_and_call(size_t narg,
*** 13283,13288 ****
--- 13338,13344 ----
                                  refer_offset(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
+               gg_assign(length, build_int_cst_type(SIZE_T, 16));
                }
              else
                {
*************** create_and_call(size_t narg,
*** 13296,13301 ****
--- 13352,13358 ----
                                  refer_offset(args[i].refer),
                                  refer_size_source(args[i].refer),
                                  NULL_TREE)));
+               gg_assign(length, build_int_cst_type(SIZE_T, 8));
                }
              break;
              }
*************** create_and_call(size_t narg,
*** 13306,13312 ****
      // variable.  This value is used both to handle ANY LENGTH formal
      // parameters, and to provide information to the called program when being
      // passed expressions BY VALUE and BY CONTENT
!     gg_assign(gg_array_value(var_decl_call_parameter_lengths, i),length);
      }
  
    // Let the called program know how many parameters we are passing
--- 13363,13369 ----
      // variable.  This value is used both to handle ANY LENGTH formal
      // parameters, and to provide information to the called program when being
      // passed expressions BY VALUE and BY CONTENT
!     gg_assign(gg_array_value(var_decl_call_parameter_lengths, i), length);
      }
  
    // Let the called program know how many parameters we are passing
*************** create_and_call(size_t narg,
*** 13314,13319 ****
--- 13371,13377 ----
              build_int_cst_type(INT, narg));
  
    tree call_expr = NULL_TREE;
+ 
    if( function_pointer )
      {
      gg_assign(var_decl_call_parameter_signature,
*************** parser_set_pointers( size_t ntgt, cbl_re
*** 13972,13978 ****
        if( tgts[i].addr_of )
          {
          // When SET ADDRESS OF TARGET TO ..., the library call sets
!         // tgts[i].field->data.  We need to propogate the data+offset
          // through the level01 variable's children:
          propogate_linkage_offsets(tgts[i].field,
                                    member(tgts[i].field->var_decl_node, "data"));
--- 14030,14036 ----
        if( tgts[i].addr_of )
          {
          // When SET ADDRESS OF TARGET TO ..., the library call sets
!         // tgts[i].field->data.  We need to propagate the data+offset
          // through the level01 variable's children:
          propogate_linkage_offsets(tgts[i].field,
                                    member(tgts[i].field->var_decl_node, "data"));
diff -Nrcpad gcc-17-20260524/gcc/cobol/gengen.cc gcc-17-20260531/gcc/cobol/gengen.cc
*** gcc-17-20260524/gcc/cobol/gengen.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gengen.cc	Sun May 31 22:32:05 2026
*************** gg_append_var_decl(tree var_decl)
*** 265,270 ****
--- 265,298 ----
      }
    }
  
+ #define LOOK_FOR_MISSING_LABELS_not
+ #ifdef LOOK_FOR_MISSING_LABELS
+ static std::set<tree> missing_labels;
+ static std::map<tree, int> missing_gotos;
+ void
+ dump_missing_labels()
+   {
+   for(auto g : missing_gotos)
+     {
+     auto l = missing_labels.find(g.first);
+     if( l == missing_labels.end() )
+       {
+       const char *name_text = label_decl_text_from_expr(g.first);
+       error_msg_direct( "%<GOTO_EXPR%> %qs (%p) "
+                         "at line %d has no matching label",
+                         name_text,
+                         reinterpret_cast<void *>(g.first),
+                         g.second);
+       }
+     }
+   }
+ #else
+ void
+ dump_missing_labels()
+   {
+   }
+ #endif
+ 
  void
  gg_append_statement(tree stmt)
    {
*************** gg_append_statement(tree stmt)
*** 295,304 ****
    // ./libcpp/include/line-map.h
    // ./libcpp/location-example.txt
  
! #if 0
    if( TREE_CODE(stmt) == GOTO_EXPR )
      {
!     fprintf(stderr, "Laying down a GOTO\n");
      }
  #endif
  
--- 323,368 ----
    // ./libcpp/include/line-map.h
    // ./libcpp/location-example.txt
  
! #ifdef LOOK_FOR_MISSING_LABELS
!   const char *name_text = label_decl_text_from_expr(stmt);
    if( TREE_CODE(stmt) == GOTO_EXPR )
      {
!     // When dump_missing_labels reports a name, you can edit it in here and
!     // recompile, and then set a trap here to backtrace to whoever is creating
!     // the orphan goto in the first place.
! 
!     if( strcmp(name_text, "") == 0 )
!       {
!       fprintf(stderr, "HULL_BREACH! Label %s!\n", name_text);
!       }
! 
!     tree dest = GOTO_DESTINATION (stmt);
! 
!     tree label_decl = NULL_TREE;
!     if (TREE_CODE (dest) == LABEL_DECL)
!       {
!       label_decl = dest; /* direct goto label */
!       }
!     else
!       {
!         /* computed goto or other expression-valued destination */
!       }
!     //fprintf(stderr,
!     //        "Laying down a GOTO_EXPR  %s %p at line %d\n",
!     //        name_text,
!     //        reinterpret_cast<void *>(label_decl),
!     //        cobol_location().first_line);
!     missing_gotos[label_decl] = cobol_location().first_line;
!     }
!   if( TREE_CODE(stmt) == LABEL_EXPR )
!     {
!     tree label_decl = LABEL_EXPR_LABEL(stmt);   /* This is a LABEL_DECL. */
!     //fprintf(stderr,
!     //        "Laying down a LABEL_EXPR %s %p at line %d\n",
!     //        name_text,
!     //        reinterpret_cast<void *>(label_decl),
!     //        cobol_location().first_line);
!     missing_labels.insert(label_decl);
      }
  #endif
  
*************** gg_struct_field_ref(const tree base, con
*** 704,710 ****
    return retval;
    }
  
! static tree
  gg_create_assembler_name(const char *cobol_name)
    {
    char *psz = cobol_name_mangler(cobol_name);
--- 768,774 ----
    return retval;
    }
  
! tree
  gg_create_assembler_name(const char *cobol_name)
    {
    char *psz = cobol_name_mangler(cobol_name);
*************** gg_build_logical_expression(tree operand
*** 1796,1801 ****
--- 1860,1868 ----
    return logical_expression;
    }
  
+ static int label_identifier = 1;
+ #define LABEL_ROOT "_label%d"
+ 
  void
  gg_create_goto_pair(tree *goto_expr,
                      tree *label_expr,
*************** gg_create_goto_pair(tree *goto_expr,
*** 1805,1813 ****
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(name),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
--- 1872,1890 ----
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
+   char *psz;
+   if(name && *name)
+     {
+     psz = xstrdup(name);
+     }
+   else
+     {
+     psz = xasprintf(LABEL_ROOT, label_identifier++);
+     }
+ 
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(psz),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
*************** gg_create_goto_pair(tree *goto_expr,
*** 1819,1824 ****
--- 1896,1902 ----
    *goto_expr  = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
    *label_addr = gg_get_address_of(label_decl);
+   free(psz);
    }
  
  void
*************** gg_create_goto_pair(tree *goto_expr, tre
*** 1827,1835 ****
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   NULL_TREE,
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
--- 1905,1915 ----
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
+   char *psz;
+   psz = xasprintf(LABEL_ROOT, label_identifier++);
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(psz),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
*************** gg_create_goto_pair(tree *goto_expr, tre
*** 1837,1842 ****
--- 1917,1923 ----
    *goto_expr  = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
    *label_addr = gg_get_address_of(label_decl);
+   free(psz);
    }
  
  void
*************** gg_create_goto_pair(tree *goto_expr,
*** 1848,1856 ****
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
    *label_decl = build_decl( UNKNOWN_LOCATION,
                              LABEL_DECL,
!                             NULL_TREE,
                              void_type_node);
    DECL_CONTEXT(*label_decl) = current_function->function_decl;
    TREE_USED(*label_decl) = 1;
--- 1929,1939 ----
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
+   char *psz;
+   psz = xasprintf(LABEL_ROOT, label_identifier++);
    *label_decl = build_decl( UNKNOWN_LOCATION,
                              LABEL_DECL,
!                             gg_create_assembler_name(psz),
                              void_type_node);
    DECL_CONTEXT(*label_decl) = current_function->function_decl;
    TREE_USED(*label_decl) = 1;
*************** gg_create_goto_pair(tree *goto_expr,
*** 1858,1863 ****
--- 1941,1947 ----
    *goto_expr  = build1(GOTO_EXPR, void_type_node, *label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, *label_decl);
    *label_addr = gg_get_address_of(*label_decl);
+   free(psz);
    }
  
  void
*************** gg_create_goto_pair(tree *goto_expr, tre
*** 1866,1880 ****
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   NULL_TREE,
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
  
    *goto_expr = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
    }
  
  void
--- 1950,1967 ----
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
+   char *psz;
+   psz = xasprintf(LABEL_ROOT, label_identifier++);
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(psz),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
  
    *goto_expr = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
+   free(psz);
    }
  
  void
*************** gg_create_goto_pair(tree *goto_expr, tre
*** 1883,1897 ****
    // We are going to create a pair of named expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(name),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
  
    *goto_expr = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
    }
  
  void
--- 1970,1994 ----
    // We are going to create a pair of named expressions for our
    // caller.  They are a matched set of goto/label expressions,
    // to be included in a statement list
+   char *psz;
+   if(name && *name)
+     {
+     psz = xstrdup(name);
+     }
+   else
+     {
+     psz = xasprintf(LABEL_ROOT, label_identifier++);
+     }
    tree label_decl = build_decl(   UNKNOWN_LOCATION,
                                    LABEL_DECL,
!                                   gg_create_assembler_name(psz),
                                    void_type_node);
    DECL_CONTEXT(label_decl) = current_function->function_decl;
    TREE_USED(label_decl) = 1;
  
    *goto_expr = build1(GOTO_EXPR, void_type_node, label_decl);
    *label_expr = build1(LABEL_EXPR, void_type_node, label_decl);
+   free(psz);
    }
  
  void
*************** chain_parameter_to_function(tree functio
*** 2446,2452 ****
  
      Cases 3. and 4. turn out to require the same flags.  Here are the combinations of
      flags that are required for each flavor of function_decl.  This was empirically
!     determind by compiling a C++ program with sample code for each type.
  
                              | addressable | used | nothrow | static | external | public | no_instrument
  main                        |             |      |         |   X    |          |   X    |    X
--- 2543,2549 ----
  
      Cases 3. and 4. turn out to require the same flags.  Here are the combinations of
      flags that are required for each flavor of function_decl.  This was empirically
!     determined by compiling a C++ program with sample code for each type.
  
                              | addressable | used | nothrow | static | external | public | no_instrument
  main                        |             |      |         |   X    |          |   X    |    X
*************** gg_finalize_function()
*** 2861,2876 ****
    gg_trans_unit.function_stack.pop_back();
    }
  
  void
  gg_leaving_the_source_code_file()
    {
!   for(  std::vector<tree>::const_iterator it=finalized_function_decls.begin();
!         it != finalized_function_decls.end();
!         it++ )
      {
      //This makes the function visible on the source code module level.
!     cgraph_node::finalize_function(*it, true);
      }
    }
  
  void
--- 2958,2976 ----
    gg_trans_unit.function_stack.pop_back();
    }
  
+ void scm_dump_generic_nodes(const char *filename, tree root);
+ 
  void
  gg_leaving_the_source_code_file()
    {
!   typedef std::vector<tree>::value_type func_type;
!   for( const func_type& func : finalized_function_decls )
      {
      //This makes the function visible on the source code module level.
!     cgraph_node::finalize_function(func, true);
      }
+ 
+   dump_missing_labels();
    }
  
  void
*************** gg_token_location()
*** 3434,3436 ****
--- 3534,3594 ----
      }
    return retval;
    }
+ 
+ const char *
+ label_decl_text_from_expr(tree expr)
+   {
+   // This extracts the LABEL_DECL text from GOTO_EXPR and LABEL_EXPR
+   tree label_decl = NULL_TREE;
+ 
+   if(expr == NULL_TREE)
+     {
+     return "missing";
+     }
+ 
+   switch(TREE_CODE (expr))
+     {
+     case LABEL_DECL:
+       label_decl = expr;
+       break;
+ 
+     case LABEL_EXPR:
+       label_decl = LABEL_EXPR_LABEL(expr);
+       break;
+ 
+     case GOTO_EXPR:
+       {
+       tree dest = GOTO_DESTINATION(expr);
+ 
+       if (dest != NULL_TREE && TREE_CODE (dest) == LABEL_DECL)
+         {
+         label_decl = dest;
+         }
+       else if (dest != NULL_TREE
+                && TREE_CODE(dest) == ADDR_EXPR
+                && TREE_OPERAND(dest, 0) != NULL_TREE
+                && TREE_CODE(TREE_OPERAND(dest, 0)) == LABEL_DECL)
+         {
+         label_decl = TREE_OPERAND(dest, 0);
+         }
+       break;
+       }
+ 
+     default:
+       return "missing";
+     }
+ 
+   if( label_decl == NULL_TREE || TREE_CODE (label_decl) != LABEL_DECL )
+     {
+     return "missing";
+     }
+ 
+   tree name = DECL_NAME (label_decl);
+   if( name == NULL_TREE || TREE_CODE (name) != IDENTIFIER_NODE )
+     {
+     return "missing";
+     }
+ 
+   const char *text = IDENTIFIER_POINTER(name);
+   return text ? text : "missing";
+   }
diff -Nrcpad gcc-17-20260524/gcc/cobol/gengen.h gcc-17-20260531/gcc/cobol/gengen.h
*** gcc-17-20260524/gcc/cobol/gengen.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/gengen.h	Sun May 31 22:32:05 2026
*************** extern tree gg_strncmp(tree char_star_A,
*** 497,503 ****
  // Flow control inside a function
  extern void gg_return(tree operand = NULL_TREE);
  
! // These routines are the preample and postamble that bracket everything else
  extern tree gg_build_fn_decl(const char *funcname, tree fndecl_type);
  extern tree gg_peek_fn_decl(const char *funcname);
  extern tree gg_define_function( tree return_type,
--- 497,503 ----
  // Flow control inside a function
  extern void gg_return(tree operand = NULL_TREE);
  
! // These routines are the preamble and postamble that bracket everything else
  extern tree gg_build_fn_decl(const char *funcname, tree fndecl_type);
  extern tree gg_peek_fn_decl(const char *funcname);
  extern tree gg_define_function( tree return_type,
*************** extern void gg_insert_into_assemblerf(co
*** 588,592 ****
--- 588,594 ----
  
  extern char *gg_show_type(tree type);
  extern void gg_leaving_the_source_code_file();
+ extern tree gg_create_assembler_name(const char *cobol_name);
+ extern const char * label_decl_text_from_expr(tree expr);
  
  #endif
diff -Nrcpad gcc-17-20260524/gcc/cobol/genmath.cc gcc-17-20260531/gcc/cobol/genmath.cc
*** gcc-17-20260524/gcc/cobol/genmath.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/genmath.cc	Sun May 31 22:32:05 2026
***************
*** 45,50 ****
--- 45,57 ----
  #include "../../libgcobol/charmaps.h"
  #include "show_parse.h"
  
+ // These are convenience values used by the ADD 1 TO routines.  I am putting
+ // them here rather than cluttering up subroutine calls with them.
+ #define uchar_f_node build_int_cst_type(UCHAR, 0x0F)
+ #define uchar_ten_node build_int_cst_type(UCHAR, 10)
+ static tree tzero; // '0' in ascii or ebcdic
+ static tree tnine;
+ 
  void
  set_up_on_exception_label(cbl_label_t *arithmetic_label)
    {
*************** largest_binary_term(size_t nA, cbl_refer
*** 391,397 ****
  static bool
  fast_add( size_t nC, cbl_num_result_t *C,
            size_t nA, cbl_refer_t *A,
!           cbl_arith_format_t format )
    {
    /*  ADD A     TO D:           nC==1, nA==1,  D += A.
        ADD A B C TO D:           nC==1, nA==3,  D = (A + B + C)
--- 398,406 ----
  static bool
  fast_add( size_t nC, cbl_num_result_t *C,
            size_t nA, cbl_refer_t *A,
!           cbl_arith_format_t format,
!     const cbl_label_t *error,
!     const cbl_label_t *not_error)
    {
    /*  ADD A     TO D:           nC==1, nA==1,  D += A.
        ADD A B C TO D:           nC==1, nA==3,  D = (A + B + C)
*************** fast_add( size_t nC, cbl_num_result_t *C
*** 400,406 ****
        ADD A B C TO D GIVING X Y nC==2, nA==3, format==giving_e   */
    bool retval = false;
    if(    all_results_integer(nC, C)
!       && all_refers_integer(nA, A) )
      {
      Analyze();
      // All targets are non-PICTURE binaries:
--- 409,417 ----
        ADD A B C TO D GIVING X Y nC==2, nA==3, format==giving_e   */
    bool retval = false;
    if(    all_results_integer(nC, C)
!       && all_refers_integer(nA, A)
!       && !error
!       && !not_error )
      {
      Analyze();
      // All targets are non-PICTURE binaries:
*************** fast_add( size_t nC, cbl_num_result_t *C
*** 409,417 ****
        {
        tree dest_type = tree_type_from_size(C[0].refer.field->data.capacity(),
                                             0);
- //      tree dest_type2 = TREE_TYPE(C[0].refer.field->data_decl_node);
- //      gcc_assert(dest_type2 == dest_type);
- 
        // All the numbers are integers without rdigits
        if(    nC == 1
            && nA == 1
--- 420,425 ----
*************** static bool
*** 580,586 ****
  fast_subtract(size_t nC, cbl_num_result_t *C,
                size_t nA, cbl_refer_t *A,
                size_t nB, cbl_refer_t *B,
!               cbl_arith_format_t format)
    {
    /*  SUBTRACT A FROM D:       nC==1, nA==1, nB==0:  D -= A.
        SUBTRACT A B C FROM D:   nC==1, nA==3, nB==0:  D -= (A + B + C)
--- 588,596 ----
  fast_subtract(size_t nC, cbl_num_result_t *C,
                size_t nA, cbl_refer_t *A,
                size_t nB, cbl_refer_t *B,
!               cbl_arith_format_t format,
!         const cbl_label_t *error,
!         const cbl_label_t *not_error)
    {
    /*  SUBTRACT A FROM D:       nC==1, nA==1, nB==0:  D -= A.
        SUBTRACT A B C FROM D:   nC==1, nA==3, nB==0:  D -= (A + B + C)
*************** fast_subtract(size_t nC, cbl_num_result_
*** 590,596 ****
    bool retval = false;
    if(    all_refers_integer(nA, A)
        && all_refers_integer(nB, B)
!       && all_results_integer(nC, C)  )
      {
      Analyze();
      // All targets are non-PICTURE binaries:
--- 600,609 ----
    bool retval = false;
    if(    all_refers_integer(nA, A)
        && all_refers_integer(nB, B)
!       && all_results_integer(nC, C)
!       && !error
!       && !not_error
!       )
      {
      Analyze();
      // All targets are non-PICTURE binaries:
*************** fast_divide(size_t nC, cbl_num_result_t
*** 926,1208 ****
    return retval;
    }
  
! void
! parser_add( size_t nC, cbl_num_result_t *C,
              size_t nA, cbl_refer_t *A,
              cbl_arith_format_t format,
              cbl_label_t *error,
              cbl_label_t *not_error,
!             void        *compute_error_p ) // Cast this to a tree / int *
    {
!   Analyze();
!   SHOW_PARSE
      {
!     SHOW_PARSE_HEADER
!     fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA);
!     for(size_t i=0; i<nA; i++)
        {
!       if(i > 0)
          {
!         fprintf(stderr, ",");
          }
!       fprintf(stderr, "%s", A[i].field->name);
        }
  
!     fprintf(stderr, "%s", format==giving_e? " GIVING" : "");
  
!     fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC);
!     for(size_t i=0; i<nC; i++)
        {
!       if(i > 0)
          {
!         fprintf(stderr, ",");
          }
!       fprintf(stderr, "%s", C[i].refer.field->name);
        }
  
!     SHOW_PARSE_END
      }
  
!   TRACE1
      {
-     TRACE1_HEADER
-     TRACE1_END
      }
  
!   bool handled = false;
  
!   if( !error && !not_error && fast_add(nC, C,
!                                        nA, A,
!                                        format) )
      {
!     handled = true;
      }
!   else
      {
!     tree compute_error = (tree)compute_error_p;
!     if( compute_error == NULL )
        {
!       gg_assign(var_decl_default_compute_error, integer_zero_node);
!       compute_error = gg_get_address_of(var_decl_default_compute_error);
        }
  
!     bool computation_is_float =    is_somebody_float(nA, A)
!                                 || is_somebody_float(nC, C);
!     // We now start deciding which arithmetic routine we are going to use:
!     if( computation_is_float )
        {
!       switch( format )
          {
!         case no_giving_e:
!           {
!           // Float format 1
  
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_float_phase1");
  
!           // Do phase 2, which accumulates the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__addf1_float_phase2");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
!           }
  
!         case giving_e:
!           {
!           // Float format 2
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_float_phase1");
  
!           // Do phase 2, which puts the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__float_phase2_assign_to_c");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
!           }
  
!         case corresponding_e:
!           {
!           // Float format 3
!           gcc_assert(nA == nC);
  
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           arithmetic_operation(nC, C,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__addf3");
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
!           }
  
!         case not_expected_e:
!           gcc_unreachable();
!           break;
          }
        }
!     else
        {
!       switch( format )
          {
!         case no_giving_e:
            {
!           // Fixed format 1
! 
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_fixed_phase1");
  
!           // Do phase 2, which accumulates the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
              {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__addf1_fixed_phase2");
              }
-           arithmetic_error_handler( error,
-                                     not_error,
-                                     compute_error);
- 
            handled = true;
-           break;
            }
  
!         case giving_e:
            {
!           // Fixed format 2
  
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_fixed_phase1");
  
!           // Do phase 2, which puts the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
              {
!             arithmetic_operation( 1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__fixed_phase2_assign_to_c");
              }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
            }
! 
!         case corresponding_e:
            {
!           // Fixed format 3
!           gcc_assert(nA == nC);
  
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           arithmetic_operation(nC, C,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__addf3");
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
            }
  
!         case not_expected_e:
!           gcc_unreachable();
!           break;
          }
        }
      }
  
!   assert( handled );
    }
  
  void
--- 939,2199 ----
    return retval;
    }
  
! static bool
! add_floats( size_t nC, cbl_num_result_t *C,
              size_t nA, cbl_refer_t *A,
              cbl_arith_format_t format,
              cbl_label_t *error,
              cbl_label_t *not_error,
!             tree         compute_error )
    {
!   bool handled = false;
! 
!   bool computation_is_float =    is_somebody_float(nA, A)
!                               || is_somebody_float(nC, C);
!   // We now start deciding which arithmetic routine we are going to use:
!   if( computation_is_float )
      {
!     switch( format )
        {
!       case no_giving_e:
          {
!         // Float format 1
! 
!         set_up_arithmetic_error_handler(error,
!                                         not_error);
!         // Do phase 1, which calculates the subtotal and puts it into a
!         // temporary location
!         arithmetic_operation( 0, NULL,
!                               nA, A,
!                               0, NULL,
!                               format,
!                               error,
!                               not_error,
!                               compute_error,
!                               "__gg__add_float_phase1");
! 
!         // Do phase 2, which accumulates the subtotal into each target location in turn
!         for(size_t i=0; i<nC; i++)
!           {
!           arithmetic_operation(1, &C[i],
!                                 0, NULL,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__addf1_float_phase2");
!           }
!         arithmetic_error_handler( error,
!                                   not_error,
!                                   compute_error);
! 
!         handled = true;
!         break;
          }
! 
!       case giving_e:
!         {
!         // Float format 2
!         set_up_arithmetic_error_handler(error,
!                                         not_error);
!         // Do phase 1, which calculates the subtotal and puts it into a
!         // temporary location
!         arithmetic_operation( 0, NULL,
!                               nA, A,
!                               0, NULL,
!                               format,
!                               error,
!                               not_error,
!                               compute_error,
!                               "__gg__add_float_phase1");
! 
!         // Do phase 2, which puts the subtotal into each target location in turn
!         for(size_t i=0; i<nC; i++)
!           {
!           arithmetic_operation(1, &C[i],
!                                 0, NULL,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__float_phase2_assign_to_c");
!           }
!         arithmetic_error_handler( error,
!                                   not_error,
!                                   compute_error);
! 
!         handled = true;
!         break;
!         }
! 
!       case corresponding_e:
!         {
!         // Float format 3
!         gcc_assert(nA == nC);
! 
!         set_up_arithmetic_error_handler(error,
!                                         not_error);
!         arithmetic_operation(nC, C,
!                               nA, A,
!                               0, NULL,
!                               format,
!                               error,
!                               not_error,
!                               compute_error,
!                               "__gg__addf3");
!         arithmetic_error_handler( error,
!                                   not_error,
!                                   compute_error);
! 
!         handled = true;
!         break;
!         }
! 
!       case not_expected_e:
!         gcc_unreachable();
!         break;
        }
+     }
+   return handled;
+   }
  
! static void
! ordinary_add_format_1( size_t nC, cbl_num_result_t *C,
!                       size_t nA, cbl_refer_t *A,
!                       cbl_arith_format_t format,
!                       cbl_label_t *error,
!                       cbl_label_t *not_error,
!                       tree         compute_error )
!   {
!   set_up_arithmetic_error_handler(error,
!                                   not_error);
!   // Do phase 1, which calculates the subtotal and puts it into a
!   // temporary location
!   arithmetic_operation( 0, NULL,
!                         nA, A,
!                         0, NULL,
!                         format,
!                         error,
!                         not_error,
!                         compute_error,
!                         "__gg__add_fixed_phase1");
  
!   // Do phase 2, which accumulates the subtotal into each target location
!   // in turn
!   for(size_t i=0; i<nC; i++)
!     {
!     arithmetic_operation(1, &C[i],
!                           0, NULL,
!                           0, NULL,
!                           format,
!                           error,
!                           not_error,
!                           compute_error,
!                           "__gg__addf1_fixed_phase2");
!     }
!   arithmetic_error_handler( error,
!                             not_error,
!                             compute_error);
!   }
! 
! static void
! ordinary_subtract_format_1( size_t nC, cbl_num_result_t *C,
!                             size_t nA, cbl_refer_t *A,
!                             cbl_arith_format_t format,
!                             cbl_label_t *error,
!                             cbl_label_t *not_error,
!                             tree         compute_error )
!   {
!   set_up_arithmetic_error_handler(error,
!                                   not_error);
!   // Do phase 1, which calculates the subtotal and puts it into a
!   // temporary location
!   arithmetic_operation( 0, NULL,
!                         nA, A,
!                         0, NULL,
!                         format,
!                         error,
!                         not_error,
!                         compute_error,
!                         "__gg__add_fixed_phase1");
! 
!   // Do phase 2, which subtracts the subtotal from each target in turn
!   for(size_t i=0; i<nC; i++)
!     {
!     arithmetic_operation(1, &C[i],
!                           0, NULL,
!                           0, NULL,
!                           format,
!                           error,
!                           not_error,
!                           compute_error,
!                           "__gg__subtractf1_fixed_phase2");
!     }
!   arithmetic_error_handler( error,
!                             not_error,
!                             compute_error);
!   }
! 
! static void
! add_case_1( tree pointer,
!             tree tdelta,
!       const charmap_t *charmap,
!             int delta,
!             tree counter)
!   {
!   // This is Case 1: Adding a positive number to the positive target.  The
!   // target can be PIC 9999 or PIC S9999.
! 
!   tree top_goto;
!   tree top_label;
!   tree break_goto;
!   tree break_label;
!   gg_create_goto_pair(&top_goto,
!                       &top_label);
!   gg_create_goto_pair(&break_goto,
!                       &break_label);
! 
!   // We start off by adding tdelta to the first digit:
!   gg_assign(gg_indirect(pointer),
!             gg_add(gg_indirect(pointer), tdelta));
!   // This is our first decision point.  We added a positive value to
!   // an ASCII (or EBCDIC) digit.  If the result is less than or equal
!   // to '9', then we are done.
!   IF( gg_indirect(pointer), le_op, tnine )
!     {
!     if( charmap->is_like_ebcdic() && delta >= 7 )
        {
!       /* EBCDIC leads to an odd situation.  The range of digits in
!          EBCDIC is xF0 though 0xF9.  That means that when DELTA is
!          >= 7 and the units digit is '9', the sum of 7 + 0xF9 is 0x100.
!          That's a carry condition, but we are working in UCHAR space,
!          so it looks to us like zero.  And, so, we need some extra
!          logic so that we notice it that the zero is actually a
!          carry condition, and not something we are supposed to ignore.
! 
!          The largest possible value we might see is 9 + 0xF9, which is
!          0x102, which to us looks like 0x02, so if the result is zero,
!          one, or two, we need to enter the carry condition.  */
!       IF( gg_indirect(pointer), ge_op, build_int_cst_type(UCHAR, 3) )
          {
!         // We are done with adding delta to C[0].
!         gg_append_statement(break_goto);
          }
!       ELSE
!         {
!         // Fall through to carry processing
!         }
!       ENDIF
!       }
!     else
!       {
!       // We are done with adding delta to C[0].
!       gg_append_statement(break_goto);
        }
+     }
+   ELSE
+     {
+     // Fall through to carry processing
+     }
+   ENDIF
+   // We added delta to the current digit, and the result was bigger
+   // than '9'.  Normalize that digit by subtracting ten from it
+   gg_assign(gg_indirect(pointer),
+             gg_subtract(gg_indirect(pointer),
+                         build_int_cst_type(UCHAR, 10)));
  
!   // This is the top of the carry loop:
!   gg_append_statement(top_label);
!   IF( counter, le_op, integer_one_node )
!     {
!     // We have rippled through every digit, meaning we just added
!     // 1 to 9999, yielding 0000.
! 
!     set_exception_code(ec_size_truncation_e);
! 
!     gg_append_statement(break_goto);
!     }
!   ELSE
!     {
      }
+   ENDIF
+   // Move the pointer one digit to the left
+   gg_decrement(pointer);
+   // Propagate the carry
+   gg_increment(gg_indirect(pointer));
  
!   IF( gg_indirect(pointer), le_op, tnine )
!     {
!     // We are done with adding delta to C[0].
!     gg_append_statement(break_goto);
!     }
!   ELSE
      {
      }
+   ENDIF
+   // By incrementing this place, it went past '9'.  Wrap it back to
+   // zero
+   gg_assign(gg_indirect(pointer), tzero);
+   // And go see if there are more digits that need carry propagation:
+   gg_decrement(counter);
+   gg_append_statement(top_goto);
  
!   // That was the end of the carry propagation loop.  At this point
!   // we are done; somebody will jump to us from inside the loops:
!   gg_append_statement(break_label);
!   }
  
! static void
! add_case_2( tree pointer,
!             tree tdelta,
!             tree counter,
!             int  digits)
!   {
!   // This is Case 2: Adding a negative number to the positive target.  The
!   // target is assumed to be an unsigned PIC 9999.
! 
!   /* The tricky thing about this case is when you go downward through zero.
!      The logic we use is that 0 minus 1 is negative 1, and when you move
!      negative 1 to PIC 9999, the result is 0001.  That logic is extended here,
!      and so `SUBTRACT 3 FROM FOO` where FOO is PIC 9999 and has the value 1,
!      results in FOO being 0002.
! 
!      There is an edge case:  Consider the PIC 99V99 value 0.21  Adding -1 to
!      that results in -0.79, which needs to go into the PIC 99V99 as 0079. We
!      don't try to do that here; an add_case_2 can't be used to do that
!      calculation. */
! 
!   tree top_goto;
!   tree top_label;
!   tree break_goto;
!   tree break_label;
!   gg_create_goto_pair(&top_goto,
!                       &top_label);
!   gg_create_goto_pair(&break_goto,
!                       &break_label);
! 
!   // We start off by adding tdelta to the first digit:
!   gg_assign(gg_indirect(pointer),
!             gg_add(gg_indirect(pointer), tdelta));
!   // This is our first decision point.  We added a negative value to
!   // an ASCII (or EBCDIC) digit.  If the result is greater than or equal
!   // to '0', then we are done.
!   IF( gg_indirect(pointer), ge_op, tzero )
      {
!     // We are done with adding delta to C[0].
!     gg_append_statement(break_goto);
      }
!   ELSE
      {
!     // Fall through to carry processing
!     }
!   ENDIF
!   // We added delta to the current digit, and the result was less than
!   // than '0'.  Normalize that digit by adding ten to it
!   gg_assign(gg_indirect(pointer),
!             gg_add(gg_indirect(pointer),
!                    build_int_cst_type(UCHAR, 10)));
! 
!   // This is the top of the carry loop:
!   gg_append_statement(top_label);
!   IF( counter, le_op, integer_one_node )
!     {
!     // We have rippled through every digit, meaning we just added
!     // subtracted, for example, 1 from zero, yielding 9999, or we subtracted
!     // 3 from 0001, yielding 9998.  As discussed above, we need to convert the
!     // rightmost place from '8' to '2', and we have to set the other places to
!     // '0'.
! 
!     // 'pointer' is still pointing to the leftmost digit.  Counter is equal to
!     // one.  'digits' was provided to us; for PIC 9999, it is four.
! 
!     WHILE( counter, lt_op, build_int_cst_type(INT, digits) )
        {
!       gg_assign(gg_indirect(pointer), tzero);
!       gg_increment(pointer);
!       gg_increment(counter);
        }
+     WEND
+     /* 'pointer' points to the rightmost place.  When we start with, say '8',
+        we want to end up with '2'.  The formula for that is
  
!              '9' + '0' + 1 - *pointer
! 
!        Don't take my word for it.  Check it.  */
!     tree sum1 = gg_add(tnine, tzero);
!     tree sum2 = gg_add(sum1, build_int_cst_type(UCHAR, 1));
!     gg_assign( gg_indirect(pointer), gg_subtract(sum2, gg_indirect(pointer)));
! 
!     gg_append_statement(break_goto);
!     }
!   ELSE
!     {
!     }
!   ENDIF
!   // Move the pointer one digit to the left
!   gg_decrement(pointer);
!   // Propagate the carry
!   gg_decrement(gg_indirect(pointer));
! 
!   IF( gg_indirect(pointer), ge_op, tzero )
!     {
!     // We are done with adding delta to C[0].
!     gg_append_statement(break_goto);
!     }
!   ELSE
!     {
!     }
!   ENDIF
!   // By decrementing this place, it went past '0'.  Wrap it back to
!   // nine
!   gg_assign(gg_indirect(pointer), tnine);
!   // And go see if there are more digits that need carry propagation:
!   gg_decrement(counter);
!   gg_append_statement(top_goto);
! 
!   // That was the end of the carry propagation loop.  At this point
!   // we are done; somebody will jump to us from inside the loops:
!   gg_append_statement(break_label);
!   }
! 
! static void
! add_case_3( tree pointer,
!             tree tdelta,
!             tree counter)
!   {
!   /* Case 3 is adding a positive N to a negative value.
! 
!      Because the target is a PIC S9999, we are starting off with something like
!      "123t", which means -1234.  Adding 1 to it means going to -1233, which
!      means we have to decrement the 't' rather than incrementing it.
! 
!      After doing that operation, we have to check to see if we arrived at, or
!      went past, zero.  When that happens we have to adjust that final digit,
!      and make the result positive.  */
! 
!   tree break_goto;
!   tree break_label;
!   gg_create_goto_pair(&break_goto,
!                       &break_label);
! 
!   // We subtract the positive value from the rightmost digit.  This will bring
!   // the negative value closer to zero.
! 
!   gg_assign(gg_indirect(pointer),
!             gg_subtract(gg_indirect(pointer), tdelta));
! 
!   IF( gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!       lt_op,
!       uchar_ten_node )
!     {
!     // There was no carry, so we are done.
!     }
!   ELSE
!     {
!     // We need to adjust that rightmost digit:
!     gg_assign(gg_indirect(pointer),
!               gg_subtract(gg_indirect(pointer), uchar_ten_node));
! 
!     // We need to propagate the carry to the left.
!     WHILE(counter, gt_op, integer_one_node)
        {
!       gg_decrement(pointer);
!       IF( gg_indirect(pointer), ne_op, tzero )
          {
!         // Somebody is non-zero, so the result is a negative number whose
!         // final digit is zero.
!         gg_decrement(gg_indirect(pointer));
!         gg_append_statement(break_goto);
!         }
!       ELSE
!         {
!         // The digit is zero.  Convert it to '9', and keep going.
!         gg_assign(gg_indirect(pointer), tnine);
!         }
!       ENDIF
!       gg_decrement(counter);
!       }
!     WEND
!     }
!   ENDIF
!   gg_append_statement(break_label);
!   }
  
! static void
! add_case_4( tree pointer,
!             tree tdelta,
!             tree counter)
!   {
!   /* Case 4 is adding a negative N to a value starting off negative.
  
!      Because the target is a PIC S9999, we are starting off with something like
!      "123t", which means -1234.  Adding -1 to it means going to -1235, which
!      means we have to increment the 't' rather than decrementing it.
  
!      After doing that operation, we have to check to see if we rolled over into
!      "0000" which must be converted to a positive value.  Otherwise, if we
!      carry out, we just leave it be, and raise the ec_truncation exception. */
  
!   IF( gg_subtract(gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!                   tdelta),
!       lt_op,
!       uchar_ten_node )
!     {
!     // The digit minus tdelta is less than ten, so we can just do that
!     // operation
!     gg_assign(gg_indirect(pointer),
!               gg_subtract(gg_indirect(pointer), tdelta));
!     }
!   ELSE
!     {
!     tree break_goto;
!     tree break_label;
!     gg_create_goto_pair(&break_goto,
!                         &break_label);
  
!     // Do the operation that will require a carry.  This next instruction is
!     // equivalent to {digit-tdelta - 10}
!     gg_assign(gg_indirect(pointer),
!               gg_subtract(gg_indirect(pointer),
!                           gg_add(tdelta,
!                                  uchar_ten_node)));
!     // And now we start rippling the carry
!     WHILE( counter, gt_op, integer_one_node )
!       {
!       gg_decrement(pointer);
!       IF( gg_indirect(pointer), lt_op, tnine )
!         {
!         // The digit is less than '9', so we are done here.
!         gg_increment(gg_indirect(pointer));
!         gg_append_statement(break_goto);
!         }
!       ELSE
!         {
!         // Set that place to '0', and keep propagating the carry.
!         gg_assign(gg_indirect(pointer), tzero);
!         }
!       ENDIF
!       gg_decrement(counter);
!       }
!     WEND
!     // Arriving here means we have carried off the end, which is a truncation
!     // situation.
!     set_exception_code(ec_size_truncation_e);
  
!     gg_append_statement(break_label);
!     }
!   ENDIF
!   }
  
! static bool
! add_litN_to_numdisp(size_t nC, cbl_num_result_t *C,
!                     size_t nA, cbl_refer_t *A,
!                     cbl_arith_format_t format,
!                     cbl_label_t *error,
!                     cbl_label_t *not_error,
!                     tree         compute_error,
!                     bool         subtracting)
!   {
!   /* This routine handles adding a literal value N in the range of -9 through
!      +9 to a Numeric Display variable when the codeset is Single Byte Coded
!      ASCII or EBCDIC.
!                         */
!   bool handled = false;
  
!   if(    format == no_giving_e
!       && !error
!       && !not_error
!       && nC == 1
!       && nA == 1
!       &&   A[0].field->type == FldLiteralN
!       &&   C[0].refer.field->type == FldNumericDisplay
!       && !(C[0].refer.field->attr & scaled_e)
!       &&   C[0].refer.field->codeset.stride() == 1)
!     {
!     // We are adding a FldLiteral to a FldNumericDisplay.
  
!     // Get the integer value of the literal:
!     REAL_VALUE_TYPE val = TREE_REAL_CST(A[0].field->data.value_of());
!     int delta = (int)real_to_integer (&val);
!     val = real_value_truncate (TYPE_MODE (float_type_node), val);
!     REAL_VALUE_TYPE rival;
!     real_from_integer (&rival, VOIDmode, delta, SIGNED);
  
!     if( real_identical (&val, &rival) && delta == 0 )
!       {
!       // val has no fractional part, which means delta is the exact integer
!       // part of val.
! 
!       // And delta is zero.  This is a weird degenerate case.  But adding zero
!       // to anything means we are already done.
!       handled = true;
!       return handled;
!       }
! 
!     int  digits = C[0].refer.field->data.digits;
!     int rdigits = C[0].refer.field->data.rdigits;
! 
!     if( digits == rdigits )
!       {
!       // This is another degenerate case.  We are being asked to add an integer
!       // to a value whose PICTURE is something like V9999.  This is beyond our
!       // capabilities.
!       if( !subtracting )
!         {
!         ordinary_add_format_1(nC, C,
!                              nA, A,
!                              format,
!                              error,
!                              not_error,
!                              compute_error );
!         }
!       else
!         {
!         ordinary_subtract_format_1(nC, C,
!                                    nA, A,
!                                    format,
!                                    error,
!                                    not_error,
!                                    compute_error );
          }
+ 
+       handled = true;
+       return handled;
        }
! 
!     if( real_identical (&val, &rival)
!         && delta >= -9
!         && delta <=  9 )
        {
!       delta = subtracting ? -delta : delta;
! 
!       // delta is a non-zero integer in the range of -9 to 9.
!       tree tdelta = build_int_cst_type(UCHAR, delta);
! 
!       charmap_t *charmap =
!                          __gg__get_charmap(C[0].refer.field->codeset.encoding);
!       tzero = build_int_cst_type(UCHAR,
!                                  charmap->mapped_character(ascii_zero));
!       tnine = build_int_cst_type(UCHAR,
!                                  charmap->mapped_character(ascii_nine));
! 
!       // Build up an integer constant for conveniently handling the various
!       // PICTURE possibilities for a numeric display variable.
!       typedef enum
!         { UIT = 0, // unsignable, internal, trailing
!           UIL = 1, // unsignable, internal, leading  (impossible)
!           UST = 2, // unsignable, separate, trailing (impossible)
!           USL = 3, // unsignable, separate, leading  (impossible)
!           SIT = 4, // signable,   internal, trailing
!           SIL = 5, // signable,   internal, leading
!           SST = 6, // signable,   separate, trailing
!           SSL = 7, // signable,   separate, leading
!         } SIGN;
!       int the_attributes =  ((C[0].refer.field->attr & signable_e) ? 4 : 0)
!                           + ((C[0].refer.field->attr & separate_e) ? 2 : 0)
!                           + ((C[0].refer.field->attr & leading_e ) ? 1 : 0) ;
!       SIGN signbits = static_cast<SIGN>(the_attributes);
! 
!       // We need a pointer to the units digit of the data.  For a PIC 999v99
!       // value of 123.45, we need a pointer to the '3':
!       int units_offset = (signbits == SSL ? 1 : 0)
!                        + C[0].refer.field->data.digits
!                        - C[0].refer.field->data.rdigits
!                        - 1;
!       tree base;
!       // Now and forever, base points to the data area of C[0]
!       get_location(base, C[0].refer);
! 
!       tree units = gg_define_variable(UCHAR_P);
!       // Now and forever, units points to the units digit of C[0]
!       gg_assign(units, gg_add(base, build_int_cst_type(SIZE_T, units_offset)));
! 
!       // Now and forever, signloc points to the location of the byte containing
!       // the sign information:
!       int signloc_offset=0;
!       switch(signbits)
          {
!         case UIT:
!         case UIL:
!         case UST:
!         case USL:
!           signloc_offset = 0;
!           break;
!         case SIT:
!           signloc_offset = digits-1;
!           break;
!         case SIL:
!           signloc_offset = 0;
!           break;
!         case SST:
!           signloc_offset = digits;
!           break;
!         case SSL:
!           signloc_offset = 0;
!           break;
!         }
!       tree counter = gg_define_int(digits - rdigits);
!       tree pointer = gg_define_variable(UCHAR_P);
!       gg_assign(pointer, units);
!       if( !(C[0].refer.field->attr & signable_e) )
!         {
!         // The target is not signable
!         if( delta >= 1 )
            {
!           // Adding a positive number to an unsignable target.
!           add_case_1(pointer,
!                      tdelta,
!                      charmap,
!                      delta,
!                      counter);
!           handled = 1;
!           }
!         else
!           {
!           // Adding a negative number to an unsignable target.
  
!           /* The edge case is when we are doing something like ADD 1 to 0.21,
!              where the computed value is -0.79, and ends up in the target as
!              0.79.  We don't try to do that, and instead pass off such
!              calculations to the ordinary arithmetic routine.   */
!           if( rdigits )
              {
!             // When there are rdigits, we might have to call ordinary_add
!             // First, we look at the rightmost units digit.
!             IF( gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!                 ge_op,
!                 tdelta )
!               {
!               // There will be no carry from the lowest order digit, so it is
!               // safe to use add_case_2
!               add_case_2(pointer,
!                          tdelta,
!                          counter,
!                          digits - rdigits);
!               }
!             ELSE
!               {
!               // There will be a carry from the rightmost digit.  We have to
!               // check the other digits.  If any are non-zero, then it is safe
!               // to use add_case_2
!               tree break_goto;
!               tree break_label;
!               gg_create_goto_pair(&break_goto,
!                                   &break_label);
!               WHILE( counter, gt_op, integer_one_node )
!                 {
!                 gg_decrement(pointer);
!                 IF( gg_indirect(pointer), ne_op, tzero )
!                   {
!                   // One of the left digits is non-zero, which means it is safe
!                   // to use add_case_2()
!                   gg_assign(counter, build_int_cst_type(INT, digits-rdigits));
!                   gg_assign(pointer, units);
!                   add_case_2(pointer,
!                              tdelta,
!                              counter,
!                              digits - rdigits);
!                   gg_append_statement(break_goto);
!                   }
!                 ELSE
!                   {
!                   gg_decrement(counter);
!                   }
!                 ENDIF
!                 }
!               WEND
!               // If you get here, that means we are adding a negative value
!               // to something with rdigits and we have a carry from the
!               // rightmost place, and all of the other digits are zero.
!               if( !subtracting )
!                 {
!                 ordinary_add_format_1(nC, C,
!                                      nA, A,
!                                      format,
!                                      error,
!                                      not_error,
!                                      compute_error );
!                 }
!               else
!                 {
!                 ordinary_subtract_format_1(nC, C,
!                                            nA, A,
!                                            format,
!                                            error,
!                                            not_error,
!                                            compute_error );
!                 }
!               gg_append_statement(break_label);
!               }
!             ENDIF
!             }
!           else
!             {
!             add_case_2(pointer,
!                        tdelta,
!                        counter,
!                        digits - rdigits);
              }
            handled = true;
            }
+         }
+       else if( signbits == SIT )
+         {
+         // The target is signable, and it is of the type PIC S9999, which is
+         // the most common.
  
!         tree signloc = gg_define_variable(UCHAR_P);
!         gg_assign(signloc,
!                   gg_add(base, build_int_cst_type(SIZE_T, signloc_offset)));
!         if( delta >= 1 )
            {
!           tree break_goto;
!           tree break_label;
!           gg_create_goto_pair(&break_goto,
!                               &break_label);
!           IF( gg_indirect(signloc), ge_op, tzero )
!             {
!             IF( gg_indirect(signloc), le_op, tnine )
!               {
!               // The signloc byte is between '0' and '9'.
  
!               // We are adding a positive to a signable positive value
!               // This is the same as adding a positive value to an unsignable
!               // value:
!               add_case_1(pointer,
!                          tdelta,
!                          charmap,
!                          delta,
!                          counter);
!               gg_append_statement(break_goto);
!               }
!             ELSE
!               {
!               }
!             ENDIF
!             }
!           ELSE
!             {
!             }
!           ENDIF
!           /* We are adding a positive value to a negative value. */
  
!           IF( gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!               gt_op,
!               tdelta )
              {
!             // The rightmost digit is bigger than tdelta, so it's safe to use
!             // the fast routine, because the result will stay negative.
!             add_case_3(pointer,
!                       tdelta,
!                       counter);
!             gg_append_statement(break_goto);
              }
!           ELSE
!             {
!             }
!           ENDIF
!           // Either the rightmost digit is zero, or there will be a carry.
!           // If any of the remaining digits is non-zero, then the result will
!           // stay negative.
  
!           WHILE( counter, gt_op, integer_one_node )
!             {
!             gg_decrement(pointer);
!             IF( gg_indirect(pointer), ne_op, tzero )
!               {
!               // One of the remaining digits is non-zero, so we can still
!               // use the fast routine:
!               gg_assign(counter, build_int_cst_type(INT, digits-rdigits));
!               gg_assign(pointer, units);
!               add_case_3(pointer,
!                         tdelta,
!                         counter);
!               gg_append_statement(break_goto);
!               }
!             ELSE
!               {
!               }
!             ENDIF
!             gg_decrement(counter);
!             }
!           WEND
!           // since we are doing something like ADD 1 to -00.21, we need to
!           // use ordinary arithmetic to cope with the switch to +00.79
!           if( !subtracting )
!             {
!             ordinary_add_format_1(nC, C,
!                                  nA, A,
!                                  format,
!                                  error,
!                                  not_error,
!                                  compute_error );
!             }
!           else
!             {
!             ordinary_subtract_format_1(nC, C,
!                                        nA, A,
!                                        format,
!                                        error,
!                                        not_error,
!                                        compute_error );
!             }
!           gg_append_statement(break_label);
            }
!         else
            {
!           // We are adding a negative value to a signable value.
  
!           tree break_goto;
!           tree break_label;
!           gg_create_goto_pair(&break_goto,
!                               &break_label);
  
!           IF( gg_indirect(signloc), ge_op, tzero )
!             {
!             IF( gg_indirect(signloc), le_op, tnine )
!               {
!               // The signloc byte is between '0' and '9'.
!               // We are adding a negative value to a positive signable value.
! 
!               IF( gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!                   gt_op,
!                   gg_negate(tdelta) )
!                 {
!                 // The units digit is non-zero, so we can use the same routine
!                 // we use for unsignable positives:
!                 add_case_2(pointer,
!                            tdelta,
!                            counter,
!                            digits);
!                 gg_append_statement(break_goto);
!                 }
!               ELSE
!                 {
!                 }
!               ENDIF
! 
!               // The rightmost digit is zero.  Check the remaining digits of the
!               // integer part:
!               WHILE( counter, gt_op, integer_one_node )
!                 {
!                 gg_decrement(pointer);
!                 IF( gg_indirect(pointer), ne_op, tzero )
!                   {
!                   // One of the remaining digits is non-zero, so we can still
!                   // use the fast routine:
!                   gg_assign(counter, build_int_cst_type(INT, digits-rdigits));
!                   gg_assign(pointer, units);
!                   add_case_2(pointer,
!                              tdelta,
!                              counter,
!                              digits);
!                   gg_append_statement(break_goto);
!                   }
!                 ELSE
!                   {
!                   }
!                 ENDIF
!                 gg_decrement(counter);
!                 }
!               WEND
!               // Arriving here means the integer part of the positive signable
!               // is zero.
!               // We are dealing with something like 00.21
!               if( !subtracting )
!                 {
!                 ordinary_add_format_1(nC, C,
!                                      nA, A,
!                                      format,
!                                      error,
!                                      not_error,
!                                      compute_error );
!                 }
!               else
!                 {
!                 ordinary_subtract_format_1(nC, C,
!                                            nA, A,
!                                            format,
!                                            error,
!                                            not_error,
!                                            compute_error );
!                 }
!               gg_append_statement(break_goto);
!               }
!             ELSE
!               {
!               }
!             ENDIF
!             }
!           ELSE
!             {
!             }
!           ENDIF
! 
!           // We are adding a negative value to negative S9999
! 
!           add_case_4(pointer,
!                      tdelta,
!                      counter);
! 
!           // Special case:  When we do ADD -1 to -99.00, add_case_4 actually
!           // comes back with -00.00.  So, we have to check the digits; when
!           // they are all zero, we make the value positive.
!           //if( rdigits )
!             {
!             gg_assign(units, gg_add(units, build_int_cst_type(SIZE_T, rdigits)));
!             gg_assign(pointer, units);
!             IF( gg_bitwise_and(gg_indirect(pointer), uchar_f_node),
!                 ne_op,
!                 build_int_cst_type(UCHAR, 0) )
!               {
!               gg_append_statement(break_goto);
!               }
!             ELSE
!               {
!               }
!             ENDIF
!             gg_assign(counter, build_int_cst_type(INT, digits));
!             WHILE( counter, gt_op, integer_one_node )
!               {
!               gg_decrement(pointer);
!               IF( gg_indirect(pointer),
!                   ne_op,
!                   tzero )
!                 {
!                 gg_append_statement(break_goto);
!                 }
!               ELSE
!                 {
!                 }
!               ENDIF
!               gg_decrement(counter);
!               }
!             WEND
!             // Getting here means that we are looking at -negative zero.  Make
!             // it positive
!             gg_assign(gg_indirect(units), tzero);
!             }
!           gg_append_statement(break_label);
            }
+         handled = true;
+         }
+       }
+     }
+   return handled;
+   }
  
! static bool
! add_format_1( size_t nC, cbl_num_result_t *C,
!               size_t nA, cbl_refer_t *A,
!               cbl_arith_format_t format,
!               cbl_label_t *error,
!               cbl_label_t *not_error,
!               tree         compute_error )
!   {
!   bool handled = false;
!   if( format == no_giving_e )
!     {
!     // Fixed format 1
!     handled = add_litN_to_numdisp( nC, C,
!                                    nA, A,
!                                    format,
!                                    error,
!                                    not_error,
!                                    compute_error,
!                                    false); // false means adding
!     if( !handled )
!       {
!       ordinary_add_format_1(nC, C,
!                            nA, A,
!                            format,
!                            error,
!                            not_error,
!                            compute_error );
!       handled = true;
!       }
!     }
! 
!   return handled;
!   }
! 
! static bool
! add_format_2( size_t nC, cbl_num_result_t *C,
!               size_t nA, cbl_refer_t *A,
!               cbl_arith_format_t format,
!               cbl_label_t *error,
!               cbl_label_t *not_error,
!               tree         compute_error )
!   {
!   bool handled = false;
!   if( format == giving_e )
!     {
!     // Fixed format 2
! 
!     set_up_arithmetic_error_handler(error,
!                                     not_error);
!     // Do phase 1, which calculates the subtotal and puts it into a
!     // temporary location
!     arithmetic_operation( 0, NULL,
!                           nA, A,
!                           0, NULL,
!                           format,
!                           error,
!                           not_error,
!                           compute_error,
!                           "__gg__add_fixed_phase1");
! 
!     // Do phase 2, which puts the subtotal into each target location in turn
!     for(size_t i=0; i<nC; i++)
!       {
!       arithmetic_operation( 1, &C[i],
!                             0, NULL,
!                             0, NULL,
!                             format,
!                             error,
!                             not_error,
!                             compute_error,
!                             "__gg__fixed_phase2_assign_to_c");
!       }
!     arithmetic_error_handler( error,
!                               not_error,
!                               compute_error);
! 
!     handled = true;
!     }
!   return handled;
!   }
! 
! static bool
! add_format_3( size_t nC, cbl_num_result_t *C,
!               size_t nA, cbl_refer_t *A,
!               cbl_arith_format_t format,
!               cbl_label_t *error,
!               cbl_label_t *not_error,
!               tree         compute_error )
!   {
!   bool handled = false;
!   if( format == corresponding_e )
!     {
!     // Fixed format 3
!     gcc_assert(nA == nC);
! 
!     set_up_arithmetic_error_handler(error,
!                                     not_error);
!     arithmetic_operation(nC, C,
!                           nA, A,
!                           0, NULL,
!                           format,
!                           error,
!                           not_error,
!                           compute_error,
!                           "__gg__addf3");
!     arithmetic_error_handler( error,
!                               not_error,
!                               compute_error);
!     handled = true;
!     }
!   return handled;
!   }
! 
! void
! parser_add( size_t nC, cbl_num_result_t *C,
!             size_t nA, cbl_refer_t *A,
!             cbl_arith_format_t format,
!             cbl_label_t *error,
!             cbl_label_t *not_error,
!             void        *compute_error_p ) // Cast this to a tree INT *
!   {
!   Analyze();
!   SHOW_PARSE
!     {
!     SHOW_PARSE_HEADER
!     fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA);
!     for(size_t i=0; i<nA; i++)
!       {
!       if(i > 0)
!         {
!         fprintf(stderr, ",");
          }
+       fprintf(stderr, "%s", A[i].field->name);
        }
+ 
+     fprintf(stderr, "%s", format==giving_e? " GIVING" : "");
+ 
+     fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC);
+     for(size_t i=0; i<nC; i++)
+       {
+       if(i > 0)
+         {
+         fprintf(stderr, ",");
+         }
+       fprintf(stderr, "%s", C[i].refer.field->name);
+       }
+ 
+     SHOW_PARSE_END
      }
  
!   TRACE1
!     {
!     TRACE1_HEADER
!     TRACE1_END
!     }
! 
!   bool handled = fast_add(nC, C, nA, A, format, error, not_error) ;
! 
!   tree compute_error = (tree)compute_error_p;
! 
!   if( !handled )
!     {
!     if( compute_error == NULL )
!       {
!       gg_assign(var_decl_default_compute_error, integer_zero_node);
!       compute_error = gg_get_address_of(var_decl_default_compute_error);
!       }
! 
!     // See if somebody in the addition is a float:
!     handled = add_floats( nC, C,
!                           nA, A,
!                           format,
!                           error,
!                           not_error,
!                           compute_error );
!     }
! 
!   if( !handled )
!     {
!     handled = add_format_1(nC, C,
!                            nA, A,
!                            format,
!                            error,
!                            not_error,
!                            compute_error );
!     }
! 
!   if( !handled )
!     {
!     handled = add_format_2(nC, C,
!                            nA, A,
!                            format,
!                            error,
!                            not_error,
!                            compute_error );
!     }
! 
!   if( !handled )
!     {
!     handled = add_format_3(nC, C,
!                            nA, A,
!                            format,
!                            error,
!                            not_error,
!                            compute_error );
!     }
! 
!   gcc_assert( handled );
    }
  
  void
*************** parser_op( struct cbl_refer_t cref,
*** 1613,1618 ****
--- 2604,2852 ----
      }
    }
  
+ static bool
+ subtract_floats( size_t nC, cbl_num_result_t *C,
+             size_t nA, cbl_refer_t *A,
+             size_t nB, cbl_refer_t *B,
+             cbl_arith_format_t format,
+             cbl_label_t *error,
+             cbl_label_t *not_error,
+             tree         compute_error )
+   {
+   bool handled = false;
+ 
+   bool computation_is_float =    is_somebody_float(nA, A)
+                               || is_somebody_float(nC, C);
+ 
+   // We now start deciding which arithmetic routine we are going to use:
+ 
+   if( computation_is_float )
+     {
+     switch( format )
+       {
+       case no_giving_e:
+         {
+         // Float format 1
+ 
+         set_up_arithmetic_error_handler(error,
+                                         not_error);
+         // Do phase 1, which calculates the subtotal and puts it into a
+         // temporary location
+         arithmetic_operation( 0, NULL,
+                               nA, A,
+                               0, NULL,
+                               format,
+                               error,
+                               not_error,
+                               compute_error,
+                               "__gg__add_float_phase1");
+ 
+         // Do phase 2, which subtracts the subtotal from each target in turn
+         for(size_t i=0; i<nC; i++)
+           {
+           arithmetic_operation(1, &C[i],
+                                 0, NULL,
+                                 0, NULL,
+                                 format,
+                                 error,
+                                 not_error,
+                                 compute_error,
+                                 "__gg__subtractf1_float_phase2");
+           }
+         arithmetic_error_handler( error,
+                                   not_error,
+                                   compute_error);
+ 
+         handled = true;
+ 
+         break;
+         }
+ 
+       case giving_e:
+         {
+         // Float SUBTRACT Format 2
+ 
+         gcc_assert(nB == 1);
+         set_up_arithmetic_error_handler(error,
+                                         not_error);
+         // Do phase 1, which calculates the subtotal and puts it into a
+         // temporary location
+         arithmetic_operation( 0, NULL,
+                               nA, A,
+                               nB, B,
+                               format,
+                               error,
+                               not_error,
+                               compute_error,
+                               "__gg__subtractf2_float_phase1");
+ 
+         // Do phase 2, which puts the subtotal into each target location in turn
+         for(size_t i=0; i<nC; i++)
+           {
+           arithmetic_operation(1, &C[i],
+                                 0, NULL,
+                                 0, NULL,
+                                 format,
+                                 error,
+                                 not_error,
+                                 compute_error,
+                                 "__gg__float_phase2_assign_to_c");
+           }
+         arithmetic_error_handler( error,
+                                   not_error,
+                                   compute_error);
+ 
+         handled = true;
+         break;
+         }
+ 
+       case corresponding_e:
+         {
+         // Float format 3
+         gcc_assert(nA == nC);
+ 
+         set_up_arithmetic_error_handler(error,
+                                         not_error);
+         arithmetic_operation(nC, C,
+                               nA, A,
+                               0, NULL,
+                               format,
+                               error,
+                               not_error,
+                               compute_error,
+                               "__gg__subtractf3");
+         arithmetic_error_handler( error,
+                                   not_error,
+                                   compute_error);
+ 
+         handled = true;
+ 
+         break;
+         }
+ 
+       case not_expected_e:
+         gcc_unreachable();
+         break;
+       }
+     }
+   return handled;
+   }
+ 
+ static bool
+ subtract_format_1(size_t nC, cbl_num_result_t *C,
+                   size_t nA, cbl_refer_t *A,
+                   cbl_arith_format_t format,
+                   cbl_label_t *error,
+                   cbl_label_t *not_error,
+                   tree         compute_error )
+   {
+   bool handled = false;
+   if(format == no_giving_e)
+     {
+     // Fixed format 1
+     handled = add_litN_to_numdisp( nC, C,
+                                    nA, A,
+                                    format,
+                                    error,
+                                    not_error,
+                                    compute_error,
+                                    true); // false means subtraction
+     if( !handled )
+       {
+       ordinary_subtract_format_1(nC, C,
+                                  nA, A,
+                                  format,
+                                  error,
+                                  not_error,
+                                  compute_error );
+       handled = true;
+       }
+     }
+   return handled;
+   }
+ 
+ static bool
+ subtract_format_2(size_t nC, cbl_num_result_t *C,
+                   size_t nA, cbl_refer_t *A,
+                   size_t nB, cbl_refer_t *B,
+                   cbl_arith_format_t format,
+                   cbl_label_t *error,
+                   cbl_label_t *not_error,
+                   tree         compute_error )
+   {
+   bool handled = false;
+   if(format == giving_e)
+     {
+     // Fixed SUBTRACT Format 2
+ 
+     gcc_assert(nB == 1);
+     set_up_arithmetic_error_handler(error,
+                                     not_error);
+     // Do phase 1, which calculates the subtotal and puts it into a
+     // temporary location
+     arithmetic_operation( 0, NULL,
+                           nA, A,
+                           nB, B,
+                           format,
+                           error,
+                           not_error,
+                           compute_error,
+                           "__gg__subtractf2_fixed_phase1");
+ 
+     // Do phase 2, which puts the subtotal into each target location in turn
+     for(size_t i=0; i<nC; i++)
+       {
+       arithmetic_operation( 1, &C[i],
+                             0, NULL,
+                             0, NULL,
+                             format,
+                             error,
+                             not_error,
+                             compute_error,
+                             "__gg__fixed_phase2_assign_to_c");
+       }
+     arithmetic_error_handler( error,
+                               not_error,
+                               compute_error);
+ 
+     handled = true;
+     }
+   return handled;
+   }
+ 
+ static bool
+ subtract_format_3(size_t nC, cbl_num_result_t *C,
+                   size_t nA, cbl_refer_t *A,
+                   cbl_arith_format_t format,
+                   cbl_label_t *error,
+                   cbl_label_t *not_error,
+                   tree         compute_error )
+   {
+   bool handled = false;
+   if( format == corresponding_e )
+     {
+     // Fixed format 3
+     gcc_assert(nA == nC);
+ 
+     set_up_arithmetic_error_handler(error,
+                                     not_error);
+     arithmetic_operation(nC, C,
+                           nA, A,
+                           0, NULL,
+                           format,
+                           error,
+                           not_error,
+                           compute_error,
+                           "__gg__subtractf3");
+     arithmetic_error_handler( error,
+                               not_error,
+                               compute_error);
+ 
+     handled = true;
+     }
+   return handled;
+   }
+ 
  void
  parser_subtract(size_t nC, cbl_num_result_t *C, // C = B - A
                  size_t nA, cbl_refer_t *A,
*************** parser_subtract(size_t nC, cbl_num_resul
*** 1662,1914 ****
    //  We are going to look for configurations that allow us to do binary
    //  arithmetic and quickly assign the results:
  
!   //  no_giving_e is format 1; giving_e is format 2.
! 
!   bool handled = false;
! 
!   if( !error && !not_error && fast_subtract(nC, C,
!                                             nA, A,
!                                             nB, B,
!                                             format) )
!     {
!     handled = true;
!     }
!   else
      {
-     tree compute_error = (tree)compute_error_p;
      if( compute_error == NULL )
        {
        gg_assign(var_decl_default_compute_error, integer_zero_node);
        compute_error = gg_get_address_of(var_decl_default_compute_error);
        }
!     bool computation_is_float =    is_somebody_float(nA, A)
!                                 || is_somebody_float(nC, C);
! 
!     // We now start deciding which arithmetic routine we are going to use:
! 
!     if( computation_is_float )
!       {
!       switch( format )
!         {
!         case no_giving_e:
!           {
!           // Float format 1
! 
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_float_phase1");
! 
!           // Do phase 2, which subtracts the subtotal from each target in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__subtractf1_float_phase2");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
! 
!           handled = true;
! 
!           break;
!           }
! 
!         case giving_e:
!           {
!           // Float SUBTRACT Format 2
! 
!           gcc_assert(nB == 1);
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 nB, B,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__subtractf2_float_phase1");
! 
!           // Do phase 2, which puts the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__float_phase2_assign_to_c");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
! 
!           handled = true;
!           break;
!           }
! 
!         case corresponding_e:
!           {
!           // Float format 3
!           gcc_assert(nA == nC);
! 
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           arithmetic_operation(nC, C,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__subtractf3");
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
! 
!           handled = true;
! 
!           break;
!           }
! 
!         case not_expected_e:
!           gcc_unreachable();
!           break;
!         }
!       }
!     else
!       {
!       switch( format )
!         {
!         case no_giving_e:
!           {
!           // Fixed format 1
! 
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__add_fixed_phase1");
! 
!           // Do phase 2, which subtracts the subtotal from each target in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation(1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__subtractf1_fixed_phase2");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
! 
!           handled = true;
! 
!           break;
!           }
! 
!         case giving_e:
!           {
!           // Fixed SUBTRACT Format 2
! 
!           gcc_assert(nB == 1);
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           // Do phase 1, which calculates the subtotal and puts it into a
!           // temporary location
!           arithmetic_operation( 0, NULL,
!                                 nA, A,
!                                 nB, B,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__subtractf2_fixed_phase1");
! 
!           // Do phase 2, which puts the subtotal into each target location in turn
!           for(size_t i=0; i<nC; i++)
!             {
!             arithmetic_operation( 1, &C[i],
!                                   0, NULL,
!                                   0, NULL,
!                                   format,
!                                   error,
!                                   not_error,
!                                   compute_error,
!                                   "__gg__fixed_phase2_assign_to_c");
!             }
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
! 
!           handled = true;
!           break;
!           }
! 
!         case corresponding_e:
!           {
!           // Fixed format 3
!           gcc_assert(nA == nC);
! 
!           set_up_arithmetic_error_handler(error,
!                                           not_error);
!           arithmetic_operation(nC, C,
!                                 nA, A,
!                                 0, NULL,
!                                 format,
!                                 error,
!                                 not_error,
!                                 compute_error,
!                                 "__gg__subtractf3");
!           arithmetic_error_handler( error,
!                                     not_error,
!                                     compute_error);
  
!           handled = true;
!           break;
!           }
  
!         case not_expected_e:
!           gcc_unreachable();
!           break;
!         }
!       }
      }
  
!   if( !handled )
      {
!     abort();
      }
    TRACE1
      {
      TRACE1_HEADER
--- 2896,2957 ----
    //  We are going to look for configurations that allow us to do binary
    //  arithmetic and quickly assign the results:
  
!   bool handled = fast_subtract( nC, C,
!                                 nA, A,
!                                 nB, B,
!                                 format,
!                                 error,
!                                 not_error) ;
!   tree compute_error = (tree)compute_error_p;
!   if( !handled )
      {
      if( compute_error == NULL )
        {
        gg_assign(var_decl_default_compute_error, integer_zero_node);
        compute_error = gg_get_address_of(var_decl_default_compute_error);
        }
!     handled = subtract_floats(nC, C,
!                               nA, A,
!                               nB, B,
!                               format,
!                               error,
!                               not_error,
!                               compute_error );
!     }
  
!   if(!handled)
!     {
!     handled = subtract_format_1( nC, C,
!                                  nA, A,
!                                  format,
!                                  error,
!                                  not_error,
!                                  compute_error );
!     }
  
!   if(!handled)
!     {
!     handled = subtract_format_2( nC, C,
!                                  nA, A,
!                                  nB, B,
!                                  format,
!                                  error,
!                                  not_error,
!                                  compute_error );
      }
  
!   if(!handled)
      {
!     handled = subtract_format_3( nC, C,
!                                  nA, A,
!                                  format,
!                                  error,
!                                  not_error,
!                                  compute_error );
      }
+ 
+   gcc_assert(handled);
+ 
    TRACE1
      {
      TRACE1_HEADER
diff -Nrcpad gcc-17-20260524/gcc/cobol/genutil.cc gcc-17-20260531/gcc/cobol/genutil.cc
*** gcc-17-20260524/gcc/cobol/genutil.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/genutil.cc	Sun May 31 22:32:05 2026
*************** refer_has_depends(const cbl_refer_t &ref
*** 1694,1699 ****
--- 1694,1705 ----
      return false;
      }
  
+   if( refer.field && refer.field->type == FldIndex )
+     {
+     // This field can't have a DEPENDING ON
+     return false;
+     }
+ 
    // Check if there there is an occurs with a depending_on in the hierarchy
    bool proceed = false;
    const cbl_field_t *odo = symbol_find_odo(refer.field);
*************** refer_is_clean(const cbl_refer_t &refer)
*** 1996,2002 ****
      // passes us a refer for an optional parameter that has been omitted, for
      // example.
  
!     // It is also the case that a FldLiteralN will never have suscripts, or the
      // like.
      return true;
      }
--- 2002,2008 ----
      // passes us a refer for an optional parameter that has been omitted, for
      // example.
  
!     // It is also the case that a FldLiteralN will never have subscripts, or the
      // like.
      return true;
      }
diff -Nrcpad gcc-17-20260524/gcc/cobol/lang-specs.h gcc-17-20260531/gcc/cobol/lang-specs.h
*** gcc-17-20260524/gcc/cobol/lang-specs.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/lang-specs.h	Sun May 31 22:32:05 2026
***************
*** 37,46 ****
          "%{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fexec-charset*} "
          "%{fexec-national-charset*} "
-         "%{fstatic-call} %{fdefaultbyte} "
          "%{ffixed-form} %{ffree-form} %{indicator-column*} "
          "%{preprocess} "
          "%{dialect} "
          "%{include} "
--- 37,48 ----
          "%{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
+         "%{fdefaultbyte} "
          "%{fexec-charset*} "
          "%{fexec-national-charset*} "
          "%{ffixed-form} %{ffree-form} %{indicator-column*} "
+         "%{fstatic-call} "
+         "%{ftrunc} "
          "%{preprocess} "
          "%{dialect} "
          "%{include} "
diff -Nrcpad gcc-17-20260524/gcc/cobol/lang.opt gcc-17-20260531/gcc/cobol/lang.opt
*** gcc-17-20260524/gcc/cobol/lang.opt	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/lang.opt	Sun May 31 22:32:05 2026
*************** fexec-national-charset=
*** 81,86 ****
--- 81,90 ----
  Cobol Joined Var(cobol_national_charset) RejectNegative
  Set the default execution character set for NATIONAL data items.
  
+ ftrunc
+ Cobol Var(cobol_trunc_bin, 1) Init(1)
+ Truncate BINARY PIC 9(n) to n digits.
+ 
  ;; warnings
  
  ; Par78CdfDefinedW
diff -Nrcpad gcc-17-20260524/gcc/cobol/lexio.cc gcc-17-20260531/gcc/cobol/lexio.cc
*** gcc-17-20260524/gcc/cobol/lexio.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/lexio.cc	Sun May 31 22:32:05 2026
*************** static inline int right_margin() {
*** 78,84 ****
  }
  
  /*
!  * When setting the indicator column explicity:
   *   To get strict fixed 72-column lines, use a negative column number.
   *   When setting back to 0 (free), the right margin is also reset to 0.
   */
--- 78,84 ----
  }
  
  /*
!  * When setting the indicator column explicitly:
   *   To get strict fixed 72-column lines, use a negative column number.
   *   When setting back to 0 (free), the right margin is also reset to 0.
   */
*************** maybe_add_space(const span_t& pattern, r
*** 206,212 ****
   * directive.  For the current line, apply patterns that begins on the
   * line.  (It may match input extending beyond the current eol.)
   *
!  * As each replacement is identified, append it to the passsed list of
   * pending replacements.  For these elements:
   *
   *     before is a span in mfile
--- 206,212 ----
   * directive.  For the current line, apply patterns that begins on the
   * line.  (It may match input extending beyond the current eol.)
   *
!  * As each replacement is identified, append it to the passed list of
   * pending replacements.  For these elements:
   *
   *     before is a span in mfile
*************** int
*** 1605,1611 ****
  cdftext::open_input( const char filename[] ) {
    int fd = open(filename, O_RDONLY);
    if( fd == -1 ) {
!     dbgmsg( "could not open '%s': %s", filename, xstrerror(errno) );
    }
  
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
--- 1605,1612 ----
  cdftext::open_input( const char filename[] ) {
    int fd = open(filename, O_RDONLY);
    if( fd == -1 ) {
!     auto erc(errno);
!     dbgmsg( "could not open '%s': %s", filename, xstrerror(erc) );
    }
  
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
diff -Nrcpad gcc-17-20260524/gcc/cobol/messages.cc gcc-17-20260531/gcc/cobol/messages.cc
*** gcc-17-20260524/gcc/cobol/messages.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/messages.cc	Sun May 31 22:32:05 2026
***************
*** 66,72 ****
  
  
  /*
!  * As of now, every diagnositc has one id, one message, one kind, and is
   * associated with "one" dialect. The dialect could be ORed. If it is, that
   * means among the dialects it belongs to, it is always of the same kind.
   *
--- 66,72 ----
  
  
  /*
!  * As of now, every diagnostic has one id, one message, one kind, and is
   * associated with "one" dialect. The dialect could be ORed. If it is, that
   * means among the dialects it belongs to, it is always of the same kind.
   *
diff -Nrcpad gcc-17-20260524/gcc/cobol/parse.y gcc-17-20260531/gcc/cobol/parse.y
*** gcc-17-20260524/gcc/cobol/parse.y	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/parse.y	Sun May 31 22:32:05 2026
***************
*** 58,63 ****
--- 58,71 ----
    struct label_pair_t {
      cbl_label_t *from, *to;
    };
+ 
+   struct linage_t {
+       cbl_refer_t *footing, *top, *bottom;
+   };
+   struct linage_value_t {
+       int token;
+       cbl_refer_t *value;
+   };
    
  class locale_tgt_t {
    char user_system_default;
*************** class locale_tgt_t {
*** 741,751 ****
  			perform_inline perform_except
  
  %type   <refer>         eval_subject1
! %type   <vargs>         vargs disp_vargs;
  %type   <field>         level_name
! %type   <string>        fd_name picture_sym name66 paragraph_name
  %type   <literal>       literalism
! %type   <number>        bound advance_when org_clause1 read_next
  %type   <number>        access_mode multiple lock_how lock_mode org_is
  %type   <select_clauses> select_clauses
  %type   <select_clause> select_clause  access_clause alt_key_clause
--- 749,760 ----
  			perform_inline perform_except
  
  %type   <refer>         eval_subject1
! %type   <vargs>         vargs disp_vargs
  %type   <field>         level_name
! %type   <number>        fd_name
! %type   <string>        picture_sym name66 paragraph_name
  %type   <literal>       literalism
! %type   <number>        bound advance_when org_clause1 read_next top_bot
  %type   <number>        access_mode multiple lock_how lock_mode org_is
  %type   <select_clauses> select_clauses
  %type   <select_clause> select_clause  access_clause alt_key_clause
*************** class locale_tgt_t {
*** 754,759 ****
--- 763,770 ----
                          record_delim_clause record_key_clause
                          relative_key_clause reserve_clause sharing_clause
  
+ %type   <linage>        with_linage with_footings
+ %type   <linage_value>  with_footing
  %type   <file>          filename read_body write_body delete_body
  %type   <label>         delete_file_body
  %type   <error>         delete_error delete_except delete_excepts
*************** class locale_tgt_t {
*** 770,776 ****
  %type   <refer>         varg varg1 varg1a start_after start_pos
  %type   <refer>         expr expr_term compute_expr free_tgt by_value_arg
  %type   <refer>         move_tgt selected_name read_key read_into vary_by
! %type   <refer>         accept_refer num_operand envar search_expr any_arg
  %type   <accept_func>	accept_body
  %type   <refers>        subscript_exprs subscripts arg_list free_tgts
  %type   <targets>       move_tgts set_tgts
--- 781,787 ----
  %type   <refer>         varg varg1 varg1a start_after start_pos
  %type   <refer>         expr expr_term compute_expr free_tgt by_value_arg
  %type   <refer>         move_tgt selected_name read_key read_into vary_by
! %type   <refer>         num_operand envar search_expr any_arg
  %type   <accept_func>	accept_body
  %type   <refers>        subscript_exprs subscripts arg_list free_tgts
  %type   <targets>       move_tgts set_tgts
*************** class locale_tgt_t {
*** 802,808 ****
  %type   <arith>         add_cond subtract_cond multiply_cond divide_cond
  %type   <arith>         divide_into divide_by
  
! %type   <refer>         intrinsic_call
  %type   <field>         intrinsic intrinsic_locale
  
  %type   <field>         intrinsic0
--- 813,819 ----
  %type   <arith>         add_cond subtract_cond multiply_cond divide_cond
  %type   <arith>         divide_into divide_by
  
! %type   <refer>         function_call
  %type   <field>         intrinsic intrinsic_locale
  
  %type   <field>         intrinsic0
*************** class locale_tgt_t {
*** 844,850 ****
  %type   <ffi_impl>      call_body call_impl
  
  %type   <ffi_arg>       procedure_use
! %type   <ffi_args>      procedure_uses
  
  %type   <comminit>      comminit comminits program_attrs
  
--- 855,861 ----
  %type   <ffi_impl>      call_body call_impl
  
  %type   <ffi_arg>       procedure_use
! %type   <ffi_args>      procedure_uses procedure_args
  
  %type   <comminit>      comminit comminits program_attrs
  
*************** class locale_tgt_t {
*** 961,966 ****
--- 972,979 ----
      struct sort_key_t *sort_key;
      struct sort_keys_t *sort_keys;
      struct file_sort_io_t *sort_io;
+            linage_t linage;
+            linage_value_t linage_value;
      struct arith_t *arith;
      struct { size_t ntgt; cbl_num_result_t *tgts;
               cbl_refer_t *expr; } compute_body_t;
*************** class locale_tgt_t {
*** 1025,1034 ****
  %printer { fprintf(yyo, "%s", $$->field? name_of($$->field) : "[omitted]"); } alloc_ret
  %printer { fprintf(yyo, "clauses: 0x%04x", $$); } data_clauses
                          
! %printer { fprintf(yyo, "%s{%u/%u} %s '%s' (%s)",
                          refer_type_str($$),
                          $$ && $$->field? $$->field->char_capacity() : 0,
!                         $$ && $$->field? $$->field->data.capacity() : 0, 
                          $$? $$->name() : "<none>",
                          $$ && $$->field? $$->field->data.original()?
                                           $$->field->data.original() : "<nil>" : "",
--- 1038,1048 ----
  %printer { fprintf(yyo, "%s", $$->field? name_of($$->field) : "[omitted]"); } alloc_ret
  %printer { fprintf(yyo, "clauses: 0x%04x", $$); } data_clauses
                          
! %printer { fprintf(yyo, "%s{%u/%u} %c%s '%s' (%s)",
                          refer_type_str($$),
                          $$ && $$->field? $$->field->char_capacity() : 0,
!                         $$ && $$->field? $$->field->data.capacity() : 0,
!                         $$ && $$->addr_of? '^' : ' ', 
                          $$? $$->name() : "<none>",
                          $$ && $$->field? $$->field->data.original()?
                                           $$->field->data.original() : "<nil>" : "",
*************** class locale_tgt_t {
*** 1081,1086 ****
--- 1095,1110 ----
  %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category),
                                      name_of($$.replacement->field)); } init_by
  
+ %printer { fprintf(yyo, "(%s)", mode_syntax_only()?
+                         "syntax-only mode" : "compiling" ); } IDENTIFICATION_DIV
+ %printer { fprintf(yyo, "(%s)", mode_syntax_only()?
+                         "syntax-only mode" : "compiling" ); } ENVIRONMENT_DIV
+ %printer { fprintf(yyo, "(%s)", mode_syntax_only()?
+                         "syntax-only mode" : "compiling" ); } DATA_DIV
+ %printer { fprintf(yyo, "(%s)", mode_syntax_only()?
+                         "syntax-only mode" : "compiling" ); } PROCEDURE_DIV
+ 
+ 
                          /* CDF (COPY and >> defined here but used in cdf.y) */
  %left                   BASIS CBL CONSTANT COPY
                          DEFINED ENTER FEATURE INSERTT
*************** top:            programs
*** 1534,1549 ****
                    if( ! goodnight_gracie() ) {
                      YYABORT;
                    }
!                   if( nparse_error > 0 ) YYABORT;
                  }
          |       programs end_program
                  {
!                   if( nparse_error > 0 ) YYABORT;
                  }
                  ;
  programs:       program
          |       programs end_program program
                  ;
  program:	id_div options_para env_div data_div
                  {
                    if( ! data_division_ready() ) {
--- 1558,1592 ----
                    if( ! goodnight_gracie() ) {
                      YYABORT;
                    }
!                   if( ! successful_parse() ) YYABORT;
                  }
          |       programs end_program
                  {
!                   if( ! successful_parse() ) YYABORT;
                  }
                  ;
  programs:       program
          |       programs end_program program
                  ;
+                 /*
+                  * 10.6.2 Syntax rules 
+                  * 4) The following restrictions apply to program prototypes,
+                  *    function prototypes, and method prototypes:
+                  *    a) The identification division shall not contain an
+                  *       ARITHMETIC clause.
+                  *    b) The environment division shall not contain an
+                  *       object-computer paragraph.
+                  *    c) The only clauses that may be specified in the
+                  *       SPECIAL-NAMES paragraph are the ALPHABET clause, the
+                  *       CURRENCY clause, the DECIMAL-POINT clause, the LOCALE
+                  *       clause, and the SYMBOLIC-CHARACTERS clause.
+                  *    d) The environment division shall not contain an
+                  *       input-output section.
+                  *    e) The data division may contain only a linkage section.
+                  *    f) The procedure division shall contain only a procedure
+                  *       division header.
+                  */
+ 
  program:	id_div options_para env_div data_div
                  {
                    if( ! data_division_ready() ) {
*************** program:	id_div options_para env_div dat
*** 1557,1570 ****
                  }
                  ;
  
! id_div:         cdf_words IDENTIFICATION_DIV '.' program_id
!         |	cdf_words                        program_id
!         |       cdf_words IDENTIFICATION_DIV '.' function_id
                  ;
  
  cdf_words:	%empty
  	|	cobol_words
- 	/* |	error { error_msg(@1, "not a COBOL-WORD"); } */
  		;
  cobol_words:	cobol_words1
  	|	cobol_words cobol_words1
--- 1600,1614 ----
                  }
                  ;
  
! id_div:         cdf_words id_division  program_id
!         |       cdf_words id_division function_id
!                 ;
! id_division:    %empty
!         |       IDENTIFICATION_DIV '.'
                  ;
  
  cdf_words:	%empty
  	|	cobol_words
  		;
  cobol_words:	cobol_words1
  	|	cobol_words cobol_words1
*************** cobol_words1:	COBOL_WORDS EQUATE NAME[ke
*** 1585,1601 ****
  
  program_id:     PROGRAM_ID dot namestr[name] program_as program_attrs[attr] dot
                  {
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
-                   parser_division( identification_div_e, NULL, 0, NULL );
                    location_set(@1);
-                   int main_error=0;
-                   const char *name = string_of($name);
-                   parser_enter_program( name, false, &main_error );
-                   if( main_error ) {
-                     error_msg(@name, "PROGRAM-ID 'main' is invalid with %<-main%> option");
-                     YYERROR;
-                   }
  
                    if( symbols_begin() == symbols_end() ) {
                      symbol_table_init();
--- 1629,1638 ----
  
  program_id:     PROGRAM_ID dot namestr[name] program_as program_attrs[attr] dot
                  {
+                   const char *name = string_of($name);
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
                    location_set(@1);
  
                    if( symbols_begin() == symbols_end() ) {
                      symbol_table_init();
*************** program_id:     PROGRAM_ID dot namestr[n
*** 1611,1617 ****
                               name, L->line);
                      YYERROR;
                    }
!                   if( nparse_error > 0 ) YYABORT;
                  }
                  ;
  dot:            %empty
--- 1648,1678 ----
                               name, L->line);
                      YYERROR;
                    }
!                   if( ! successful_parse() ) YYABORT;
! 
!                   parser_division( identification_div_e, NULL, 0, NULL );
!                   int main_error=0;
!                   parser_enter_program( name, false, &main_error );
!                   if( main_error ) {
!                     error_msg(@name, "PROGRAM-ID 'main' is invalid with %<-main%> option");
!                     YYERROR;
!                   }
!                 }
!         |       PROGRAM_ID dot namestr[name] program_as is PROTOTYPE '.'
!                 {
!                   current_division = identification_div_e;
!                   location_set(@1);
!                   const char *name = string_of($name);
!                   if( symbols_begin() == symbols_end() ) {
!                     symbol_table_init();
!                   }
!                   if( !current.new_program(@name, LblProgram, name,
! 		                           $program_as.data,
!                                            false, false, false, true) ){
!                     auto L = symbol_program(current_program_index(), name);
!                     assert(L);
!                     dbgmsg("PROGRAM-ID %s defined on line %d", name, L->line);
!                   }
                  }
                  ;
  dot:            %empty
*************** program_as:     %empty     { static cons
*** 1621,1640 ****
          |       AS LITERAL { $$ = $2; }
                  ;
  
! function_id:    FUNCTION NAME program_as program_attrs[attr] '.'
                  {
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
-                   parser_division( identification_div_e, NULL, 0, NULL );
                    location_set(@1);
  
-                   int main_error = 0;
-                   parser_enter_program( $NAME, true, &main_error );
-                   if( main_error ) {
-                     error_msg(@NAME, "FUNCTION-ID %<main%> is invalid "
-                               "with %<-main%> option");
-                     YYERROR;
-                   }
                    if( symbols_begin() == symbols_end() ) {
                      symbol_table_init();
                    }
--- 1682,1693 ----
          |       AS LITERAL { $$ = $2; }
                  ;
  
! function_id:    FUNCTION dot  NAME program_as program_attrs[attr] '.'
                  {
                    internal_ebcdic_lock();
                    current_division = identification_div_e;
                    location_set(@1);
  
                    if( symbols_begin() == symbols_end() ) {
                      symbol_table_init();
                    }
*************** function_id:    FUNCTION NAME program_as
*** 1654,1665 ****
  			      $NAME);
                      YYERROR;
                    }
!                   current.udf_add(current_program_index());
!                   if( nparse_error > 0 ) YYABORT;
                  }
!         |       FUNCTION NAME program_as is PROTOTYPE '.'
                  {
!                   cbl_unimplemented("FUNCTION PROTOTYPE");
                  }
                  ;
  
--- 1707,1741 ----
  			      $NAME);
                      YYERROR;
                    }
!                   current.udf_add(current_program_index(), false);
!                   if( ! successful_parse() ) YYABORT;
! 
!                   parser_division( identification_div_e, NULL, 0, NULL );
!                   int main_error = 0;
!                   parser_enter_program( $NAME, true, &main_error );
!                   if( main_error ) {
!                     error_msg(@NAME, "FUNCTION-ID %<main%> is invalid "
!                               "with %<-main%> option");
!                     YYERROR;
!                   }
                  }
!         |       FUNCTION dot NAME[name] program_as is PROTOTYPE '.'
                  {
!                   current_division = identification_div_e;
!                   location_set(@1);
! 
!                   if( symbols_begin() == symbols_end() ) {
!                     symbol_table_init();
!                   }
!                   if( !current.new_program(@name, LblFunction, $name,
! 		                           $program_as.data,
!                                            false, false, false, true) ) {
!                     auto L = symbol_program(current_program_index(), $name);
!                     assert(L);
!                     dbgmsg("FUNCTION-ID %s defined on line %d", $name, L->line);
!                   }
! 
!                   current.udf_add(current_program_index(), true);
                  }
                  ;
  
*************** options_para:   %empty
*** 1671,1685 ****
  opt_clauses:    opt_clause
          |       opt_clauses opt_clause
                  ;
! opt_clause:     opt_arith
!         |       opt_round
!         |       opt_entry
!         |       opt_binary
          |       opt_decimal {
  		  cbl_unimplemented("type FLOAT-DECIMAL");
  		}
!         |       opt_intermediate
!         |       opt_init
                  ;
  
  opt_arith:      ARITHMETIC is opt_arith_type {
--- 1747,1763 ----
  opt_clauses:    opt_clause
          |       opt_clauses opt_clause
                  ;
! opt_clause:     opt_arith   { prototype_ok(@1, dspc_arithmetic_clause_e); }
!         |       opt_round   { prototype_ok(@1, dspc_default_rounded_clause_e); }
!         |       opt_entry   { prototype_ok(@1, dspc_entry_convention_clause_e); }
!         |       opt_binary  { prototype_ok(@1, dspc_float_binary_clause_e); }
          |       opt_decimal {
  		  cbl_unimplemented("type FLOAT-DECIMAL");
  		}
!         |       opt_intermediate {
!                   prototype_ok(@1, dspc_intermediate_rounding_clause_e);
!                 }
!         |       opt_init    { prototype_ok(@1, dspc_initialize_clause_e); }
                  ;
  
  opt_arith:      ARITHMETIC is opt_arith_type {
*************** env_sections:   env_section
*** 1917,1925 ****
          |       env_sections env_section
                  ;
  
! env_section:    INPUT_OUTPUT_SECT '.'
!         |       INPUT_OUTPUT_SECT '.' io_sections
!         |       INPUT_OUTPUT_SECT '.' selects { /* IBM requires FILE CONTROL.  */ }
          |       CONFIGURATION_SECT '.'
          |       CONFIGURATION_SECT '.' config_paragraphs
          |       cdf
--- 1995,2009 ----
          |       env_sections env_section
                  ;
  
! env_section:    INPUT_OUTPUT_SECT '.' {
!                   prototype_ok(@1, dspc_i_o_section_e); 
!                 }
!         |       INPUT_OUTPUT_SECT '.' io_sections {
!                   prototype_ok(@1, dspc_i_o_section_e); 
!                 }
!         |       INPUT_OUTPUT_SECT '.' selects {
!                   prototype_ok(@1, dspc_i_o_section_e); 
!                 } /* IBM requires FILE CONTROL.  */ 
          |       CONFIGURATION_SECT '.'
          |       CONFIGURATION_SECT '.' config_paragraphs
          |       cdf
*************** special_names:  special_name
*** 2681,2689 ****
          |       special_names special_name
                  ;
  
! special_name:   dev_mnemonic
          |       ALPHABET NAME[name] is alphabet_name[abc]
                  {
                    if( !$abc ) YYERROR;
                    assert($abc); // already in symbol table
                    if( !namcpy(@name, $abc->name, $name) ) YYERROR;
--- 2765,2776 ----
          |       special_names special_name
                  ;
  
! special_name:   dev_mnemonic {
!                   prototype_ok(@1, dspc_device_clause_e); 
!                 }
          |       ALPHABET NAME[name] is alphabet_name[abc]
                  {
+                   prototype_ok(@1, dspc_alphabet_name_clause_e);                     
                    if( !$abc ) YYERROR;
                    assert($abc); // already in symbol table
                    if( !namcpy(@name, $abc->name, $name) ) YYERROR;
*************** special_name:   dev_mnemonic
*** 2691,2696 ****
--- 2778,2784 ----
                  }
          |       ALPHABET NAME[name] for alphanational is alphabet_name[abc]
                  {
+                   prototype_ok(@1, dspc_alphabet_name_clause_e);                     
                    if( !$abc ) YYERROR;
                    assert($abc); // already in symbol table
                    if( !namcpy(@name, $abc->name, $name) ) YYERROR;
*************** special_name:   dev_mnemonic
*** 2708,2713 ****
--- 2796,2802 ----
                  }
          |       CLASS NAME is domains
                  {
+                   prototype_ok(@1, dspc_class_clause_e);                     
                    struct cbl_field_t field = { FldClass, 0, {}, 0, $NAME };
                    if( !namcpy(@NAME, field.name, $2) ) YYERROR;
  
*************** special_name:   dev_mnemonic
*** 2748,2753 ****
--- 2837,2843 ----
                  // symbol_currency_add (symbol, sign-string). 'symbol' is the
                  // character in the PICTURE string, and 'sign' is the substitution
                  // that gets made in memory.
+                   prototype_ok(@1, dspc_currency_sign_clause_e);                     
                    if( ! string_of($lit) ) {
                      error_msg(@lit, "'%s' has embedded NUL", $lit.data);
                      YYERROR;
*************** special_name:   dev_mnemonic
*** 2756,2765 ****
--- 2846,2857 ----
                  }
          |       DECIMAL_POINT is COMMA
                  {
+                   prototype_ok(@1, dspc_decimal_point_is_comma_clause_e); 
                    symbol_decimal_point_set(',');
                  }
          |       LOCALE NAME is locale_spec[spec]
                  {
+                   prototype_ok(@1, dspc_locale_clause_e); 
                    cbl_locale_t locale($NAME, $spec);
                    if( locale.encoding == no_encoding_e ) {
                      error_msg(@NAME, "invalid iconv LOCALE name %qs", $spec);
*************** special_name:   dev_mnemonic
*** 2774,2782 ****
                    }
                  }
                  ;
!         |       upsi
          |       SYMBOLIC characters symbolic is_alphabet
                  {
                    cbl_unimplemented("SYMBOLIC syntax");
                  }
                  ;
--- 2866,2877 ----
                    }
                  }
                  ;
!         |       upsi {
!                   prototype_ok(@1, dspc_switch_clause_e); 
!                 }
          |       SYMBOLIC characters symbolic is_alphabet
                  {
+                   prototype_ok(@1, dspc_symbolic_characters_clause_e); 
                    cbl_unimplemented("SYMBOLIC syntax");
                  }
                  ;
*************** alphabet_name:  STANDARD_ALPHABET  { $$
*** 2887,2893 ****
                  }
          |       alphabet_seqs
                  {
!                   $1->reencode();
                    $$ = cbl_alphabet_of(symbol_alphabet_add(PROGRAM, $1));
                  }
          |       error
--- 2982,2988 ----
                  }
          |       alphabet_seqs
                  {
!                   $1->reencode(@1);
                    $$ = cbl_alphabet_of(symbol_alphabet_add(PROGRAM, $1));
                  }
          |       error
*************** data_sections:  data_section
*** 3188,3205 ****
--- 3283,3305 ----
  
  data_section:   FILE_SECT '.'
          |       FILE_SECT '.' {
+                   prototype_ok(@1, dspc_file_section_e); 
                    current_data_section_set(@1, file_datasect_e);
                  } file_descrs
          |       WORKING_STORAGE_SECT '.' {
+                   prototype_ok(@1, dspc_working_storage_section_e); 
                    current_data_section_set(@1, working_storage_datasect_e);
                  } fields_maybe
          |       LOCAL_STORAGE_SECT '.' {
+                   prototype_ok(@1, dspc_local_storage_section_e); 
                    current_data_section_set(@1, local_storage_datasect_e);
                  } fields_maybe
          |       LINKAGE_SECT '.' {
+                   prototype_ok(@1, dspc_linkage_section_e);
                    current_data_section_set(@1, linkage_datasect_e);
                  } fields_maybe
  	|	SCREEN SECTION '.' {
+                   prototype_ok(@1, dspc_screen_section_e); 
  		  cbl_unimplemented("SCREEN SECTION");
  		}
                  ;
*************** file_descrs:    file_descr
*** 3208,3218 ****
          |       file_descrs file_descr
                  ;
  file_descr:     fd_name            '.' { field_done(); } fields
!         |       fd_name fd_clauses '.' { field_done(); } fields
                  ;
  
! fd_name:        FD NAME { $$ = $2; file_section_fd_set(fd_e, $2, @2); }
! 	|       SD NAME { $$ = $2; file_section_fd_set(sd_e, $2, @2); }
          ;
  
  fd_clauses:     fd_clause
--- 3308,3319 ----
          |       file_descrs file_descr
                  ;
  file_descr:     fd_name            '.' { field_done(); } fields
!         |       fd_name fd_clauses '.' { field_done(); }
!                 fields
                  ;
  
! fd_name:        FD NAME { $$ = file_section_fd_set(fd_e, $2, @2); }
! 	|       SD NAME { $$ = file_section_fd_set(sd_e, $2, @2); }
          ;
  
  fd_clauses:     fd_clause
*************** fd_clause:      record_desc
*** 3307,3313 ****
                  {
                    error_msg(@1, "invalid FD phrase");
                  }
!         |       fd_linage { cbl_unimplemented("LINAGE"); }
          |       fd_report {
                    cbl_unimplemented("REPORT WRITER");
                    YYERROR;
--- 3408,3418 ----
                  {
                    error_msg(@1, "invalid FD phrase");
                  }
!         |       fd_linage
!                 {
!                   cbl_unimplemented("LINAGE");
!                   
!                 }
          |       fd_report {
                    cbl_unimplemented("REPORT WRITER");
                    YYERROR;
*************** depending:      %empty
*** 3504,3520 ****
                  }
                  ;
  
! fd_linage:      LINAGE is num_value with_footings
!         |       LINAGE is num_value lines
          ;
! with_footings:  with_footing
!         |       with_footings with_footing
                  ;
! with_footing:   lines with FOOTING at num_value
!         |       lines at top_bot num_value
                  ;
! top_bot:        TOP
!         |       BOTTOM
                  ;
  
  fd_report:      REPORT
--- 3609,3689 ----
                  }
                  ;
  
! 		/*
!                  * All integers must be unsigned. All data-names must be
!                  * described as unsigned integer data items. 
!                  * 
!                  * data-name-5 , integer-8 The number of lines that can be
!                  * written or spaced on this logical page. The area of the page
!                  * that these lines represent is called the page body. The
!                  * value must be greater than zero.
!                  * 
!                  * WITH FOOTING AT integer-9 or the value of the data item in
!                  * data-name-6 specifies the first line number of the footing
!                  * area within the page body. The footing line number must be
!                  * greater than zero, and not greater than the last line of the
!                  * page body. The footing area extends between those two lines.
!                  *
!                  * LINES AT TOP integer-10 or the value of the data item in
!                  * data-name-7 specifies the number of lines in the top margin
!                  * of the logical page. The value can be zero.
!                  *
!                  * LINES AT BOTTOM integer-11 or the value of the data item in
!                  * data-name-8 specifies the number of lines in the bottom
!                  * margin of the logical page. The value can be zero.
!                  */
! 
! fd_linage:      LINAGE is num_value lines with_linage[with]
!                 {
!                   assert(file_section_fd > 0);
!                   symbol_elem_t *e = symbol_at(file_section_fd);
!                   auto file = cbl_file_of(e);
!                   auto& linage = file->linage;
!                   linage.nline = $num_value;
!                   linage.footing = $with.footing;
!                   linage.top     = $with.top;
!                   linage.bottom  = $with.bottom;
!                 } 
          ;
! with_linage:    %empty { $$ = linage_t(); }
!         |       with_footings
                  ;
! with_footings:  with_footing[with]
!                 {
!                   $$ = linage_t();
!                   switch($with.token) {
!                     case FOOTING:
!                       $$.footing = $with.value;
!                       break;
!                     case TOP:
!                       $$.top = $with.value;
!                       break;
!                     case BOTTOM:
!                       $$.bottom = $with.value;
!                       break;
!                   }
!                 }
!         |       with_footings with_footing[with]
!                 {
!                   $$ = $1;
!                   switch($with.token) {
!                     case FOOTING:
!                       $$.footing = $with.value;
!                       break;
!                     case TOP:
!                       $$.top = $with.value;
!                       break;
!                     case BOTTOM:
!                       $$.bottom = $with.value;
!                       break;
!                   }
!                 }
                  ;
! with_footing:   with FOOTING at num_value { $$.token = FOOTING;  $$.value = $num_value; }
!         |       at top_bot num_value      { $$.token = $top_bot; $$.value = $num_value; }
!                 ;
! top_bot:        TOP     { $$ = TOP; }
!         |       BOTTOM  { $$ = BOTTOM; }
                  ;
  
  fd_report:      REPORT
*************** data_clauses:   data_clause
*** 4288,4293 ****
--- 4457,4464 ----
                        YYERROR;
                      }
                    }
+                 data_clause_t clause = data_clause_t($1);
+                 proto_field.add_clause(clause);
                  }
          |       data_clauses data_clause {
                    const char *clause = "data";
*************** data_clauses:   data_clause
*** 4333,4338 ****
--- 4504,4510 ----
                    }
  
                    $$ |= $2;
+                   proto_field.add_clause(data_clause_t($$));
  
                    // If any implied TYPE bits are on in addition to
                    // type_clause_e, they're in conflict.
*************** usage_clause1:  usage BIT
*** 4781,4795 ****
          |       usage BINARY_INTEGER [comp] is_signed
                  {
                    bool signable = $is_signed? $comp.signable : false;
! 
                    $$ = field_binary_usage( @comp, current_field(), 
                                             $comp.type, $comp.capacity,
                                             signable );
                  }
  
  	|	usage COMPUTATIONAL[comp] native
!                 { 
!                   $$ = field_binary_usage( @comp, current_field(), 
                                             $comp.type, $comp.capacity,
                                             $comp.signable );
                  } 
--- 4953,4973 ----
          |       usage BINARY_INTEGER [comp] is_signed
                  {
                    bool signable = $is_signed? $comp.signable : false;
!                   if( proto_field.has_clause(picture_clause_e) ) {
!                     error_msg(@comp, "USAGE is incompatible with PICTURE" );
!                   }
                    $$ = field_binary_usage( @comp, current_field(), 
                                             $comp.type, $comp.capacity,
                                             signable );
                  }
  
  	|	usage COMPUTATIONAL[comp] native
!                 {
!                   auto field = current_field();
!                   if( proto_field.has_clause(picture_clause_e) && field->type == FldFloat ) {
!                     error_msg(@comp, "USAGE is incompatible with PICTURE" );
!                   }
!                   $$ = field_binary_usage( @comp, field, 
                                             $comp.type, $comp.capacity,
                                             $comp.signable );
                  } 
*************** volatile_clause:
*** 5234,5249 ****
  procedure_div:  %empty {
  		  if( !procedure_division_ready(@$, NULL, NULL) ) YYABORT;
                  }
!         |       PROCEDURE_DIV procedure_args '.'
!         |       PROCEDURE_DIV procedure_args '.' declaratives sentences
                  ;
  
  procedure_args: %empty {
                    if( !procedure_division_ready(@$, NULL, NULL) ) YYABORT;
                  }
          |       USING procedure_uses[args]
                  {
                    if( !procedure_division_ready(@args, NULL, $args) ) YYABORT;
                  }
          |       USING procedure_uses[args] RETURNING name[ret]
                  {
--- 5412,5455 ----
  procedure_div:  %empty {
  		  if( !procedure_division_ready(@$, NULL, NULL) ) YYABORT;
                  }
!         |       PROCEDURE_DIV procedure_args[args] '.'
!                 {
!                   static const std::list<cbl_ffi_arg_t> empty;
!                   prototype_ok(@1, dspc_procedure_header_e); // of course it is
!                   prototype_add( @2, $args? $args->elems : empty );
!                   // if there is a prior incarnation, check, against that
!                   auto L = cbl_label_of(symbol_at(PROGRAM));
!                   auto p = prototype_args(L->name, PROGRAM);
!                   if( p.second ) { // no body: this is a prototype
!                     const auto& args = $args? $args->elems : empty;
!                     std::vector<cbl_ffi_arg_t> argv( args.begin(), args.end() );
!                     verify_args(@2, L->name, argv.size(), argv.data() );
!                   }
!                 }
!         |       PROCEDURE_DIV procedure_args[args] '.'  {
!                   static const std::list<cbl_ffi_arg_t> empty;
!                   prototype_ok(@1, dspc_procedure_body_e); 
!                   prototype_add( @2, $args? $args->elems : empty );
!                   // if there is a prior incarnation, check, against that
!                   auto L = cbl_label_of(symbol_at(PROGRAM));
!                   auto p = prototype_args(L->name, PROGRAM);
!                   if( p.second ) {
!                     const auto& args = $args? $args->elems : empty;
!                     std::vector<cbl_ffi_arg_t> argv( args.begin(), args.end() );
!                     verify_args(@2, L->name, argv.size(), argv.data() );
!                   }
!                 } // body: this is a definition
!                 declaratives sentences
                  ;
  
  procedure_args: %empty {
                    if( !procedure_division_ready(@$, NULL, NULL) ) YYABORT;
+                   $$ = nullptr;
                  }
          |       USING procedure_uses[args]
                  {
                    if( !procedure_division_ready(@args, NULL, $args) ) YYABORT;
+                   $$ = $args;
                  }
          |       USING procedure_uses[args] RETURNING name[ret]
                  {
*************** procedure_args: %empty {
*** 5252,5257 ****
--- 5458,5464 ----
                      error_msg(@ret, "RETURNING %s is not defined in LINKAGE SECTION",
  			      $ret->name);
                    }
+                   $$ = $args;
                  }
          |                                  RETURNING name[ret]
                  {
*************** procedure_args: %empty {
*** 5260,5265 ****
--- 5467,5473 ----
                      error_msg(@ret, "RETURNING %s is not defined in LINKAGE SECTION",
  			      $ret->name);
                    }
+                   $$ = nullptr;
                  }
                  ;
  procedure_uses: procedure_use { $$ = new ffi_args_t($1); }
*************** sentence:       statements  '.'
*** 5366,5372 ****
                    if( ! goodnight_gracie() ) {
                      YYABORT;
                    }
!                   if( nparse_error > 0 ) YYABORT;
                    YYACCEPT;
                  }
          |       program END_SUBPROGRAM namestr[name] '.'
--- 5574,5580 ----
                    if( ! goodnight_gracie() ) {
                      YYABORT;
                    }
!                   if( ! successful_parse() ) YYABORT;
                    YYACCEPT;
                  }
          |       program END_SUBPROGRAM namestr[name] '.'
*************** sentence:       statements  '.'
*** 5392,5398 ****
                  }
          |       program YYEOF
                  { // a contained program (no prior END PROGRAM) is a "sentence"
!                   if( nparse_error > 0 ) YYABORT;
                    do {
  		    if( ! goodnight_gracie() ) YYABORT; // no recovery
                    } while( current.program_level() > 0 );
--- 5600,5606 ----
                  }
          |       program YYEOF
                  { // a contained program (no prior END PROGRAM) is a "sentence"
!                   if( ! successful_parse() ) YYABORT;
                    do {
  		    if( ! goodnight_gracie() ) YYABORT; // no recovery
                    } while( current.program_level() > 0 );
*************** end_accept:     %empty %prec ACCEPT
*** 5540,5635 ****
          |       END_ACCEPT
                  ;
  
! accept_body:    accept_refer
                  {
  		  $$.func = accept_done_e;
!                   parser_accept(*$1, CONSOLE_e, nullptr, nullptr);
                  }
!         |       accept_refer FROM DATE
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yymmdd($1->field);
                  }
!         |       accept_refer FROM DATE YYYYMMDD
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyyymmdd($1->field);
                  }
!         |       accept_refer FROM DAY
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyddd($1->field);
                  }
!         |       accept_refer FROM DAY YYYYDDD
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyyyddd($1->field);
                  }
!         |       accept_refer FROM DAY_OF_WEEK
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_dow($1->field);
                  }
  
!         |       accept_refer FROM TIME
                  {
  		  $$.func = accept_done_e;
!                   if( $1->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_hhmmssff($1->field);
                  }
!         |       accept_refer FROM acceptable
                  {
  		  $$.func = accept_e;
!                   $$.into = $1;
                    $$.special = $acceptable->id;
                  }
!         |       accept_refer FROM ENVIRONMENT envar
                  {
  		  $$.func = accept_envar_e;
! 		  $$.into = $1;
  		  $$.from = $envar;
                  }
!         |       accept_refer FROM COMMAND_LINE
                  {
  		  $$.func = accept_done_e;
!                   parser_accept_command_line(*$1, NULL, NULL, NULL );
                  }
!         |       accept_refer FROM COMMAND_LINE '(' expr ')'
                  {
  		  $$.func = accept_command_line_e;
! 		  $$.into = $1;
  		  $$.from = $expr;
                  }
!         |       accept_refer FROM COMMAND_LINE_COUNT {
  		  $$.func = accept_done_e;
!                   parser_accept_command_line_count(*$1);
                  }
-                 ;
- 
- accept_refer:   ACCEPT scalar { statement_begin(@1, ACCEPT); $$ = $2; }
                  ;
  
  accept_excepts:	accept_excepts[a] accept_except[b] statements %prec ACCEPT
--- 5748,5863 ----
          |       END_ACCEPT
                  ;
  
! accept_body:    ACCEPT scalar[r]
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   parser_accept(*$r, CONSOLE_e, nullptr, nullptr);
                  }
!         |       ACCEPT scalar[r] FROM DATE
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yymmdd($r->field);
                  }
!         |       ACCEPT scalar[r] FROM DATE YYYYMMDD
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyyymmdd($r->field);
                  }
!         |       ACCEPT scalar[r] FROM DAY
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyddd($r->field);
                  }
!         |       ACCEPT scalar[r] FROM DAY YYYYDDD
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_yyyyddd($r->field);
                  }
!         |       ACCEPT scalar[r] FROM DAY_OF_WEEK
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_dow($r->field);
                  }
  
!         |       ACCEPT scalar[r] FROM TIME
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   if( $r->is_reference() ) {
                      error_msg(@1, "subscripts are unsupported here");
                      YYERROR;
                    }
!                   parser_accept_date_hhmmssff($r->field);
                  }
!         |       ACCEPT scalar[r] FROM acceptable
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_e;
!                   $$.into = $r;
                    $$.special = $acceptable->id;
                  }
!         |       ACCEPT scalar[r] FROM ENVIRONMENT envar
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_envar_e;
! 		  $$.into = $r;
  		  $$.from = $envar;
                  }
!         |       ACCEPT scalar[r] FROM COMMAND_LINE
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   parser_accept_command_line(*$r, NULL, NULL, NULL );
                  }
!         |       ACCEPT scalar[r] FROM COMMAND_LINE '(' expr ')'
                  {
+                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_command_line_e;
! 		  $$.into = $r;
  		  $$.from = $expr;
                  }
!         |       ACCEPT scalar[r] FROM COMMAND_LINE_COUNT
!                 {
!                   statement_begin(@1, ACCEPT);
  		  $$.func = accept_done_e;
!                   parser_accept_command_line_count(*$r);
!                 }
!         |       ACCEPT OMITTED
!                 {
!                   static const cbl_refer_t nothing(literally_zero);
!                   statement_begin(@1, ACCEPT);
! 		  $$.func = accept_done_e;
!                   // Pass the literal as a destination.  This is odd, but
!                   // __gg__accept() knows it's coming, and will just wait for
!                   // a newline and ignore the refer.
!                   parser_accept(nothing, CONSOLE_e, nullptr, nullptr);
                  }
                  ;
  
  accept_excepts:	accept_excepts[a] accept_except[b] statements %prec ACCEPT
*************** end_program:    end_program1[end] '.'
*** 6199,6204 ****
--- 6427,6433 ----
                  }
  	|	end_program1[end] error
  		{
+                   resume_parsing(); // start normal parsing for next program
  		  const char *token_name = "???";
                    switch($end.token) {
                    case END_PROGRAM:
*************** simple_cond:    kind_of_name
*** 6405,6410 ****
--- 6634,6645 ----
                    $$ = new_reference(new_temporary(FldConditional));
                    relop_t op = static_cast<relop_t>($op);
                    cbl_field_t *zero = constant_of(constant_index(ZERO));
+                   if( $1->field->type == FldPointer ) {
+                     error_msg(@expr, "cannot compare %qs (%s) to zero",
+                               nice_name_of($1->field),
+                               cbl_field_type_name($1->field->type));
+                     YYERROR;
+                   }
                    parser_relop($$->cond(), *$1, op, zero);
                  }
          |       scalar88 {
*************** kind_of_name:   expr might_be variable_t
*** 6436,6442 ****
  
  until_expr:     bool_expr
          |       EXIT {
!                   auto e = symbol_at(very_true_register());
                    $$ = new_reference(cbl_field_of(e));
                  }
                  ;
--- 6671,6677 ----
  
  until_expr:     bool_expr
          |       EXIT {
!                   auto e = symbol_at(very_false_register());
                    $$ = new_reference(cbl_field_of(e));
                  }
                  ;
*************** rel_expr:	rel_lhs rel_term[rhs]
*** 6502,6507 ****
--- 6737,6746 ----
  		    op = relop_invert(op);
  		    ante.invert = false;
  		  }
+                   if( ! valid_pointer_relop(@1, @1, @2,
+                                             ante.operand, op, $rhs.term) ){
+                     YYERROR;
+                   }
  		  auto cond = new_temporary(FldConditional);
  		  parser_relop( cond, *ante.operand, op, *$rhs.term );
  		  $$ = cond;
*************** rel_abbr:	rel_term {
*** 6555,6560 ****
--- 6794,6803 ----
  		  assert(ante.has_relop);
  		  if( $rel_term.invert ) ante.relop = relop_invert(ante.relop);
  		  auto cond = new_temporary(FldConditional);
+                   if( ! valid_pointer_relop(@1, @1, @1,
+                                             ante.operand, ante.relop, $rel_term.term) ){
+                     YYERROR;
+                   }
  		  parser_relop(cond, *ante.operand, ante.relop, *$rel_term.term);
  		  $$ = cond;
  		}
*************** rel_abbr:	rel_term {
*** 6573,6578 ****
--- 6816,6825 ----
  				name_of($rel_term.term->field) );
  		    YYERROR;
  		  }
+                   if( ! valid_pointer_relop(@1, @1, @2,
+                                             ante.operand, op, $rel_term.term) ){
+                     YYERROR;
+                   }
  		  auto cond = new_temporary(FldConditional);
  		  parser_relop(cond, *ante.operand, ante.relop, *$rel_term.term);
  		  $$ = cond;
*************** expr:           expr_term
*** 6620,6648 ****
                  ;
  expr_term:      expr_term '+' num_term
                  {
!                   if( ($$ = ast_op($1, '+', $3)) == NULL  ) YYERROR;
                  }
          |       expr_term '-' num_term
                  {
!                   if( ($$ = ast_op($1, '-', $3)) == NULL  ) YYERROR;
                  }
          |       num_term
                  ;
  
  num_term:       num_term '*' value
                  {
!                   if( ($$ = ast_op($1, '*', $3)) == NULL  ) YYERROR;
                  }
          |       num_term '/' value
                  {
!                   if( ($$ = ast_op($1, '/', $3)) == NULL  ) YYERROR;
                  }
          |       value
          ;
  
  value:          value POW factor
                  {
!                   if( ($$ = ast_op($1, '^', $3)) == NULL  ) YYERROR;
                  }
          |       '-' value       %prec NEG { $$ = negate( $2 );}
          |       '+' factor %prec NEG { $$ = $2;}
--- 6867,6895 ----
                  ;
  expr_term:      expr_term '+' num_term
                  {
!                   if( ($$ = ast_op(@$, $1, '+', $3)) == NULL  ) YYERROR;
                  }
          |       expr_term '-' num_term
                  {
!                   if( ($$ = ast_op(@$, $1, '-', $3)) == NULL  ) YYERROR;
                  }
          |       num_term
                  ;
  
  num_term:       num_term '*' value
                  {
!                   if( ($$ = ast_op(@$, $1, '*', $3)) == NULL  ) YYERROR;
                  }
          |       num_term '/' value
                  {
!                   if( ($$ = ast_op(@$, $1, '/', $3)) == NULL  ) YYERROR;
                  }
          |       value
          ;
  
  value:          value POW factor
                  {
!                   if( ($$ = ast_op(@$, $1, '^', $3)) == NULL  ) YYERROR;
                  }
          |       '-' value       %prec NEG { $$ = negate( $2 );}
          |       '+' factor %prec NEG { $$ = $2;}
*************** if_test:        bool_expr then
*** 6674,6690 ****
                  }
                  ;
  
! if_body:        next_statements
                  {
                    parser_else();
                  }
!         |       next_statements ELSE {
                    location_set(@2);
                    parser_else();
!                 } next_statements
                  ;
  
! next_statements: statements   %prec ADD
          |       NEXT SENTENCE %prec ADD
                  {
                    next_sentence = label_add(LblNone, "next_sentence", 0);
--- 6921,6938 ----
                  }
                  ;
  
! if_body:        if_statements
                  {
                    parser_else();
                  }
!         |       if_statements ELSE {
                    location_set(@2);
                    parser_else();
!                 } if_statements
                  ;
  
! if_statements:  %empty        %prec ADD
!         |       statements    %prec ADD
          |       NEXT SENTENCE %prec ADD
                  {
                    next_sentence = label_add(LblNone, "next_sentence", 0);
*************** eval_abbrs:	rel_term[a] {
*** 6917,6922 ****
--- 7165,7173 ----
  			      relop_str(relop_of($relop)),
  			     obj->name,	 3 + cbl_field_type_str(obj->type) );
  		  }
+                   cbl_refer_t lhs( ev.subject() );
+                   // on pointer error, emit message and continue parsing 
+                   valid_pointer_relop(@1, @1, @2, &lhs, relop_of($relop), $a.term);
  		  auto result = ev.compare(relop, *$a.term);
  		  if( ! result ) YYERROR;
  		  if( $a.invert ) {
*************** eval_abbr:	rel_term[a] {
*** 6951,6956 ****
--- 7202,7210 ----
  		  relop_t relop(ev.object_relop());
  		  auto subj( ev.subject() );
  		  assert( subj );
+                   cbl_refer_t lhs(subj);
+                   // on pointer error, emit message and continue parsing 
+                   valid_pointer_relop(@1, @1, @1, &lhs, relop, $a.term);
  		  $$ = ev.compare(relop, *$a.term);
  		  if( $a.invert ) {
  		    parser_logop($$, nullptr, not_op, $$);
*************** eval_abbr:	rel_term[a] {
*** 6960,6965 ****
--- 7214,7223 ----
  		  auto& ev( eval_stack.current() );
  		  relop_t relop(relop_of($relop));
  		  ev.object_relop(relop);
+ 
+                   cbl_refer_t lhs( ev.subject() );
+                   // on pointer error, emit message and continue parsing 
+                   valid_pointer_relop(@1, @1, @2, &lhs, relop_of($relop), $a.term);
  		  $$ = ev.compare(relop, *$a.term);
  		  if( $a.invert ) {
  		    parser_logop($$, nullptr, not_op, $$);
*************** move:           MOVE scalar TO move_tgts
*** 7296,7311 ****
          |       MOVE all spaces_etc[src] TO move_tgts[tgts]
                  {
                    statement_begin(@1, MOVE);
-                   cbl_field_t *field;
                    auto p = std::find_if( $tgts->targets.begin(),
                                           $tgts->targets.end(),
!                                          [&field]( const auto& num_result ) {
                                               const cbl_refer_t& tgt = num_result.refer;
!                                              field = tgt.field;
!                                              return is_numeric(tgt.field);
                                              } );
  
                    if( p != $tgts->targets.end() ) {
                      error_msg(@src, "cannot MOVE %qs "
  			            "to numeric receiving field %qs",
  			      constant_of(constant_index($src))->name,
--- 7554,7568 ----
          |       MOVE all spaces_etc[src] TO move_tgts[tgts]
                  {
                    statement_begin(@1, MOVE);
                    auto p = std::find_if( $tgts->targets.begin(),
                                           $tgts->targets.end(),
!                                          []( const auto& num_result ) {
                                               const cbl_refer_t& tgt = num_result.refer;
!                                              return is_numeric(tgt);
                                              } );
  
                    if( p != $tgts->targets.end() ) {
+                     cbl_field_t *field = p->refer.field;
                      error_msg(@src, "cannot MOVE %qs "
  			            "to numeric receiving field %qs",
  			      constant_of(constant_index($src))->name,
*************** move:           MOVE scalar TO move_tgts
*** 7323,7329 ****
                    if( !parser_move2($tgts, src) ) { YYERROR; }
                  }
  
!         |       MOVE intrinsic_call TO move_tgts[tgts]
                  {
                    statement_begin(@1, MOVE);
                    if( !parser_move2($tgts, *$2) ) { YYERROR; }
--- 7580,7586 ----
                    if( !parser_move2($tgts, src) ) { YYERROR; }
                  }
  
!         |       MOVE function_call TO move_tgts[tgts]
                  {
                    statement_begin(@1, MOVE);
                    if( !parser_move2($tgts, *$2) ) { YYERROR; }
*************** sum:                num_operand     { $$
*** 7545,7555 ****
  
  num_operand:    scalar
          |       signed_literal { $$ = new_reference($1); }
!         |       intrinsic_call
                  ;
  
  num_value:      scalar // might actually be a string
!         |       intrinsic_call
          |       num_literal { $$ = new_reference($1); }
          |       ADDRESS OF scalar {$$ = $scalar; $$->addr_of = true; }
          |       DETAIL OF scalar {$$ = $scalar; }
--- 7802,7812 ----
  
  num_operand:    scalar
          |       signed_literal { $$ = new_reference($1); }
!         |       function_call
                  ;
  
  num_value:      scalar // might actually be a string
!         |       function_call
          |       num_literal { $$ = new_reference($1); }
          |       ADDRESS OF scalar {$$ = $scalar; $$->addr_of = true; }
          |       DETAIL OF scalar {$$ = $scalar; }
*************** varg1a:         ADDRESS OF scalar {
*** 8337,8343 ****
  		  $$ = $scalar;
  		  $$->addr_of = true;
  		}
!         |       intrinsic_call
          |       literal
                  {
                    $$ = new_reference($1);
--- 8594,8600 ----
  		  $$ = $scalar;
  		  $$->addr_of = true;
  		}
!         |       function_call
          |       literal
                  {
                    $$ = new_reference($1);
*************** label_name:     NAME
*** 9704,9710 ****
                  ;
  
  inspected:      scalar
!         |       intrinsic_call
                  ;
  backward:	%empty   { $$ = false; }
  	|	BACKWARD { $$ = true;  }
--- 9961,9967 ----
                  ;
  
  inspected:      scalar
!         |       function_call
                  ;
  backward:	%empty   { $$ = false; }
  	|	BACKWARD { $$ = true;  }
*************** alphaval:       LITERAL { $$ = new_refer
*** 10005,10011 ****
                  {
                    $$ = new_reference( constant_of(constant_index($1)) );
                  }
!         |       intrinsic_call
                  ;
  
  befter:         BEFORE { $$ = BEFORE; }
--- 10262,10268 ----
                  {
                    $$ = new_reference( constant_of(constant_index($1)) );
                  }
!         |       function_call
                  ;
  
  befter:         BEFORE { $$ = BEFORE; }
*************** label_1:        qname
*** 10489,10496 ****
  
                    $$ = paragraph_reference(para, isect);
                    assert($$);
!                   if( yydebug ) dbgmsg( "using procedure %s of line %d",
!                                        $$->name, $$->line );
                  }
          |       NUMSTR
                  {
--- 10746,10752 ----
  
                    $$ = paragraph_reference(para, isect);
                    assert($$);
!                   dbgmsg( "using procedure %s of line %d", $$->name, $$->line );
                  }
          |       NUMSTR
                  {
*************** str_input:      scalar
*** 10567,10573 ****
                  {
                    $$ = new_reference(constant_of(constant_index($1)));
                  }
!         |       intrinsic_call
                  ;
  
  str_size:       SIZE   { $$ = new_reference(NULL); }
--- 10823,10829 ----
                  {
                    $$ = new_reference(constant_of(constant_index($1)));
                  }
!         |       function_call
                  ;
  
  str_size:       SIZE   { $$ = new_reference(NULL); }
*************** unstring_body:  unstring_src[src] uns_de
*** 10674,10680 ****
                    $$.into = $into;
                  }
  unstring_src:   scalar
!         |       intrinsic_call
          |       LITERAL
                  {
                    $$ = new_reference(new_literal(@1, $1, quoted_e));
--- 10930,10936 ----
                    $$.into = $into;
                  }
  unstring_src:   scalar
!         |       function_call
          |       LITERAL
                  {
                    $$ = new_reference(new_literal(@1, $1, quoted_e));
*************** uns_tgt:        scalar[tgt]
*** 10754,10761 ****
                  }
                  ;
  
!   /* intrinsics */
! intrinsic_call: function intrinsic { // "intrinsic" includes UDFs.
                    $$ = new_reference($intrinsic);
                    $$->field->attr |= constant_e;
                  }
--- 11010,11016 ----
                  }
                  ;
  
! function_call:  function intrinsic { // "intrinsic" includes UDFs.
                    $$ = new_reference($intrinsic);
                    $$->field->attr |= constant_e;
                  }
*************** intrinsic_call: function intrinsic { //
*** 10767,10773 ****
                      YYERROR;
                    }
                    if( $intrinsic->type != FldAlphanumeric ) {
!                     error_msg(@ref, "'%s' only AlphaNumeric fields accept refmods",
                               $intrinsic->name);
                      YYERROR;
                    }
--- 11022,11028 ----
                      YYERROR;
                    }
                    if( $intrinsic->type != FldAlphanumeric ) {
!                     error_msg(@ref, "%qs only AlphaNumeric fields accept refmods",
                               $intrinsic->name);
                      YYERROR;
                    }
*************** intrinsic_call: function intrinsic { //
*** 10776,10788 ****
                    $$->field->attr |= constant_e;
                  }
  	|	function NAME {
! 		  error_msg(@NAME, "no such function: %s", $NAME);
  		  YYERROR;
  		}
  
                  ;
  function:       %empty   %prec FUNCTION
!                 {
                    statement_begin(@$, FUNCTION);
                  }
          |       FUNCTION
--- 11031,11043 ----
                    $$->field->attr |= constant_e;
                  }
  	|	function NAME {
! 		  error_msg(@NAME, "no such function: %qs", $NAME);
  		  YYERROR;
  		}
  
                  ;
  function:       %empty   %prec FUNCTION
!                 { // typed_name in scan_ante.h allows FUNCTION keywod to be ommitted.
                    statement_begin(@$, FUNCTION);
                  }
          |       FUNCTION
*************** function:       %empty   %prec FUNCTION
*** 10792,10815 ****
                  ;
  
  function_udf:   FUNCTION_UDF '(' arg_list[args] ')' {
- 		  std::vector<function_descr_arg_t> params;
                    auto L = cbl_label_of(symbol_at($1));
- 		  if( ! current.udf_args_valid(L, $args->refers, params) ) {
- 		    YYERROR;
- 		  }
  		  const auto returning = cbl_field_of(symbol_at(L->returning));
                    $$ = new_temporary_clone(returning);
  		  $$->data.initial = returning->name; // user's name for the field
                    std::vector <cbl_ffi_arg_t> args($args->refers.size());
- 		  size_t i = 0;
  		  // Pass parameters as defined by the function.
!                   std::transform( $args->refers.begin(), $args->refers.end(), args.begin(),
! 				  [params, &i]( const cbl_refer_t& arg ) {
! 				    function_descr_arg_t param = params.at(i++);
! 				    auto ar = new cbl_refer_t(arg);
! 				    cbl_ffi_arg_t actual(param.crv, ar);
! 				    return actual;
! 				  } );
                    // Pretend hex-encoded because that means use verbatim.
                    auto attr = cbl_field_attr_t(quoted_e | hex_encoded_e);
                    auto name = new_literal(strlen(L->name), L->name, attr);
--- 11047,11080 ----
                  ;
  
  function_udf:   FUNCTION_UDF '(' arg_list[args] ')' {
                    auto L = cbl_label_of(symbol_at($1));
  		  const auto returning = cbl_field_of(symbol_at(L->returning));
                    $$ = new_temporary_clone(returning);
  		  $$->data.initial = returning->name; // user's name for the field
+                   auto proto = function_prototypes.find($1);
+                   if( yydebug && proto == function_prototypes.end() ) {
+                     dbgmsg( "function_udf:%d: %s not found by prototype_args",
+                             __LINE__, L->name );
+                   }
+                   gcc_assert(proto != function_prototypes.end()); // lexer asked parser for UDF
+                   const auto& formals = proto->second;
+                   auto  pf = formals.begin(),
+                        epf = formals.end();
                    std::vector <cbl_ffi_arg_t> args($args->refers.size());
  		  // Pass parameters as defined by the function.
!                   std::transform( $args->refers.begin(),
!                                   $args->refers.end(), args.begin(),
!                                   [&pf, epf]( const cbl_refer_t& r ) {
!                                     auto arg = new cbl_refer_t(r);
!                                     auto crv = by_reference_e;
!                                     if( pf != epf ) {
!                                       crv = pf->crv;
!                                       pf++;
!                                     }
!                                     cbl_ffi_arg_t actual(crv, arg);
!                                     return actual;
!                                   } );
!                   verify_args(@1, L->name, args.size(), args.data());
                    // Pretend hex-encoded because that means use verbatim.
                    auto attr = cbl_field_attr_t(quoted_e | hex_encoded_e);
                    auto name = new_literal(strlen(L->name), L->name, attr);
*************** cdf_use_when:	USE DEBUGGING on labels
*** 11921,11927 ****
                      YYERROR;
                    }
                    static const cbl_label_t all = {
! 		    LblNone, 0, 0,0,0, false, false, false, 0,0, ":all:" };
                    add_debugging_declarative(&all);
                   }
  
--- 12186,12192 ----
                      YYERROR;
                    }
                    static const cbl_label_t all = {
! 		    LblNone, 0, 0,0,0, false, false, false, false, 0,0, ":all:" };
                    add_debugging_declarative(&all);
                   }
  
*************** first_line_of( YYLTYPE loc ) {
*** 12257,12267 ****
      return loc;
  }
  
  void ast_call( const YYLTYPE& loc, cbl_refer_t name, const cbl_refer_t& returning,
!                   size_t narg, cbl_ffi_arg_t args[],
!                   cbl_label_t *except,
!                   cbl_label_t *not_except,
!                   bool is_function)
  {
    if( is_literal(name.field) ) {
      cbl_field_t called = { FldLiteralA, quoted_e | constant_e,
--- 12522,12691 ----
      return loc;
  }
  
+ /*
+  *  Return true if actual parameter matches formal definition.
+  *
+  * "The definition of the formal parameter and the definition of the argument
+  *  shall have the same ALIGN, BLANK WHEN ZERO, DYNAMIC LENGTH, JUSTIFIED,
+  *  PICTURE, SIGN, and USAGE clauses, [with exceptions]."
+  */
+ bool
+ cbl_ffi_arg_t::matches( const cbl_ffi_arg_t& that ) const {
+   if( this->refer.field == nullptr ) return optional;
+   auto formal = refer.field;
+   auto actual = that.refer.field;
+ 
+   dbgmsg( "%s: %s by %s", __func__,
+           nice_name_of(formal), cbl_ffi_crv_str(that.crv) );
+ 
+   static const size_t mask =
+       rjust_e
+     | ljust_e
+     | blank_zero_e
+     | signable_e
+     | separate_e;
+ 
+   switch( that.crv ) {
+   case by_default_e:
+   case by_reference_e:
+     if( crv == by_reference_e ) {
+       if( (formal->attr & mask) == (actual->attr & mask) ) {
+         if( formal->data.capacity() == actual->data.capacity() ) {
+           if( formal->type == actual->type ) { // captures USAGE except COMP-X
+             return true;
+           }
+         }
+         else if (actual->attr & any_length_e)
+           return true;
+       }
+     }
+     // If actual is by reference, so must the formal be. 
+     return false;
+     break;
+   case by_content_e:
+     break;
+   case by_value_e:
+     if( crv != by_value_e ) return false;
+     if( formal->type == FldPointer && that.refer.is_pointer() ) return true;
+     break;
+   }
+ 
+   assert(that.crv != by_reference_e);
+ 
+   if( is_numeric(formal->type) == is_numeric(actual->type) ) {
+     if( is_numeric(formal->type) ) { // for numeric types, actual must fit
+       return actual->data.capacity() <= formal->data.capacity();
+     }
+     // The actual parameter size must match.  If the caller is bigger, some
+     // input may not reach the called.  If the called updates a smaller actual,
+     // it will write beyond the end of the By Content copy.  
+     return actual->data.capacity() == formal->data.capacity()
+         && actual->codeset.encoding == formal->codeset.encoding;
+   }          
+   return false;
+ }
+ 
+ // Return the formal mismatched argument and its position.
+ static const std::pair<cbl_ffi_arg_t *, size_t>
+ bad_arg( const char name[],
+          size_t narg, const cbl_ffi_arg_t args[] ) 
+ {
+   static cbl_ffi_arg_t output;
+   static const std::pair<cbl_ffi_arg_t *, size_t> ok(nullptr, 0);
+ 
+   auto proto = prototype_args(name);
+   if( proto.second ) {
+     const auto& formals = proto.first;
+     auto earg = args + std::min(narg, formals.size());
+     auto p = std::mismatch( formals.begin(), formals.end(), args, earg, 
+                             []( const cbl_ffi_arg_t& formal,
+                                 const cbl_ffi_arg_t& actual ) {
+                               return formal.matches(actual);
+                             } );
+     if( p.second < earg ) {
+       output = *p.second;
+       size_t ord = p.second - args;
+       return std::make_pair(&output, ord); // bad actual
+     }
+     if( earg < args + narg ) {
+       output = *earg;
+       size_t ord = earg - args;
+       return std::make_pair(&output, ord); // too many actuals
+     }
+     if( narg < formals.size() ) { // missing actuals might be optional
+       auto p = std::find_if( formals.begin() + narg, 
+                              formals.end(),
+                              [] ( auto& arg ) {
+                                return ! arg.optional;
+                              } );
+       if( p != formals.end() ) {
+         output = *p;
+         size_t ord = p - formals.begin();
+         return std::make_pair(&output, ord); // insufficient actuals
+       }
+     }
+   } else {
+     dbgmsg("%s: no prototype for %s", __func__, name);
+   }
+   return ok;
+ }  
+ 
+ // Verify provided actual parameters against formals.
+ static void
+ verify_args( const YYLTYPE& loc, 
+              const char name[], size_t narg,
+              const cbl_ffi_arg_t args[] ) {
+   auto parg_pair = bad_arg(name, narg, args);
+   
+   if( parg_pair.first ) {
+     auto parg = parg_pair.first;
+     auto ord =  parg_pair.second;
+     const auto& formals = prototype_args(name).first;
+     /*
+      * Four possibilities for parg;
+      * 0.  each actual matched its formal
+      * 1.  is actual argument that does not match the formal
+      * 2.  is actual argument, but there is no formal (passed too many)
+      * 3.  is not an argument (too few)
+      */
+     if( ord < narg ) {
+       if( ord < formals.size() ) {
+         error_msg( loc, "parameter %zu %qs (%s, capacity %u, %s) "
+                    "invalid for %qs parameter %qs (%s, capacity %u, %s)",
+                    1 + ord,
+                    nice_name_of(parg->field()),
+                     cbl_field_type_name(parg->field()->type),
+                     parg->field()->data.capacity(),
+                     parg->field()->attr & signable_e ? "signed" : "unsigned",
+                    name, 
+                    nice_name_of(formals[ord].refer.field),
+                    cbl_field_type_name(formals[ord].refer.field->type),
+                    formals[ord].refer.field->data.capacity(),
+                    formals[ord].refer.field->attr & signable_e ? "signed" : "unsigned");
+       } else {
+         error_msg( loc, "parameter %zu %qs (%s) "
+                    "exceed %qs parameter count",
+                    1 + ord,
+                    nice_name_of(parg->field()),
+                    cbl_field_type_name(parg->field()->type),
+                    name);
+       }
+     } else {
+       error_msg( loc, "%qs requires %zu parameters, "
+                  "but only %zu were passed, "
+                  "parameter %zu (%qs) is required",
+                  name,
+                  formals.size(), narg, 1 + ord, 
+                  nice_name_of(formals[ord].refer.field) );
+     } 
+   }
+ }
+ 
  void ast_call( const YYLTYPE& loc, cbl_refer_t name, const cbl_refer_t& returning,
!                size_t narg, cbl_ffi_arg_t args[],
!                cbl_label_t *except,
!                cbl_label_t *not_except,
!                bool is_function)
  {
    if( is_literal(name.field) ) {
      cbl_field_t called = { FldLiteralA, quoted_e | constant_e,
*************** void ast_call( const YYLTYPE& loc, cbl_r
*** 12272,12277 ****
--- 12696,12703 ----
      name.field = cbl_field_of(symbol_field_add(PROGRAM, &called));
      symbol_field_location(field_index(name.field), loc);
      parser_symbol_add(name.field);
+ 
+     verify_args(loc, name.field->data.initial, narg, args);
    }
  
    parser_call( name, returning, narg, args, except, not_except, is_function );
*************** current_t::udf_update( const ffi_args_t
*** 12738,12743 ****
--- 13164,13174 ----
    const auto returning = cbl_field_of(symbol_at(L->returning));
    auto key = function_descr_t::init(L->name);
    auto func = udfs.find(key);
+   if (func == udfs.end()) {
+     // Try to find it as a function prototype.
+     key = function_descr_t::init(L->name, true);
+     func = udfs.find(key);
+   }
    assert(func != udfs.end());
  
    function_descr_t udf = *func;
*************** current_t::udf_update( const ffi_args_t
*** 12759,12764 ****
--- 13190,13196 ----
    assert(result.second);
  }
  
+ #if 0
  bool
  current_t::udf_args_valid( const cbl_label_t *L,
  			   const std::list<cbl_refer_t>& args,
*************** current_t::udf_args_valid( const cbl_lab
*** 12766,12771 ****
--- 13198,13208 ----
  {
    auto key = function_descr_t::init(L->name);
    auto func = udfs.find(key);
+   if (func == udfs.end()) {
+     // Try to find it as a function prototype.
+     key = function_descr_t::init(L->name, true);
+     func = udfs.find(key);
+   }
    assert(func != udfs.end());
    function_descr_t udf = *func;
    params = udf.linkage_fields;
*************** current_t::udf_args_valid( const cbl_lab
*** 12782,12793 ****
        auto tgt = cbl_field_of(symbol_at(udf.linkage_fields.at(i).isym));
        if( ! valid_move(tgt, arg.field) ) {
  	auto loc = current_location;
!         if( ! is_temporary(arg.field) ) {
!           loc = symbol_field_location(field_index(arg.field));
!         }
! 	error_msg(loc, "FUNCTION %s argument %zu, '%s' cannot be passed to %s, type %s",
! 		  L->name, i, arg.field->pretty_name(),
! 		  tgt->pretty_name(), 3 + cbl_field_type_str(tgt->type) );
  	return false;
        }
      }
--- 13219,13228 ----
        auto tgt = cbl_field_of(symbol_at(udf.linkage_fields.at(i).isym));
        if( ! valid_move(tgt, arg.field) ) {
  	auto loc = current_location;
! 	error_msg(loc, "FUNCTION %s argument %zu, '%s' (%s) cannot be passed to %s (%s)",
! 		  L->name, 1 + i, arg.field->pretty_name(),
! 		  cbl_field_type_str(arg.field->type),
! 		  tgt->pretty_name(), cbl_field_type_str(tgt->type) );
  	return false;
        }
      }
*************** current_t::udf_args_valid( const cbl_lab
*** 12795,12800 ****
--- 13230,13236 ----
    }
    return true;
  }
+ #endif
  
  bool
  current_t::repository_add( const char name[]) {
*************** int repository_function_tok( const char
*** 12837,12851 ****
  }
  
  function_descr_t
! function_descr_t::init( int isym ) {
    function_descr_t descr = { FUNCTION_UDF_0 };
    descr.ret_type = FldInvalid;
    const auto L = cbl_label_of(symbol_at(isym));
    bool ok = namcpy(YYLTYPE(), descr.name, L->name);
    gcc_assert(ok);
    return descr;
  }
  
  arith_t::arith_t( cbl_arith_format_t format, refer_list_t * refers )
    : format(format), on_error(NULL), not_error(NULL)
  {
--- 13273,13342 ----
  }
  
  function_descr_t
! function_descr_t::init( int isym, bool prototype ) {
    function_descr_t descr = { FUNCTION_UDF_0 };
    descr.ret_type = FldInvalid;
    const auto L = cbl_label_of(symbol_at(isym));
    bool ok = namcpy(YYLTYPE(), descr.name, L->name);
+   descr.prototype = prototype;
    gcc_assert(ok);
    return descr;
  }
  
+ static bool
+ valid_pointer_relop( const cbl_loc_t& lloc,
+                      const cbl_loc_t& oloc,
+                      const cbl_loc_t& rloc, 
+                      cbl_refer_t *lhs, relop_t op, cbl_refer_t *rhs )
+ {
+   static const char reference[] = "ISO 2023, 8.8.4.2.16 Comparison of pointer operands";
+   
+   if( lhs->is_pointer() || rhs->is_pointer() ) {
+     dbgmsg( "comparing %s%s (%s) to %s%s (%s)",
+             lhs->addr_of? "addr of " : "", 
+             nice_name_of(lhs->field), cbl_field_type_name(lhs->field->type),
+             rhs->addr_of? "addr of " : "", 
+             nice_name_of(rhs->field), cbl_field_type_name(rhs->field->type) );
+     if( lhs->is_pointer() ) {
+       if( rhs->is_pointer() ) {
+         switch(op) {
+         case lt_op:
+         case le_op:
+         case ge_op:
+         case gt_op:
+           error_msg(oloc, "operator %qs invalid for POINTER or ADDRESS OF [%s]",
+                     relop_str(op), reference);
+           return false;
+           break;
+         case eq_op:
+         case ne_op:
+           break;
+         } 
+         return true; // end 2 pointers
+       } else {
+         // rhs not a pointer
+         error_msg(rloc, "cannot compare %s%qs (%s) to non-pointer %qs (%s) [%s]",
+                   lhs->addr_of? "addr of " : "", 
+                   nice_name_of(lhs->field), cbl_field_type_name(lhs->field->type),
+                   nice_name_of(rhs->field), cbl_field_type_name(rhs->field->type),
+                   reference);
+         return false;
+       }
+       gcc_assert(rhs->is_pointer());
+       // lhs not a pointer
+       error_msg(lloc, "cannot compare non-pointer %qs (%s) to %s%qs (%s) [%s]",
+                 nice_name_of(lhs->field), cbl_field_type_name(lhs->field->type),
+                 rhs->addr_of? "addr of " : "", 
+                 nice_name_of(rhs->field), cbl_field_type_name(rhs->field->type),
+                 reference);
+       return false;
+     }
+     // pointer || pointer was handled
+     gcc_unreachable();
+   }
+   return true; // no pointers
+ }
+ 
  arith_t::arith_t( cbl_arith_format_t format, refer_list_t * refers )
    : format(format), on_error(NULL), not_error(NULL)
  {
*************** cbl_key_t::operator=( const sort_key_t&
*** 12867,12873 ****
  }
  
  static cbl_refer_t *
! ast_op( cbl_refer_t *lhs, char op, cbl_refer_t *rhs ) {
    assert(lhs);
    assert(rhs);
    if( ! (is_numeric(lhs->field) && is_numeric(rhs->field)) ) {
--- 13358,13364 ----
  }
  
  static cbl_refer_t *
! ast_op( YYLTYPE loc, cbl_refer_t *lhs, char op, cbl_refer_t *rhs ) {
    assert(lhs);
    assert(rhs);
    if( ! (is_numeric(lhs->field) && is_numeric(rhs->field)) ) {
*************** ast_op( cbl_refer_t *lhs, char op, cbl_r
*** 12882,12889 ****
      }
  
      auto f  = !is_numeric(lhs->field)? lhs->field : rhs->field;
!     auto loc = symbol_field_location(field_index(f));
!     error_msg(loc, "'%s' is not numeric", f->name);
      return NULL;
    }
   ok:
--- 13373,13379 ----
      }
  
      auto f  = !is_numeric(lhs->field)? lhs->field : rhs->field;
!     error_msg(loc, "%qs is not numeric", f->name);
      return NULL;
    }
   ok:
*************** cbl_field_t::value_str() const {
*** 14014,14034 ****
      return data.etc_type_str();
  }
  
- static const cbl_division_t not_syntax_only = cbl_division_t(-1);
-              cbl_division_t cbl_syntax_only = not_syntax_only;
- 
- void
- mode_syntax_only( cbl_division_t division ) {
-   cbl_syntax_only = division;
- }
- 
- // Parser moves to syntax-only mode if data-division errors preclude compilation.
- bool
- mode_syntax_only() {
-   return cbl_syntax_only != not_syntax_only
-       && cbl_syntax_only <= current_division;
- }
- 
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
    switch(dialect) {
--- 14504,14509 ----
*************** cobol_gcobol_feature_set( cbl_gcobol_fea
*** 14070,14081 ****
  
  static bool
  literal_refmod_valid( YYLTYPE loc, const cbl_refer_t& r ) {
-   if( r.field->has_attr(any_length_e) ) return true;
- 
    unsigned int nchar = r.field->char_capacity();
- 
    const cbl_span_t& refmod(r.refmod);
  
    if( ! is_literal(refmod.from->field) ) {
      if( ! refmod.len ) return true;
      if( ! is_literal(refmod.len->field) ) return true;
--- 14545,14569 ----
  
  static bool
  literal_refmod_valid( YYLTYPE loc, const cbl_refer_t& r ) {
    unsigned int nchar = r.field->char_capacity();
    const cbl_span_t& refmod(r.refmod);
  
+   // Check ANY LENGTH for initial refmod FROM literal 0. A bit specific....
+   if( r.field->has_attr(any_length_e) ) {
+     if( is_literal(refmod.from->field) ) {
+       auto edge = refmod.from->field->as_integer();
+       if( edge < 1 ) {
+         error_msg(loc,"%s(%zu:%s) out of bounds, must be within 1:%u",
+                   r.field->name,
+                   size_t(refmod.from->field->as_integer()),
+                   nice_name_of(refmod.len->field),
+                   nchar );
+         return false;
+       }
+     }
+     return true;
+   }
+   
    if( ! is_literal(refmod.from->field) ) {
      if( ! refmod.len ) return true;
      if( ! is_literal(refmod.len->field) ) return true;
*************** literal_refmod_valid( YYLTYPE loc, const
*** 14094,14100 ****
    }
  
    auto edge = refmod.from->field->as_integer();
!   if( edge > 0 ) {
      if( --edge < nchar ) {
        if( ! refmod.len ) return true;
        if( ! is_literal(refmod.len->field) ) return true;
--- 14582,14588 ----
    }
  
    auto edge = refmod.from->field->as_integer();
!   if( 0 < edge ) {
      if( --edge < nchar ) {
        if( ! refmod.len ) return true;
        if( ! is_literal(refmod.len->field) ) return true;
*************** literal_refmod_valid( YYLTYPE loc, const
*** 14114,14123 ****
        return false;
      }
    }
!   // not: 0 < from <= capacity
!   error_msg(loc,"%s(%zu) out of bounds, size is %u",
  	    r.field->name,
  	    size_t(refmod.from->field->as_integer()),
  	    nchar );
    return false;
  }
--- 14602,14612 ----
        return false;
      }
    }
! 
!   error_msg(loc,"%s(%zu:%s) out of bounds, must be within 1:%u",
  	    r.field->name,
  	    size_t(refmod.from->field->as_integer()),
+             nice_name_of(refmod.len->field),
  	    nchar );
    return false;
  }
diff -Nrcpad gcc-17-20260524/gcc/cobol/parse_ante.h gcc-17-20260531/gcc/cobol/parse_ante.h
*** gcc-17-20260524/gcc/cobol/parse_ante.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/parse_ante.h	Sun May 31 22:32:05 2026
*************** void labels_dump();
*** 68,81 ****
  unsigned int cbl_dialects;
  size_t cbl_gcobol_features;
  
- static enum cbl_division_t current_division;
  static size_t nparse_error = 0;
  
  size_t parse_error_inc() {
!   mode_syntax_only(current_division);
    return ++nparse_error;
  }
  size_t parse_error_count() { return nparse_error; }
  void input_file_status_notify();
  
  #define YYLLOC_DEFAULT(Current, Rhs, N)                                 \
--- 68,132 ----
  unsigned int cbl_dialects;
  size_t cbl_gcobol_features;
  
  static size_t nparse_error = 0;
  
+ static const cbl_division_t not_syntax_only = cbl_division_t(-1);
+ static cbl_division_t current_division;
+ 
+ cbl_division_t cbl_syntax_only = not_syntax_only;
+ 
+ void
+ mode_syntax_only( cbl_division_t division ) {
+   cbl_syntax_only = division;
+   dbgmsg("%s: parsing %s, %zu errors", __func__, 
+          cbl_syntax_only == not_syntax_only? "resumes" : "syntax only",
+          nparse_error);
+ }
+ 
+ static void
+ mode_syntax_only( const char func[], bool yn ) {
+   cbl_division_t was_syntax_only = cbl_syntax_only;
+   if( 0 == nparse_error ) {
+     cbl_syntax_only = yn? current_division : not_syntax_only;
+   } else {
+     dbgmsg( "%s: cbl_syntax_only remains %d because %zu nparse_error",
+             __func__, cbl_syntax_only, nparse_error );
+   }
+   if( was_syntax_only != cbl_syntax_only ) {
+     dbgmsg("%s: parsing %s, %zu errors", func, 
+            cbl_syntax_only == not_syntax_only? "resumes" : "syntax only",
+            nparse_error);
+   }
+ }
+ // Parser moves to syntax-only mode if data-division errors preclude compilation.
+ 
+ bool
+ mode_syntax_only() {
+   return cbl_syntax_only != not_syntax_only
+       && cbl_syntax_only <= current_division;
+ }
+ 
  size_t parse_error_inc() {
!   mode_syntax_only(__func__, true);
    return ++nparse_error;
  }
  size_t parse_error_count() { return nparse_error; }
+ 
+ void
+ resume_parsing() {
+   if( 0 == nparse_error ) {
+     if( cbl_syntax_only != not_syntax_only ) {
+       dbgmsg("%s: parsing resumes for 0x%x", __func__,
+              cbl_syntax_only);
+     }
+     cbl_syntax_only = not_syntax_only;
+   }
+ }
+ 
+ static bool successful_parse() {
+   return 0 == nparse_error;
+ }
+ 
  void input_file_status_notify();
  
  #define YYLLOC_DEFAULT(Current, Rhs, N)                                 \
*************** enum data_clause_t {
*** 170,175 ****
--- 221,228 ----
  
  static std::map<data_clause_t,cbl_loc_t> data_clause_locations;
  
+ // This function could be deleted but has narrower scope than the proto_field
+ // equivalent.
  static inline bool
  has_clause( int data_clauses, data_clause_t clause ) {
    return clause == (data_clauses & clause);
*************** static inline char * dequote( char input
*** 256,262 ****
  }
  
  static const char *
! name_of( cbl_field_t *field ) {
    assert(field);
    if( field->name[0] == '_' && field->data.initial ) {
      return field->data.original()? field->data.original() : field->data.initial;
--- 309,315 ----
  }
  
  static const char *
! name_of( const cbl_field_t *field ) {
    assert(field);
    if( field->name[0] == '_' && field->data.initial ) {
      return field->data.original()? field->data.original() : field->data.initial;
*************** name_of( cbl_field_t *field ) {
*** 265,271 ****
  }
  
  static const char *
! nice_name_of( cbl_field_t *field ) {
    auto name = name_of(field);
    return name[0] == '_'? "" : name;
  }
--- 318,324 ----
  }
  
  static const char *
! nice_name_of( const cbl_field_t *field ) {
    auto name = name_of(field);
    return name[0] == '_'? "" : name;
  }
*************** struct arith_t {
*** 565,571 ****
    }
  };
  
! static cbl_refer_t * ast_op( cbl_refer_t *lhs, char op, cbl_refer_t *rhs );
  
  static void ast_add( arith_t *arith );
  static bool ast_subtract( arith_t *arith );
--- 618,625 ----
    }
  };
  
! static cbl_refer_t * ast_op( YYLTYPE loc,
!                              cbl_refer_t *lhs, char op, cbl_refer_t *rhs );
  
  static void ast_add( arith_t *arith );
  static bool ast_subtract( arith_t *arith );
*************** static class current_t {
*** 1852,1861 ****
      return found == typedefs.end()? NULL : *found;
    }
  
!   void udf_add( size_t isym ) {
!     auto udf = function_descr_t::init(isym);
      auto p = udfs.insert(udf);
!     assert(p.second);
    }
    const function_descr_t * udf_in( const char name[] ) {
      auto udf = function_descr_t::init(name);
--- 1906,1918 ----
      return found == typedefs.end()? NULL : *found;
    }
  
!   void udf_add( size_t isym, bool prototype ) {
!     auto udf = function_descr_t::init(isym, prototype);
      auto p = udfs.insert(udf);
!     // If a function definition is repeated, it should have been
!     // already reported. On the other hand, function prototypes can
!     // appear multiple times, as long as the signature matches.
!     assert(p.second || udf.prototype);
    }
    const function_descr_t * udf_in( const char name[] ) {
      auto udf = function_descr_t::init(name);
*************** static class current_t {
*** 1971,1977 ****
  
    bool new_program ( const YYLTYPE& loc, cbl_label_type_t type,
                       const char name[], const char os_name[],
!                      bool common, bool initial, bool recursive )
    {
      size_t  parent = programs.empty()? 0 : programs.top().program_index;
      cbl_label_t label = {};
--- 2028,2035 ----
  
    bool new_program ( const YYLTYPE& loc, cbl_label_type_t type,
                       const char name[], const char os_name[],
!                      bool common, bool initial, bool recursive,
!                      bool prototype = false )
    {
      size_t  parent = programs.empty()? 0 : programs.top().program_index;
      cbl_label_t label = {};
*************** static class current_t {
*** 1981,1986 ****
--- 2039,2045 ----
      label.common = common;
      label.initial = initial;
      label.recursive = recursive;
+     label.prototype = prototype;
      label.os_name = os_name;
      if( !namcpy(loc, label.name, name) ) { gcc_unreachable(); }
  
*************** static class current_t {
*** 2021,2026 ****
--- 2080,2088 ----
        symbol_registers_add();
      }
  
+     assert(current_division == identification_div_e);
+     mode_syntax_only( __func__, prototype );
+ 
      return fOK;
    }
  
*************** void current_enabled_ecs( tree ena ) {
*** 2310,2315 ****
--- 2372,2491 ----
  
  #define PROGRAM current.program_index()
  
+ #define prototype_ok(L, C) cbl_prototype_ok(L, PROGRAM, (C))
+ 
+ /*
+  * The map of prototypes, by program where the prototype appears.  We
+  * assume contained programs and other top-level programs have access to
+  * prototpyes.
+  *
+  * The name "function_prototypes" is misleading.  The key value may be a
+  * program or a function, and may belong to a prototype or a definition.  Those
+  * distinctions are held by the cbl_label_t in the symbol table.
+  */
+ static std::map <size_t,
+                  std::vector<cbl_ffi_arg_t>> function_prototypes;
+ 
+ struct prototype_type_t : public cbl_label_t {
+   size_t isym;
+ 
+   explicit  prototype_type_t( size_t isym, const cbl_label_t * L )
+     : cbl_label_t(*L)
+     , isym(isym)
+   {}
+   bool operator<( const prototype_type_t& that ) const {
+     if( prototype == that.prototype ) {
+       return isym < that.isym || 0 < strcasecmp(name, that.name);
+     }
+     return prototype; // prototype before definition
+     return false;
+   }
+ };
+ 
+ /*
+  * For any name, there may be one prototype and one definition.  A Function-ID
+  * cannot share a name with a Program-ID.  
+  *
+  * std::set::insert returns an iterator to the element and boolean indicating
+  * whether the insertion succeeded.  If false, the iterator points to the
+  * element already occupying that spot.  If it is a prototype, is_allowed_name
+  * returns true because many prototypes for one name may coexist (provided they
+  * are identical).  Else it returns false because only one definition may
+  * exist.
+  */
+ static std::set<prototype_type_t> allowed_prototypes;
+ 
+ static bool is_allowed_name( size_t isym, const cbl_label_t *L ) {
+   auto p = allowed_prototypes.insert( prototype_type_t(isym, L) );
+ 
+   if( ! p.second ) {
+     const cbl_label_t& extant(*p.first);
+ 
+     // cannot have program and function by same name. 
+     if( extant.type != L->type ) return false;
+     
+     // ok if both are prototypes of type, not if neither is. 
+     if( extant.prototype == L->prototype ) {
+       return extant.prototype; 
+     }
+   }
+   return p.second; // otherwise known as true
+ }
+ 
+ static void // add self to prototype map
+ prototype_add( const YYLTYPE& loc, const std::list<cbl_ffi_arg_t>& args ) {
+   auto L = cbl_label_of(symbol_at(PROGRAM));
+   if( is_allowed_name(PROGRAM, L) ) {
+     // parser uses a list
+     std::vector<cbl_ffi_arg_t> argv( args.begin(), args.end() );
+     function_prototypes[PROGRAM] = argv;
+     return;
+   }
+   auto p = allowed_prototypes.find( prototype_type_t(PROGRAM, L) );
+   auto extant = cbl_label_of(symbol_at(p->isym));
+ 
+   error_msg(loc, "%s Already defined on line %d as %s %s",
+             L->name, extant->line, extant->name,
+             extant->prototype? "PROTOTYPE" : "");
+ }
+ 
+ /*
+  * Find defined argument vector for the function/program of label L that
+  * appears in the symbol table before esym.  This prevents checking a
+  * definition or prototype against iself.
+  */
+ std::pair<std::vector<cbl_ffi_arg_t>, bool>
+ prototype_args( const cbl_label_t *L, size_t esym ) {
+   if( L && L->prototype ) {
+     size_t iprog = symbol_elem_of(L)->program;
+     assert(iprog == 0); // no containing program
+     iprog = symbol_index(symbol_elem_of(L));
+     
+     if( iprog < esym ) {
+       auto p = function_prototypes.find(iprog);
+       if( p != function_prototypes.end() ) {
+         return std::make_pair(p->second, true);
+       }
+     }
+   }
+ 
+   return std::make_pair(std::vector<cbl_ffi_arg_t>(), false);
+ }
+ 
+ std::pair<std::vector<cbl_ffi_arg_t>, bool>
+ prototype_args( const char *name, size_t esym ) {
+   auto L = symbol_program(0, name, true);         // seek program prototype
+   if( !L ) L = symbol_program(0, name);           // else use definition
+   if( !L ) L = symbol_function_any(0, name);      // else prototype or definition
+   
+   return prototype_args(L, esym);
+ }
+ 
+ static void
+ verify_args( const YYLTYPE& loc, 
+              const char name[], size_t narg,
+              const cbl_ffi_arg_t args[] );
+ 
  static void
  add_debugging_declarative( const cbl_label_t * label ) {
    // cppcheck-suppress [unreadVariable] obviously not true
*************** size_t program_level() { return current.
*** 2388,2393 ****
--- 2564,2573 ----
  
  static size_t constant_index( int token );
  
+ static bool
+ valid_pointer_relop( const cbl_loc_t& lloc, const cbl_loc_t& oloc, const cbl_loc_t& rloc, 
+                      cbl_refer_t *lhs, relop_t op, cbl_refer_t *rhs );
+ 
  static relop_t relop_of(int);
  static relop_t relop_invert(relop_t op);
  
*************** valid_redefine( const YYLTYPE& loc,
*** 2830,2856 ****
    return true;
  }
  
- #if 0
- static void
- field_value_all(struct cbl_field_t * field ) {
-   // Expand initial by repeating its contents until it is of length capacity:
-   assert(field->data.initial != NULL);
-   size_t initial_length = strlen(field->data.initial);
-   char *new_initial =
-           static_cast<char*>(xmalloc(field->data.capacity()/
-                                      field->codeset.stride() + 1));
-   size_t i = 0;
- 
-   while(i < field->data.capacity()/field->codeset.stride()) {
-     new_initial[i] = field->data.initial[i%initial_length];
-     i += 1;
-   }
-   new_initial[field->data.capacity()/field->codeset.stride()] = '\0';
-   free(const_cast<char *>(field->data.initial));
-   field->data.initial = new_initial;
- }
- #endif
- 
  static cbl_field_t *
  parent_has_picture( cbl_field_t *field ) {
    while( (field = parent_of(field)) != NULL ) {
--- 3010,3015 ----
*************** alphabet_add( const YYLTYPE& loc, cbl_en
*** 3163,3174 ****
  }
  
  // The current field always exists in the symbol table, even if it's incomplete.
! static cbl_field_t *
  current_field(cbl_field_t * field = NULL) {
!   static cbl_field_t *local;
!   if( field ) local = field;
!   gcc_assert(field_index(local));
!   return local;
  }
  
  static void
--- 3322,3355 ----
  }
  
  // The current field always exists in the symbol table, even if it's incomplete.
! static class proto_field_t {
!   cbl_field_t *under_construction;
!   size_t data_clauses;
!   friend cbl_field_t * current_field(cbl_field_t * field);
!  public:
!   proto_field_t() : under_construction(nullptr), data_clauses(0)
!   {}
!   void add_clause( data_clause_t clause ) {
!     data_clauses |= clause;
!   }
!   bool has_clause( data_clause_t clause ) const {
!     return 0 < (clause & data_clauses);
!   }
!  protected:
!   cbl_field_t * reset(cbl_field_t * field) {
!     under_construction = field;
!     data_clauses = 0;
!     gcc_assert(field_index(under_construction));
!     return under_construction;
!   }
! } proto_field;
! 
! cbl_field_t *
  current_field(cbl_field_t * field = NULL) {
!   if( field ) {
!     return proto_field.reset(field);
!   }
!   return proto_field.under_construction;
  }
  
  static void
*************** ast_enter_exit_section( cbl_label_t * se
*** 3325,3336 ****
      current.new_paragraph(implicit),
      current.new_section(section)
    };
!   if( false && yydebug ) {
!     fprintf(stderr, "( %d ) %s:%d: leaving section %s paragraph %s\n",
!             yylineno, __func__, __LINE__,
!             prior.sect? prior.sect->name : "''",
!             prior.para? prior.para->name : "''");
    }
    if( prior.exists() ) {
      parser_leave_paragraph(prior.para);
      parser_leave_section(prior.sect);
--- 3506,3521 ----
      current.new_paragraph(implicit),
      current.new_section(section)
    };
!   dbgmsg( "%s:%d: leaving section %s paragraph %s (line %d)",
!           __func__, __LINE__,
!           prior.sect? prior.sect->name : "''",
!           prior.para? prior.para->name : "''",
!           yylineno );
!   if( section ) {
!     dbgmsg( "%s:%d: entering section %s", __func__, __LINE__,
!             section->name );
    }
+   
    if( prior.exists() ) {
      parser_leave_paragraph(prior.para);
      parser_leave_section(prior.sect);
*************** data_division_ready() {
*** 3381,3391 ****
  
    // Tell codegen about symbols.
    static size_t nsymbol = 0;
    if( (nsymbol = symbols_update(nsymbol, nparse_error == 0)) > 0 ) {
!     if( ! literally_one ) {
!       // Use strdup so cbl_field_t::internalize can free them if need be.
!       literally_one = new_constant(xstrdup("1"));
!       literally_zero = new_constant(xstrdup("0"));
      }
    }
  
--- 3566,3583 ----
  
    // Tell codegen about symbols.
    static size_t nsymbol = 0;
+   size_t again(nsymbol);
+   
    if( (nsymbol = symbols_update(nsymbol, nparse_error == 0)) > 0 ) {
!     if( ! mode_syntax_only() ) {
!       if( ! literally_one ) {
!         // Use strdup so cbl_field_t::internalize can free them if need be.
!         literally_one = new_constant(xstrdup("1"));
!         literally_zero = new_constant(xstrdup("0"));
!       }
!     } else {
!       nsymbol = again;
!       return nparse_error == 0;
      }
    }
  
*************** procedure_division_ready( YYLTYPE loc, c
*** 3572,3578 ****
    parser_label_label(tini_label);
  
    if( current.program()->initial ) {
!     // We perform the section we just layed down when IS INITIAL
      parser_perform(init_label);
    }
    return true;
--- 3764,3770 ----
    parser_label_label(tini_label);
  
    if( current.program()->initial ) {
!     // We perform the section we just laid down when IS INITIAL
      parser_perform(init_label);
    }
    return true;
*************** procedure_division_ready( YYLTYPE loc, c
*** 3581,3587 ****
  static size_t file_section_fd;
  static size_t current_sort_file;
  
! static bool
  file_section_fd_set( file_entry_type_t type, char name[], const YYLTYPE& loc ) {
    static std::set<size_t> has_fd;
  
--- 3773,3779 ----
  static size_t file_section_fd;
  static size_t current_sort_file;
  
! static size_t
  file_section_fd_set( file_entry_type_t type, char name[], const YYLTYPE& loc ) {
    static std::set<size_t> has_fd;
  
*************** file_section_fd_set( file_entry_type_t t
*** 3590,3596 ****
    auto e = symbol_file(PROGRAM, name);
    if( !e ) {
      error_msg(loc, "file name not found");
!     return false;
    }
  
    file_section_fd = symbol_index(e);
--- 3782,3788 ----
    auto e = symbol_file(PROGRAM, name);
    if( !e ) {
      error_msg(loc, "file name not found");
!     return 0;
    }
  
    file_section_fd = symbol_index(e);
*************** file_section_fd_set( file_entry_type_t t
*** 3614,3620 ****
      file.org = file_sequential_e;
    }
  
!   return file_section_fd > 0;
  }
  
  /*
--- 3806,3812 ----
      file.org = file_sequential_e;
    }
  
!   return file_section_fd;
  }
  
  /*
*************** ast_end_program(const char name[]  ) {
*** 3680,3685 ****
--- 3872,3878 ----
    }
    parser_end_program(name);
    internal_ebcdic_unlock();
+   resume_parsing(); 
  }
  
  static bool
diff -Nrcpad gcc-17-20260524/gcc/cobol/scan_ante.h gcc-17-20260531/gcc/cobol/scan_ante.h
*** gcc-17-20260524/gcc/cobol/scan_ante.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/scan_ante.h	Sun May 31 22:32:05 2026
*************** bool need_nume_set( bool tf ) {
*** 1113,1121 ****
  
  static int datetime_format_of( const char input[] );
  
! static int symbol_function_token( const char name[] ) {
!   const auto e = symbol_function( 0, name );
!   return e ? symbol_index(e) : 0;
  }
  
  bool in_procedure_division(void );
--- 1113,1126 ----
  
  static int datetime_format_of( const char input[] );
  
! static int
! symbol_function_token( const char name[] ) {
!   const auto L = symbol_function_any( 0, name );
!   if( L ) {
!     auto e = symbol_elem_of(L);
!     return symbol_index(e);
!   }
!   return 0;
  }
  
  bool in_procedure_division(void );
*************** symbol_exists( const char name[] ) {
*** 1131,1137 ****
  
    if( in_procedure_division() && cache.empty() ) {
      for( auto e = symbols_begin(PROGRAM) + 1;
!          PROGRAM == e->program && e < symbols_end(); e++ ) {
        if( e->type == SymFile ) {
          cbl_file_t *f(cbl_file_of(e));
          cbl_name_t lname;
--- 1136,1142 ----
  
    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;
*************** typed_name( const char name[] ) {
*** 1166,1171 ****
--- 1171,1186 ----
    int token = repository_function_tok(name);
    switch(token) {
    case 0:
+     if(false) // we don't know how to do this yet. 
+     { // Functions in the symbol table may be used without the FUNCTION keyword. 
+       cbl_label_t *L = symbol_function_any(0, name);
+       if( L ) {
+         auto args = prototype_args(L->name);
+         token = args.second && args.first.empty() ? FUNCTION_UDF_0 : FUNCTION_UDF;
+         yylval.number = symbol_function_token(name);
+         return token;
+       }
+     }
      break;
    case FUNCTION_UDF_0:
      yylval.number = symbol_function_token(name);
diff -Nrcpad gcc-17-20260524/gcc/cobol/structs.cc gcc-17-20260531/gcc/cobol/structs.cc
*** gcc-17-20260524/gcc/cobol/structs.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/structs.cc	Sun May 31 22:32:05 2026
*************** create_cblc_field_t()
*** 180,186 ****
          size_t occurs_upper;        // non-zero for a table
          uint64_t attr;              // See cbl_field_attr_t
          signed char type;           // A one-byte copy of cbl_field_type_t
!         signed char level;          // This variable's level in the naming heirarchy
          signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
          signed char rdigits;        // Digits to the right of the decimal point. 3 for 99v999
          cbl_encoding_t  encoding;   // Same as cbl_field_t::codeset::encoding
--- 180,186 ----
          size_t occurs_upper;        // non-zero for a table
          uint64_t attr;              // See cbl_field_attr_t
          signed char type;           // A one-byte copy of cbl_field_type_t
!         signed char level;          // This variable's level in the naming hierarchy
          signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
          signed char rdigits;        // Digits to the right of the decimal point. 3 for 99v999
          cbl_encoding_t  encoding;   // Same as cbl_field_t::codeset::encoding
*************** create_cblc_file_t()
*** 217,229 ****
      /*
  typedef struct cblc_file_t
      {
      char                *name;             // This is the name of the structure; might be the name of an environment variable
!     uint64_t             symbol_index;     // The symbol table index of the related cbl_file_t structure
      char                *filename;         // The name of the file to be opened
      FILE                *file_pointer;     // The FILE *pointer
      cblc_field_t        *default_record;   // The record_area
!     size_t               record_area_min;  // The size of the smallest 01 record in the FD, in characters
!     size_t               record_area_max;  // The size of the largest  01 record in the FD, in characters
      cblc_field_t       **keys;             // For relative and indexed files.  The first is the primary key. Null-terminated.
      int                 *key_numbers;      // One per key -- each key has a number. This table is key_number + 1
      int                 *uniques;          // One per key
--- 217,234 ----
      /*
  typedef struct cblc_file_t
      {
+     // This structure must match the code in structs.cc
      char                *name;             // This is the name of the structure; might be the name of an environment variable
!     size_t               symbol_table_index;  // of the related cbl_field_t structure
      char                *filename;         // The name of the file to be opened
      FILE                *file_pointer;     // The FILE *pointer
+     size_t               file_fpos;        // Calculated file position
+     char                *buffer;           // read buffer
+     size_t               buffer_pos;       // next character from the buffer
+     size_t               buffer_len;       // number of characters in the buffer
      cblc_field_t        *default_record;   // The record_area
!     size_t               record_area_min;  // The size of the smallest 01 record in the FD
!     size_t               record_area_max;  // The size of the largest  01 record in the FD
      cblc_field_t       **keys;             // For relative and indexed files.  The first is the primary key. Null-terminated.
      int                 *key_numbers;      // One per key -- each key has a number. This table is key_number + 1
      int                 *uniques;          // One per key
*************** typedef struct cblc_file_t
*** 242,256 ****
      int                  errnum;           // most recent errno; can't reuse "errno" as the name
      file_status_t        io_status;        // See 2014 standard, section 9.1.12
      int                  padding;          // Actually a char
!     cbl_char_t           delimiter;        // ends a record; defaults to '\n'.
!     int                  stride();         // width of a character
      int                  flags;            // cblc_file_flags_t
!     int                  recent_char;      // This is the most recent char sent to the file
      int                  recent_key;
!     cblc_file_prior_op_t prior_op;
!     int                  encoding;         // Actually cbl_encoding_t
      int                  alphabet;         // Actually cbl_encoding_t
-     int                  dummy             // We need an even number of INT
      } cblc_file_t;
      */
      tree retval = gg_get_structure_type_decl("cblc_file_t",
--- 247,260 ----
      int                  errnum;           // most recent errno; can't reuse "errno" as the name
      file_status_t        io_status;        // See 2014 standard, section 9.1.12
      int                  padding;          // Actually a char
!     uint32_t             delimiter;        // ends a record; defaults to '\n'.
!     int                  stride;           // Width of a character
      int                  flags;            // cblc_file_flags_t
!     uint32_t             recent_char;      // This is the most recent char sent to the file
      int                  recent_key;
!     cblc_file_prior_op_t prior_op;         // run-time type is INT
!     cbl_encoding_t       encoding;         // We assume size int
      int                  alphabet;         // Actually cbl_encoding_t
      } cblc_file_t;
      */
      tree retval = gg_get_structure_type_decl("cblc_file_t",
*************** typedef struct cblc_file_t
*** 258,263 ****
--- 262,271 ----
                                               ULONGLONG, "symbol_table_index",
                                               CHAR_P,    "filename",
                                               FILE_P,    "file_pointer",
+                                              SIZE_T,    "file_fpos",
+                                              CHAR_P,    "buffer",
+                                              SIZE_T,    "buffer_pos",
+                                              SIZE_T,    "buffer_len",
                                               cblc_field_p_type_node, "default_record",
                                               SIZE_T,    "record_area_min",
                                               SIZE_T,    "record_area_max",
diff -Nrcpad gcc-17-20260524/gcc/cobol/symbols.cc gcc-17-20260531/gcc/cobol/symbols.cc
*** gcc-17-20260524/gcc/cobol/symbols.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/symbols.cc	Sun May 31 22:32:05 2026
*************** static std::map<size_t, YYLTYPE> field_l
*** 78,84 ****
  
  void
  symbol_field_location( size_t ifield, const YYLTYPE& loc ) {
-   gcc_assert(field_at(ifield));
    field_locs[ifield] = loc;
  }
  YYLTYPE
--- 78,83 ----
*************** symbol_table_extend() {
*** 187,193 ****
    symbols.elems = static_cast<struct symbol_elem_t*>(mem);
  
    symbols.save(); // add new mapping to list of mappings
- 
    return symbols;
  }
  
--- 186,191 ----
*************** symbol_at( size_t index ) {
*** 211,216 ****
--- 209,225 ----
    return symbol_at_impl(index, false);
  }
  
+ bool // does the element part of a prototype ?
+ is_prototypical( size_t isym ) {
+   auto e = symbol_at(isym);
+   if( e->type != SymLabel ) {
+     if( e->program == 0 ) return false;
+     e = symbol_at( e->program );
+   }
+   const cbl_label_t *L = cbl_label_of(e);
+   return L->prototype;
+ }
+ 
  static char decimal_point = '.';
  
  size_t file_status_register() { return symbols.registers.file_status; }
*************** special_pair_cmp( const cbl_special_name
*** 369,375 ****
   *
   * A qualified reference is denoted LblParagraph with a section, and
   * with line = 0.  A qualified reference updates an unqualified
!  * declaration; the declation is upgraded to LblParagraph with the
   * section as its parent, but still with no line (because it's still
   * undefined).
   *
--- 378,384 ----
   *
   * A qualified reference is denoted LblParagraph with a section, and
   * with line = 0.  A qualified reference updates an unqualified
!  * declaration; the declaration is upgraded to LblParagraph with the
   * section as its parent, but still with no line (because it's still
   * undefined).
   *
*************** symbol_elem_cmp( const void *K, const vo
*** 498,503 ****
--- 507,514 ----
  
        switch(key.type) {
        case LblProgram: // There are no forward program labels
+       case LblFunction:
+         if( key.prototype != elem.prototype ) return 1;
          if( key.parent > 0 && key.parent != elem.parent ) return 1;
          assert(key.parent == elem.parent || key.parent == 0);
          break;
*************** symbol_label_id( const cbl_label_t *labe
*** 624,634 ****
  }
  
  struct cbl_label_t *
! symbol_program( size_t parent, const char name[] )
  {
    cbl_label_t label = {};
    label.type = LblProgram;
    label.parent = parent;
    assert(strlen(name) < sizeof label.name);
    strcpy(label.name, name);
  
--- 635,646 ----
  }
  
  struct cbl_label_t *
! symbol_program( size_t parent, const char name[], bool prototype )
  {
    cbl_label_t label = {};
    label.type = LblProgram;
    label.parent = parent;
+   label.prototype = prototype;
    assert(strlen(name) < sizeof label.name);
    strcpy(label.name, name);
  
*************** extern int yydebug;
*** 646,659 ****
  static size_t
  symbols_dump( size_t first, bool header );
  
! struct symbol_elem_t *
! symbol_function( size_t parent, const char name[] )
  {
    auto p = std::find_if( symbols_begin(), symbols_end(),
!                          [parent, name]( const auto& elem ) {
                             if( elem.type == SymLabel ) {
                               auto L = cbl_label_of(&elem);
                               if( L->type == LblFunction ) {
                                 return 0 == strcasecmp(L->name, name);
                               }
                             }
--- 658,684 ----
  static size_t
  symbols_dump( size_t first, bool header );
  
! enum protoreq_t {
!   proto_required_e,
!   proto_allowed_e,
!   proto_disallowed_e, 
! };
! 
! static struct symbol_elem_t *
! symbol_function_impl( size_t parent, const char name[], protoreq_t protoreq )
  {
    auto p = std::find_if( symbols_begin(), symbols_end(),
!                          [parent, name, protoreq]( const auto& elem ) {
                             if( elem.type == SymLabel ) {
                               auto L = cbl_label_of(&elem);
                               if( L->type == LblFunction ) {
+                                if( protoreq == proto_required_e && !L->prototype ) {
+                                  return false;
+                                }
+                                if( protoreq == proto_disallowed_e && L->prototype ) {
+                                  return false;
+                                }
+                                // allowed or meets above requirement
                                 return 0 == strcasecmp(L->name, name);
                               }
                             }
*************** symbol_function( size_t parent, const ch
*** 663,682 ****
    if( yydebug && p == symbols_end() ) symbols_dump( symbols.first_program, true);
  
    return p == symbols_end()? NULL : p;
  
!   cbl_label_t label = {};
!   label.type = LblFunction;
!   label.parent = parent;
!   assert(strlen(name) < sizeof label.name);
!   strcpy(label.name, name);
! 
!   struct symbol_elem_t key(SymLabel, 0), *e;
!   key.elem.label = label;
  
!   e = static_cast<struct symbol_elem_t *>(lfind( &key, symbols.elems,
!                                                  &symbols.nelem, sizeof(key),
!                                                  symbol_elem_cmp ) );
!   return e;
  }
  
  struct symbol_elem_t *
--- 688,705 ----
    if( yydebug && p == symbols_end() ) symbols_dump( symbols.first_program, true);
  
    return p == symbols_end()? NULL : p;
+ }
  
! struct symbol_elem_t *
! symbol_function( size_t parent, const char name[], bool prototype ) {
!   protoreq_t need = prototype? proto_required_e : proto_disallowed_e;
!   return symbol_function_impl(parent, name, need);
! }
  
! struct cbl_label_t *
! symbol_function_any( size_t parent, const char name[] ) {
!   auto e = symbol_function_impl(parent, name, proto_allowed_e);
!   return e? cbl_label_of(e) : nullptr;
  }
  
  struct symbol_elem_t *
*************** symbols_dump( size_t first, bool header
*** 1128,1133 ****
--- 1151,1166 ----
            free(base);
          }
        }
+       if( LblFunction == cbl_label_of(e)->type ) {
+         const auto& L = *cbl_label_of(e);
+         auto p = prototype_args(L.name);
+         unsigned long narg = p.second? p.first.size() : 0;
+         char *base = s;
+         s = xasprintf("%s (%s%zu args)",  base, 
+                       L.prototype? "prototype, " : "", 
+                       narg);
+         free(base);
+       }
        break;
      case SymSpecial:
        s = xasprintf("%4" GCC_PRISZ "u %-18s id=%2d, %s", (fmt_size_t)e->program,
*************** cbl_field_t::attr_str( const std::vector
*** 1514,1523 ****
  {
    const char *sep = "";
    char *out = NULL;
! 
    for( auto attr_l : attrs ) {
      char *part = out;
!     if( has_attr(attr_l) ) {
        int erc = asprintf(&out, "%s%s%s",
                           part? part : "", sep, cbl_field_attr_str(attr_l));
        if( -1 == erc ) return part;
--- 1547,1558 ----
  {
    const char *sep = "";
    char *out = NULL;
!   uint64_t mask = cbl_field_attr_t(-1);
!   
    for( auto attr_l : attrs ) {
      char *part = out;
!     if( has_attr(attr_l) && (attr_l & mask) == attr_l) {
!       mask &= ~attr_l; // prevent re-using e.g. intermediate_e for strong_e
        int erc = asprintf(&out, "%s%s%s",
                           part? part : "", sep, cbl_field_attr_str(attr_l));
        if( -1 == erc ) return part;
*************** field_str( const cbl_field_t *field ) {
*** 1536,1542 ****
    char name[2*sizeof(cbl_name_t)] = "";
    if( true ) {
      if( field->occurs.ntimes() == 0 ) {
!       snprintf(name, sizeof(name), "%s", field->name);
      } else {
        std::vector <char> updown(1 + field->occurs.nkey, '\0');
        for( size_t i=0; i < field->occurs.nkey; i++ ) {
--- 1571,1577 ----
    char name[2*sizeof(cbl_name_t)] = "";
    if( true ) {
      if( field->occurs.ntimes() == 0 ) {
!       snprintf(name, sizeof(name), "%-20s", field->name);
      } else {
        std::vector <char> updown(1 + field->occurs.nkey, '\0');
        for( size_t i=0; i < field->occurs.nkey; i++ ) {
*************** field_str( const cbl_field_t *field ) {
*** 1564,1570 ****
    char parredef =
      parent_of(field) != NULL && parent_of(field)->level == field->level? 'r' : 'P';
    if( 'r' == parredef && field->level == 0 ) parredef = 'p';
!   if( field->has_attr(typedef_e) ) parredef = 'T';
  
    const char *init = field->data.original();
    if( init ) {
--- 1599,1605 ----
    char parredef =
      parent_of(field) != NULL && parent_of(field)->level == field->level? 'r' : 'P';
    if( 'r' == parredef && field->level == 0 ) parredef = 'p';
!   if( field->has_attr(typedef_e) ) parredef = field->parent? '^' : 'T';
  
    const char *init = field->data.original();
    if( init ) {
*************** field_str( const cbl_field_t *field ) {
*** 1618,1623 ****
--- 1653,1659 ----
    if( field->attr & local_e )   storage_type = 'w'; // because 'l' hard to read
  
    static const std::vector<cbl_field_attr_t> attrs {
+     strongdef_e, typedef_e, 
      figconst_1_e, figconst_2_e, figconst_4_e, rjust_e, ljust_e,
      zeros_e, signable_e, constant_e, function_e, quoted_e, filler_e,
      intermediate_e, embiggened_e, all_alpha_e, all_x_e,
*************** field_str( const cbl_field_t *field ) {
*** 1625,1631 ****
      /* global_e, external_e, */ blank_zero_e, /* linkage_e, local_e, */ leading_e,
      separate_e, envar_e, encoded_e, bool_encoded_e, hex_encoded_e,
      depends_on_e, /* initialized_e, */ has_value_e, ieeedec_e, big_endian_e,
!     same_as_e, record_key_e, typedef_e, strongdef_e,
    };
  
    pend += snprintf(pend, string + sizeof(string) - pend,
--- 1661,1667 ----
      /* global_e, external_e, */ blank_zero_e, /* linkage_e, local_e, */ leading_e,
      separate_e, envar_e, encoded_e, bool_encoded_e, hex_encoded_e,
      depends_on_e, /* initialized_e, */ has_value_e, ieeedec_e, big_endian_e,
!     same_as_e, record_key_e, 
    };
  
    pend += snprintf(pend, string + sizeof(string) - pend,
*************** symbols_update( size_t first, bool parse
*** 1808,1813 ****
--- 1844,1850 ----
      if( field->type == FldForward ) continue;
      if( field->type == FldSwitch ) continue;
      if( is_literal(field) && field->var_decl_node != NULL ) continue;
+     if( field->has_attr(typedef_e) ) continue;
  
      switch(field->level) {
      case 0:
*************** symbols_update( size_t first, bool parse
*** 1860,1865 ****
--- 1897,1903 ----
        const cbl_field_t * redefined = symbol_redefines(field);
        size_invalid = ! is_record_area(redefined);
      }
+ 
      if( !field->is_valid() || size_invalid )
      {
        size_t isym = p - symbols_begin();
*************** symbols_update( size_t first, bool parse
*** 2034,2039 ****
--- 2072,2088 ----
          continue;
        }
      if( parsed_ok ) parser_file_add(&file);
+     } else {
+       if( p->type == SymField ) {
+         auto f = cbl_field_of(p);
+         if( ! mode_syntax_only() ) {
+           if( ! f->var_decl_node ) {
+             dbgmsg("%s:%d: #%lu %s has no var_decl_node",
+                    __func__, __LINE__,
+                    (unsigned long)symbol_index(p), f->name);
+           }
+         }
+       }
      }
    }
  
*************** symbol_table_init(void) {
*** 2309,2315 ****
  
    symbol_table_t table = symbol_table_extend();
  
!   // Insert known contants at the top of an empty table.
    // Constants are signified by their attribute
    // Be warned that ZEROS plays for both sides.  It is defined here as
    // quoted, but in context it can be the value zero at run-time.  Yes, it
--- 2358,2364 ----
  
    symbol_table_t table = symbol_table_extend();
  
!   // Insert known constants at the top of an empty table.
    // Constants are signified by their attribute
    // Be warned that ZEROS plays for both sides.  It is defined here as
    // quoted, but in context it can be the value zero at run-time.  Yes, it
*************** symbol_registers_add() {
*** 2590,2618 ****
  
    static const cbl_field_t ibm_registers[] = {
  #if COBOL_JSON_READY    
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "JSON-CODE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "JSON-STATUS", cp1252 },
  #endif
      { FldNumericBin5,  glosig,    {2,2,4,0, zero    }, 0, "RETURN-CODE", cp1252 },
!     { FldAlphanumeric, glosig,    {160,160,0,0, spc }, 1, "SORT-CONTROL", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "SORT-CORE-SIZE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "SORT-FILE-SIZE", cp1252 },
!     { FldAlphanumeric, global_e,  {8,8,0,0, spc     }, 1, "SORT-MESSAGE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "SORT-MODE-SIZE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 1, "SORT-RETURN", cp1252 },
      // 01  TALLY GLOBAL PICTURE 9(5) USAGE BINARY VALUE ZERO.
!     { FldNumericBin5,  global_e,  {4,4,5,0, zero    }, 1, "_TALLY", cp1252 },
!     { FldAlphanumeric, global_e,  {16,16,0,0, spc   }, 1, "WHEN-COMPILED", cp1252 },
      // xml registers
!     { FldNumericBin5,  glosig,    {4,4,9,0, zero    }, 1, "XML-CODE", cp1252 },
!     { FldAlphanumeric, global_e,  {30,30,0,0, spc   }, 1, "XML-EVENT", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,9,0, zero    }, 1, "XML-INFORMATION", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-NAMESPACE", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-NNAMESPACE", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-NAMESPACE-PREFIX", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-NNAMESPACE-PREFIX", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-TEXT", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 1, "XML-NTEXT", cp1252 },
    };
  
    size_t program = symbols.nelem - 1;
--- 2639,2667 ----
  
    static const cbl_field_t ibm_registers[] = {
  #if COBOL_JSON_READY    
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "JSON-CODE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "JSON-STATUS", cp1252 },
  #endif
      { FldNumericBin5,  glosig,    {2,2,4,0, zero    }, 0, "RETURN-CODE", cp1252 },
!     { FldAlphanumeric, glosig,    {160,160,0,0, spc }, 0, "SORT-CONTROL", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "SORT-CORE-SIZE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "SORT-FILE-SIZE", cp1252 },
!     { FldAlphanumeric, global_e,  {8,8,0,0, spc     }, 0, "SORT-MESSAGE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "SORT-MODE-SIZE", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,5,0, zero    }, 0, "SORT-RETURN", cp1252 },
      // 01  TALLY GLOBAL PICTURE 9(5) USAGE BINARY VALUE ZERO.
!     { FldNumericBin5,  global_e,  {4,4,5,0, zero    }, 0, "_TALLY", cp1252 },
!     { FldAlphanumeric, global_e,  {16,16,0,0, spc   }, 0, "WHEN-COMPILED", cp1252 },
      // xml registers
!     { FldNumericBin5,  glosig,    {4,4,9,0, zero    }, 0, "XML-CODE", cp1252 },
!     { FldAlphanumeric, global_e,  {30,30,0,0, spc   }, 0, "XML-EVENT", cp1252 },
!     { FldNumericBin5,  glosig,    {4,4,9,0, zero    }, 0, "XML-INFORMATION", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-NAMESPACE", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-NNAMESPACE", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-NAMESPACE-PREFIX", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-NNAMESPACE-PREFIX", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-TEXT", cp1252 },
!     { FldAlphanumeric, based_any, {1,1,0,0, nullptr }, 0, "XML-NTEXT", cp1252 },
    };
  
    size_t program = symbols.nelem - 1;
*************** symbol_field_add( size_t program, struct
*** 2768,2773 ****
--- 2817,2823 ----
      static const size_t inherit = global_e | external_e | local_e | linkage_e;
      field->attr = inherit & parent->attr;
      field->attr |= numeric_group_attrs(parent);
+     field->attr |= (typedef_e & parent->attr);
      field->usage = parent->usage;
      if( field->level == 66 || field->level == 88 ) {
        field->codeset = parent->codeset;
*************** symbol_field_same_as( cbl_field_t *tgt,
*** 3105,3110 ****
--- 3155,3161 ----
    }
    auto last_elem = symbol_at(field_index(tgt));
    tgt->same_as(*src, src->is_typedef());
+   size_t inherit_attr = ((linkage_e | local_e) & tgt->attr);
  
    size_t isrc = field_index(src);
  
*************** symbol_field_same_as( cbl_field_t *tgt,
*** 3125,3130 ****
--- 3176,3182 ----
    }
  
    cbl_field_t dup = {};
+   dup.attr |= inherit_attr;
    dup.parent = field_index(tgt);
    dup.line = tgt->line;
    dup.codeset = tgt->codeset;
*************** cbl_alphabet_t::cbl_alphabet_t(const YYL
*** 3385,3392 ****
   * we don't attempt to avoid re-encoding.  "Conversion" of ASCII to ASCII is at
   * most 256 calls to iconv(3).
   */
! void
! cbl_alphabet_t::reencode()  {
  
    const unsigned char * const pend = collation_sequence + sizeof(collation_sequence);
    std::vector<char> tgt(256, (char)0xFF);
--- 3437,3444 ----
   * we don't attempt to avoid re-encoding.  "Conversion" of ASCII to ASCII is at
   * most 256 calls to iconv(3).
   */
! bool
! cbl_alphabet_t::reencode( const cbl_loc_t& loc )  {
  
    const unsigned char * const pend = collation_sequence + sizeof(collation_sequence);
    std::vector<char> tgt(256, (char)0xFF);
*************** cbl_alphabet_t::reencode()  {
*** 3407,3412 ****
--- 3459,3469 ----
    const char *tocode =
                __gg__encoding_iconv_name(current_encoding(display_encoding_e));
    iconv_t cd = iconv_open(tocode, fromcode);
+   if( cd == iconv_t(-1) ) {
+     error_msg(loc, "cannot convert from %qs to %qs: %s",
+               fromcode, tocode, xstrerror(errno));
+     return false;
+   }
  
    const charmap_t *charmap_disp =
                __gg__get_charmap(current_encoding(display_encoding_e));
*************** cbl_alphabet_t::reencode()  {
*** 3467,3472 ****
--- 3524,3530 ----
    }
  
    std::copy(tgt.begin(), tgt.end(), collation_sequence);
+   return true;
  }
  
  bool
*************** symbol_label_add( size_t program, cbl_la
*** 4473,4479 ****
  /*
   * Under ISO (and not IBM) Declaratives are followed by a Section name.  If
   * Declaratives were used, when the first statement is parsed verify that it
!  * was preceeded by a Section name.
   */
  bool
  symbol_label_section_exists( size_t eval_label_index ) {
--- 4531,4537 ----
  /*
   * Under ISO (and not IBM) Declaratives are followed by a Section name.  If
   * Declaratives were used, when the first statement is parsed verify that it
!  * was preceded by a Section name.
   */
  bool
  symbol_label_section_exists( size_t eval_label_index ) {
*************** symbol_program_add( size_t program, cbl_
*** 4519,4525 ****
                        if( elem.type == SymLabel ) {
                          if( program == elem.program ) {
                            auto L = cbl_label_of(&elem);
!                           if( 0 == strcasecmp(name, L->name) ) return true;
                          }
                        }
                        return false;
--- 4577,4585 ----
                        if( elem.type == SymLabel ) {
                          if( program == elem.program ) {
                            auto L = cbl_label_of(&elem);
!                           if( ! L->prototype ) { // prototypes don't count
!                             return 0 == strcasecmp(name, L->name);
!                           }
                          }
                        }
                        return false;
diff -Nrcpad gcc-17-20260524/gcc/cobol/symbols.h gcc-17-20260531/gcc/cobol/symbols.h
*** gcc-17-20260524/gcc/cobol/symbols.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/symbols.h	Sun May 31 22:32:05 2026
*************** enum cbl_division_t {
*** 131,136 ****
--- 131,210 ----
    procedure_div_e,
  };
  
+ /*
+  * The term "dspc" stands for Division, Section, Paragraph, or Clause because
+  * there is no official overarching term for them. We don't use the cbl prefix
+  * because this enum is used only by the parser.
+  *
+  * These represent all possible standard titles in a COBOL program.  Those that
+  * are allowed in a prototype are in a set, which the parser tests for
+  * validity.
+  */
+ enum dspc_t {
+   dspc_identification_div_e,
+   dspc_options_para_e, 
+   dspc_arithmetic_clause_e, 
+   dspc_default_rounded_clause_e, 
+   dspc_entry_convention_clause_e, 
+   dspc_float_binary_clause_e, 
+   dspc_float_decimal_clause_e, 
+   dspc_initialize_clause_e, 
+   dspc_intermediate_rounding_clause_e, 
+ 
+   dspc_environment_div_e,
+   dspc_configuration_section_e, 
+   dspc_source_computer_paragraph_e, 
+   dspc_object_computer_paragraph_e,
+   
+   dspc_i_o_section_e, 
+ 
+   // special names clauses
+   dspc_special_names_paragraph_e, 
+   dspc_alphabet_name_clause_e, 
+   dspc_class_clause_e,
+   dspc_crt_status_clause_e,
+   dspc_currency_sign_clause_e, 
+   dspc_cursor_clause_e,
+   dspc_decimal_point_is_comma_clause_e, 
+   dspc_device_clause_e, 
+   dspc_dynamic_length_structure_clause_e,
+   dspc_feature_clause_e, 
+   dspc_locale_clause_e, 
+   dspc_order_table_clause_e,
+   dspc_switch_clause_e, 
+   dspc_symbolic_characters_clause_e, 
+ 
+   dspc_repository_paragraph_e, 
+   dspc_input_output_section_e,
+   dspc_file_control_paragraph_e, 
+   dspc_i_o_control_paragraph_e, 
+ 
+   dspc_data_div_e, // sorted by alphabetically by section and clause
+   dspc_linkage_section_e, 
+ 
+   dspc_file_section_e, 
+   dspc_local_storage_section_e, 
+   dspc_report_section_e, 
+   dspc_screen_section_e, 
+   dspc_working_storage_section_e, 
+ 
+   // not used: parser checks only the Data Division Section.
+   dspc_77_level_description_entry_e, 
+   dspc_constant_entry_e, 
+   dspc_file_description_entry_e, 
+   dspc_record_description_entry_e, 
+   dspc_report_group_description_entry_e, 
+   dspc_screen_description_entry_e, 
+   dspc_sort_merge_file_description_entry_e, 
+   dspc_type_declaration_entry_e, 
+ 
+   dspc_procedure_div_e,
+   dspc_procedure_header_e,
+   dspc_procedure_body_e,
+ };
+ 
+ bool cbl_prototype_ok( const cbl_loc_t& loc, size_t program, dspc_t clause );
+ 
  void mode_syntax_only( cbl_division_t division );
  bool mode_syntax_only();
  
*************** public:
*** 417,423 ****
        auto n = real_to_integer(r);
        REAL_VALUE_TYPE r2;
        real_from_integer (&r2, VOIDmode, n, SIGNED);
!       // If the orginal value r is equal to r2, derived from its integer
        // part n, then the fractional component is zero.
        if( real_identical (r, &r2) ) {
          return std::make_pair( int64_t(n), true );
--- 491,497 ----
        auto n = real_to_integer(r);
        REAL_VALUE_TYPE r2;
        real_from_integer (&r2, VOIDmode, n, SIGNED);
!       // If the original value r is equal to r2, derived from its integer
        // part n, then the fractional component is zero.
        if( real_identical (r, &r2) ) {
          return std::make_pair( int64_t(n), true );
*************** public:
*** 465,471 ****
      REAL_VALUE_TYPE r;
      real_from_string (&r, input.c_str());
      r = real_value_truncate (TYPE_MODE (float128_type_node), r);
!     etc.value = build_real (float128_type_node, r);
      return *this;
    }
    cbl_field_data_t& valify( const char *input ) {
--- 539,545 ----
      REAL_VALUE_TYPE r;
      real_from_string (&r, input.c_str());
      r = real_value_truncate (TYPE_MODE (float128_type_node), r);
!     *this = build_real (float128_type_node, r);
      return *this;
    }
    cbl_field_data_t& valify( const char *input ) {
*************** struct field_key_t {
*** 1097,1103 ****
    }
  };
  
! bool valid_move( const cbl_field_t *tgt, const cbl_field_t *src );
  
  #define record_area_name_stem "_ra_"
  
--- 1171,1177 ----
    }
  };
  
! bool valid_move( const cbl_refer_t& tgt, const cbl_refer_t& src );
  
  #define record_area_name_stem "_ra_"
  
*************** struct cbl_num_result_t {
*** 1295,1300 ****
--- 1369,1393 ----
    }
  };
  
+ struct parameter_t {
+   bool optional;
+   cbl_ffi_crv_t crv; // by content not applicable
+   cbl_field_t field;
+   parameter_t( const cbl_field_t& field, // cppcheck-suppress noExplicitConstructor
+                cbl_ffi_crv_t crv = by_default_e,
+                bool optional = false )
+     : optional(optional)
+     , crv(crv)
+     , field(field)
+   {}
+ };
+ 
+ /*
+  * Map symbol table index of procedure/function to formal parameters.
+  * Index may refer to definition or prototype. 
+  */
+ typedef std::map<size_t, std::vector<parameter_t>> parameter_map;
+ 
  void parser_symbol_add( struct cbl_field_t *new_var );
  void parser_local_add( struct cbl_field_t *new_var );
  
*************** struct cbl_ffi_arg_t {
*** 1311,1316 ****
--- 1404,1411 ----
                   cbl_refer_t* refer,
                   cbl_ffi_arg_attr_t attr = none_of_e );
    cbl_field_t *field() { return refer.field; }
+   const cbl_field_t *field() const { return refer.field; }
+   bool matches( const cbl_ffi_arg_t& that ) const;
    void validate() const {
      if( refer.is_reference() ) {
        yyerror("%s is a reference", refer.field->name);
*************** struct cbl_label_t {
*** 1415,1421 ****
    enum cbl_label_type_t type;
    size_t parent;
    int line, used, lain;
!   bool common, initial, recursive;
    size_t initial_section, returning;
    cbl_name_t name;
    const char *os_name, *mangled_name;
--- 1510,1516 ----
    enum cbl_label_type_t type;
    size_t parent;
    int line, used, lain;
!   bool common, initial, recursive, prototype;
    size_t initial_section, returning;
    cbl_name_t name;
    const char *os_name, *mangled_name;
*************** struct function_descr_t {
*** 1686,1700 ****
    cbl_field_type_t ret_type;  // When the ret_type is FldInvalid, that
                                // indicates the function takes on the type of
                                // the first argument.
!   static function_descr_t init( const char name[] ) {
      function_descr_t descr = {};
      if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) {
        dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED
               " characters)", name, (fmt_size_t)sizeof(descr.name));
      }
      return descr;  // truncation also reported elsewhere ?
    }
!   static function_descr_t init( int isym );
  
    static char
    parameter_type( const cbl_field_t& field ) {
--- 1781,1797 ----
    cbl_field_type_t ret_type;  // When the ret_type is FldInvalid, that
                                // indicates the function takes on the type of
                                // the first argument.
!   bool prototype;
!   static function_descr_t init( const char name[], bool prototype = false ) {
      function_descr_t descr = {};
      if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) {
        dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED
               " characters)", name, (fmt_size_t)sizeof(descr.name));
      }
+     descr.prototype = prototype;
      return descr;  // truncation also reported elsewhere ?
    }
!   static function_descr_t init( int isym, bool prototype = false );
  
    static char
    parameter_type( const cbl_field_t& field ) {
*************** struct function_descr_t {
*** 1728,1737 ****
    }
  
    bool operator<( const function_descr_t& that ) const {
!     return strcasecmp(name, that.name) < 0;
    }
    bool operator==( const function_descr_t& that ) const {
!     return strcasecmp(name, that.name) == 0;
    }
    bool operator==( const char *name ) const {
      return strcasecmp(this->name, name) == 0;
--- 1825,1836 ----
    }
  
    bool operator<( const function_descr_t& that ) const {
!     return strcasecmp(name, that.name) < 0
!         || prototype != that.prototype;
    }
    bool operator==( const function_descr_t& that ) const {
!     return strcasecmp(name, that.name) == 0
!         && prototype == that.prototype;
    }
    bool operator==( const char *name ) const {
      return strcasecmp(this->name, name) == 0;
*************** struct cbl_alphabet_t {
*** 1889,1895 ****
  
    void also( const YYLTYPE& loc, size_t ch );
    bool assign( const YYLTYPE& loc, unsigned char ch, unsigned char value );
!   void reencode();
  
    static const char *
    encoding_str( cbl_encoding_t encoding ) {
--- 1988,1994 ----
  
    void also( const YYLTYPE& loc, size_t ch );
    bool assign( const YYLTYPE& loc, unsigned char ch, unsigned char value );
!   bool reencode( const cbl_loc_t& loc );
  
    static const char *
    encoding_str( cbl_encoding_t encoding ) {
*************** struct cbl_file_t {
*** 2068,2073 ****
--- 2167,2178 ----
        : encoding(encoding), alphabet(alphabet)
      {}
    } codeset;
+   struct linage_t {
+     cbl_refer_t *nline, *footing, *top, *bottom;
+     linage_t()
+       : nline(nullptr), footing(nullptr), top(nullptr), bottom(nullptr)
+     {}           
+   } linage;
    int line;
    cbl_name_t name;
    cbl_sortreturn_t *addresses; // Used during parser_return_start, et al.
*************** symbol_find( size_t program, std::list<c
*** 2310,2315 ****
--- 2415,2427 ----
  symbol_elem_t * symbol_find_of( size_t program,
                                  std::list<const char *> names, size_t group );
  
+ std::pair<std::vector<cbl_ffi_arg_t>, bool>
+ prototype_args( const cbl_label_t *L, size_t esym );
+ 
+ std::pair<std::vector<cbl_ffi_arg_t>, bool>
+ prototype_args( const char *name,
+                 size_t esym = symbols_end() - symbols_begin());
+ 
  struct cbl_field_t *symbol_find_odo( const cbl_field_t * field );
  size_t dimensions( const cbl_field_t *field );
  
*************** cbl_file_of( const symbol_elem_t *e ) {
*** 2408,2413 ****
--- 2520,2528 ----
    return &e->elem.file;
  }
  
+ // does the element part of a prototype ?
+ bool is_prototypical( size_t isym ); 
+ 
  static inline bool
  is_program( const symbol_elem_t& e ) {
    return e.type == SymLabel &&
*************** is_numeric( const cbl_field_t *field ) {
*** 2653,2658 ****
--- 2768,2782 ----
    return is_zero || is_numeric(field->type);
  }
  
+ static inline bool
+ is_numeric( const cbl_refer_t& r ) {
+   assert( r.field );
+   if( r.field->type == FldNumericDisplay && r.is_refmod_reference() ) {
+     return false;
+   }
+   return is_numeric(r.field);
+ }
+ 
  /*
   * Public functions
   */
*************** struct symbol_elem_t * symbol_typedef( s
*** 2761,2771 ****
  struct symbol_elem_t * symbol_typedef( size_t program, const char name[] );
  struct symbol_elem_t * symbol_field( size_t program,
                                       size_t parent, const char name[] );
- struct cbl_label_t *   symbol_program( size_t parent, const char name[] );
  struct cbl_label_t *   symbol_label( size_t program, cbl_label_type_t type,
                                       size_t section, const char name[],
                                       const char os_name[] = NULL );
! struct symbol_elem_t * symbol_function( size_t parent, const char name[] );
  
  struct symbol_elem_t * symbol_literalA( size_t program, const char name[] );
  
--- 2885,2898 ----
  struct symbol_elem_t * symbol_typedef( size_t program, const char name[] );
  struct symbol_elem_t * symbol_field( size_t program,
                                       size_t parent, const char name[] );
  struct cbl_label_t *   symbol_label( size_t program, cbl_label_type_t type,
                                       size_t section, const char name[],
                                       const char os_name[] = NULL );
! struct symbol_elem_t * symbol_function( size_t parent,
!                                         const char name[], bool prototype = false );
! struct cbl_label_t *   symbol_function_any( size_t parent, const char name[] );
! struct cbl_label_t *   symbol_program( size_t parent,
!                                        const char name[], bool prototype = false );
  
  struct symbol_elem_t * symbol_literalA( size_t program, const char name[] );
  
diff -Nrcpad gcc-17-20260524/gcc/cobol/symfind.cc gcc-17-20260531/gcc/cobol/symfind.cc
*** gcc-17-20260524/gcc/cobol/symfind.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/symfind.cc	Sun May 31 22:32:05 2026
*************** typedef std::map <field_key_t, std::list
*** 93,117 ****
  static field_keymap_t symbol_map2;
  
  /*
!  * As each field is added to the symbol table, add its name and index
!  * to the name map.  Initially the type is FldInvalid.  Those are
!  * removed by symbols_update();
   */
  void
  update_symbol_map2( const symbol_elem_t *e ) {
    auto field = cbl_field_of(e);
  
!   if( ! field->is_typedef() ) {
!     switch( field->type ) {
!     case FldForward:
!     case FldLiteralN:
!       return;
!     case FldLiteralA:
!       if( ! field->is_key_name() ) return;
!       break;
!     default:
!       break;
!     }
    }
  
    field_key_t fk( e->program, field );
--- 93,117 ----
  static field_keymap_t symbol_map2;
  
  /*
!  * As each field is added to the symbol table, add its name and index to the
!  * name map.  Initially the type is FldInvalid.  Those are removed by
!  * symbols_update().  Typedefs are excluded; they do not represent data items.
   */
  void
  update_symbol_map2( const symbol_elem_t *e ) {
    auto field = cbl_field_of(e);
  
!   if( field->is_typedef() ) return;
! 
!   switch( field->type ) {
!   case FldForward:
!   case FldLiteralN:
!     return;
!   case FldLiteralA:
!     if( ! field->is_key_name() ) return;
!     break;
!   default:
!     break;
    }
  
    field_key_t fk( e->program, field );
*************** symbol_find( size_t program, std::list<c
*** 523,528 ****
--- 523,529 ----
                    std::inserter(qualified, qualified.begin()),
                    [i01]( auto item ) {
                      const std::vector<size_t>& ancestors(item.second);
+                     assert(!ancestors.empty());
                      return ancestors.back() == i01;
                    } );
      items = qualified;
diff -Nrcpad gcc-17-20260524/gcc/cobol/token_names.h gcc-17-20260531/gcc/cobol/token_names.h
*** gcc-17-20260524/gcc/cobol/token_names.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/token_names.h	Sun May 31 22:32:05 2026
***************
*** 1,5 ****
! // generated by /home/jklowden/projects/3rd/gcc/parser/gcc/cobol/token_names.h.gen cobol/parse.h
! // Sun Jan 11 18:01:04 EST 2026
  tokens = {
  	{ "identification", IDENTIFICATION_DIV }, // 258
  	{ "environment", ENVIRONMENT_DIV }, // 259
--- 1,4 ----
! // generated by token_names.h.gen
  tokens = {
  	{ "identification", IDENTIFICATION_DIV }, // 258
  	{ "environment", ENVIRONMENT_DIV }, // 259
diff -Nrcpad gcc-17-20260524/gcc/cobol/util.cc gcc-17-20260531/gcc/cobol/util.cc
*** gcc-17-20260524/gcc/cobol/util.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/util.cc	Sun May 31 22:32:05 2026
*************** cdf_dictionary() {
*** 233,238 ****
--- 233,282 ----
    return cdf_directives.dictionary.value();
  }
  
+ // elements permitted in a program or function prototype
+ static const std::set<dspc_t> prototype_elements {
+   dspc_identification_div_e,
+   dspc_options_para_e, 
+   ////_arithmetic_clause_e, disallowed
+   dspc_default_rounded_clause_e, 
+   dspc_entry_convention_clause_e, 
+   dspc_float_binary_clause_e, 
+   dspc_float_decimal_clause_e, 
+   dspc_initialize_clause_e, 
+   dspc_intermediate_rounding_clause_e, 
+ 
+   dspc_environment_div_e,
+   dspc_configuration_section_e, 
+   dspc_source_computer_paragraph_e, 
+   ////_object_computer_paragraph_e, disallowed
+   
+   // permitted special names clauses
+   dspc_special_names_paragraph_e, 
+   dspc_alphabet_name_clause_e, 
+   dspc_currency_sign_clause_e, 
+   dspc_decimal_point_is_comma_clause_e, 
+   dspc_locale_clause_e, 
+   dspc_symbolic_characters_clause_e, 
+ 
+   // no i-o section, and we assume no repository paragraph
+ 
+   dspc_data_div_e,
+   dspc_linkage_section_e,
+   
+   dspc_procedure_div_e, // only header is allowed
+   dspc_procedure_header_e,
+ };
+ 
+ bool
+ cbl_prototype_ok( const cbl_loc_t& loc, size_t iprog, dspc_t clause ) {
+   bool prototyping = cbl_label_of(symbol_at(iprog))->prototype;
+   if( prototyping && 0 == prototype_elements.count(clause) ) {
+     error_msg( loc, "syntax not allowed for PROTOTYPE" ); 
+     return false;
+   }
+   return true;
+ }
+ 
  void
  cobol_set_indicator_column( int column ) {
    cdf_directives.source_format.value().indicator_column_set(column);
*************** void cdf_pop_source_format() {
*** 274,280 ****
   * Construct a cbl_field_t from a CDF literal, to be installed in the symbol table.
   */
  cbl_field_t
! cdf_literalize( const std::string& name, const cdfval_t& value ) {
      cbl_field_t field;
  
      if( value.is_numeric() ) {
--- 318,326 ----
   * Construct a cbl_field_t from a CDF literal, to be installed in the symbol table.
   */
  cbl_field_t
! cdf_literalize( const cbl_loc_t& loc,
!                 const std::string& name, const cdfval_t& value,
!                 bool set_initial ) {
      cbl_field_t field;
  
      if( value.is_numeric() ) {
*************** cdf_literalize( const std::string& name,
*** 283,297 ****
        cbl_field_data_t data(len, len, len,0, initial); // digits == len, no rdigits
        data.valify();
        field = cbl_field_t{ FldLiteralN, constant_e, data, 0, name.c_str()};
      } else {
        auto len = strlen(value.string);
        cbl_field_data_t data(len, len);
        data.original(xstrdup(value.string));
        field = cbl_field_t{ FldLiteralA, constant_e, data, 0, name.c_str() };
        field.set_attr(quoted_e);
      }
  
-     field.codeset.set();
      return field;
  }
  
--- 329,347 ----
        cbl_field_data_t data(len, len, len,0, initial); // digits == len, no rdigits
        data.valify();
        field = cbl_field_t{ FldLiteralN, constant_e, data, 0, name.c_str()};
+       field.codeset.set();
      } else {
        auto len = strlen(value.string);
        cbl_field_data_t data(len, len);
        data.original(xstrdup(value.string));
        field = cbl_field_t{ FldLiteralA, constant_e, data, 0, name.c_str() };
        field.set_attr(quoted_e);
+       field.codeset.set();
+       if( set_initial ) {
+         field.set_initial(loc);
+       }
      }
  
      return field;
  }
  
*************** cdf_literalize() {
*** 304,310 ****
      std::string name(elem.first);
      const cdfval_t& value(elem.second);
  
!     fields.push_back(cdf_literalize(name, value));
    }
    return fields;
  }
--- 354,360 ----
      std::string name(elem.first);
      const cdfval_t& value(elem.second);
  
!     fields.push_back(cdf_literalize(cbl_loc_t(), name, value, false));
    }
    return fields;
  }
*************** move_corresponding( cbl_refer_t& tgt, cb
*** 2139,2147 ****
    return true;
  }
  
  bool
! valid_move( const struct cbl_field_t *tgt, const struct cbl_field_t *src )
  {
      // This is the base matrix of allowable moves.  Moves from Alphanumeric are
      // modified based on the attribute bit all_alpha_e, and moves from Numeric
      // types to Alphanumeric and AlphanumericEdited are allowable when the
--- 2189,2208 ----
    return true;
  }
  
+ static cbl_field_type_t
+ effective_type( const cbl_refer_t& r ) {
+   auto type = r.field->type;
+   if( type == FldNumericDisplay && r.is_refmod_reference() ) {
+     type = FldAlphanumeric;
+   }
+   return type;
+ }
+ 
  bool
! valid_move( const cbl_refer_t& tgt_ref, const cbl_refer_t& src_ref )
  {
+   const cbl_field_t *tgt = tgt_ref.field, *src = src_ref.field;
+ 
      // This is the base matrix of allowable moves.  Moves from Alphanumeric are
      // modified based on the attribute bit all_alpha_e, and moves from Numeric
      // types to Alphanumeric and AlphanumericEdited are allowable when the
*************** valid_move( const struct cbl_field_t *tg
*** 2194,2199 ****
--- 2255,2275 ----
    assert(tgt->type < sizeof(matrix[0]));
    assert(src->type < sizeof(matrix[0]));
  
+   /*
+    * 8.4.3.3.3 Syntax rules
+    * A refmod may apply to: 
+    * "a numeric data item of usage display or national that is not subordinate
+    * to a strongly-typed group item,"
+    * 
+    * 8.4.3.3.4 General rules
+    *
+    * "If the data item referenced by identifier-1 is explicitly or implicitly
+    * described as usage DISPLAY and its category is other than alphanumeric,
+    * identifier-1 is operated upon for purposes of reference modification as if
+    * it were redefined as a data item of class and category alphanumeric of the
+    * same size as the data item referenced by identifier-1."
+    */
+ 
    // A value of zero  means the move is prohibited.
    // The 1 bit means the move is allowed
    // The 2 bit means the move is allowed if the source has zero rdigits,
*************** valid_move( const struct cbl_field_t *tg
*** 2206,2212 ****
    bool alphabetic = tgt->has_attr(all_alpha_e);
    bool src_alpha =  src->has_attr(all_alpha_e);
  
!   switch( matrix[src->type][tgt->type] )
      {
      case 0:
        if( src->type == FldLiteralA && is_numericish(tgt) && !is_literal(tgt) ) {
--- 2282,2288 ----
    bool alphabetic = tgt->has_attr(all_alpha_e);
    bool src_alpha =  src->has_attr(all_alpha_e);
  
!   switch( matrix[ effective_type(src_ref) ] [ effective_type(tgt_ref) ] )
      {
      case 0:
        if( src->type == FldLiteralA && is_numericish(tgt) && !is_literal(tgt) ) {
*************** date_time_fmt( const char input[] ) {
*** 2793,2799 ****
  
  
  /*
!  * Development suppport
   */
  
  #pragma GCC diagnostic push
--- 2869,2875 ----
  
  
  /*
!  * Development support
   */
  
  #pragma GCC diagnostic push
*************** void cobol_set_pp_option(int opt) {
*** 2905,2910 ****
--- 2981,2995 ----
    input_filenames.option_m = true;
  }
  
+ static bool trunc_binary;
+ 
+ bool cobol_trunc_binary() {
+   return trunc_binary;
+ }
+ void cobol_trunc_binary( int cobol_trunc_binary ) {
+   trunc_binary = cobol_trunc_binary != 0;
+ }
+ 
  /*
   * Maintain a stack of input filenames.  Ensure the files are unique (by
   * inode), to prevent copybook cycles. Before pushing a new name, Record the
*************** cobol_lineno( int lineno ) {
*** 2950,2960 ****
  /*
   * This function is called from the scanner, usually when a copybook is on top
   * of the input stack, before the parser retrieves the token and resets the
!  * current filename.  For that reason, we normaly want to line number of the
   * file that is about to become the current one, which is the one behind top().
   *
   * If somehow we arrive here when there is nothing underneath, we return the
!  * current line nubmer, or zero if there's no input.  The only consequence is
   * that the reported line number might be wrong.
   */
  int
--- 3035,3045 ----
  /*
   * This function is called from the scanner, usually when a copybook is on top
   * of the input stack, before the parser retrieves the token and resets the
!  * current filename.  For that reason, we normally want to line number of the
   * file that is about to become the current one, which is the one behind top().
   *
   * If somehow we arrive here when there is nothing underneath, we return the
!  * current line number, or zero if there's no input.  The only consequence is
   * that the reported line number might be wrong.
   */
  int
*************** operator-( const cbl_timespec& now, cons
*** 3315,3320 ****
--- 3400,3407 ----
  }
  #endif
  
+ void parse_error_reset();
+ 
  static int
  parse_file( const char filename[] )
  {
*************** parse_file( const char filename[] )
*** 3342,3349 ****
  #endif
  
    parser_leave_file();
! 
! 
    fclose (yyin);
  
    if( erc ) {
--- 3429,3435 ----
  #endif
  
    parser_leave_file();
!   
    fclose (yyin);
  
    if( erc ) {
diff -Nrcpad gcc-17-20260524/gcc/cobol/util.h gcc-17-20260531/gcc/cobol/util.h
*** gcc-17-20260524/gcc/cobol/util.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cobol/util.h	Sun May 31 22:32:05 2026
*************** int  ftoupper(int c);
*** 44,49 ****
--- 44,51 ----
  bool fisprint(int c);
  
  void cobol_set_pp_option(int opt);
+ void cobol_trunc_binary( int cobol_trunc_binary );
+ bool cobol_trunc_binary();
  
  void cobol_filename_restore();
  const char * cobol_lineno( int );
diff -Nrcpad gcc-17-20260524/gcc/collect2.cc gcc-17-20260531/gcc/collect2.cc
*** gcc-17-20260524/gcc/collect2.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/collect2.cc	Sun May 31 22:32:05 2026
*************** main (int argc, char **argv)
*** 1315,1323 ****
  
  		  FILE *stream;
                    char buf[MAXPATHLEN + 2];
! 		  /* Number of additionnal object files.  */
  		  int add_nbr = 0;
! 		  /* Maximum of additionnal object files before vector
  		     expansion.  */
  		  int add_max = 0;
  		  const char *list_filename = arg + 2;
--- 1315,1323 ----
  
  		  FILE *stream;
                    char buf[MAXPATHLEN + 2];
! 		  /* Number of additional object files.  */
  		  int add_nbr = 0;
! 		  /* Maximum of additional object files before vector
  		     expansion.  */
  		  int add_max = 0;
  		  const char *list_filename = arg + 2;
*************** scan_prog_file (const char *prog_name, s
*** 2803,2809 ****
  		      switch (is_ctor_dtor (name))
  			{
  #if TARGET_AIX_VERSION
! 		      /* Add AIX shared library initalisers/finalisers
  			 to the constructors/destructors list of the
  			 current module.  */
  			case SYM_AIXI:
--- 2803,2809 ----
  		      switch (is_ctor_dtor (name))
  			{
  #if TARGET_AIX_VERSION
! 		      /* Add AIX shared library initialisers/finalisers
  			 to the constructors/destructors list of the
  			 current module.  */
  			case SYM_AIXI:
diff -Nrcpad gcc-17-20260524/gcc/combine.cc gcc-17-20260531/gcc/combine.cc
*** gcc-17-20260524/gcc/combine.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/combine.cc	Sun May 31 22:32:05 2026
*************** simplify_comparison (enum rtx_code code,
*** 12606,12612 ****
  
  	     The difficulty here is that we have predicates for A but not for
  	     (A - C1) so we need to check that C1 is within proper bounds so
! 	     as to perturbate A as little as possible.  */
  
  	  if (mode_width <= HOST_BITS_PER_WIDE_INT
  	      && subreg_lowpart_p (op0)
--- 12606,12612 ----
  
  	     The difficulty here is that we have predicates for A but not for
  	     (A - C1) so we need to check that C1 is within proper bounds so
! 	     as to perturb A as little as possible.  */
  
  	  if (mode_width <= HOST_BITS_PER_WIDE_INT
  	      && subreg_lowpart_p (op0)
*************** distribute_notes (rtx notes, rtx_insn *f
*** 14453,14459 ****
  	    /* The landing pad handling needs to be kept in sync with the
  	       prerequisite checking in try_combine.  */
  	    int lp_nr = INTVAL (XEXP (note, 0));
! 	    /* A REG_EH_REGION note transfering control can only ever come
  	       from i3.  */
  	    if (lp_nr > 0)
  	      gcc_assert (from_insn == i3);
--- 14453,14459 ----
  	    /* The landing pad handling needs to be kept in sync with the
  	       prerequisite checking in try_combine.  */
  	    int lp_nr = INTVAL (XEXP (note, 0));
! 	    /* A REG_EH_REGION note transferring control can only ever come
  	       from i3.  */
  	    if (lp_nr > 0)
  	      gcc_assert (from_insn == i3);
diff -Nrcpad gcc-17-20260524/gcc/common.opt gcc-17-20260531/gcc/common.opt
*** gcc-17-20260524/gcc/common.opt	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/common.opt	Sun May 31 22:32:05 2026
*************** Warn about code which might break strict
*** 782,792 ****
  
  Wstrict-overflow
  Common Warning
! Warn about optimizations that assume that signed overflow is undefined.
  
  Wstrict-overflow=
! Common Joined RejectNegative UInteger Var(warn_strict_overflow) Warning
! Warn about optimizations that assume that signed overflow is undefined.
  
  Wsuggest-attribute=cold
  Common Var(warn_suggest_attribute_cold) Warning
--- 782,791 ----
  
  Wstrict-overflow
  Common Warning
! Does nothing.  Preserved for backward compatibility.
  
  Wstrict-overflow=
! Does nothing.  Preserved for backward compatibility.
  
  Wsuggest-attribute=cold
  Common Var(warn_suggest_attribute_cold) Warning
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-c.cc gcc-17-20260531/gcc/config/aarch64/aarch64-c.cc
*** gcc-17-20260524/gcc/config/aarch64/aarch64-c.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-c.cc	Sun May 31 22:32:05 2026
*************** aarch64_update_cpp_builtins (cpp_reader
*** 232,237 ****
--- 232,238 ----
    aarch64_def_or_undef (TARGET_SVE2_SHA3, "__ARM_FEATURE_SVE2_SHA3", pfile);
    aarch64_def_or_undef (TARGET_SVE2_SM4, "__ARM_FEATURE_SVE2_SM4", pfile);
    aarch64_def_or_undef (TARGET_SVE2p1, "__ARM_FEATURE_SVE2p1", pfile);
+   aarch64_def_or_undef (TARGET_SVE2p2, "__ARM_FEATURE_SVE2p2", pfile);
  
    aarch64_def_or_undef (TARGET_LSE, "__ARM_FEATURE_ATOMICS", pfile);
    aarch64_def_or_undef (TARGET_AES, "__ARM_FEATURE_AES", pfile);
*************** aarch64_update_cpp_builtins (cpp_reader
*** 310,315 ****
--- 311,317 ----
    aarch64_def_or_undef (TARGET_SME2, "__ARM_FEATURE_SME2", pfile);
    aarch64_def_or_undef (AARCH64_HAVE_ISA (SME2p1),
  			"__ARM_FEATURE_SME2p1", pfile);
+   aarch64_def_or_undef (TARGET_SME2p2, "__ARM_FEATURE_SME2p2", pfile);
    aarch64_def_or_undef (TARGET_FAMINMAX, "__ARM_FEATURE_FAMINMAX", pfile);
    aarch64_def_or_undef (TARGET_PCDPHINT, "__ARM_FEATURE_PCDPHINT", pfile);
  
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-coff.h gcc-17-20260531/gcc/config/aarch64/aarch64-coff.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64-coff.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-coff.h	Sun May 31 22:32:05 2026
***************
*** 70,76 ****
  
  #define GLOBAL_ASM_OP "\t.global\t"
  
- #undef SUPPORTS_INIT_PRIORITY
- #define SUPPORTS_INIT_PRIORITY 0
- 
  #endif
--- 70,73 ----
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-modes.def gcc-17-20260531/gcc/config/aarch64/aarch64-modes.def
*** gcc-17-20260524/gcc/config/aarch64/aarch64-modes.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-modes.def	Sun May 31 22:32:05 2026
*************** VECTOR_MODES (FLOAT, 8);      /*
*** 79,86 ****
  VECTOR_MODES (FLOAT, 16);     /*            V4SF V2DF.  */
  VECTOR_MODE (INT, DI, 1);     /*                 V1DI.  */
  VECTOR_MODE (FLOAT, DF, 1);   /*                 V1DF.  */
- VECTOR_MODE (FLOAT, HF, 2);   /*                 V2HF.  */
  
  
  /* Integer vector modes used to represent intermediate widened values in some
     instructions.  Not intended to be moved to and from registers or memory.  */
--- 79,88 ----
  VECTOR_MODES (FLOAT, 16);     /*            V4SF V2DF.  */
  VECTOR_MODE (INT, DI, 1);     /*                 V1DI.  */
  VECTOR_MODE (FLOAT, DF, 1);   /*                 V1DF.  */
  
+ VECTOR_MODES (INT, 2);        /*                 V2QI.  */
+ VECTOR_MODES (INT, 4);        /*            V4QI V2HI.  */
+ VECTOR_MODES (FLOAT, 4);      /*            V2BF V2HF.  */
  
  /* Integer vector modes used to represent intermediate widened values in some
     instructions.  Not intended to be moved to and from registers or memory.  */
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-protos.h gcc-17-20260531/gcc/config/aarch64/aarch64-protos.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64-protos.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-protos.h	Sun May 31 22:32:05 2026
*************** bool aarch64_and_bitmask_imm (unsigned H
*** 872,877 ****
--- 872,878 ----
  int aarch64_branch_cost (bool, bool);
  enum aarch64_symbol_type aarch64_classify_symbolic_expression (rtx);
  bool aarch64_advsimd_struct_mode_p (machine_mode mode);
+ bool aarch64_advsimd_sub_dword_mode_p (machine_mode mode);
  opt_machine_mode aarch64_v64_mode (scalar_mode);
  opt_machine_mode aarch64_v128_mode (scalar_mode);
  opt_machine_mode aarch64_full_sve_mode (scalar_mode);
*************** bool aarch64_use_simple_return_insn_p (v
*** 996,1001 ****
--- 997,1003 ----
  const char *aarch64_output_casesi (rtx *);
  const char *aarch64_output_load_tp (rtx);
  const char *aarch64_output_sme_zero_za (rtx);
+ const char *aarch64_output_move_imm (rtx);
  
  arm_pcs aarch64_tlsdesc_abi_id ();
  enum aarch64_symbol_type aarch64_classify_symbol (rtx, HOST_WIDE_INT);
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-simd.md gcc-17-20260531/gcc/config/aarch64/aarch64-simd.md
*** gcc-17-20260524/gcc/config/aarch64/aarch64-simd.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-simd.md	Sun May 31 22:32:05 2026
***************
*** 49,56 ****
  (define_subst_attr "vczbe" "add_vec_concat_subst_be" "" "_vec_concatz_be")
  
  (define_expand "mov<mode>"
!   [(set (match_operand:VALL_F16 0 "nonimmediate_operand")
! 	(match_operand:VALL_F16 1 "general_operand"))]
    "TARGET_FLOAT"
    "
    /* Force the operand into a register if it is not an
--- 49,56 ----
  (define_subst_attr "vczbe" "add_vec_concat_subst_be" "" "_vec_concatz_be")
  
  (define_expand "mov<mode>"
!   [(set (match_operand:VALL_F16_SUB64 0 "nonimmediate_operand")
! 	(match_operand:VALL_F16_SUB64 1 "general_operand"))]
    "TARGET_FLOAT"
    "
    /* Force the operand into a register if it is not an
***************
*** 77,83 ****
  	  aarch64_expand_vector_init (operands[0], operands[1]);
  	  DONE;
  	}
!       else if (!aarch64_simd_imm_zero (operands[1], <MODE>mode)
  	       && !aarch64_simd_special_constant_p (operands[1], <MODE>mode)
  	       && !aarch64_simd_valid_mov_imm (operands[1])
  	       && !aarch64_const_vec_fmov_p (operands[1]))
--- 77,84 ----
  	  aarch64_expand_vector_init (operands[0], operands[1]);
  	  DONE;
  	}
!       else if (!aarch64_advsimd_sub_dword_mode_p (<MODE>mode)
! 	       && !aarch64_simd_imm_zero (operands[1], <MODE>mode)
  	       && !aarch64_simd_special_constant_p (operands[1], <MODE>mode)
  	       && !aarch64_simd_valid_mov_imm (operands[1])
  	       && !aarch64_const_vec_fmov_p (operands[1]))
***************
*** 136,141 ****
--- 137,164 ----
    }
  )
  
+ (define_insn "*aarch64_simd_dup_subvector<vconq><mode>"
+   [(set (match_operand:<VCONQ> 0 "register_operand")
+ 	(vec_duplicate:<VCONQ>
+ 	  (match_operand:VQDUP 1 "register_operand")))]
+   "TARGET_SIMD"
+   {@ [ cons: =0 , 1 ; attrs: type    ]
+      [ w        , w ; neon_dup_q     ] dup\t%0.<Vqduptype>, %1.<vstype>[0]
+      [ w        , r ; neon_from_gp_q ] dup\t%0.<Vqduptype>, %<single_wx>1
+   }
+ )
+ 
+ (define_insn "*aarch64_simd_dup_subvector<vcond><mode>"
+   [(set (match_operand:<VCOND> 0 "register_operand")
+ 	(vec_duplicate:<VCOND>
+ 	  (match_operand:VDDUP 1 "register_operand")))]
+   "TARGET_SIMD"
+   {@ [ cons: =0 , 1 ; attrs: type  ]
+      [ w        , w ; neon_dup     ] dup\t%0.<Vdduptype>, %1.<vstype>[0]
+      [ w        , r ; neon_from_gp ] dup\t%0.<Vdduptype>, %<single_wx>1
+   }
+ )
+ 
  (define_insn "@aarch64_dup_lane<mode>"
    [(set (match_operand:VALL_F16 0 "register_operand" "=w")
  	(vec_duplicate:VALL_F16
***************
*** 244,249 ****
--- 267,329 ----
    }
  )
  
+ (define_insn_and_split "*aarch64_simd_mov<mode>"
+   [(set (match_operand:VSUB64 0 "nonimmediate_operand")
+ 	(match_operand:VSUB64 1 "general_operand"))]
+   "TARGET_FLOAT
+    && (register_operand (operands[0], <MODE>mode)
+        || aarch64_simd_reg_or_zero (operands[1], <MODE>mode)
+        || CONST_VECTOR_P (operands[1]))"
+    {@ [cons: =0, 1; attrs: type, arch]
+      [r , Dz ; mov_imm          , *    ] mov\t%w0, 0
+      [r , rZ ; mov_reg          , *    ] mov\t%w0, %w1
+      [r , Da ; mov_imm          , *    ] #
+      [r , w  ; mov_reg          , simd ] #
+      [r , m  ; load_4           , *    ] ldr<size>\t%w0, %1
+      [w , w  ; neon_logic       , simd ] mov\t%0.8b, %1.8b
+      [w , m  ; neon_load1_1reg  , simd ] ldr\t%<vstype>0, %1
+      [w , Dz ; neon_move        , simd ] movi\t%0.2d, #0
+      [m , rZ ; store_4          , *    ] str<size>\t%w1, %0
+      [m , w  ; neon_store1_1reg , simd ] str\t%<vstype>1, %0
+   }
+   "&& reload_completed
+    && REG_P (operands[0])"
+   [(const_int 0)]
+   {
+     if (CONST_VECTOR_P (operands[1]))
+       {
+        int elt_bitsize
+ 	 = GET_MODE_BITSIZE (GET_MODE_INNER (GET_MODE (operands[1])));
+        int n_elts = CONST_VECTOR_NUNITS (operands[1]).to_constant ();
+        int val = 0;
+        bool int_vector_p = CONST_INT_P (CONST_VECTOR_ELT (operands[1], 0));
+        unsigned HOST_WIDE_INT eltval;
+        rtx elt;
+        for (int i = 0; i < n_elts; i++)
+ 	 {
+ 	    elt = CONST_VECTOR_ELT (operands[1], BYTES_BIG_ENDIAN
+ 						 ? i
+ 						 : n_elts - 1 - i);
+ 	    if (int_vector_p)
+ 	     eltval = INTVAL (elt);
+ 	    else
+ 	     {
+ 		bool res = aarch64_reinterpret_float_as_int (elt, &eltval);
+ 		gcc_assert (res);
+ 	     }
+ 
+ 	    val = (val << elt_bitsize) + (eltval & ((1 << elt_bitsize) - 1));
+ 	 }
+        emit_move_insn (gen_rtx_REG (SImode, REGNO (operands[0])),
+ 		       GEN_INT (val));
+       }
+     else if (REG_P (operands[1]))
+       aarch64_simd_emit_reg_reg_move (operands, <VSC>mode, 1);
+     DONE;
+   }
+   [(set_attr "type" "mov_reg")]
+ )
+ 
  ;; When storing lane zero we can use the normal STR and its more permissive
  ;; addressing modes.
  
***************
*** 1233,1238 ****
--- 1313,1344 ----
    [(set_attr "type" "neon_ins<q>, neon_from_gp<q>, neon_load1_one_lane<q>")]
  )
  
+ (define_insn "@aarch64_simd_vec_set<mode>"
+   [(set (match_operand:VSUB64 0 "register_operand" "=r,w,w")
+ 	(vec_merge:VSUB64
+ 	    (vec_duplicate:VSUB64
+ 		(match_operand:<VEL> 1 "aarch64_simd_nonimmediate_operand" "r,w,Utv"))
+ 	    (match_operand:VSUB64 3 "register_operand" "0,0,0")
+ 	    (match_operand:SI 2 "immediate_operand" "i,i,i")))]
+   "TARGET_SIMD && exact_log2 (INTVAL (operands[2])) >= 0"
+   {
+     int elt = exact_log2 (INTVAL (operands[2]));
+     switch (which_alternative)
+       {
+       case 0:
+ 	operands[2] = GEN_INT (elt * <elem_bits>);
+ 	return "bfi\t%w0, %w1, %2, <elem_bits>";
+       case 1:
+ 	return "ins\t%0.<Vetype>[%p2], %1.<Vetype>[0]";
+       case 2:
+ 	return "ld1\t{%0.<Vetype>}[%p2], %1";
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+   [(set_attr "type" "bfm, neon_ins, neon_load1_one_lane")]
+ )
+ 
  ;; Inserting from the zero register into a vector lane is treated as an
  ;; expensive GP->FP move on all CPUs.  Avoid it when optimizing for speed.
  (define_insn "aarch64_simd_vec_set_zero<mode>"
***************
*** 1662,1668 ****
  )
  
  (define_expand "vec_set<mode>"
!   [(match_operand:VALL_F16 0 "register_operand")
     (match_operand:<VEL> 1 "aarch64_simd_nonimmediate_operand")
     (match_operand:SI 2 "immediate_operand")]
    "TARGET_SIMD"
--- 1768,1774 ----
  )
  
  (define_expand "vec_set<mode>"
!   [(match_operand:VALL_F16_SUB64 0 "register_operand")
     (match_operand:<VEL> 1 "aarch64_simd_nonimmediate_operand")
     (match_operand:SI 2 "immediate_operand")]
    "TARGET_SIMD"
***************
*** 4750,4755 ****
--- 4856,4889 ----
    }
  )
  
+ (define_insn "*aarch64_combine_internal<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VS32_I_SUB64_F 1 "register_operand")
+ 	  (match_operand:VS32_I_SUB64_F 2 "aarch64_simd_nonimmediate_operand")))]
+   "TARGET_FLOAT
+    && !BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
+      [ w        , w  , w   ; neon_permute              , simd  ] uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
+      [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
+      [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
+      [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
+      [ ?r       , 0  , r   ; bfm                       , *     ] bfi\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>
+   }
+ )
+ 
+ (define_insn "*aarch64_combine_internal<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VSSUB32_I 1 "register_operand")
+ 	  (match_operand:VSSUB32_I 2 "aarch64_simd_nonimmediate_operand")))]
+   "TARGET_FLOAT
+    && !BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  , 2  ; attrs: type               , arch  ]
+      [ r        , 0  , r  ; bfm                       , *     ] bfi\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>
+   }
+ )
+ 
  (define_insn "*aarch64_combine_internal_be<mode>"
    [(set (match_operand:<VDBL> 0 "aarch64_reg_or_mem_pair_operand")
  	(vec_concat:<VDBL>
***************
*** 4769,4774 ****
--- 4903,4937 ----
    }
  )
  
+ (define_insn "*aarch64_combine_internal_be<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VS32_I_SUB64_F 2 "aarch64_simd_nonimmediate_operand")
+ 	  (match_operand:VS32_I_SUB64_F 1 "register_operand")))]
+   "TARGET_FLOAT
+    && BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
+      [ w        , w  , w   ; neon_permute              , simd  ] uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
+      [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
+      [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
+      [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
+      [ ?r       , 0  , r   ; bfm                       , *     ] bfi\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>
+   }
+ )
+ 
+ (define_insn "*aarch64_combine_internal_be<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VSSUB32_I 2 "aarch64_simd_nonimmediate_operand")
+ 	  (match_operand:VSSUB32_I 1 "register_operand")))]
+   "TARGET_FLOAT
+    && BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  , 2  ; attrs: type               , arch  ]
+      [ r        , 0  , r  ; bfm                       , *     ] bfi\t%<single_dwx>0, %<single_dwx>2, <bitsize>, <bitsize>
+   }
+ )
+ 
+ 
  ;; In this insn, operand 1 should be low, and operand 2 the high part of the
  ;; dest vector.
  
***************
*** 4785,4790 ****
--- 4948,4980 ----
    }
  )
  
+ (define_insn "*aarch64_combinez<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+           (match_operand:VSSUB32_I 1 "nonimmediate_operand")
+ 	  (match_operand:VSSUB32_I 2 "aarch64_simd_or_scalar_imm_zero")))]
+   "TARGET_FLOAT && !BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  ; attrs: type      ]
+      [ r        , r  ; mov_reg          ] uxt<size>\t%w0, %w1
+      [ r        , m  ; load_4           ] ldr<size>\t%<single_wx>0, %1
+   }
+ )
+ 
+ (define_insn "*aarch64_combinez<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+           (match_operand:VS32_I_SUB64_F 1 "nonimmediate_operand")
+ 	  (match_operand:VS32_I_SUB64_F 2 "aarch64_simd_or_scalar_imm_zero")))]
+   "TARGET_FLOAT && !BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  ; attrs: type      ]
+      [ w        , w  ; neon_move        ] fmov\t%<single_type>0, %<single_type>1
+      [ w        , r  ; neon_from_gp     ] fmov\t%<single_type>0, %<single_wx>1
+      [ w        , m  ; neon_load1_1reg  ] ldr\t%<single_type>0, %1
+      [ r        , r  ; mov_reg          ] uxtw\t%x0, %w1
+      [ r        , m  ; load_4           ] ldr<size>\t%<single_wx>0, %1
+   }
+ )
+ 
  (define_insn "*aarch64_combinez_be<mode>"
    [(set (match_operand:<VDBL> 0 "register_operand")
          (vec_concat:<VDBL>
***************
*** 4798,4811 ****
    }
  )
  
  ;; Form a vector whose first half (in array order) comes from operand 1
  ;; and whose second half (in array order) comes from operand 2.
  ;; This operand order follows the RTL vec_concat operation.
  (define_expand "@aarch64_vec_concat<mode>"
    [(set (match_operand:<VDBL> 0 "register_operand")
  	(vec_concat:<VDBL>
! 	  (match_operand:VDCSIF 1 "general_operand")
! 	  (match_operand:VDCSIF 2 "general_operand")))]
    "TARGET_FLOAT"
  {
    int lo = BYTES_BIG_ENDIAN ? 2 : 1;
--- 4988,5028 ----
    }
  )
  
+ (define_insn "*aarch64_combinez_be<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VSSUB32_I 2 "aarch64_simd_or_scalar_imm_zero")
+           (match_operand:VSSUB32_I 1 "nonimmediate_operand")))]
+   "TARGET_FLOAT && BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  ; attrs: type      ]
+      [ r        , r  ; mov_reg          ] uxt<size>\t%w0, %w1
+      [ r        , m  ; load_4           ] ldr<size>\t%<single_wx>0, %1
+   }
+ )
+ 
+ (define_insn "*aarch64_combinez_be<mode>"
+   [(set (match_operand:<VDBL> 0 "register_operand")
+ 	(vec_concat:<VDBL>
+ 	  (match_operand:VS32_I_SUB64_F 2 "aarch64_simd_or_scalar_imm_zero")
+           (match_operand:VS32_I_SUB64_F 1 "nonimmediate_operand")))]
+   "TARGET_FLOAT && BYTES_BIG_ENDIAN"
+   {@ [ cons: =0 , 1  ; attrs: type      ]
+      [ w        , w  ; neon_move        ] fmov\t%<single_type>0, %<single_type>1
+      [ w        , r  ; neon_from_gp     ] fmov\t%<single_type>0, %<single_wx>1
+      [ w        , m  ; neon_load1_1reg  ] ldr\t%<single_type>0, %1
+      [ r        , r  ; mov_reg          ] uxtw\t%x0, %w1
+      [ r        , m  ; load_4           ] ldr<size>\t%<single_wx>0, %1
+   }
+ )
+ 
  ;; Form a vector whose first half (in array order) comes from operand 1
  ;; and whose second half (in array order) comes from operand 2.
  ;; This operand order follows the RTL vec_concat operation.
  (define_expand "@aarch64_vec_concat<mode>"
    [(set (match_operand:<VDBL> 0 "register_operand")
  	(vec_concat:<VDBL>
! 	  (match_operand:VQDUP 1 "general_operand")
! 	  (match_operand:VQDUP 2 "general_operand")))]
    "TARGET_FLOAT"
  {
    int lo = BYTES_BIG_ENDIAN ? 2 : 1;
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Sun May 31 22:32:05 2026
*************** public:
*** 855,872 ****
    }
  };
  
- class svcvtnt_impl : public CODE_FOR_MODE0 (aarch64_sve_cvtnt)
- {
- public:
-   gimple *
-   fold (gimple_folder &f) const override
-   {
-     if (f.pred == PRED_x && is_pfalse (gimple_call_arg (f.call, 1)))
-       f.fold_call_to (build_zero_cst (TREE_TYPE (f.lhs)));
-     return NULL;
-   }
- };
- 
  class svdiv_impl : public rtx_code_function
  {
  public:
--- 855,860 ----
*************** public:
*** 1303,1308 ****
--- 1291,1309 ----
    }
  };
  
+ class svexpand_impl
+   : public QUIET_CODE_FOR_MODE0 (aarch64_sve_expand)
+ {
+ public:
+   gimple *
+   fold (gimple_folder &f) const override
+   {
+     if (is_pfalse (gimple_call_arg (f.call, 0)))
+       return f.fold_call_to (build_zero_cst (TREE_TYPE (f.lhs)));
+     return NULL;
+   }
+ };
+ 
  /* Implements svextb, svexth and svextw.  */
  class svext_bhw_impl : public function_base
  {
*************** FUNCTION (svcreate2, svcreate_impl, (2))
*** 3594,3600 ****
  FUNCTION (svcreate3, svcreate_impl, (3))
  FUNCTION (svcreate4, svcreate_impl, (4))
  FUNCTION (svcvt, svcvt_impl,)
! FUNCTION (svcvtnt, svcvtnt_impl,)
  FUNCTION (svdiv, svdiv_impl,)
  FUNCTION (svdivr, rtx_code_function_rotated, (DIV, UDIV, UNSPEC_COND_FDIV))
  FUNCTION (svdot, svdot_impl,)
--- 3595,3601 ----
  FUNCTION (svcreate3, svcreate_impl, (3))
  FUNCTION (svcreate4, svcreate_impl, (4))
  FUNCTION (svcvt, svcvt_impl,)
! FUNCTION (svcvtnt, NARROWING_TOP_CONVERT0 (aarch64_sve_cvtnt),)
  FUNCTION (svdiv, svdiv_impl,)
  FUNCTION (svdivr, rtx_code_function_rotated, (DIV, UDIV, UNSPEC_COND_FDIV))
  FUNCTION (svdot, svdot_impl,)
*************** FUNCTION (svdupq_lane, svdupq_lane_impl,
*** 3607,3612 ****
--- 3608,3614 ----
  FUNCTION (sveor, rtx_code_function, (XOR, XOR, -1))
  FUNCTION (sveorv, sveorv_impl,)
  FUNCTION (svexpa, unspec_based_function, (-1, -1, UNSPEC_FEXPA))
+ FUNCTION (svexpand, svexpand_impl,)
  FUNCTION (svext, QUIET_CODE_FOR_MODE0 (aarch64_sve_ext),)
  FUNCTION (svextb, svext_bhw_impl, (QImode))
  FUNCTION (svexth, svext_bhw_impl, (HImode))
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.def gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.def
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.def	Sun May 31 22:32:05 2026
*************** DEF_SVE_FUNCTION (svadrb, adr_offset, no
*** 274,280 ****
  DEF_SVE_FUNCTION (svadrd, adr_index, none, none)
  DEF_SVE_FUNCTION (svadrh, adr_index, none, none)
  DEF_SVE_FUNCTION (svadrw, adr_index, none, none)
- DEF_SVE_FUNCTION (svcompact, unary, sd_data, implicit)
  DEF_SVE_FUNCTION (svexpa, unary_uint, all_float, none)
  DEF_SVE_FUNCTION (svld1_gather, load_gather_sv, sd_data, implicit)
  DEF_SVE_FUNCTION (svld1_gather, load_gather_vs, sd_data, implicit)
--- 274,279 ----
*************** DEF_SVE_FUNCTION (svuzp2q, binary, all_d
*** 374,376 ****
--- 373,379 ----
  DEF_SVE_FUNCTION (svzip1q, binary, all_data, none)
  DEF_SVE_FUNCTION (svzip2q, binary, all_data, none)
  #undef REQUIRED_EXTENSIONS
+ 
+ #define REQUIRED_EXTENSIONS sve_and_sme (0, AARCH64_FL_SME2p2)
+ DEF_SVE_FUNCTION (svcompact, unary, sd_data, implicit)
+ #undef REQUIRED_EXTENSIONS
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.h gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-base.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-base.h	Sun May 31 22:32:05 2026
*************** namespace aarch64_sve
*** 105,110 ****
--- 105,111 ----
      extern const function_base *const sveor;
      extern const function_base *const sveorv;
      extern const function_base *const svexpa;
+     extern const function_base *const svexpand;
      extern const function_base *const svext;
      extern const function_base *const svextb;
      extern const function_base *const svexth;
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun May 31 22:32:05 2026
*************** public:
*** 870,875 ****
--- 870,916 ----
    int m_unspec_for_uint;
  };
  
+ template<insn_code (*CODE_FOR_MODE) (machine_mode), unsigned int N>
+ class narrowing_top_convert : public code_for_mode_function <CODE_FOR_MODE, N>
+ {
+   using base = code_for_mode_function <CODE_FOR_MODE, N>;
+ 
+ public:
+   gimple *
+   fold (gimple_folder &f) const override
+   {
+     if (f.pred == PRED_x && is_pfalse (gimple_call_arg (f.call, 1)))
+       return f.fold_call_to (build_zero_cst (TREE_TYPE (f.lhs)));
+     return NULL;
+   }
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     /* If the instruction is predicated, Add a selector argument for the
+        values of inactive lanes, which is equal to all ones for merging
+        predication and to all zeros for zeroing predication.  */
+     if (e.pred == PRED_none)
+       ;
+     else if (e.pred == PRED_z)
+       {
+ 	e.args.quick_push (CONST0_RTX (e.result_mode ()));
+       }
+     else
+       {
+ 	gcc_assert (e.pred == PRED_m || e.pred == PRED_x);
+ 	e.args.quick_push (CONST1_RTX (e.result_mode ()));
+       }
+ 
+     return base::expand (e);
+   }
+ };
+ 
+ #define NARROWING_TOP_CONVERT0(PATTERN)\
+   narrowing_top_convert<code_for_##PATTERN, 0>
+ #define NARROWING_TOP_CONVERT1(PATTERN)\
+   narrowing_top_convert<code_for_##PATTERN, 1>
+ 
  }
  
  /* Declare the global function base NAME, creating it from an instance
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sun May 31 22:32:05 2026
*************** public:
*** 252,269 ****
    }
  };
  
- class svcvtxnt_impl : public CODE_FOR_MODE1 (aarch64_sve2_cvtxnt)
- {
- public:
-   gimple *
-   fold (gimple_folder &f) const override
-   {
-     if (f.pred == PRED_x && is_pfalse (gimple_call_arg (f.call, 1)))
-       return f.fold_call_to (build_zero_cst (TREE_TYPE (f.lhs)));
-     return NULL;
-   }
- };
- 
  class svdup_laneq_impl : public function_base
  {
  public:
--- 252,257 ----
*************** public:
*** 303,308 ****
--- 291,355 ----
    }
  };
  
+ class svfirst_lastp_impl : public function_base
+ {
+ public:
+   CONSTEXPR svfirst_lastp_impl (bool first)
+     : m_first (first)
+   {}
+ 
+   gimple *
+   fold (gimple_folder &f) const override
+   {
+     tree pg = gimple_call_arg (f.call, 0);
+     tree pn = gimple_call_arg (f.call, 1);
+ 
+     gcc_assert (TYPE_MODE (TREE_TYPE (pg)) == TYPE_MODE (TREE_TYPE (pn)));
+ 
+     if (is_pfalse (pg) || is_pfalse (pn))
+       return f.fold_call_to (build_minus_one_cst (TREE_TYPE (f.lhs)));
+ 
+     if (TREE_CODE (pg) != VECTOR_CST
+ 	|| TREE_CODE (pn) != VECTOR_CST)
+       return NULL;
+ 
+     HOST_WIDE_INT nelts_full_vector = aarch64_fold_sve_cnt_pat (AARCH64_SV_ALL,
+ 						      f.elements_per_vq (0));
+     if (!m_first && nelts_full_vector < 0)
+       return NULL;
+ 
+     tree pa = fold_build2 (BIT_AND_EXPR, TREE_TYPE (pg), pg, pn);
+     gcc_assert (TREE_CODE (pa) == VECTOR_CST);
+ 
+     int elt_size = f.type_suffix (0).element_bytes;
+     unsigned int nelts = vector_cst_encoded_nelts (pa);
+     for (unsigned int i = 0; i < nelts; i++)
+       {
+ 	unsigned int idx = m_first ? i : nelts - 1 - i;
+ 	if (tree_to_shwi (VECTOR_CST_ENCODED_ELT (pa, idx)) != 0)
+ 	  return f.fold_call_to (build_int_cst (TREE_TYPE (f.lhs),
+ 						m_first
+ 						? i / elt_size
+ 						: (nelts_full_vector - 1
+ 						   - i / elt_size)));
+       }
+ 
+     return f.fold_call_to (build_minus_one_cst (TREE_TYPE (f.lhs)));
+   }
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     machine_mode mode = e.vector_mode (0);
+     return e.use_exact_insn (m_first ? code_for_aarch64_pred_firstp (mode)
+ 				     : code_for_aarch64_pred_lastp (mode));
+   }
+ 
+ private:
+   /* True for svfirstp, false for svlastp.  */
+   bool m_first;
+ };
+ 
  class svld1q_gather_impl : public full_width_access
  {
  public:
*************** FUNCTION (svcvtlt, unspec_based_function
*** 1028,1046 ****
  FUNCTION (svcvtn, svcvtn_impl,)
  FUNCTION (svcvtnb, fixed_insn_function, (CODE_FOR_aarch64_sve2_fp8_cvtnbvnx16qi))
  FUNCTION (svcvtx, unspec_based_function, (-1, -1, UNSPEC_COND_FCVTX))
! FUNCTION (svcvtxnt, svcvtxnt_impl,)
  FUNCTION (svdup_laneq, svdup_laneq_impl,)
  FUNCTION (sveor3, CODE_FOR_MODE0 (aarch64_sve2_eor3),)
  FUNCTION (sveorbt, unspec_based_function, (UNSPEC_EORBT, UNSPEC_EORBT, -1))
  FUNCTION (sveorqv, reduction, (UNSPEC_EORQV, UNSPEC_EORQV, -1))
  FUNCTION (sveortb, unspec_based_function, (UNSPEC_EORTB, UNSPEC_EORTB, -1))
  FUNCTION (svextq, svextq_impl,)
  FUNCTION (svhadd, unspec_based_function, (UNSPEC_SHADD, UNSPEC_UHADD, -1))
  FUNCTION (svhsub, unspec_based_function, (UNSPEC_SHSUB, UNSPEC_UHSUB, -1))
  FUNCTION (svhistcnt, CODE_FOR_MODE0 (aarch64_sve2_histcnt),)
  FUNCTION (svhistseg, CODE_FOR_MODE0 (aarch64_sve2_histseg),)
  FUNCTION (svhsubr, unspec_based_function_rotated, (UNSPEC_SHSUB,
  						   UNSPEC_UHSUB, -1))
  FUNCTION (svld1q_gather, svld1q_gather_impl,)
  FUNCTION (svld1udq, svld1uxq_impl, (VNx1DImode))
  FUNCTION (svld1uwq, svld1uxq_impl, (VNx1SImode))
--- 1075,1095 ----
  FUNCTION (svcvtn, svcvtn_impl,)
  FUNCTION (svcvtnb, fixed_insn_function, (CODE_FOR_aarch64_sve2_fp8_cvtnbvnx16qi))
  FUNCTION (svcvtx, unspec_based_function, (-1, -1, UNSPEC_COND_FCVTX))
! FUNCTION (svcvtxnt, NARROWING_TOP_CONVERT1 (aarch64_sve2_cvtxnt),)
  FUNCTION (svdup_laneq, svdup_laneq_impl,)
  FUNCTION (sveor3, CODE_FOR_MODE0 (aarch64_sve2_eor3),)
  FUNCTION (sveorbt, unspec_based_function, (UNSPEC_EORBT, UNSPEC_EORBT, -1))
  FUNCTION (sveorqv, reduction, (UNSPEC_EORQV, UNSPEC_EORQV, -1))
  FUNCTION (sveortb, unspec_based_function, (UNSPEC_EORTB, UNSPEC_EORTB, -1))
  FUNCTION (svextq, svextq_impl,)
+ FUNCTION (svfirstp, svfirst_lastp_impl, (true))
  FUNCTION (svhadd, unspec_based_function, (UNSPEC_SHADD, UNSPEC_UHADD, -1))
  FUNCTION (svhsub, unspec_based_function, (UNSPEC_SHSUB, UNSPEC_UHSUB, -1))
  FUNCTION (svhistcnt, CODE_FOR_MODE0 (aarch64_sve2_histcnt),)
  FUNCTION (svhistseg, CODE_FOR_MODE0 (aarch64_sve2_histseg),)
  FUNCTION (svhsubr, unspec_based_function_rotated, (UNSPEC_SHSUB,
  						   UNSPEC_UHSUB, -1))
+ FUNCTION (svlastp, svfirst_lastp_impl, (false))
  FUNCTION (svld1q_gather, svld1q_gather_impl,)
  FUNCTION (svld1udq, svld1uxq_impl, (VNx1DImode))
  FUNCTION (svld1uwq, svld1uxq_impl, (VNx1SImode))
*************** FUNCTION (svrax1, fixed_insn_function, (
*** 1198,1203 ****
--- 1247,1256 ----
  FUNCTION (svrevd, unspec_based_function, (UNSPEC_REVD, UNSPEC_REVD,
  					  UNSPEC_REVD))
  FUNCTION (svrhadd, unspec_based_function, (UNSPEC_SRHADD, UNSPEC_URHADD, -1))
+ FUNCTION (svrint32x, unspec_based_function, (-1, -1, UNSPEC_FRINT32X))
+ FUNCTION (svrint32z, unspec_based_function, (-1, -1, UNSPEC_FRINT32Z))
+ FUNCTION (svrint64x, unspec_based_function, (-1, -1, UNSPEC_FRINT64X))
+ FUNCTION (svrint64z, unspec_based_function, (-1, -1, UNSPEC_FRINT64Z))
  FUNCTION (svrshl, svrshl_impl,)
  FUNCTION (svrshr, unspec_based_function, (UNSPEC_SRSHR, UNSPEC_URSHR, -1))
  FUNCTION (svrshrnb, unspec_based_function, (UNSPEC_RSHRNB, UNSPEC_RSHRNB, -1))
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun May 31 22:32:05 2026
*************** DEF_SVE_FUNCTION (svst1q_scatter, store_
*** 299,304 ****
--- 299,319 ----
  DEF_SVE_FUNCTION (svst1wq, store, s_data, implicit)
  #undef REQUIRED_EXTENSIONS
  
+ #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p2, AARCH64_FL_SME2p2)
+ DEF_SVE_FUNCTION (svcvtlt, unary_convert, cvt_long, z)
+ DEF_SVE_FUNCTION (svcvtnt, unary_convert_narrowt, cvt_narrow, z)
+ DEF_SVE_FUNCTION (svcvtnt, unary_convert_narrowt, cvt_bfloat, z)
+ DEF_SVE_FUNCTION (svcvtxnt, unary_convert_narrowt, cvt_narrow_s, z)
+ DEF_SVE_FUNCTION (svcompact, unary, bh_data, implicit)
+ DEF_SVE_FUNCTION (svexpand, unary, all_data, implicit)
+ DEF_SVE_FUNCTION (svfirstp, count_pred, all_pred, implicit)
+ DEF_SVE_FUNCTION (svlastp, count_pred, all_pred, implicit)
+ DEF_SVE_FUNCTION (svrint32x, unary, sd_float, mxz)
+ DEF_SVE_FUNCTION (svrint32z, unary, sd_float, mxz)
+ DEF_SVE_FUNCTION (svrint64x, unary, sd_float, mxz)
+ DEF_SVE_FUNCTION (svrint64z, unary, sd_float, mxz)
+ #undef REQUIRED_EXTENSIONS
+ 
  #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2)
  DEF_SVE_FUNCTION_GS (svadd, binary_single, all_integer, x24, none)
  DEF_SVE_FUNCTION_GS (svclamp, clamp, all_arith, x24, none)
*************** DEF_SVE_FUNCTION_GS_FPM (svcvtl2, unary_
*** 434,439 ****
--- 449,458 ----
  DEF_SVE_FUNCTION_GS (svscale, binary_int_opt_single_n, all_float, x24, none)
  #undef REQUIRED_EXTENSIONS
  
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2p2)
+ DEF_SVE_FUNCTION_GS (svmul, binary_opt_single_n, all_float, x24, none)
+ #undef REQUIRED_EXTENSIONS
+ 
  #define REQUIRED_EXTENSIONS \
    nonstreaming_sve (AARCH64_FL_SVE2 | AARCH64_FL_F8F16MM)
  DEF_SVE_FUNCTION_GS_FPM (svmmla, mmla, h_float_mf8, none, none, set)
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.h gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Sun May 31 22:32:05 2026
*************** namespace aarch64_sve
*** 80,90 ****
--- 80,92 ----
      extern const function_base *const sveorqv;
      extern const function_base *const sveortb;
      extern const function_base *const svextq;
+     extern const function_base *const svfirstp;
      extern const function_base *const svhadd;
      extern const function_base *const svhistcnt;
      extern const function_base *const svhistseg;
      extern const function_base *const svhsub;
      extern const function_base *const svhsubr;
+     extern const function_base *const svlastp;
      extern const function_base *const svld1q_gather;
      extern const function_base *const svld1udq;
      extern const function_base *const svld1uwq;
*************** namespace aarch64_sve
*** 196,201 ****
--- 198,207 ----
      extern const function_base *const svrax1;
      extern const function_base *const svrevd;
      extern const function_base *const svrhadd;
+     extern const function_base *const svrint32x;
+     extern const function_base *const svrint32z;
+     extern const function_base *const svrint64x;
+     extern const function_base *const svrint64z;
      extern const function_base *const svrshl;
      extern const function_base *const svrshr;
      extern const function_base *const svrshrnb;
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun May 31 22:32:05 2026
*************** CONSTEXPR const group_suffix_info group_
*** 209,214 ****
--- 209,218 ----
  #define TYPES_all_float(S, D, T) \
    S (f16), S (f32), S (f64)
  
+ /* _f32 _f64.  */
+ #define TYPES_sd_float(S, D, T) \
+   S (f32), S (f64)
+ 
  /* _s8 _s16 _s32 _s64.  */
  #define TYPES_all_signed(S, D, T) \
    S (s8), S (s16), S (s32), S (s64)
*************** DEF_SVE_TYPES_ARRAY (s_signed);
*** 830,835 ****
--- 834,840 ----
  DEF_SVE_TYPES_ARRAY (s_unsigned);
  DEF_SVE_TYPES_ARRAY (s_integer);
  DEF_SVE_TYPES_ARRAY (s_data);
+ DEF_SVE_TYPES_ARRAY (sd_float);
  DEF_SVE_TYPES_ARRAY (sd_signed);
  DEF_SVE_TYPES_ARRAY (sd_unsigned);
  DEF_SVE_TYPES_ARRAY (sd_integer);
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve.md gcc-17-20260531/gcc/config/aarch64/aarch64-sve.md
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve.md	Sun May 31 22:32:05 2026
***************
*** 2890,2895 ****
--- 2890,2909 ----
    [(set_attr "sve_type" "sve_int_general")]
  )
  
+ ;; Initialize an SVE vector by duplicating a 128-bit AdvSIMD register that
+ ;; itself contains a duplicated scalar or subvector value.
+ (define_insn "*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>"
+   [(set (match_operand:<VCONSV> 0 "register_operand")
+ 	(vec_duplicate:<VCONSV>
+ 	  (vec_duplicate:<VCONQ>
+ 	    (match_operand:VQDUP 1 "register_operand"))))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1 ]
+      [ w        , r ] mov\t%0.<single_type>, %<single_wx>1
+      [ w        , w ] mov\t%0.<single_type>, %<single_type>1
+   }
+ )
+ 
  ;; This is used for vec_duplicate<mode>s from memory, but can also
  ;; be used by combine to optimize selects of a vec_duplicate<mode>
  ;; with zero.
***************
*** 3004,3009 ****
--- 3018,3068 ----
    [(set_attr "sve_type" "sve_int_general")]
  )
  
+ ;; Shift an SVE vector left and insert a scalar into element 0 of a zero
+ ;; register.
+ (define_insn "*aarch64_vec_shl_insert_into_zero_<mode>"
+   [(set (match_operand:SVE_FULL_HSD 0 "register_operand")
+ 	(unspec:SVE_FULL_HSD
+ 	  [(match_operand:SVE_FULL_HSD 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:<VEL> 2 "register_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ]
+      [ w        , Dz , w ] fmov\t%<Vetype>0, %<Vetype>2
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
+ ;; Shift an SVE vector left and insert a scalar into element 0 of a zero
+ ;; register for bytes.
+ (define_insn "*aarch64_vec_shl_insert_into_zero_vnx16qi"
+   [(set (match_operand:VNx16QI 0 "register_operand")
+ 	(unspec:VNx16QI
+ 	  [(match_operand:VNx16QI 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:QI 2 "register_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ; attrs: length ]
+      [ w        , Dz , w ; 8              ] fmov\t%h0, %h2\;and\t%0.h, %0.h, #0xff
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
+ ;; Shift an SVE vector left and insert a scalar into element 0 from a memory
+ ;; load.
+ (define_insn "*aarch64_vec_shl_insert_from_load_<mode>"
+   [(set (match_operand:SVE_FULL 0 "register_operand")
+ 	(unspec:SVE_FULL
+ 	  [(match_operand:SVE_FULL 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:<VEL> 2 "memory_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ]
+      [ w        , Dz , m ] ldr\t%<Vetype>0, %2
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Linear series
  ;; -------------------------------------------------------------------------
***************
*** 3409,3418 ****
  	   (match_operand:SVE_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
--- 3468,3478 ----
  	   (match_operand:SVE_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *	, *                ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *      , sve2p2_or_sme2p2 ] <sve_int_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes    , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes    , *                ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
***************
*** 3530,3539 ****
  	   (match_operand:SVE_FULL_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <elem_bits> >= <min_elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
--- 3590,3600 ----
  	   (match_operand:SVE_FULL_I 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <elem_bits> >= <min_elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_int_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
***************
*** 3651,3660 ****
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (~<SVE_FULL_HSDI:narrower_mask> & <SVE_PARTIAL_I:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    [(set_attr "sve_type" "sve_int_extend")]
  )
--- 3712,3722 ----
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (~<SVE_FULL_HSDI:narrower_mask> & <SVE_PARTIAL_I:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    [(set_attr "sve_type" "sve_int_extend")]
  )
***************
*** 3699,3708 ****
  	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
!   {@ [ cons: =0 , 1   , 2 , 4  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %4\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_extend")]
  )
--- 3761,3771 ----
  	   (match_operand:SVE_I 4 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[4])"
!   {@ [ cons: =0 , 1   , 2 , 4  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] uxt%e3\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %4\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_int_extend")]
  )
***************
*** 3862,3871 ****
  	   (match_operand:SVE_I 6 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[6])"
!   {@ [ cons: =0 , 1   , 2 , 6  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %6\;cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !CONSTANT_P (operands[5])"
    {
--- 3925,3935 ----
  	   (match_operand:SVE_I 6 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[6])"
!   {@ [ cons: =0 , 1   , 2 , 6  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] cnot\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %6\;cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !CONSTANT_P (operands[5])"
    {
***************
*** 4046,4055 ****
  	   (match_operand:SVE_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 4110,4120 ----
  	   (match_operand:SVE_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3   ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0   ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz  ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz  ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w   ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 4070,4079 ****
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
--- 4135,4145 ----
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
***************
*** 10238,10244 ****
  ;; ---- [INT,FP] Special-purpose unary permutes
  ;; -------------------------------------------------------------------------
  ;; Includes:
! ;; - COMPACT
  ;; - DUP
  ;; - REV
  ;; -------------------------------------------------------------------------
--- 10304,10312 ----
  ;; ---- [INT,FP] Special-purpose unary permutes
  ;; -------------------------------------------------------------------------
  ;; Includes:
! ;; - COMPACT word/doubleword
! ;; - COMPACT byte/halfword (SVE2p2)
! ;; - EXPAND (SVE2p2)
  ;; - DUP
  ;; - REV
  ;; -------------------------------------------------------------------------
***************
*** 10250,10260 ****
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
  	   (match_operand:SVE_FULL_SD 2 "register_operand" "w")]
  	  UNSPEC_SVE_COMPACT))]
!   "TARGET_SVE && TARGET_NON_STREAMING"
    "compact\t%0.<Vetype>, %1, %2.<Vetype>"
    [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; Duplicate one element of a vector.
  (define_insn "@aarch64_sve_dup_lane<mode>"
    [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
--- 10318,10351 ----
  	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
  	   (match_operand:SVE_FULL_SD 2 "register_operand" "w")]
  	  UNSPEC_SVE_COMPACT))]
!   "TARGET_SVE_OR_SME2p2"
!   "compact\t%0.<Vetype>, %1, %2.<Vetype>"
!   [(set_attr "sve_type" "sve_int_extract")]
! )
! 
! (define_insn "@aarch64_sve_compact<mode>"
!   [(set (match_operand:SVE_FULL_BH 0 "register_operand" "=w")
! 	(unspec:SVE_FULL_BH
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
! 	   (match_operand:SVE_FULL_BH 2 "register_operand" "w")]
! 	  UNSPEC_SVE_COMPACT))]
!   "TARGET_SVE2p2_OR_SME2p2"
    "compact\t%0.<Vetype>, %1, %2.<Vetype>"
    [(set_attr "sve_type" "sve_int_extract")]
  )
  
+ ;; Expand into active elements and set inactive elements to zero.
+ (define_insn "@aarch64_sve_expand<mode>"
+   [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL
+ 	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
+ 	   (match_operand:SVE_FULL 2 "register_operand" "w")]
+ 	  UNSPEC_SVE_EXPAND))]
+   "TARGET_SVE2p2_OR_SME2p2"
+   "expand\t%0.<Vetype>, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_extract")]
+ )
+ 
  ;; Duplicate one element of a vector.
  (define_insn "@aarch64_sve_dup_lane<mode>"
    [(set (match_operand:SVE_ALL 0 "register_operand" "=w")
***************
*** 10698,10707 ****
  	   (match_operand:SVE_FULL_HSDI 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 10789,10799 ----
  	   (match_operand:SVE_FULL_HSDI 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 10724,10733 ****
  	  UNSPEC_SEL))]
    "TARGET_SVE
    && (~(<SVE_HSDI:self_mask> | <SVE_HSDI:narrower_mask>) & <SVE_PARTIAL_F:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_HSDI:Vetype>, %1/z, %2.<SVE_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 10816,10826 ----
  	  UNSPEC_SEL))]
    "TARGET_SVE
    && (~(<SVE_HSDI:self_mask> | <SVE_HSDI:narrower_mask>) & <SVE_PARTIAL_F:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/z, %2.<SVE_PARTIAL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_HSDI:Vetype>, %1/z, %2.<SVE_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 10747,10756 ****
  	   (match_operand:SVE_FULL_HSDI 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 10840,10850 ----
  	   (match_operand:SVE_FULL_HSDI 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_F:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 10782,10791 ****
  	   (match_operand:VNx4SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 10876,10886 ----
  	   (match_operand:VNx4SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 10802,10811 ****
  	   (match_operand:VNx2SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 10897,10907 ----
  	   (match_operand:VNx2SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvtz<su>\t%0.<VNx2SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 10956,10965 ****
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 11052,11062 ----
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 10982,10991 ****
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (~(<SVE_HSDI:self_mask> | <SVE_HSDI:narrower_mask>) & <SVE_PARTIAL_F:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_HSDI:Vetype>, %1/z, %2.<SVE_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 11079,11089 ----
  	  UNSPEC_SEL))]
    "TARGET_SVE
     && (~(<SVE_HSDI:self_mask> | <SVE_HSDI:narrower_mask>) & <SVE_PARTIAL_F:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/z, %2.<SVE_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_HSDI:Vetype>, %1/z, %2.<SVE_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 11005,11014 ****
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    [(set_attr "sve_type" "sve_int_cvt")]
  )
--- 11103,11113 ----
  	   (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_HSDI:elem_bits> >= <SVE_FULL_F:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
    [(set_attr "sve_type" "sve_int_cvt")]
  )
***************
*** 11040,11049 ****
  	   (match_operand:VNx2DF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] <su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
    }
    [(set_attr "sve_type" "sve_int_cvt")]
  )
--- 11139,11149 ----
  	   (match_operand:VNx2DF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] <su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx4SI_ONLY:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
    }
    [(set_attr "sve_type" "sve_int_cvt")]
  )
***************
*** 11199,11208 ****
  	   (match_operand:SVE_FULL_HSF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_SDF:elem_bits> > <SVE_FULL_HSF:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 11299,11309 ----
  	   (match_operand:SVE_FULL_HSF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_SDF:elem_bits> > <SVE_FULL_HSF:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 11220,11229 ****
  	   (match_operand:SVE_PARTIAL_HSF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && (~<SVE_SDF:narrower_mask> & <SVE_PARTIAL_HSF:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_SDF:Vetype>, %1/z, %2.<SVE_SDF:Vetype>\;fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 11321,11331 ----
  	   (match_operand:SVE_PARTIAL_HSF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && (~<SVE_SDF:narrower_mask> & <SVE_PARTIAL_HSF:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/z, %2.<SVE_SDF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_SDF:Vetype>, %1/z, %2.<SVE_SDF:Vetype>\;fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 11282,11291 ****
  	   (match_operand:VNx8BF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE_BF16"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] bfcvt\t%0.h, %1/m, %2.s
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.s, %1/z, %2.s\;bfcvt\t%0.h, %1/m, %2.s
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;bfcvt\t%0.h, %1/m, %2.s
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 11384,11394 ----
  	   (match_operand:VNx8BF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE_BF16"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] bfcvt\t%0.h, %1/m, %2.s
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] bfcvt\t%0.h, %1/z, %2.s
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.s, %1/z, %2.s\;bfcvt\t%0.h, %1/m, %2.s
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;bfcvt\t%0.h, %1/m, %2.s
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 11296,11310 ****
  ;;
  ;; This instructions does not take MOVPRFX.
  (define_insn "@aarch64_sve_cvtnt<mode>"
!   [(set (match_operand:VNx8BF_ONLY 0 "register_operand" "=w")
  	(unspec:VNx8BF_ONLY
! 	  [(match_operand:VNx4BI 2 "register_operand" "Upl")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:VNx8BF_ONLY 1 "register_operand" "0")
! 	   (match_operand:VNx4SF 3 "register_operand" "w")]
  	  UNSPEC_COND_FCVTNT))]
!   "TARGET_SVE_BF16"
!   "bfcvtnt\t%0.h, %2/m, %3.s"
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
--- 11399,11417 ----
  ;;
  ;; This instructions does not take MOVPRFX.
  (define_insn "@aarch64_sve_cvtnt<mode>"
!   [(set (match_operand:VNx8BF_ONLY 0 "register_operand")
  	(unspec:VNx8BF_ONLY
! 	  [(match_operand:VNx4BI 2 "register_operand")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:VNx8BF_ONLY 1 "register_operand")
! 	   (match_operand:VNx8BF_ONLY 4 "aarch64_constant_vector_operand")
! 	   (match_operand:VNx4SF 3 "register_operand")]
  	  UNSPEC_COND_FCVTNT))]
!   "TARGET_SVE_BF16 || TARGET_SVE2p2_OR_SME2p2"
!   {@ [ cons: =0 , 1 , 2   , 3 , 4   ; attrs: arch ]
!      [ w        , 0 , Upl , w , vs1 ; *                ] bfcvtnt\t%0.h, %2/m, %3.s
!      [ w        , 0 , Upl , w , Dz  ; sve2p2_or_sme2p2 ] bfcvtnt\t%0.h, %2/z, %3.s
!   }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
***************
*** 11422,11431 ****
  	   (match_operand:SVE_FULL_SDF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_SDF:elem_bits> > <SVE_FULL_HSF:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 11529,11539 ----
  	   (match_operand:SVE_FULL_SDF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && <SVE_FULL_SDF:elem_bits> > <SVE_FULL_HSF:elem_bits>"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_HSF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 11443,11452 ****
  	   (match_operand:SVE_SDF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && (~<SVE_SDF:narrower_mask> & <SVE_PARTIAL_HSF:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_SDF:Vetype>, %1/z, %2.<SVE_SDF:Vetype>\;fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 11551,11561 ----
  	   (match_operand:SVE_SDF 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE && (~<SVE_SDF:narrower_mask> & <SVE_PARTIAL_HSF:self_mask>) == 0"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] fcvt\t%0.<SVE_SDF:Vetype>, %1/z, %2.<SVE_PARTIAL_HSF:Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<SVE_SDF:Vetype>, %1/z, %2.<SVE_SDF:Vetype>\;fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64-sve2.md gcc-17-20260531/gcc/config/aarch64/aarch64-sve2.md
*** gcc-17-20260524/gcc/config/aarch64/aarch64-sve2.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64-sve2.md	Sun May 31 22:32:05 2026
***************
*** 46,53 ****
--- 46,55 ----
  ;; ---- [PRED] Predicate extraction
  ;; ---- [PRED] Predicate selection
  ;; ---- [PRED] Predicate count
+ ;; ---- [PRED] Predicate first/last true element
  ;;
  ;; == Uniform unary arithmnetic
+ ;; ---- [FP] General unary arithmetic that maps to unspecs
  ;; ---- [FP] Multi-register unary operations
  ;;
  ;; == Uniform binary arithmnetic
***************
*** 720,730 ****
--- 722,792 ----
    [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
+ ;; -------------------------------------------------------------------------
+ ;; ---- [PRED] Predicate first/last true element
+ ;; -------------------------------------------------------------------------
+ ;; Includes
+ ;; - FIRSTP (predicate first true element) (SVE2p2, SME2p2)
+ ;; - LASTP (predicate last true element) (SVE2p2, SME2p2)
+ ;; -------------------------------------------------------------------------
+ 
+ ;; Count the number of set bits in a predicate.  Operand 3 is true if
+ ;; operand 1 is known to be all-true.
+ (define_insn "@aarch64_pred_firstp<mode>"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(unspec:DI [(match_operand:PRED_ALL 1 "register_operand" "Upl")
+ 		    (match_operand:PRED_ALL 2 "register_operand" "Upa")]
+ 		    UNSPEC_FIRSTP))]
+   "TARGET_SVE2p2_OR_SME2p2"
+   "firstp\t%x0, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
+ )
+ 
+ ;; Count the number of set bits in a predicate.  Operand 3 is true if
+ ;; operand 1 is known to be all-true.
+ (define_insn "@aarch64_pred_lastp<mode>"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(unspec:DI [(match_operand:PRED_ALL 1 "register_operand" "Upl")
+ 		    (match_operand:PRED_ALL 2 "register_operand" "Upa")]
+ 		    UNSPEC_LASTP))]
+   "TARGET_SVE2p2_OR_SME2p2"
+   "lastp\t%x0, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
+ )
+ 
  ;; =========================================================================
  ;; == Uniform unary arithmnetic
  ;; =========================================================================
  
  ;; -------------------------------------------------------------------------
+ ;; ---- [FP] General unary arithmetic that maps to unspecs
+ ;; -------------------------------------------------------------------------
+ ;; Includes:
+ ;; - FRINT32X (SVE2p2, SME2p2)
+ ;; - FRINT32Z (SVE2p2, SME2p2)
+ ;; - FRINT64X (SVE2p2, SME2p2)
+ ;; - FRINT64Z (SVE2p2, SME2p2)
+ ;; -------------------------------------------------------------------------
+ 
+ (define_insn "@cond_<frintnzs_op><mode>"
+   [(set (match_operand:SVE_FULL_SDF 0 "register_operand")
+ 	(unspec:SVE_FULL_SDF
+ 	  [(match_operand:<VPRED> 1 "register_operand")
+ 	   (unspec:SVE_FULL_SDF
+ 	     [(match_operand:SVE_FULL_SDF 2 "register_operand")]
+ 	     FRINTNZX)
+ 	   (match_operand:SVE_FULL_SDF 3 "aarch64_simd_reg_or_zero")]
+ 	  UNSPEC_SEL))]
+   "TARGET_SVE2p2_OR_SME2p2"
+   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
+      [ w        , Upl , w , 0  ; *   ] <frintnzs_op>\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
+      [ w        , Upl , w , Dz ; *   ] <frintnzs_op>\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>
+      [ ?&w      , Upl , w , w  ; yes ] movprfx\t%0, %3\;<frintnzs_op>\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
+   }
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ ;; -------------------------------------------------------------------------
  ;; ---- [FP] Multi-register unary operations
  ;; -------------------------------------------------------------------------
  ;; Includes:
***************
*** 1531,1536 ****
--- 1593,1599 ----
  ;; -------------------------------------------------------------------------
  ;; Includes the multiple and single vector and multiple vectors forms of
  ;; - BFMUL (SVE_BFSCALE)
+ ;; - FMUL (SME2p2)
  ;; -------------------------------------------------------------------------
  
  ;; BFMUL (multiple vectors)
***************
*** 1563,1568 ****
--- 1626,1653 ----
    "bfmul\t%0, %1, %2.h"
  )
  
+ ;; FMUL (multiple vectors)
+ (define_insn "@aarch64_sve_<optab><mode>"
+   [(set (match_operand:SVE_Fx24_NOBF 0 "register_operand" "=Uw<vector_count>")
+ 	(unspec:SVE_Fx24_NOBF
+ 	  [(match_operand:SVE_Fx24_NOBF 1 "register_operand" "Uw<vector_count>")
+ 	   (match_operand:SVE_Fx24_NOBF 2 "register_operand" "Uw<vector_count>")]
+ 	  SVE_FP_MUL))]
+   "TARGET_STREAMING_SME2p2"
+   "fmul\t%0, %1, %2"
+ )
+ 
+ ;; FMUL (multiple x single vector)
+ (define_insn "@aarch64_sve_<optab><mode>_single"
+   [(set (match_operand:SVE_Fx24_NOBF 0 "register_operand" "=Uw<vector_count>")
+ 	(unspec:SVE_Fx24_NOBF
+ 	  [(match_operand:SVE_Fx24_NOBF 1 "register_operand" "Uw<vector_count>")
+ 	   (match_operand:<VSINGLE> 2 "register_operand" "x")]
+ 	  SVE_FP_MUL))]
+   "TARGET_STREAMING_SME2p2"
+   "fmul\t%0, %1, %2.<Vetype>"
+ )
+ 
  ;; =========================================================================
  ;; == Uniform ternary arithmnetic
  ;; =========================================================================
***************
*** 3479,3496 ****
  
  ;; These instructions do not take MOVPRFX.
  (define_insn_and_rewrite "*cond_<sve_fp_op><mode>_relaxed"
!   [(set (match_operand:SVE_FULL_SDF 0 "register_operand" "=w")
  	(unspec:SVE_FULL_SDF
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
  	   (unspec:SVE_FULL_SDF
  	     [(match_operand 4)
  	      (const_int SVE_RELAXED_GP)
! 	      (match_operand:<VNARROW> 2 "register_operand" "w")]
  	     SVE2_COND_FP_UNARY_LONG)
! 	   (match_operand:SVE_FULL_SDF 3 "register_operand" "0")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   "<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Ventype>"
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
      operands[4] = copy_rtx (operands[1]);
--- 3564,3584 ----
  
  ;; These instructions do not take MOVPRFX.
  (define_insn_and_rewrite "*cond_<sve_fp_op><mode>_relaxed"
!   [(set (match_operand:SVE_FULL_SDF 0 "register_operand")
  	(unspec:SVE_FULL_SDF
! 	  [(match_operand:<VPRED> 1 "register_operand")
  	   (unspec:SVE_FULL_SDF
  	     [(match_operand 4)
  	      (const_int SVE_RELAXED_GP)
! 	      (match_operand:<VNARROW> 2 "register_operand")]
  	     SVE2_COND_FP_UNARY_LONG)
! 	   (match_operand:SVE_FULL_SDF 3 "aarch64_simd_reg_or_direct_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: arch ]
!      [ w        , Upl , w , 0  ; *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Ventype>
!      [ w        , Upl , w , Dz ; sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Ventype>
!   }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
      operands[4] = copy_rtx (operands[1]);
***************
*** 3499,3516 ****
  )
  
  (define_insn "*cond_<sve_fp_op><mode>_strict"
!   [(set (match_operand:SVE_FULL_SDF 0 "register_operand" "=w")
  	(unspec:SVE_FULL_SDF
! 	  [(match_operand:<VPRED> 1 "register_operand" "Upl")
  	   (unspec:SVE_FULL_SDF
  	     [(match_dup 1)
  	      (const_int SVE_STRICT_GP)
! 	      (match_operand:<VNARROW> 2 "register_operand" "w")]
  	     SVE2_COND_FP_UNARY_LONG)
! 	   (match_operand:SVE_FULL_SDF 3 "register_operand" "0")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   "<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Ventype>"
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
--- 3587,3607 ----
  )
  
  (define_insn "*cond_<sve_fp_op><mode>_strict"
!   [(set (match_operand:SVE_FULL_SDF 0 "register_operand")
  	(unspec:SVE_FULL_SDF
! 	  [(match_operand:<VPRED> 1 "register_operand")
  	   (unspec:SVE_FULL_SDF
  	     [(match_dup 1)
  	      (const_int SVE_STRICT_GP)
! 	      (match_operand:<VNARROW> 2 "register_operand")]
  	     SVE2_COND_FP_UNARY_LONG)
! 	   (match_operand:SVE_FULL_SDF 3 "aarch64_simd_reg_or_direct_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: arch ]
!      [ w        , Upl , w , 0  ; *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Ventype>
!      [ w        , Upl , w , Dz ; sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Ventype>
!   }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
***************
*** 3540,3554 ****
  ;;
  ;; These instructions do not take MOVPRFX.
  (define_insn "@aarch64_sve_cvtnt<mode>"
!   [(set (match_operand:SVE_FULL_HSF 0 "register_operand" "=w")
  	(unspec:SVE_FULL_HSF
! 	  [(match_operand:<VWIDE_PRED> 2 "register_operand" "Upl")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:SVE_FULL_HSF 1 "register_operand" "0")
! 	   (match_operand:<VWIDE> 3 "register_operand" "w")]
  	  UNSPEC_COND_FCVTNT))]
    "TARGET_SVE2"
!   "fcvtnt\t%0.<Vetype>, %2/m, %3.<Vewtype>"
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
--- 3631,3649 ----
  ;;
  ;; These instructions do not take MOVPRFX.
  (define_insn "@aarch64_sve_cvtnt<mode>"
!   [(set (match_operand:SVE_FULL_HSF 0 "register_operand")
  	(unspec:SVE_FULL_HSF
! 	  [(match_operand:<VWIDE_PRED> 2 "register_operand")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:SVE_FULL_HSF 1 "register_operand")
! 	   (match_operand:SVE_FULL_HSF 4 "aarch64_constant_vector_operand")
! 	   (match_operand:<VWIDE> 3 "register_operand")]
  	  UNSPEC_COND_FCVTNT))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1 , 2   , 3 , 4   ; attrs: arch ]
!      [ w        , 0 , Upl , w , vs1 ; *                ] fcvtnt\t%0.<Vetype>, %2/m, %3.<Vewtype>
!      [ w        , 0 , Upl , w , Dz  ; sve2p2_or_sme2p2 ] fcvtnt\t%0.<Vetype>, %2/z, %3.<Vewtype>
!   }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
***************
*** 3596,3605 ****
  	   (match_operand:VNx4SF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<Vewtype>, %1/z, %2.<Vewtype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 3691,3701 ----
  	   (match_operand:VNx4SF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vewtype>, %1/z, %2.<Vewtype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 3620,3629 ****
  	   (match_operand:VNx4SF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<Vewtype>, %1/z, %2.<Vewtype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
--- 3716,3726 ----
  	   (match_operand:VNx4SF_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vewtype>
!      [ &w       , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vewtype>, %1/z, %2.<Vewtype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
!      [ &w       , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
***************
*** 3634,3651 ****
  ;;
  ;; These instructions do not take MOVPRFX.
  (define_insn "@aarch64_sve2_cvtxnt<mode>"
!   [(set (match_operand:<VNARROW> 0 "register_operand" "=w")
  	(unspec:<VNARROW>
! 	  [(match_operand:<VPRED> 2 "register_operand" "Upl")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:<VNARROW> 1 "register_operand" "0")
! 	   (match_operand:VNx2DF_ONLY 3 "register_operand" "w")]
  	  UNSPEC_COND_FCVTXNT))]
    "TARGET_SVE2"
!   "fcvtxnt\t%0.<Ventype>, %2/m, %3.<Vetype>"
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [FP<-FP] Multi-vector widening conversions
  ;; -------------------------------------------------------------------------
--- 3731,3753 ----
  ;;
  ;; These instructions do not take MOVPRFX.
  (define_insn "@aarch64_sve2_cvtxnt<mode>"
!   [(set (match_operand:<VNARROW> 0 "register_operand")
  	(unspec:<VNARROW>
! 	  [(match_operand:<VPRED> 2 "register_operand")
  	   (const_int SVE_STRICT_GP)
! 	   (match_operand:<VNARROW> 1 "register_operand")
! 	   (match_operand:<VNARROW> 4 "aarch64_constant_vector_operand")
! 	   (match_operand:VNx2DF_ONLY 3 "register_operand")]
  	  UNSPEC_COND_FCVTXNT))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1 , 2   , 3 , 4    ; attrs: arch ]
!      [ w        , 0 , Upl , w , vs1  ; *                ] fcvtxnt\t%0.<Ventype>, %2/m, %3.<Vetype>
!      [ w        , 0 , Upl , w , Dz   ; sve2p2_or_sme2p2 ] fcvtxnt\t%0.<Ventype>, %2/z, %3.<Vetype>
!   }
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [FP<-FP] Multi-vector widening conversions
  ;; -------------------------------------------------------------------------
***************
*** 3853,3862 ****
  	   (match_operand:VNx4SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ w        , Upl , w , 0  ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !CONSTANT_P (operands[4])"
    {
--- 3955,3965 ----
  	   (match_operand:VNx4SI_ONLY 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ w        , Upl , w , 0  ; *   , *                ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ w        , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_int_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !CONSTANT_P (operands[4])"
    {
***************
*** 3915,3924 ****
  	   (match_operand:<V_INT_EQUIV> 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
--- 4018,4028 ----
  	   (match_operand:<V_INT_EQUIV> 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    "&& !rtx_equal_p (operands[1], operands[4])"
    {
***************
*** 3939,3948 ****
  	   (match_operand:<V_INT_EQUIV> 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx ]
!      [ &w       , Upl , w , 0  ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_fp_log")]
  )
--- 4043,4053 ----
  	   (match_operand:<V_INT_EQUIV> 3 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2 && !rtx_equal_p (operands[2], operands[3])"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: movprfx, arch ]
!      [ &w       , Upl , w , 0  ; *   , *                ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ &w       , Upl , w , Dz ; *   , sve2p2_or_sme2p2 ] <sve_fp_op>\t%0.<Vetype>, %1/z, %2.<Vetype>
!      [ ?&w      , Upl , w , Dz ; yes , *                ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
!      [ ?&w      , Upl , w , w  ; yes , *                ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
    [(set_attr "sve_type" "sve_fp_log")]
  )
***************
*** 4129,4136 ****
  	     UNSPEC_REVD_ONLY)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 ]
!      [ w        , Upl , 0 ] revd\t%0.q, %1/m, %2.q
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
--- 4234,4242 ----
  	     UNSPEC_REVD_ONLY)]
  	  UNSPEC_PRED_X))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 ; attrs: arch ]
!      [ w        , Upl , 0 ; *                ] revd\t%0.q, %1/m, %2.q
!      [ w        , Upl , w ; sve2p2_or_sme2p2 ] revd\t%0.q, %1/z, %2.q
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
***************
*** 4142,4152 ****
  	   (unspec:SVE_FULL
  	     [(match_operand:SVE_FULL 2 "register_operand")]
  	     UNSPEC_REVD_ONLY)
! 	   (match_operand:SVE_FULL 3 "register_operand")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 , 3 ]
!      [ w        , Upl , w , 0 ] revd\t%0.q, %1/m, %2.q
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
--- 4248,4259 ----
  	   (unspec:SVE_FULL
  	     [(match_operand:SVE_FULL 2 "register_operand")]
  	     UNSPEC_REVD_ONLY)
! 	   (match_operand:SVE_FULL 3 "aarch64_simd_reg_or_direct_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE2p1_OR_SME"
!   {@ [ cons: =0 , 1   , 2 , 3  ; attrs: arch ]
!      [ w        , Upl , w , 0  ; *                ] revd\t%0.q, %1/m, %2.q
!      [ w        , Upl , w , Dz ; sve2p2_or_sme2p2 ] revd\t%0.q, %1/z, %2.q
    }
    [(set_attr "sve_type" "sve_int_general")]
  )
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64.cc gcc-17-20260531/gcc/config/aarch64/aarch64.cc
*** gcc-17-20260524/gcc/config/aarch64/aarch64.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64.cc	Sun May 31 22:32:05 2026
*************** aarch64_classify_vector_mode (machine_mo
*** 1778,1783 ****
--- 1778,1790 ----
      case E_V4x2DFmode:
        return (TARGET_FLOAT || any_target_p) ? VEC_ADVSIMD | VEC_STRUCT : 0;
  
+     /* 16-bit Advanced SIMD vectors.  */
+     case E_V2QImode:
+     /* 32-bit Advanced SIMD vectors.  */
+     case E_V2HFmode:
+     case E_V2BFmode:
+     case E_V2HImode:
+     case E_V4QImode:
      /* 64-bit Advanced SIMD vectors.  */
      case E_V8QImode:
      case E_V4HImode:
*************** aarch64_advsimd_full_struct_mode_p (mach
*** 1856,1861 ****
--- 1863,1876 ----
    return (aarch64_classify_vector_mode (mode) == (VEC_ADVSIMD | VEC_STRUCT));
  }
  
+ /* Return true if MODE is a partial (sub-64-bit) Advanced SIMD mode.  */
+ bool
+ aarch64_advsimd_sub_dword_mode_p (machine_mode mode)
+ {
+   return (aarch64_classify_vector_mode (mode) == VEC_ADVSIMD)
+ 	 && known_lt (GET_MODE_BITSIZE (mode), 64);
+ }
+ 
  /* Return true if MODE is any of the data vector modes, including
     structure modes.  */
  static bool
*************** aarch64_move_imm (unsigned HOST_WIDE_INT
*** 4916,4921 ****
--- 4931,4942 ----
    return aarch64_bitmask_imm (val);
  }
  
+ /* Return the output string with the MOV instruction for immediate IMM.  */
+ const char*
+ aarch64_output_move_imm (rtx imm)
+ {
+   return UINTVAL (imm) < 0x100000000 ? "mov\t%w0, %1" : "mov\t%x0, %1";
+ }
  
  /* Return true is VAL is a move immediate that can be created by add/sub of the
     12-bit shifted immediate VAL2.  If GENERATE is true, emit the sequence.  */
*************** aarch64_stack_protect_canary_mem (machin
*** 6887,6915 ****
    return gen_rtx_MEM (mode, force_reg (Pmode, addr));
  }
  
- /* Emit a load/store from a subreg of SRC to a subreg of DEST.
-    The subregs have mode NEW_MODE. Use only for reg<->mem moves.  */
- void
- aarch64_emit_load_store_through_mode (rtx dest, rtx src, machine_mode new_mode)
- {
-   gcc_assert ((MEM_P (dest) && register_operand (src, VOIDmode))
- 	      || (MEM_P (src) && register_operand (dest, VOIDmode)));
-   auto mode = GET_MODE (dest);
-   auto int_mode = aarch64_sve_int_mode (mode);
-   if (MEM_P (src))
-     {
-       rtx tmp = force_reg (new_mode, adjust_address (src, new_mode, 0));
-       tmp = force_lowpart_subreg (int_mode, tmp, new_mode);
-       emit_move_insn (dest, force_lowpart_subreg (mode, tmp, int_mode));
-     }
-   else
-     {
-       src = force_lowpart_subreg (int_mode, src, mode);
-       emit_move_insn (adjust_address (dest, new_mode, 0),
- 		      force_lowpart_subreg (new_mode, src, int_mode));
-     }
- }
- 
  /* PRED is a predicate that is known to contain PTRUE.
     For 128-bit VLS loads/stores, emit LDR/STR.
     Else, emit an SVE predicated move from SRC to DEST.  */
--- 6908,6913 ----
*************** aarch64_return_in_memory_1 (const_tree t
*** 7399,7405 ****
    int count;
  
    if (!AGGREGATE_TYPE_P (type)
!       && TREE_CODE (type) != BITINT_TYPE
        && TREE_CODE (type) != COMPLEX_TYPE
        && TREE_CODE (type) != VECTOR_TYPE)
      /* Simple scalar types always returned in registers.  */
--- 7397,7403 ----
    int count;
  
    if (!AGGREGATE_TYPE_P (type)
!       && !BITINT_TYPE_P (type)
        && TREE_CODE (type) != COMPLEX_TYPE
        && TREE_CODE (type) != VECTOR_TYPE)
      /* Simple scalar types always returned in registers.  */
*************** bitint_or_aggr_of_bitint_p (tree type)
*** 7573,7579 ****
    if (!type)
      return false;
  
!   if (TREE_CODE (type) == BITINT_TYPE)
      return true;
  
    /* If ARRAY_TYPE, check it's element type.  */
--- 7571,7577 ----
    if (!type)
      return false;
  
!   if (BITINT_TYPE_P (type))
      return true;
  
    /* If ARRAY_TYPE, check it's element type.  */
*************** aarch64_strip_extend (rtx x, bool strip_
*** 14420,14426 ****
    if (strip_shift
        && GET_CODE (op) == ASHIFT
        && CONST_INT_P (XEXP (op, 1))
!       && ((unsigned HOST_WIDE_INT) INTVAL (XEXP (op, 1))) <= 4)
      op = XEXP (op, 0);
  
    if (GET_CODE (op) == ZERO_EXTEND
--- 14418,14424 ----
    if (strip_shift
        && GET_CODE (op) == ASHIFT
        && CONST_INT_P (XEXP (op, 1))
!       && UINTVAL (XEXP (op, 1)) <= 4)
      op = XEXP (op, 0);
  
    if (GET_CODE (op) == ZERO_EXTEND
*************** aarch64_composite_type_p (const_tree typ
*** 23480,23486 ****
      return true;
  
    if (type
!       && TREE_CODE (type) == BITINT_TYPE
        && int_size_in_bytes (type) > 16)
      return true;
  
--- 23478,23484 ----
      return true;
  
    if (type
!       && BITINT_TYPE_P (type)
        && int_size_in_bytes (type) > 16)
      return true;
  
*************** aarch64_choose_vector_init_constant (mac
*** 25660,25666 ****
     The caller has already tried a divide-and-conquer approach, so do
     not consider that case here.  */
  
! void
  aarch64_expand_vector_init_fallback (rtx target, rtx vals)
  {
    machine_mode mode = GET_MODE (target);
--- 25658,25664 ----
     The caller has already tried a divide-and-conquer approach, so do
     not consider that case here.  */
  
! static void
  aarch64_expand_vector_init_fallback (rtx target, rtx vals)
  {
    machine_mode mode = GET_MODE (target);
*************** aarch64_expand_vector_init_fallback (rtx
*** 25671,25691 ****
    int n_var = 0;
    /* The first element of vals.  */
    rtx v0 = XVECEXP (vals, 0, 0);
    bool all_same = true;
  
!   /* This is a special vec_init<M><N> where N is not an element mode but a
       vector mode with half the elements of M.  We expect to find two entries
       of mode N in VALS and we must put their concatentation into TARGET.  */
!   if (XVECLEN (vals, 0) == 2 && VECTOR_MODE_P (GET_MODE (XVECEXP (vals, 0, 0))))
      {
!       machine_mode narrow_mode = GET_MODE (XVECEXP (vals, 0, 0));
        gcc_assert (GET_MODE_INNER (narrow_mode) == inner_mode
  		  && known_eq (GET_MODE_SIZE (mode),
  			       2 * GET_MODE_SIZE (narrow_mode)));
!       emit_insn (gen_aarch64_vec_concat (narrow_mode, target,
! 					 XVECEXP (vals, 0, 0),
! 					 XVECEXP (vals, 0, 1)));
!      return;
     }
  
    /* Count the number of variable elements to initialise.  */
--- 25669,25697 ----
    int n_var = 0;
    /* The first element of vals.  */
    rtx v0 = XVECEXP (vals, 0, 0);
+   machine_mode v0mode = GET_MODE (v0);
    bool all_same = true;
  
!   /* This is a special vec_init<M><N> where N is either an element mode or a
       vector mode with half the elements of M.  We expect to find two entries
       of mode N in VALS and we must put their concatentation into TARGET.  */
!   if (n_elts == 2 && (VECTOR_MODE_P (v0mode)
! 				 || SCALAR_INT_MODE_P (v0mode)
! 				 || SCALAR_FLOAT_MODE_P (v0mode)))
      {
!       rtx v1 = XVECEXP (vals, 0, 1);
!       machine_mode narrow_mode = GET_MODE (v0);
        gcc_assert (GET_MODE_INNER (narrow_mode) == inner_mode
  		  && known_eq (GET_MODE_SIZE (mode),
  			       2 * GET_MODE_SIZE (narrow_mode)));
!       if (rtx_equal_p (v0, v1))
!        aarch64_emit_move (target,
! 			  gen_vec_duplicate (mode,
! 					     force_reg (narrow_mode, v0)));
!       else
!        emit_insn (gen_aarch64_vec_concat (narrow_mode, target,
! 					  v0, v1));
!       return;
     }
  
    /* Count the number of variable elements to initialise.  */
*************** aarch64_expand_vector_init_fallback (rtx
*** 25718,25723 ****
--- 25724,25766 ----
        return;
      }
  
+   /* Check if the vector can be represented as a duplicate of a
+      subvector starting at index 0.  */
+   if (pow2p_hwi (n_elts))
+     {
+ 	bool halves_equal = true;
+ 	int n_seq = n_elts;
+ 	while (n_seq > 2)
+ 	  {
+ 	    for (int i = 0; i < n_seq / 2; i++)
+ 	      if (!rtx_equal_p (XVECEXP (vals, 0, i),
+ 				XVECEXP (vals, 0, i + n_seq / 2)))
+ 		{
+ 		  halves_equal = false;
+ 		  break;
+ 		}
+ 
+ 	    if (!halves_equal)
+ 	      break;
+ 
+ 	    n_seq /= 2;
+ 	  }
+ 
+ 	if (n_seq != n_elts)
+ 	  {
+ 	    machine_mode subv_mode = mode_for_vector (inner_mode,
+ 						      n_seq).require ();
+ 	    rtx new_target = gen_reg_rtx (subv_mode);
+ 	    rtvec new_vals = rtvec_alloc (n_seq);
+ 	    for (int i = 0; i < n_seq; i++)
+ 	      RTVEC_ELT (new_vals, i) = XVECEXP (vals, 0, i);
+ 	    aarch64_expand_vector_init (new_target,
+ 					gen_rtx_PARALLEL (subv_mode, new_vals));
+ 	    aarch64_emit_move (target, gen_vec_duplicate (mode, new_target));
+ 	    return;
+ 	  }
+     }
+ 
    enum insn_code icode = optab_handler (vec_set_optab, mode);
    gcc_assert (icode != CODE_FOR_nothing);
  
*************** scalar_move_insn_p (rtx set)
*** 25877,25883 ****
    rtx src = SET_SRC (set);
    rtx dest = SET_DEST (set);
    return (is_a<scalar_mode> (GET_MODE (dest))
! 	  && aarch64_mov_operand (src, GET_MODE (dest)));
  }
  
  /* Similar to seq_cost, but ignore cost for scalar moves.  */
--- 25920,25927 ----
    rtx src = SET_SRC (set);
    rtx dest = SET_DEST (set);
    return (is_a<scalar_mode> (GET_MODE (dest))
! 	  && aarch64_mov_operand (src, GET_MODE (dest)))
! 	 || aarch64_advsimd_sub_dword_mode_p (GET_MODE (dest));
  }
  
  /* Similar to seq_cost, but ignore cost for scalar moves.  */
*************** aarch64_sve_expand_vector_init_subvector
*** 26312,26317 ****
--- 26356,26402 ----
    return;
  }
  
+ /* Emit a load/store from a subreg of SRC to a subreg of DEST.
+    The subregs have mode NEW_MODE. Use only for reg<->mem moves.  */
+ void
+ aarch64_emit_load_store_through_mode (rtx dest, rtx src, machine_mode new_mode)
+ {
+   gcc_assert ((MEM_P (dest) && register_operand (src, VOIDmode))
+ 	      || (MEM_P (src) && register_operand (dest, VOIDmode)));
+   auto mode = GET_MODE (dest);
+   auto int_mode = aarch64_sve_int_mode (mode);
+   rtx tmp_reg;
+   if (MEM_P (src))
+     {
+       rtx tmp = force_reg (new_mode, adjust_address (src, new_mode, 0));
+       if (!VECTOR_MODE_P (new_mode))
+ 	{
+ 	  machine_mode full_mode = int_mode;
+ 	  auto vmode = aarch64_classify_vector_mode (int_mode);
+ 	  /* Partial vectors have to go through a full mode insert since we
+ 	     don't support inserting an partial vectors.  */
+ 	  if (GET_MODE_INNER (int_mode) != new_mode || (vmode & VEC_PARTIAL))
+ 	    full_mode
+ 	      = aarch64_full_sve_mode (as_a <scalar_mode> (new_mode)).require ();
+ 
+ 	  /* Create an SVE register with the top bits explicitly zero'd.  */
+ 	  tmp_reg = force_reg (full_mode, CONST0_RTX (full_mode));
+ 	  emit_insr (tmp_reg, tmp);
+ 	  if (full_mode != int_mode)
+ 	    tmp_reg = force_lowpart_subreg (int_mode, tmp_reg, full_mode);
+ 	}
+       else
+ 	tmp_reg = force_lowpart_subreg (int_mode, tmp, new_mode);
+       emit_move_insn (dest, force_lowpart_subreg (mode, tmp_reg, int_mode));
+     }
+   else
+     {
+       src = force_lowpart_subreg (int_mode, src, mode);
+       emit_move_insn (adjust_address (dest, new_mode, 0),
+ 		      force_lowpart_subreg (new_mode, src, int_mode));
+     }
+ }
+ 
  /* Check whether VALUE is a vector constant in which every element
     is either a power of 2 or a negated power of 2.  If so, return
     a constant vector of log2s, and flip CODE between PLUS and MINUS
*************** aarch64_vectorize_vec_perm_const (machin
*** 28391,28396 ****
--- 28476,28484 ----
  {
    struct expand_vec_perm_d d;
  
+   if (aarch64_advsimd_sub_dword_mode_p (op_mode))
+     return false;
+ 
    /* Check whether the mask can be applied to a single vector.  */
    if (sel.ninputs () == 1
        || (op0 && rtx_equal_p (op0, op1)))
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64.h gcc-17-20260531/gcc/config/aarch64/aarch64.h
*** gcc-17-20260524/gcc/config/aarch64/aarch64.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64.h	Sun May 31 22:32:05 2026
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 313,318 ****
--- 313,321 ----
  /* SVE2p1 instructions, enabled through +sve2p1.  */
  #define TARGET_SVE2p1 AARCH64_HAVE_ISA (SVE2p1)
  
+ /* SVE2p2 instructions, enabled through +sve2p2.  */
+ #define TARGET_SVE2p2 AARCH64_HAVE_ISA (SVE2p2)
+ 
  /* SME instructions, enabled through +sme.  Note that this does not
     imply anything about the state of PSTATE.SM; instructions that require
     SME and streaming mode should use TARGET_STREAMING instead.  */
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 343,353 ****
--- 346,361 ----
  /* SME2 instructions, enabled through +sme2.  */
  #define TARGET_SME2 AARCH64_HAVE_ISA (SME2)
  
+ /* SME2p2 instructions, enabled through +sme2p2.  */
+ #define TARGET_SME2p2 AARCH64_HAVE_ISA (SME2p2)
+ 
  /* Same with streaming mode enabled.  */
  #define TARGET_STREAMING_SME2 (TARGET_STREAMING && TARGET_SME2)
  
  #define TARGET_STREAMING_SME2p1 (TARGET_STREAMING && AARCH64_HAVE_ISA (SME2p1))
  
+ #define TARGET_STREAMING_SME2p2 (TARGET_STREAMING && AARCH64_HAVE_ISA (SME2p2))
+ 
  #define TARGET_SME_B16B16 AARCH64_HAVE_ISA (SME_B16B16)
  
  /* ARMv8.3-A features.  */
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 510,515 ****
--- 518,527 ----
  
  /* Combinatorial tests.  */
  
+ #define TARGET_SVE_OR_SME2p2 \
+   ((TARGET_SVE || TARGET_STREAMING) \
+    && (TARGET_SME2p2 || TARGET_NON_STREAMING))
+ 
  #define TARGET_SVE2_OR_SME2 \
    ((TARGET_SVE2 || TARGET_STREAMING) \
     && (TARGET_SME2 || TARGET_NON_STREAMING))
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 522,527 ****
--- 534,543 ----
    ((TARGET_SVE2p1 || TARGET_STREAMING) \
     && (TARGET_SME2 || TARGET_NON_STREAMING))
  
+ #define TARGET_SVE2p2_OR_SME2p2 \
+   ((TARGET_SVE2p2 || TARGET_STREAMING) \
+    && (TARGET_SME2p2 || TARGET_NON_STREAMING))
+ 
  #define TARGET_SSVE_B16B16 \
    (AARCH64_HAVE_ISA (SVE_B16B16) && TARGET_SVE2_OR_SME2)
  
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/aarch64.md gcc-17-20260531/gcc/config/aarch64/aarch64.md
*** gcc-17-20260524/gcc/config/aarch64/aarch64.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/aarch64.md	Sun May 31 22:32:05 2026
***************
*** 400,405 ****
--- 400,406 ----
      UNSPEC_SVE_PREFETCH
      UNSPEC_SVE_PREFETCH_GATHER
      UNSPEC_SVE_COMPACT
+     UNSPEC_SVE_EXPAND
      UNSPEC_SVE_SPLICE
      UNSPEC_GEN_TAG		; Generate a 4-bit MTE tag.
      UNSPEC_GEN_TAG_RND		; Generate a random 4-bit MTE tag.
***************
*** 502,508 ****
  ;; Q registers and is equivalent to "simd".
  
  (define_enum "arches" [any rcpc8_4 fp fp_q base_simd nobase_simd
! 		       simd nosimd sve fp16 sme cssc])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
--- 503,509 ----
  ;; Q registers and is equivalent to "simd".
  
  (define_enum "arches" [any rcpc8_4 fp fp_q base_simd nobase_simd
! 		       simd nosimd sve fp16 sme cssc sve2p2_or_sme2p2])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
***************
*** 581,587 ****
  	     (match_test "TARGET_SVE"))
  
  	(and (eq_attr "arch" "sme")
! 	     (match_test "TARGET_SME"))))
      (const_string "yes")
      (const_string "no")))
  
--- 582,591 ----
  	     (match_test "TARGET_SVE"))
  
  	(and (eq_attr "arch" "sme")
! 	     (match_test "TARGET_SME"))
! 
! 	(and (eq_attr "arch" "sve2p2_or_sme2p2")
! 	     (match_test "TARGET_SVE2p2_OR_SME2p2"))))
      (const_string "yes")
      (const_string "no")))
  
***************
*** 1819,1825 ****
       [r, r   ; mov_reg  , *   , 4] mov\t%x0, %x1
       [k, r   ; mov_reg  , *   , 4] mov\t%0, %x1
       [r, k   ; mov_reg  , *   , 4] mov\t%x0, %1
!      [r, O   ; mov_imm  , *   , 4] << aarch64_is_mov_xn_imm (INTVAL (operands[1])) ? "mov\t%x0, %1" : "mov\t%w0, %1";
       [r, n   ; mov_imm  , *   ,16] #
       /* The "mov_imm" type for CNT is just a placeholder.  */
       [r, Usv ; mov_imm  , sve , 4] << aarch64_output_sve_cnt_immediate ("cnt", "%x0", operands[1]);
--- 1823,1829 ----
       [r, r   ; mov_reg  , *   , 4] mov\t%x0, %x1
       [k, r   ; mov_reg  , *   , 4] mov\t%0, %x1
       [r, k   ; mov_reg  , *   , 4] mov\t%x0, %1
!      [r, O   ; mov_imm  , *   , 4] << aarch64_output_move_imm (operands[1]);
       [r, n   ; mov_imm  , *   ,16] #
       /* The "mov_imm" type for CNT is just a placeholder.  */
       [r, Usv ; mov_imm  , sve , 4] << aarch64_output_sve_cnt_immediate ("cnt", "%x0", operands[1]);
***************
*** 2055,2061 ****
       [ r        , m   ; load_8      , *     ] ldr\t%x0, %1
       [ m        , rY  ; store_8     , *     ] str\t%x1, %0
       [ r        , r   ; mov_reg     , *     ] mov\t%x0, %x1
!      [ r        , O   ; fconstd     , *     ] << aarch64_is_mov_xn_imm (INTVAL (operands[1])) ? "mov\t%x0, %1" : "mov\t%w0, %1";
    }
  )
  
--- 2059,2065 ----
       [ r        , m   ; load_8      , *     ] ldr\t%x0, %1
       [ m        , rY  ; store_8     , *     ] str\t%x1, %0
       [ r        , r   ; mov_reg     , *     ] mov\t%x0, %x1
!      [ r        , O   ; fconstd     , *     ] << aarch64_output_move_imm (operands[1]);
    }
  )
  
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/constraints.md gcc-17-20260531/gcc/config/aarch64/constraints.md
*** gcc-17-20260524/gcc/config/aarch64/constraints.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/constraints.md	Sun May 31 22:32:05 2026
***************
*** 531,536 ****
--- 531,541 ----
   (and (match_code "const_int")
        (match_test "aarch64_simd_scalar_immediate_valid_for_move (op,
  						 QImode)")))
+ (define_constraint "Da"
+   "@internal
+   A constraint that matches all sub-64-bit AdvSIMD vectors."
+   (and (match_code "const_vector")
+        (match_test "aarch64_advsimd_sub_dword_mode_p (GET_MODE (op))")))
  
  (define_constraint "Dt"
    "@internal
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/iterators.md gcc-17-20260531/gcc/config/aarch64/iterators.md
*** gcc-17-20260524/gcc/config/aarch64/iterators.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/iterators.md	Sun May 31 22:32:05 2026
***************
*** 139,144 ****
--- 139,152 ----
  ;; VQMOV without 2-element modes.
  (define_mode_iterator VQMOV_NO2E [V16QI V8HI V4SI V8HF V8BF V4SF])
  
+ ;; Modes that can be duplicated into a 64-bit register.
+ (define_mode_iterator VDDUP [V4QI V2QI QI V2HI HI SI
+ 				V2BF BF V2HF HF SF])
+ 
+ ;; Modes that can be duplicated into a 128-bit register.
+ (define_mode_iterator VQDUP [V8QI V4QI V2QI QI V4HI V2HI HI V2SI SI DI
+ 				V4BF V2BF BF V4HF V2HF HF V2SF SF DF])
+ 
  ;; Double integer vector modes.
  (define_mode_iterator VD_I [V8QI V4HI V2SI DI])
  
***************
*** 227,236 ****
--- 235,266 ----
  ;; All Advanced SIMD integer modes
  (define_mode_iterator VALLI [VDQ_BHSI V2DI])
  
+ ;; All sub-64-bit vector modes.
+ (define_mode_iterator VSUB64 [V2QI V4QI V2HI V2HF V2BF])
+ 
+ ;; All sub-64-bit scalar modes.
+ (define_mode_iterator SSUB64 [QI HI HF BF SI SF])
+ 
+ ;; All sub-64-bit modes.
+ (define_mode_iterator VSSUB64 [VSUB64 SSUB64])
+ 
+ ;; All sub-32-bit integer modes.
+ (define_mode_iterator VSSUB32_I [V2QI QI HI])
+ 
+ ;; All sub-64-bit floating-point modes.
+ (define_mode_iterator VSSUB64_F [V2HF V2BF HF BF])
+ 
+ ;; All 32-bit integer and sub-64-bit floating point modes.
+ (define_mode_iterator VS32_I_SUB64_F [V4QI V2HI VSSUB64_F])
+ 
  ;; All Advanced SIMD modes suitable for moving, loading, and storing.
  (define_mode_iterator VALL_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI
  				V4HF V8HF V4BF V8BF V2SF V4SF V2DF])
  
+ ;; All Advanced SIMD modes suitable for moving, loading, and storing,
+ ;; plus all sub-64-bit vector modes.
+ (define_mode_iterator VALL_F16_SUB64 [VALL_F16 VSUB64])
+ 
  ;; The VALL_F16 modes except the 128-bit 2-element ones.
  (define_mode_iterator VALL_F16_NO_V2Q [V8QI V16QI V4HI V8HI V2SI V4SI
  				V4HF V8HF V2SF V4SF])
***************
*** 1102,1107 ****
--- 1132,1138 ----
      UNSPEC_FCVT		; Used in aarch64-sve2.md.
      UNSPEC_FCVTNB	; Used in aarch64-sve2.md.
      UNSPEC_FCVTNT	; Used in aarch64-sve2.md.
+     UNSPEC_FIRSTP	; Used in aarch64-sve2.md.
      UNSPEC_FMAXNMP	; Used in aarch64-sve2.md.
      UNSPEC_FMAXP	; Used in aarch64-sve2.md.
      UNSPEC_FMINNMP	; Used in aarch64-sve2.md.
***************
*** 1119,1124 ****
--- 1150,1156 ----
      UNSPEC_FP8FCVTN	; Used in aarch64-sve2.md.
      UNSPEC_HISTCNT	; Used in aarch64-sve2.md.
      UNSPEC_HISTSEG	; Used in aarch64-sve2.md.
+     UNSPEC_LASTP	; Used in aarch64-sve2.md.
      UNSPEC_LD1_COUNT	; Used in aarch64-sve2.md.
      UNSPEC_LDNT1_COUNT	; Used in aarch64-sve2.md.
      UNSPEC_MATCH	; Used in aarch64-sve2.md.
***************
*** 1460,1472 ****
  (define_mode_attr bitsize [(V8QI "64") (V16QI "128")
  			   (V4HI "64") (V8HI "128")
  			   (V2SI "64") (V4SI "128")
! 			   (V1DI "64") (V2DI "128")])
  
  ;; Map a floating point or integer mode to the appropriate register name prefix
  (define_mode_attr s [(HF "h") (SF "s") (DF "d") (SI "s") (DI "d")])
  
  ;; Give the length suffix letter for a sign- or zero-extension.
! (define_mode_attr size [(QI "b") (HI "h") (SI "w")])
  
  ;; Give the number of bits in the mode
  (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")])
--- 1492,1512 ----
  (define_mode_attr bitsize [(V8QI "64") (V16QI "128")
  			   (V4HI "64") (V8HI "128")
  			   (V2SI "64") (V4SI "128")
! 			   (V1DI "64") (V2DI "128")
! 			   (QI "8") (V2QI "16")
! 			   (V4QI "32") (HI "16")
! 			   (HF "16") (BF "16")
! 			   (SI "32") (SF "32")
! 			   (V2HI "32") (V2HF "32")
! 			   (V2BF "32")])
  
  ;; Map a floating point or integer mode to the appropriate register name prefix
  (define_mode_attr s [(HF "h") (SF "s") (DF "d") (SI "s") (DI "d")])
  
  ;; Give the length suffix letter for a sign- or zero-extension.
! (define_mode_attr size [(QI "b") (HI "h") (SI "w") (HF "") (BF "") (SF "")
! 			(V2QI "h") (V4QI "") (V2HI "")
! 			(V2HF "") (V2BF "")])
  
  ;; Give the number of bits in the mode
  (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")])
***************
*** 1479,1485 ****
  
  ;; The number of bits in a vector element, or controlled by a predicate
  ;; element.
! (define_mode_attr elem_bits [(VNx16BI "8") (VNx8BI "16")
  			     (VNx4BI "32") (VNx2BI "64")
  			     (VNx16QI "8") (VNx32QI "8") (VNx64QI "8")
  			     (VNx8HI "16") (VNx16HI "16") (VNx32HI "16")
--- 1519,1527 ----
  
  ;; The number of bits in a vector element, or controlled by a predicate
  ;; element.
! (define_mode_attr elem_bits [(V2QI "8") (V4QI "8") (V2HF "16") (V2HI "16")
! 			     (V2BF "16")
! 			     (VNx16BI "8") (VNx8BI "16")
  			     (VNx4BI "32") (VNx2BI "64")
  			     (VNx16QI "8") (VNx32QI "8") (VNx64QI "8")
  			     (VNx8HI "16") (VNx16HI "16") (VNx32HI "16")
***************
*** 1584,1594 ****
  
  ;; Mode-to-individual element type mapping.
  (define_mode_attr Vetype [(V8QI "b") (V16QI "b")
! 			  (V4HI "h") (V8HI  "h")
  			  (V2SI "s") (V4SI  "s")
  			  (V2DI "d") (V1DI  "d")
! 			  (V4HF "h") (V8HF  "h")
! 			  (V2SF "s") (V4SF  "s")
  			  (V2DF "d") (V1DF  "d")
  			  (V2x8QI "b") (V2x4HI "h")
  			  (V2x2SI "s") (V2x1DI "d")
--- 1626,1637 ----
  
  ;; Mode-to-individual element type mapping.
  (define_mode_attr Vetype [(V8QI "b") (V16QI "b")
! 			  (V2QI "b") (V4QI "b")
! 			  (V4HI "h") (V8HI  "h") (V2HI "h")
  			  (V2SI "s") (V4SI  "s")
  			  (V2DI "d") (V1DI  "d")
! 			  (V4HF "h") (V8HF  "h") (V2HF "h")
! 			  (V2SF "s") (V4SF  "s") (V2BF "h")
  			  (V2DF "d") (V1DF  "d")
  			  (V2x8QI "b") (V2x4HI "h")
  			  (V2x2SI "s") (V2x1DI "d")
***************
*** 1763,1770 ****
  			       (V4x2DF "v2df") (V4x8BF "v8bf")])
  
  ;; Define element mode for each vector mode.
! (define_mode_attr VEL [(V8QI  "QI") (V16QI "QI")
  		       (V4HI "HI") (V8HI  "HI")
  		       (V2SI "SI") (V4SI  "SI")
  		       (DI   "DI") (V1DI  "DI")
  		       (V2DI "DI")
--- 1806,1815 ----
  			       (V4x2DF "v2df") (V4x8BF "v8bf")])
  
  ;; Define element mode for each vector mode.
! (define_mode_attr VEL [(V8QI "QI") (V16QI "QI")
! 		       (V2QI "QI") (V4QI  "QI")
  		       (V4HI "HI") (V8HI  "HI")
+ 		       (V2HI "HI") (V2HF  "HF")
  		       (V2SI "SI") (V4SI  "SI")
  		       (DI   "DI") (V1DI  "DI")
  		       (V2DI "DI")
***************
*** 1775,1780 ****
--- 1820,1826 ----
  		       (SI   "SI") (HI    "HI")
  		       (QI   "QI")
  		       (V4BF "BF") (V8BF "BF")
+ 		       (V2BF "BF")
  		       (V2x8QI "QI") (V2x4HI "HI")
  		       (V2x2SI "SI") (V2x1DI "DI")
  		       (V2x4HF "HF") (V2x2SF "SF")
***************
*** 1883,1911 ****
--- 1929,2026 ----
  			(VNx4SI  "v2si") (VNx4SF "v2sf")
  			(VNx2DI  "di") (VNx2DF "df")])
  
+ ;; Sub-64-bit vector mode to equivalent scalar mode.
+ (define_mode_attr VSC [(V4QI "SI") (V2QI "HI")
+ 		       (V2HI "SI") (V2HF "SF") (V2BF "SF")])
+ 
  (define_mode_attr vnx [(V4SI "vnx4si") (V2DI "vnx2di")])
  
  ;; 64-bit container modes the inner or scalar source mode.
  (define_mode_attr VCOND [(HI "V4HI") (SI "V2SI")
+ 			 (V2HI "V4HI")
  			 (V4HI "V4HI") (V8HI "V4HI")
  			 (V2SI "V2SI") (V4SI "V2SI")
+ 			 (QI "V8QI") (V2QI "V8QI")
+ 			 (V4QI "V8QI")
  			 (DI   "DI") (V2DI "DI")
+ 			 (HF "V4HF") (V2HF "V4HF")
  			 (V4HF "V4HF") (V8HF "V4HF")
+ 			 (BF "V4BF") (V2BF "V4BF")
+ 			 (SF "V2SF")
  			 (V2SF "V2SF") (V4SF "V2SF")
  			 (V2DF "DF")])
  
+ ;; Same as above, but in lowercase.
+ (define_mode_attr vcond [(HI "v4hi") (SI "v2si")
+ 			 (V2HI "v4hi")
+ 			 (V4HI "v4hi") (V8HI "v4hi")
+ 			 (V2SI "v2si") (V4SI "v2si")
+ 			 (QI "v8qi") (V2QI "v8qi")
+ 			 (V4QI "v8qi")
+ 			 (DI   "di") (V2DI "di")
+ 			 (HF "v4hf") (V2HF "v4hf")
+ 			 (V4HF "v4hf") (V8HF "v4hf")
+ 			 (BF "v4bf") (V2BF "v4bf")
+ 			 (SF "v2sf")
+ 			 (V2SF "v2sf") (V4SF "v2sf")
+ 			 (V2DF "df")])
+ 
  ;; 128-bit container modes the inner or scalar source mode.
  (define_mode_attr VCONQ [(V8QI "V16QI") (V16QI "V16QI")
+ 			 (V4QI "V16QI") (V2QI "V16QI")
  			 (V4HI "V8HI") (V8HI "V8HI")
+ 			 (V2HI "V8HI")
  			 (V2SI "V4SI") (V4SI "V4SI")
  			 (DI   "V2DI") (V2DI "V2DI")
  			 (V4HF "V8HF") (V8HF "V8HF")
+ 			 (V2HF "V8HF") (HF "V8HF")
  			 (V4BF "V8BF") (V8BF "V8BF")
+ 			 (V2BF "V8BF") (BF "V8BF")
  			 (V2SF "V4SF") (V4SF "V4SF")
  			 (V2DF "V2DF") (SI   "V4SI")
  			 (HI   "V8HI") (QI   "V16QI")
  			 (SF   "V4SF") (DF   "V2DF")])
  
+ ;; Same as above, but in lowercase.
+ (define_mode_attr vconq [(V8QI "v16qi") (V16QI "v16qi")
+ 			 (V4QI "v16qi") (V2QI "v16qi")
+ 			 (V4HI "v8hi") (V8HI "v8hi")
+ 			 (V2HI "v8hi")
+ 			 (V2SI "v4si") (V4SI "v4si")
+ 			 (DI   "v2di") (V2DI "v2di")
+ 			 (V4HF "v8hf") (V8HF "v8hf")
+ 			 (V2HF "v8hf") (HF "v8hf")
+ 			 (V4BF "v8bf") (V8BF "v8bf")
+ 			 (V2BF "v8bf") (BF "v8bf")
+ 			 (V2SF "v4sf") (V4SF "v4sf")
+ 			 (V2DF "v2df") (SI   "v4si")
+ 			 (HI   "v8hi") (QI   "v16qi")
+ 			 (SF   "v4sf") (DF   "v2df")])
+ 
+ ;; SVE container modes for duplication into a full SVE register.
+ (define_mode_attr VCONSV [(V8QI "VNx16QI") (V4QI "VNx16QI")
+ 			  (V2QI "VNx16QI") (QI "VNx16QI")
+ 			  (V4HI "VNx8HI") (V2HI "VNx8HI")
+ 			  (HI "VNx8HI") (V2SI "VNx4SI")
+ 			  (SI "VNx4SI") (DI "VNx2DI")
+ 			  (V4BF "VNx8BF") (V2BF "VNx8BF")
+ 			  (BF "VNx8BF") (V4HF "VNx8HF")
+ 			  (V2HF "VNx8HF") (HF "VNx8HF")
+ 			  (V2SF "VNx4SF") (SF "VNx4SF")
+ 			  (DF "VNx2DF")])
+ 
+ ;; Same as above, but in lowercase.
+ (define_mode_attr vconsv [(V8QI "vnx16qi") (V4QI "vnx16qi")
+ 			  (V2QI "vnx16qi") (QI "vnx16qi")
+ 			  (V4HI "vnx8hi") (V2HI "vnx8hi")
+ 			  (HI "vnx8hi") (V2SI "vnx4si")
+ 			  (SI "vnx4si") (DI "vnx2di")
+ 			  (V4BF "vnx8bf") (V2BF "vnx8bf")
+ 			  (BF "vnx8bf") (V4HF "vnx8hf")
+ 			  (V2HF "vnx8hf") (HF "vnx8hf")
+ 			  (V2SF "vnx4sf") (SF "vnx4sf")
+ 			  (DF "vnx2df")])
+ 
  ;; Half modes of all vector modes.
  (define_mode_attr VHALF [(V8QI "V4QI")  (V16QI "V8QI")
  			 (V4HI "V2HI")  (V8HI  "V4HI")
***************
*** 1947,1956 ****
  (define_mode_attr V1half [(V2DI "v1di")  (V2DF  "v1df")])
  
  ;; Double modes of vector modes.
! (define_mode_attr VDBL [(V8QI "V16QI") (V4HI "V8HI")
  			(V4HF "V8HF")  (V4BF "V8BF")
  			(V2SI "V4SI")  (V2SF "V4SF")
  			(SI   "V2SI")  (SF   "V2SF")
  			(DI   "V2DI")  (DF   "V2DF")])
  
  ;; Load/store pair mode.
--- 2062,2077 ----
  (define_mode_attr V1half [(V2DI "v1di")  (V2DF  "v1df")])
  
  ;; Double modes of vector modes.
! (define_mode_attr VDBL [(V8QI "V16QI") (V4QI "V8QI")
! 			(V2QI "V4QI")  (V4HI "V8HI")
  			(V4HF "V8HF")  (V4BF "V8BF")
+ 			(V2BF "V4BF")
  			(V2SI "V4SI")  (V2SF "V4SF")
+ 			(V2HI "V4HI")  (V2HF "V4HF")
+ 			(BF   "V2BF")
  			(SI   "V2SI")  (SF   "V2SF")
+ 			(QI   "V2QI")
+ 			(HI   "V2HI")  (HF   "V2HF")
  			(DI   "V2DI")  (DF   "V2DF")])
  
  ;; Load/store pair mode.
***************
*** 2024,2029 ****
--- 2145,2170 ----
  (define_mode_attr V2ntype [(V8HI "16b") (V4SI "8h")
  			   (V2DI "4s")])
  
+ ;; Register suffix used when duplicating a value of a certain mode
+ ;; into a full 128-bit AdvSIMD register.
+ (define_mode_attr Vqduptype [(QI "16b") (V2QI "8h") (V4QI "4s") (V8QI "2d")
+ 			     (HI "8h") (V2HI "4s") (V4HI "2d")
+ 			     (HF "8h") (V2HF "4s") (V4HF "2d")
+ 			     (BF "8h") (V2BF "4s") (V4BF "2d")
+ 			     (SI "4s") (V2SI "2d")
+ 			     (SF "4s") (V2SF "2d")
+ 			     (DI "2d") (DF "2d")])
+ 
+ ;; Register suffix used when duplicating a value of a certain mode
+ ;; into a partial 64-bit AdvSIMD register.
+ (define_mode_attr Vdduptype [(QI "8b") (V2QI "4h") (V4QI "2s") (V8QI "")
+ 			     (HI "4h") (V2HI "2s") (V4HI "")
+ 			     (HF "4h") (V2HF "2s") (V4HF "")
+ 			     (BF "4h") (V2BF "2s") (V4BF "")
+ 			     (SI "2s") (V2SI "")
+ 			     (SF "2s") (V2SF "")
+ 			     (DI "") (DF "")])
+ 
  ;; The result of FCVTN on two vectors of the given mode.  The result has
  ;; twice as many QI elements as the input.
  (define_mode_attr VPACKB [(V4HF "V8QI") (V8HF "V16QI") (V4SF "V8QI")])
***************
*** 2148,2165 ****
  ;; Whether a mode fits in W or X registers (i.e. "w" for 32-bit modes
  ;; and "x" for 64-bit modes).
  (define_mode_attr single_wx [(SI   "w") (SF   "w")
  			     (V8QI "x") (V4HI "x")
  			     (V4HF "x") (V4BF "x")
  			     (V2SI "x") (V2SF "x")
  			     (DI   "x") (DF   "x")])
  
  ;; Whether a mode fits in S or D registers (i.e. "s" for 32-bit modes
  ;; and "d" for 64-bit modes).
  (define_mode_attr single_type [(SI   "s") (SF   "s")
  			       (V8QI "d") (V4HI "d")
  			       (V4HF "d") (V4BF "d")
  			       (V2SI "d") (V2SF "d")
! 			       (DI   "d") (DF   "d")])
  
  ;; Whether a double-width mode fits in D or Q registers (i.e. "d" for
  ;; 32-bit modes and "q" for 64-bit modes).
--- 2289,2324 ----
  ;; Whether a mode fits in W or X registers (i.e. "w" for 32-bit modes
  ;; and "x" for 64-bit modes).
  (define_mode_attr single_wx [(SI   "w") (SF   "w")
+ 			     (V2QI "w") (V4QI "w")
  			     (V8QI "x") (V4HI "x")
  			     (V4HF "x") (V4BF "x")
+ 			     (V2HI "w") (V2HF "w")
+ 			     (HF   "w") (QI   "w")
+ 			     (V2BF "w") (BF   "w")
+ 			     (HI   "w")
  			     (V2SI "x") (V2SF "x")
  			     (DI   "x") (DF   "x")])
  
+ (define_mode_attr single_dwx [(SI  "x") (SF   "x")
+ 			     (V2QI "w") (V4QI "x")
+ 			     (V2HI "x") (V2HF "x")
+ 			     (HF   "w") (QI   "w")
+ 			     (V2BF "x") (BF   "w")
+ 			     (HI   "w")])
+ 
+ 
  ;; Whether a mode fits in S or D registers (i.e. "s" for 32-bit modes
  ;; and "d" for 64-bit modes).
  (define_mode_attr single_type [(SI   "s") (SF   "s")
  			       (V8QI "d") (V4HI "d")
  			       (V4HF "d") (V4BF "d")
  			       (V2SI "d") (V2SF "d")
! 			       (DI   "d") (DF   "d")
! 			       (QI   "b") (BF   "h")
! 			       (V2HF "s") (HI   "h")
! 			       (V4QI "s") (V2QI "h")
! 			       (V2HI "s") (V2BF "s")
! 			       (HF   "h")])
  
  ;; Whether a double-width mode fits in D or Q registers (i.e. "d" for
  ;; 32-bit modes and "q" for 64-bit modes).
***************
*** 2169,2174 ****
--- 2328,2341 ----
  			        (V2SI "q") (V2SF "q")
  			        (DI   "q") (DF   "q")])
  
+ ;; Scalar size of a sub-128-bit vector or scalar mode.
+ (define_mode_attr vstype [(V8QI "d") (V4QI "s") (V2QI "h") (QI "b")
+ 			  (V4HI "d") (V2HI "s") (HI "h")
+ 			  (V2SI "d") (SI "s") (DI "d")
+ 			  (V4BF "d") (V2BF "s") (BF "h")
+ 			  (V4HF "d") (V2HF "s") (HF "h")
+ 			  (V2SF "d") (SF "s") (DF "d")])
+ 
  ;; Define corresponding core/FP element mode for each vector mode.
  (define_mode_attr vw [(V8QI "w") (V16QI "w")
  		      (V4HI "w") (V8HI "w")
diff -Nrcpad gcc-17-20260524/gcc/config/aarch64/predicates.md gcc-17-20260531/gcc/config/aarch64/predicates.md
*** gcc-17-20260524/gcc/config/aarch64/predicates.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/aarch64/predicates.md	Sun May 31 22:32:05 2026
***************
*** 254,268 ****
  
  (define_predicate "aarch64_shift_imm_si"
    (and (match_code "const_int")
!        (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) < 32")))
  
  (define_predicate "aarch64_shift_imm_di"
    (and (match_code "const_int")
!        (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) < 64")))
  
  (define_predicate "aarch64_shift_imm64_di"
    (and (match_code "const_int")
!        (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) <= 64")))
  
  (define_predicate "aarch64_reg_or_shift_imm_si"
    (ior (match_operand 0 "register_operand")
--- 254,268 ----
  
  (define_predicate "aarch64_shift_imm_si"
    (and (match_code "const_int")
!        (match_test "UINTVAL (op) < 32")))
  
  (define_predicate "aarch64_shift_imm_di"
    (and (match_code "const_int")
!        (match_test "UINTVAL (op) < 64")))
  
  (define_predicate "aarch64_shift_imm64_di"
    (and (match_code "const_int")
!        (match_test "UINTVAL (op) <= 64")))
  
  (define_predicate "aarch64_reg_or_shift_imm_si"
    (ior (match_operand 0 "register_operand")
***************
*** 276,282 ****
  ;; range 0..4.
  (define_predicate "aarch64_imm3"
    (and (match_code "const_int")
!        (match_test "(unsigned HOST_WIDE_INT) INTVAL (op) <= 4")))
  
  ;; The imm2 field is a 2-bit field that only accepts immediates in the
  ;; range 0..3.
--- 276,282 ----
  ;; range 0..4.
  (define_predicate "aarch64_imm3"
    (and (match_code "const_int")
!        (match_test "UINTVAL (op) <= 4")))
  
  ;; The imm2 field is a 2-bit field that only accepts immediates in the
  ;; range 0..3.
***************
*** 645,650 ****
--- 645,659 ----
  	    (match_test "op == const0_rtx")
  	    (match_operand 0 "aarch64_simd_or_scalar_imm_zero"))))
  
+ ;; Same as above, but a zero const_vector is only allowed when a
+ ;; corresponding single-insn (i.e. not involving MOVPRFX) alternative is
+ ;; enabled.  Used for zeroing predication forms of some SVE2.2
+ ;; instructions.
+ (define_predicate "aarch64_simd_reg_or_direct_zero"
+   (ior (and (match_test "TARGET_SVE2p2_OR_SME2p2")
+ 	    (match_operand 0 "aarch64_simd_reg_or_zero"))
+        (match_operand 0 "register_operand")))
+ 
  (define_predicate "aarch64_simd_reg_or_minus_one"
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "aarch64_simd_imm_minus_one")))
diff -Nrcpad gcc-17-20260524/gcc/config/arm/arm.cc gcc-17-20260531/gcc/config/arm/arm.cc
*** gcc-17-20260524/gcc/config/arm/arm.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/arm/arm.cc	Sun May 31 22:32:05 2026
*************** arm_return_in_memory (const_tree type, c
*** 6134,6140 ****
  	 some of the detail.  */
        if (!AGGREGATE_TYPE_P (type)
  	  /* A _BitInt(N) for N <= 64 is a simple, non-aggregate type.  */
! 	  && !(TREE_CODE (type) == BITINT_TYPE && size > 8)
  	  && TREE_CODE (type) != VECTOR_TYPE
  	  && TREE_CODE (type) != COMPLEX_TYPE)
  	return false;
--- 6134,6140 ----
  	 some of the detail.  */
        if (!AGGREGATE_TYPE_P (type)
  	  /* A _BitInt(N) for N <= 64 is a simple, non-aggregate type.  */
! 	  && !(BITINT_TYPE_P (type) && size > 8)
  	  && TREE_CODE (type) != VECTOR_TYPE
  	  && TREE_CODE (type) != COMPLEX_TYPE)
  	return false;
*************** arm_return_in_memory (const_tree type, c
*** 6166,6172 ****
  
    if (!AGGREGATE_TYPE_P (type)
        /* A _BitInt(N) for N <= 64 is a simple, non-aggregate type.  */
!       && !(TREE_CODE (type) == BITINT_TYPE && size > 8)
        && (TREE_CODE (type) != VECTOR_TYPE))
      /* All simple types are returned in registers.  */
      return false;
--- 6166,6172 ----
  
    if (!AGGREGATE_TYPE_P (type)
        /* A _BitInt(N) for N <= 64 is a simple, non-aggregate type.  */
!       && !(BITINT_TYPE_P (type) && size > 8)
        && (TREE_CODE (type) != VECTOR_TYPE))
      /* All simple types are returned in registers.  */
      return false;
*************** arm_needs_doubleword_align (machine_mode
*** 7227,7233 ****
      return GET_MODE_ALIGNMENT (mode) > PARM_BOUNDARY;
  
    /* For any _BitInt(N) where N > 32 the ABI demands double word alignment.  */
!   if (TREE_CODE (type) == BITINT_TYPE)
      {
        if (int_size_in_bytes (type) > 4)
  	return 1;
--- 7227,7233 ----
      return GET_MODE_ALIGNMENT (mode) > PARM_BOUNDARY;
  
    /* For any _BitInt(N) where N > 32 the ABI demands double word alignment.  */
!   if (BITINT_TYPE_P (type))
      {
        if (int_size_in_bytes (type) > 4)
  	return 1;
diff -Nrcpad gcc-17-20260524/gcc/config/avr/avr-fixed.md gcc-17-20260531/gcc/config/avr/avr-fixed.md
*** gcc-17-20260524/gcc/config/avr/avr-fixed.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/avr/avr-fixed.md	Sun May 31 22:32:05 2026
***************
*** 43,51 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
! ;; Same so that be can build cross products
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
--- 43,51 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
! ;; Same so that we can build cartesian products.
  
  (define_mode_iterator FIXED_B
    [QQ UQQ
***************
*** 53,59 ****
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
--- 53,59 ----
     SQ USQ SA USA
     DQ UDQ DA UDA
     TA UTA
!    QI HI PSI SI DI])
  
  (define_insn_and_split "fract<FIXED_B:mode><FIXED_A:mode>2"
    [(set (match_operand:FIXED_A 0 "register_operand" "=r")
diff -Nrcpad gcc-17-20260524/gcc/config/avr/avr.cc gcc-17-20260531/gcc/config/avr/avr.cc
*** gcc-17-20260524/gcc/config/avr/avr.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/avr/avr.cc	Sun May 31 22:32:05 2026
*************** avr_rotate_bytes (rtx operands[])
*** 11131,11138 ****
  }
  
  
  /* Worker function for `ADJUST_INSN_LENGTH'.  */
! /* Modifies the length assigned to instruction INSN
     LEN is the initially computed length of the insn.  */
  
  int
--- 11131,11387 ----
  }
  
  
+ /* Read a non-negative decimal number from a string starting at START.
+    Set *END to one position past the last digit of the number.  */
+ 
+ static int
+ avr_read_number (const char *start, const char **end)
+ {
+   int num = 0;
+   for (*end = start; **end >= '0' && **end <= '9'; ++(*end))
+     num = 10 * num + **end - '0';
+ 
+   return num;
+ }
+ 
+ 
+ /* Return the sum over all [[len=<words>]] annotations in inline asm INSN.
+    TPL is the asm template, N_XOP the number of operands, or -1 when the
+    asm has no operands (not even zero operands).  XOP[] are these operands.
+    LOC is the location of the asm, and DEFAULT_LEN is the code length
+    in words as determined by the middle-end from the number of logical and
+    physical line breaks in TPL.
+ 
+    When an invalid %-reference or an unrecognized [[len=... is found,
+    then return -1.  Otherwise, return the sum over all [[len=<words>]]
+    annotations, where:
+ 
+    <words> = nl
+ 	The number of lines in the code template.
+ 	This is half the default size.
+ 
+    <words> = [0-9]+
+ 	Specifies a non-negative decimal integer.
+ 
+    <words> = %[0-9]+
+    <words> = %[<name>]   # Already resolved to %[0-9]+ by the middle-end.
+ 	Refers to the respective asm operand, which must be CONST_INT.
+ 
+    <words> = lds
+    <words> = sts
+ 	Specifies the length of a LDS or STS instruction, i.e.
+ 	1 word if AVR_TINY, and 2 words otherwise.
+ 
+    <words> = %~
+    <words> = %~call
+    <words> = %~jmp
+ 	Specifies the length of a %~call resp. %~jmp instruction, i.e.
+ 	2 words if AVR_HAVE_JMP_CALL, and 1 word otherwise.
+ 
+    In order to observe the assigned lengths, see -fdump-rtl-shorten or the
+    asm output with -mlog=insn_addresses.  */
+ 
+ static int
+ avr_length_of_asm (rtx_insn *insn, int default_len, const char *tpl,
+ 		   int n_xop, rtx *xop, location_t loc)
+ {
+   const char *const len_begin = "[[len=";
+   const char *const len_end = "]]";
+   const char *pos = strstr (tpl, len_begin);
+   int len = 0;
+ 
+   if (! pos)
+     return -1;
+ 
+   avr_dump ("\n;;; Calculating length of asm insn (default=%d, warn=%d):\n"
+ 	    "%r\n", default_len, avropt_warn_asmlen_notes, insn);
+ 
+   for (; pos; pos = strstr (pos, len_begin))
+     {
+       const char *const pos_begin = pos;
+       const char *const pos_end = strstr (pos, len_end);
+ 
+       pos += strlen (len_begin);
+       const bool percent_p = pos[0] == '%' && pos[1] != '~';
+       int inc = -1;
+ 
+       if (startswith (pos, "%~")
+ 	  // %-resolution only applies to asm with operands.
+ 	  && n_xop >= 0)
+ 	{
+ 	  // "%~" specifies the length of %~jmp / %~call.
+ 	  inc = AVR_HAVE_JMP_CALL ? 2 : 1;
+ 	  pos += 2;
+ 
+ 	  // Allow an optional suffix of "jmp" or "call".
+ 	  if (startswith (pos, "jmp"))
+ 	    pos += 3;
+ 	  else if (startswith (pos, "call"))
+ 	    pos += 4;
+ 	}
+       else if (startswith (pos, "nl"))
+ 	{
+ 	  // "nl" denotes the number of lines in the code template,
+ 	  // which is half of the default length.
+ 	  inc = asm_str_count (tpl);
+ 	  pos += 2;
+ 	}
+       else if (startswith (pos, "lds")
+ 	       || startswith (pos, "sts"))
+ 	{
+ 	  // "lds" specifies the length of LDS or STS.
+ 	  inc = AVR_TINY ? 1 : 2;
+ 	  pos += 3;
+ 	}
+       else if (! percent_p
+ 	       // %-resolution only applies to asm with operands.
+ 	       || n_xop >= 0)
+ 	{
+ 	  // A plain decimal number <num>, or %<num> to refer to the
+ 	  // <num>-th asm operand.  Notice that the middle-end has already
+ 	  // resolved named operand references like %[name] to the respective
+ 	  // operand number (provided such a named operand exists).
+ 	  pos += percent_p;
+ 	  const char *end;
+ 	  const int num = avr_read_number (pos, &end);
+ 	  inc = end > pos ? num : -1;
+ 	  pos = end;
+ 	}
+ 
+       /* Prepare a code quote so we have it handy in maybe diagnostics.  */
+ 
+       // Only show the gist of an unrecognized annotation.
+       // Recognized notes are short, so show only the relevant
+       // part and display the rest as ...'s.
+       const char *dots = "...";
+       const size_t l_pos_begin = strlen (pos_begin);
+       const size_t l_pos = pos_end ? pos_end - pos_begin : l_pos_begin;
+       const size_t l_show = pos - pos_begin + 5;
+       char *msg = XALLOCAVEC (char, 1 + strlen (tpl) + strlen (dots));
+       strcpy (msg, pos_begin);
+       if (l_pos > l_show + 2 * strlen (dots))
+ 	{
+ 	  msg[l_show] = '\0';
+ 	  strcat (msg, dots);
+ 	  if (pos_end)
+ 	    strncat (msg, pos_end - 4, 4);
+ 	}
+       else if (pos_end)
+ 	msg[l_pos] = '\0';
+       if (pos_end)
+ 	strcat (msg, len_end);
+ 
+       /* Now use inc or diagnose a problem.  */
+ 
+       if (inc >= 0 && pos == pos_end)
+ 	{
+ 	  pos += strlen (len_end);
+ 
+ 	  avr_dump (";;; len = %s + %s%d",
+ 		    len ? "len" : "0", percent_p ? "%" : "", inc);
+ 	  if (percent_p)
+ 	    {
+ 	      // Map inc to the value of the inc-th asm operand,
+ 	      // which must be CONST_INT.
+ 
+ 	      if (inc >= n_xop)
+ 		{
+ 		  // For asm with >= 0 operands, the middle-end will issue
+ 		  // an error message.
+ 		  avr_dump ("\n;;; Ignored: op %d does not exist\n\n", inc);
+ 		  return -1;
+ 		}
+ 	      if (! CONST_INT_P (xop[inc]))
+ 		{
+ 		  avr_dump ("\n;;; Ignored: op %d is not CONST_INT\n\n", inc);
+ 		  warning_at (loc, OPT_Wasm_len_notes, "%<asm%> len annotation"
+ 			      " ignored: operand %d is not a compile-time"
+ 			      " integer constant: %qs", inc, msg);
+ 		  return -1;
+ 		}
+ 	      inc = UINTVAL (xop[inc]) > 1000000 ? 1000000 : INTVAL (xop[inc]);
+ 	      avr_dump (" = %s + %d", len ? "len" : "0", inc);
+ 	    } // %
+ 
+ 	  len += inc;
+ 	  avr_dump (" = %d\n", len);
+ 	}
+       else // inc < 0 || pos != pos_end
+ 	{
+ 	  // FIXME: Diagnosing is void in LTO mode, except when compiled
+ 	  // with `-ffat-lto-objects' (in which case cc1[plus] is diagnosing,
+ 	  // not lto1).
+ 	  if (pos_end)
+ 	    {
+ 	      avr_dump (";;; Ignored: %s\n\n", msg);
+ 	      warning_at (loc, OPT_Wasm_len_notes, "%<asm%> len annotation"
+ 			  " ignored: %qs", msg);
+ 	    }
+ 	  else
+ 	    {
+ 	      avr_dump (";;; Ignored (no %s): %s\n\n", len_end, msg);
+ 	      warning_at (loc, OPT_Wasm_len_notes, "%<asm%> len annotation"
+ 			  " ignored: misses closing %qs: %qs", len_end, msg);
+ 	    }
+ 	  return -1;
+ 	}
+     }
+   avr_dump ("\n");
+ 
+   return len;
+ }
+ 
+ 
+ /* A helper for the function below.  Recognize [[len=<words>]] annotations
+    in the inline asm template of INSN, so the user can specify the length
+    of an asm.  This can solve two problems:
+ 
+    - Cases where the expanded asm is longer than determined from the number
+      of physical and logical line breaks.  Such cases can lead to errors
+      when a jump that uses a too optimistic jump offset is crossing an asm.
+ 
+    - Better code generation for jumps that are crossing an asm.  The default
+      length of an asm is (1 + NL) * 2 words, where NL denotes the sum of
+      physical and logical line breaks.  However, almost all AVR instructions
+      occupy only one 16-bit word.
+ 
+    LEN is the length in units of 16-bit words as determined by the middle-end.
+    When no annotation has been found or a diagnostic occurred, return -1.  */
+ 
+ static int
+ avr_maybe_length_of_asm (rtx_insn *insn, int len)
+ {
+   if (avropt_asmlen_notes
+       && NONDEBUG_INSN_P (insn))
+     {
+       rtx body = PATTERN (insn);
+ 
+       if (asm_noperands (body) >= 0)
+ 	{
+ 	  // An `asm' construct with operands.
+ 
+ 	  location_t loc;
+ 	  int n_ops = asm_noperands (body);
+ 	  rtx *ops = XALLOCAVEC (rtx, n_ops);
+ 	  const char *tpl = decode_asm_operands (body, ops, NULL, NULL, NULL,
+ 						 &loc);
+ 	  return avr_length_of_asm (insn, len, tpl, n_ops, ops, loc);
+ 	}
+       else if (GET_CODE (body) == ASM_INPUT)
+ 	{
+ 	  // An `asm' construct without operands.
+ 
+ 	  return avr_length_of_asm (insn, len, XSTR (body, 0), -1, nullptr,
+ 				    ASM_INPUT_SOURCE_LOCATION (body));
+ 	}
+     }
+ 
+   return -1;
+ }
+ 
+ 
  /* Worker function for `ADJUST_INSN_LENGTH'.  */
! /* Modifies the length assigned to instruction INSN.
     LEN is the initially computed length of the insn.  */
  
  int
*************** avr_adjust_insn_length (rtx_insn *insn,
*** 11151,11159 ****
       It is easier to state this in an insn attribute "adjust_len" than
       to clutter up code here...  */
  
!   if (!NONDEBUG_INSN_P (insn) || recog_memoized (insn) == -1)
      {
!       return len;
      }
  
    /* Read from insn attribute "adjust_len" if/how length is to be adjusted.  */
--- 11400,11413 ----
       It is easier to state this in an insn attribute "adjust_len" than
       to clutter up code here...  */
  
!   if (!NONDEBUG_INSN_P (insn))
!     return len;
! 
!   if (recog_memoized (insn) == -1)
      {
!       // Let the user specify the length of the asm with [[len=<words>]]'s.
!       const int len_asm = avr_maybe_length_of_asm (insn, len);
!       return len_asm < 0 ? len : len_asm;
      }
  
    /* Read from insn attribute "adjust_len" if/how length is to be adjusted.  */
diff -Nrcpad gcc-17-20260524/gcc/config/avr/avr.md gcc-17-20260531/gcc/config/avr/avr.md
*** gcc-17-20260524/gcc/config/avr/avr.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/avr/avr.md	Sun May 31 22:32:05 2026
***************
*** 546,578 ****
  ;;========================================================================
  ;; Move stuff around
  
! ;; Expand helper for mov<mode>.
! (define_expand "gen_load<mode>_libgcc"
!   [(set (match_dup 3)
!         (match_dup 2))
!    (set (reg:MOVMODE 22)
!         (match_operand:MOVMODE 1 "memory_operand"))
!    (set (match_operand:MOVMODE 0 "register_operand")
!         (reg:MOVMODE 22))]
!   "avr_load_libgcc_p (operands[1])"
!   {
!     operands[3] = gen_rtx_REG (HImode, REG_Z);
!     operands[2] = force_operand (XEXP (operands[1], 0), NULL_RTX);
!     operands[1] = replace_equiv_address (operands[1], operands[3]);
!     set_mem_addr_space (operands[1], ADDR_SPACE_FLASH);
!   })
! 
! ;; "load_qi_libgcc"
! ;; "load_hi_libgcc"
  ;; "load_psi_libgcc"
  ;; "load_si_libgcc"
  ;; "load_sf_libgcc"
  (define_insn_and_split "load_<mode>_libgcc"
!   [(set (reg:MOVMODE 22)
!         (match_operand:MOVMODE 0 "memory_operand" "m"))]
!   "avr_load_libgcc_p (operands[0])
!    && REG_P (XEXP (operands[0], 0))
!    && REG_Z == REGNO (XEXP (operands[0], 0))"
    "#"
    "&& reload_completed"
    [(scratch)]
--- 546,563 ----
  ;;========================================================================
  ;; Move stuff around
  
! ;; On devices without LPMx, __flash values > 2 bytes
! ;; are loaded with libgcc's __load_<size>.
! ;; Must be prior to the mov<mode> insns.
! ;; "load_qi_libgcc" (unused)
! ;; "load_hi_libgcc" (unused)
  ;; "load_psi_libgcc"
  ;; "load_si_libgcc"
  ;; "load_sf_libgcc"
  (define_insn_and_split "load_<mode>_libgcc"
!   [(set (match_operand:MOVMODE 0 "register_operand" "={r22}")
!         (match_operand:MOVMODE 1 "memory_operand"     "m"))]
!   "avr_load_libgcc_p (operands[1])"
    "#"
    "&& reload_completed"
    [(scratch)]
***************
*** 823,834 ****
          DONE;
        }
  
!     if (avr_load_libgcc_p (src))
!       {
!         // For the small devices, do loads per libgcc call.
!         emit_insn (gen_gen_load<mode>_libgcc (dest, src));
!         DONE;
!       }
    })
  
  ;;========================================================================
--- 808,815 ----
          DONE;
        }
  
!     // The avr_load_libgcc_p (src) insns are handled above by
!     // "load_<mode>_libgcc".  They look like ordinary move insns.
    })
  
  ;;========================================================================
***************
*** 3756,3794 ****
  ; divmod
  
  ;; Generate lib1funcs.S calls ourselves, because:
! ;;  - we know exactly which registers are clobbered (for QI and HI
! ;;    modes, some of the call-used registers are preserved)
! ;;  - we get both the quotient and the remainder at no extra cost
! ;;  - we split the patterns only after the first CSE passes because
! ;;    CSE has problems to operate on hard regs.
! ;;
! (define_insn_and_split "divmodqi4"
!   [(set (match_operand:QI 0 "pseudo_register_operand")
!         (div:QI (match_operand:QI 1 "pseudo_register_operand")
!                 (match_operand:QI 2 "pseudo_register_operand")))
!    (set (match_operand:QI 3 "pseudo_register_operand")
!         (mod:QI (match_dup 1) (match_dup 2)))
!    (clobber (reg:QI 22))
!    (clobber (reg:QI 23))
!    (clobber (reg:QI 24))
!    (clobber (reg:QI 25))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:QI 24) (match_dup 1))
!    (set (reg:QI 22) (match_dup 2))
!    (parallel [(set (reg:QI 24) (div:QI (reg:QI 24) (reg:QI 22)))
!               (set (reg:QI 25) (mod:QI (reg:QI 24) (reg:QI 22)))
!               (clobber (reg:QI 22))
!               (clobber (reg:QI 23))])
!    (set (match_dup 0) (reg:QI 24))
!    (set (match_dup 3) (reg:QI 25))])
  
! (define_insn_and_split "*divmodqi4_call_split"
!   [(set (reg:QI 24) (div:QI (reg:QI 24) (reg:QI 22)))
!    (set (reg:QI 25) (mod:QI (reg:QI 24) (reg:QI 22)))
!    (clobber (reg:QI 22))
!    (clobber (reg:QI 23))]
    ""
    "#"
    "&& reload_completed"
--- 3737,3754 ----
  ; divmod
  
  ;; Generate lib1funcs.S calls ourselves, because:
! ;; - We know exactly which registers are clobbered, and for QI, HI
! ;;   and PSI modes, some of the call-used registers are preserved.
! ;; - We get both the quotient and the remainder at no extra cost.
  
! (define_insn_and_split "divmodqi4"
!   [(set (match_operand:QI 0 "register_operand"        "={r24}")
!         (div:QI (match_operand:QI 1 "register_operand" "{r24}")
!                 (match_operand:QI 2 "register_operand" "{r22}")))
!    (set (match_operand:QI 3 "register_operand"        "={r25}")
!         (mod:QI (match_dup 1)
!                 (match_dup 2)))
!    (clobber (match_scratch:HI 4                       "={r22}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 3798,3835 ****
  (define_insn "*divmodqi4_call"
    [(set (reg:QI 24) (div:QI (reg:QI 24) (reg:QI 22)))
     (set (reg:QI 25) (mod:QI (reg:QI 24) (reg:QI 22)))
!    (clobber (reg:QI 22))
!    (clobber (reg:QI 23))
     (clobber (reg:CC REG_CC))]
    "reload_completed"
    "%~call __divmodqi4"
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodqi4"
!  [(set (match_operand:QI 0 "pseudo_register_operand")
!        (udiv:QI (match_operand:QI 1 "pseudo_register_operand")
!                 (match_operand:QI 2 "pseudo_register_operand")))
!   (set (match_operand:QI 3 "pseudo_register_operand")
!        (umod:QI (match_dup 1) (match_dup 2)))
!   (clobber (reg:QI 22))
!   (clobber (reg:QI 23))
!   (clobber (reg:QI 24))
!   (clobber (reg:QI 25))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:QI 24) (match_dup 1))
!    (set (reg:QI 22) (match_dup 2))
!    (parallel [(set (reg:QI 24) (udiv:QI (reg:QI 24) (reg:QI 22)))
!               (set (reg:QI 25) (umod:QI (reg:QI 24) (reg:QI 22)))
!               (clobber (reg:QI 23))])
!    (set (match_dup 0) (reg:QI 24))
!    (set (match_dup 3) (reg:QI 25))])
! 
! (define_insn_and_split "*udivmodqi4_call_split"
!   [(set (reg:QI 24) (udiv:QI (reg:QI 24) (reg:QI 22)))
!    (set (reg:QI 25) (umod:QI (reg:QI 24) (reg:QI 22)))
!    (clobber (reg:QI 23))]
    ""
    "#"
    "&& reload_completed"
--- 3758,3777 ----
  (define_insn "*divmodqi4_call"
    [(set (reg:QI 24) (div:QI (reg:QI 24) (reg:QI 22)))
     (set (reg:QI 25) (mod:QI (reg:QI 24) (reg:QI 22)))
!    (clobber (reg:HI 22))
     (clobber (reg:CC REG_CC))]
    "reload_completed"
    "%~call __divmodqi4"
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodqi4"
!   [(set (match_operand:QI 0 "register_operand"         "={r24}")
!         (udiv:QI (match_operand:QI 1 "register_operand" "{r24}")
!                  (match_operand:QI 2 "register_operand" "{r22}")))
!    (set (match_operand:QI 3 "register_operand"         "={r25}")
!         (umod:QI (match_dup 1)
!                  (match_dup 2)))
!    (clobber (match_scratch:QI 4                        "={r23}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 3845,3877 ****
    "%~call __udivmodqi4"
    [(set_attr "type" "xcall")])
  
! (define_insn_and_split "divmodhi4"
!   [(set (match_operand:HI 0 "pseudo_register_operand")
!         (div:HI (match_operand:HI 1 "pseudo_register_operand")
!                 (match_operand:HI 2 "pseudo_register_operand")))
!    (set (match_operand:HI 3 "pseudo_register_operand")
!         (mod:HI (match_dup 1) (match_dup 2)))
!    (clobber (reg:QI 21))
!    (clobber (reg:HI 22))
!    (clobber (reg:HI 24))
!    (clobber (reg:HI 26))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:HI 24) (match_dup 1))
!    (set (reg:HI 22) (match_dup 2))
!    (parallel [(set (reg:HI 22) (div:HI (reg:HI 24) (reg:HI 22)))
!               (set (reg:HI 24) (mod:HI (reg:HI 24) (reg:HI 22)))
!               (clobber (reg:HI 26))
!               (clobber (reg:QI 21))])
!    (set (match_dup 0) (reg:HI 22))
!    (set (match_dup 3) (reg:HI 24))])
  
! (define_insn_and_split "*divmodhi4_call_split"
!   [(set (reg:HI 22) (div:HI (reg:HI 24) (reg:HI 22)))
!    (set (reg:HI 24) (mod:HI (reg:HI 24) (reg:HI 22)))
!    (clobber (reg:HI 26))
!    (clobber (reg:QI 21))]
    ""
    "#"
    "&& reload_completed"
--- 3787,3804 ----
    "%~call __udivmodqi4"
    [(set_attr "type" "xcall")])
  
! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;; 16-bit divmod
  
! (define_insn_and_split "divmodhi4"
!   [(set (match_operand:HI 0 "register_operand"        "={r22}")
!         (div:HI (match_operand:HI 1 "register_operand" "{r24}")
!                 (match_operand:HI 2 "register_operand" "{r22}")))
!    (set (match_operand:HI 3 "register_operand"        "={r24}")
!         (mod:HI (match_dup 1)
!                 (match_dup 2)))
!    (clobber (match_scratch:HI 4                       "={r26}"))
!    (clobber (match_scratch:QI 5                       "={r21}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 3889,3920 ****
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodhi4"
!   [(set (match_operand:HI 0 "pseudo_register_operand")
!         (udiv:HI (match_operand:HI 1 "pseudo_register_operand")
!                  (match_operand:HI 2 "pseudo_register_operand")))
!    (set (match_operand:HI 3 "pseudo_register_operand")
!         (umod:HI (match_dup 1) (match_dup 2)))
!    (clobber (reg:QI 21))
!    (clobber (reg:HI 22))
!    (clobber (reg:HI 24))
!    (clobber (reg:HI 26))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:HI 24) (match_dup 1))
!    (set (reg:HI 22) (match_dup 2))
!    (parallel [(set (reg:HI 22) (udiv:HI (reg:HI 24) (reg:HI 22)))
!               (set (reg:HI 24) (umod:HI (reg:HI 24) (reg:HI 22)))
!               (clobber (reg:HI 26))
!               (clobber (reg:QI 21))])
!    (set (match_dup 0) (reg:HI 22))
!    (set (match_dup 3) (reg:HI 24))])
! 
! (define_insn_and_split "*udivmodhi4_call_split"
!   [(set (reg:HI 22) (udiv:HI (reg:HI 24) (reg:HI 22)))
!    (set (reg:HI 24) (umod:HI (reg:HI 24) (reg:HI 22)))
!    (clobber (reg:HI 26))
!    (clobber (reg:QI 21))]
    ""
    "#"
    "&& reload_completed"
--- 3816,3829 ----
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodhi4"
!   [(set (match_operand:HI 0 "register_operand"         "={r22}")
!         (udiv:HI (match_operand:HI 1 "register_operand" "{r24}")
!                  (match_operand:HI 2 "register_operand" "{r22}")))
!    (set (match_operand:HI 3 "register_operand"         "={r24}")
!         (umod:HI (match_dup 1)
!                  (match_dup 2)))
!    (clobber (match_scratch:HI 4                        "={r26}"))
!    (clobber (match_scratch:QI 5                        "={r21}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 3926,3933 ****
     (set (reg:HI 24) (umod:HI (reg:HI 24) (reg:HI 22)))
     (clobber (reg:HI 26))
     (clobber (reg:QI 21))
!    (clobber (reg:CC REG_CC))
!    ]
    "reload_completed"
    "%~call __udivmodhi4"
    [(set_attr "type" "xcall")])
--- 3835,3841 ----
     (set (reg:HI 24) (umod:HI (reg:HI 24) (reg:HI 22)))
     (clobber (reg:HI 26))
     (clobber (reg:QI 21))
!    (clobber (reg:CC REG_CC))]
    "reload_completed"
    "%~call __udivmodhi4"
    [(set_attr "type" "xcall")])
***************
*** 4167,4199 ****
  ;; implementation works the other way round.
  
  (define_insn_and_split "divmodpsi4"
!   [(set (match_operand:PSI 0 "pseudo_register_operand")
!         (div:PSI (match_operand:PSI 1 "pseudo_register_operand")
!                  (match_operand:PSI 2 "pseudo_register_operand")))
!    (set (match_operand:PSI 3 "pseudo_register_operand")
          (mod:PSI (match_dup 1)
                   (match_dup 2)))
!    (clobber (reg:DI 18))
!    (clobber (reg:QI 26))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:PSI 22) (match_dup 1))
!    (set (reg:PSI 18) (match_dup 2))
!    (parallel [(set (reg:PSI 22) (div:PSI (reg:PSI 22) (reg:PSI 18)))
!               (set (reg:PSI 18) (mod:PSI (reg:PSI 22) (reg:PSI 18)))
!               (clobber (reg:QI 21))
!               (clobber (reg:QI 25))
!               (clobber (reg:QI 26))])
!    (set (match_dup 0) (reg:PSI 22))
!    (set (match_dup 3) (reg:PSI 18))])
! 
! (define_insn_and_split "*divmodpsi4_call_split"
!   [(set (reg:PSI 22) (div:PSI (reg:PSI 22) (reg:PSI 18)))
!    (set (reg:PSI 18) (mod:PSI (reg:PSI 22) (reg:PSI 18)))
!    (clobber (reg:QI 21))
!    (clobber (reg:QI 25))
!    (clobber (reg:QI 26))]
    ""
    "#"
    "&& reload_completed"
--- 4075,4089 ----
  ;; implementation works the other way round.
  
  (define_insn_and_split "divmodpsi4"
!   [(set (match_operand:PSI 0 "register_operand"         "={r22}")
!         (div:PSI (match_operand:PSI 1 "register_operand" "{r22}")
!                  (match_operand:PSI 2 "register_operand" "{r18}")))
!    (set (match_operand:PSI 3 "register_operand"         "={r18}")
          (mod:PSI (match_dup 1)
                   (match_dup 2)))
!    (clobber (match_scratch:QI 4                         "={r21}"))
!    (clobber (match_scratch:QI 5                         "={r25}"))
!    (clobber (match_scratch:QI 6                         "={r26}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 4212,4244 ****
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodpsi4"
!   [(set (match_operand:PSI 0 "pseudo_register_operand")
!         (udiv:PSI (match_operand:PSI 1 "pseudo_register_operand")
!                   (match_operand:PSI 2 "pseudo_register_operand")))
!    (set (match_operand:PSI 3 "pseudo_register_operand")
          (umod:PSI (match_dup 1)
                    (match_dup 2)))
!    (clobber (reg:DI 18))
!    (clobber (reg:QI 26))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:PSI 22) (match_dup 1))
!    (set (reg:PSI 18) (match_dup 2))
!    (parallel [(set (reg:PSI 22) (udiv:PSI (reg:PSI 22) (reg:PSI 18)))
!               (set (reg:PSI 18) (umod:PSI (reg:PSI 22) (reg:PSI 18)))
!               (clobber (reg:QI 21))
!               (clobber (reg:QI 25))
!               (clobber (reg:QI 26))])
!    (set (match_dup 0) (reg:PSI 22))
!    (set (match_dup 3) (reg:PSI 18))])
! 
! (define_insn_and_split "*udivmodpsi4_call_split"
!   [(set (reg:PSI 22) (udiv:PSI (reg:PSI 22) (reg:PSI 18)))
!    (set (reg:PSI 18) (umod:PSI (reg:PSI 22) (reg:PSI 18)))
!    (clobber (reg:QI 21))
!    (clobber (reg:QI 25))
!    (clobber (reg:QI 26))]
    ""
    "#"
    "&& reload_completed"
--- 4102,4116 ----
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodpsi4"
!   [(set (match_operand:PSI 0 "register_operand"          "={r22}")
!         (udiv:PSI (match_operand:PSI 1 "register_operand" "{r22}")
!                   (match_operand:PSI 2 "register_operand" "{r18}")))
!    (set (match_operand:PSI 3 "register_operand"          "={r18}")
          (umod:PSI (match_dup 1)
                    (match_dup 2)))
!    (clobber (match_scratch:QI 4                          "={r21}"))
!    (clobber (match_scratch:QI 5                          "={r25}"))
!    (clobber (match_scratch:QI 6                          "={r26}"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 4259,4291 ****
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (define_insn_and_split "divmodsi4"
!   [(set (match_operand:SI 0 "pseudo_register_operand")
!         (div:SI (match_operand:SI 1 "pseudo_register_operand")
!                 (match_operand:SI 2 "pseudo_register_operand")))
!    (set (match_operand:SI 3 "pseudo_register_operand")
          (mod:SI (match_dup 1)
                  (match_dup 2)))
!    (clobber (reg:SI 18))
!    (clobber (reg:SI 22))
!    (clobber (reg:HI 26))
!    (clobber (reg:HI 30))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:SI 22) (match_dup 1))
!    (set (reg:SI 18) (match_dup 2))
!    (parallel [(set (reg:SI 18) (div:SI (reg:SI 22) (reg:SI 18)))
!               (set (reg:SI 22) (mod:SI (reg:SI 22) (reg:SI 18)))
!               (clobber (reg:HI 26))
!               (clobber (reg:HI 30))])
!    (set (match_dup 0) (reg:SI 18))
!    (set (match_dup 3) (reg:SI 22))])
! 
! (define_insn_and_split "*divmodsi4_call_split"
!   [(set (reg:SI 18) (div:SI (reg:SI 22) (reg:SI 18)))
!    (set (reg:SI 22) (mod:SI (reg:SI 22) (reg:SI 18)))
!    (clobber (reg:HI 26))
!    (clobber (reg:HI 30))]
    ""
    "#"
    "&& reload_completed"
--- 4131,4144 ----
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (define_insn_and_split "divmodsi4"
!   [(set (match_operand:SI 0 "register_operand"        "={r18}")
!         (div:SI (match_operand:SI 1 "register_operand" "{r22}")
!                 (match_operand:SI 2 "register_operand" "{r18}")))
!    (set (match_operand:SI 3 "register_operand"        "={r22}")
          (mod:SI (match_dup 1)
                  (match_dup 2)))
!    (clobber (match_scratch:HI 4                       "=x"))
!    (clobber (match_scratch:HI 5                       "=z"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 4303,4335 ****
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodsi4"
!   [(set (match_operand:SI 0 "pseudo_register_operand")
!         (udiv:SI (match_operand:SI 1 "pseudo_register_operand")
!                  (match_operand:SI 2 "pseudo_register_operand")))
!    (set (match_operand:SI 3 "pseudo_register_operand")
          (umod:SI (match_dup 1)
                   (match_dup 2)))
!    (clobber (reg:SI 18))
!    (clobber (reg:SI 22))
!    (clobber (reg:HI 26))
!    (clobber (reg:HI 30))]
!   ""
!   { gcc_unreachable(); }
!   ""
!   [(set (reg:SI 22) (match_dup 1))
!    (set (reg:SI 18) (match_dup 2))
!    (parallel [(set (reg:SI 18) (udiv:SI (reg:SI 22) (reg:SI 18)))
!               (set (reg:SI 22) (umod:SI (reg:SI 22) (reg:SI 18)))
!               (clobber (reg:HI 26))
!               (clobber (reg:HI 30))])
!    (set (match_dup 0) (reg:SI 18))
!    (set (match_dup 3) (reg:SI 22))])
! 
! (define_insn_and_split "*udivmodsi4_call_split"
!   [(set (reg:SI 18) (udiv:SI (reg:SI 22) (reg:SI 18)))
!    (set (reg:SI 22) (umod:SI (reg:SI 22) (reg:SI 18)))
!    (clobber (reg:HI 26))
!    (clobber (reg:HI 30))]
    ""
    "#"
    "&& reload_completed"
--- 4156,4169 ----
    [(set_attr "type" "xcall")])
  
  (define_insn_and_split "udivmodsi4"
!   [(set (match_operand:SI 0 "register_operand"         "={r18}")
!         (udiv:SI (match_operand:SI 1 "register_operand" "{r22}")
!                  (match_operand:SI 2 "register_operand" "{r18}")))
!    (set (match_operand:SI 3 "register_operand"         "={r22}")
          (umod:SI (match_dup 1)
                   (match_dup 2)))
!    (clobber (match_scratch:HI 4                        "=x"))
!    (clobber (match_scratch:HI 5                        "=z"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 9292,9494 ****
    [(set_attr "length" "1")])
  
  ;; FMUL
- (define_expand "fmul"
-   [(set (reg:QI 24)
-         (match_operand:QI 1 "register_operand" ""))
-    (set (reg:QI 25)
-         (match_operand:QI 2 "register_operand" ""))
-    (parallel [(set (reg:HI 22)
-                    (unspec:HI [(reg:QI 24)
-                                (reg:QI 25)] UNSPEC_FMUL))
-               (clobber (reg:HI 24))])
-    (set (match_operand:HI 0 "register_operand" "")
-         (reg:HI 22))]
-   ""
-   {
-     if (AVR_HAVE_MUL)
-       {
-         emit_insn (gen_fmul_insn (operand0, operand1, operand2));
-         DONE;
-       }
-     avr_fix_inputs (operands, 1 << 2, regmask (QImode, 24));
-   })
- 
- (define_insn_and_split "fmul_insn"
-   [(set (match_operand:HI 0 "register_operand" "=r")
-         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
-                     (match_operand:QI 2 "register_operand" "a")]
-                    UNSPEC_FMUL))]
-   "AVR_HAVE_MUL"
-   "#"
-   "&& reload_completed"
-   [(scratch)]
-   { DONE_ADD_CCC })
- 
- (define_insn "*fmul_insn"
-   [(set (match_operand:HI 0 "register_operand" "=r")
-         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
-                     (match_operand:QI 2 "register_operand" "a")]
-                    UNSPEC_FMUL))
-    (clobber (reg:CC REG_CC))]
-   "AVR_HAVE_MUL && reload_completed"
-   "fmul %1,%2
- 	movw %0,r0
- 	clr __zero_reg__"
-   [(set_attr "length" "3")])
- 
- (define_insn_and_split "*fmul.call_split"
-   [(set (reg:HI 22)
-         (unspec:HI [(reg:QI 24)
-                     (reg:QI 25)] UNSPEC_FMUL))
-    (clobber (reg:HI 24))]
-   "!AVR_HAVE_MUL"
-   "#"
-   "&& reload_completed"
-   [(scratch)]
-   { DONE_ADD_CCC })
- 
- (define_insn "*fmul.call"
-   [(set (reg:HI 22)
-         (unspec:HI [(reg:QI 24)
-                     (reg:QI 25)] UNSPEC_FMUL))
-    (clobber (reg:HI 24))
-    (clobber (reg:CC REG_CC))]
-   "!AVR_HAVE_MUL && reload_completed"
-   "%~call __fmul"
-   [(set_attr "type" "xcall")])
- 
  ;; FMULS
! (define_expand "fmuls"
!   [(set (reg:QI 24)
!         (match_operand:QI 1 "register_operand" ""))
!    (set (reg:QI 25)
!         (match_operand:QI 2 "register_operand" ""))
!    (parallel [(set (reg:HI 22)
!                    (unspec:HI [(reg:QI 24)
!                                (reg:QI 25)] UNSPEC_FMULS))
!               (clobber (reg:HI 24))])
!    (set (match_operand:HI 0 "register_operand" "")
!         (reg:HI 22))]
!   ""
!   {
!     if (AVR_HAVE_MUL)
!       {
!         emit_insn (gen_fmuls_insn (operand0, operand1, operand2));
!         DONE;
!       }
!     avr_fix_inputs (operands, 1 << 2, regmask (QImode, 24));
!   })
! 
! (define_insn_and_split "fmuls_insn"
!   [(set (match_operand:HI 0 "register_operand" "=r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
!                     (match_operand:QI 2 "register_operand" "a")]
!                    UNSPEC_FMULS))]
!   "AVR_HAVE_MUL"
!   "#"
!   "&& reload_completed"
!   [(scratch)]
!   { DONE_ADD_CCC })
! 
! (define_insn "*fmuls_insn"
!   [(set (match_operand:HI 0 "register_operand" "=r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
!                     (match_operand:QI 2 "register_operand" "a")]
!                    UNSPEC_FMULS))
!    (clobber (reg:CC REG_CC))]
!   "AVR_HAVE_MUL && reload_completed"
!   "fmuls %1,%2
! 	movw %0,r0
! 	clr __zero_reg__"
!   [(set_attr "length" "3")])
  
! (define_insn_and_split "*fmuls.call_split"
!   [(set (reg:HI 22)
!         (unspec:HI [(reg:QI 24)
!                     (reg:QI 25)] UNSPEC_FMULS))
!    (clobber (reg:HI 24))]
!   "!AVR_HAVE_MUL"
    "#"
    "&& reload_completed"
    [(scratch)]
!   { DONE_ADD_CCC })
  
! (define_insn "*fmuls.call"
    [(set (reg:HI 22)
!         (unspec:HI [(reg:QI 24)
!                     (reg:QI 25)] UNSPEC_FMULS))
     (clobber (reg:HI 24))
     (clobber (reg:CC REG_CC))]
    "!AVR_HAVE_MUL && reload_completed"
!   "%~call __fmuls"
    [(set_attr "type" "xcall")])
  
! ;; FMULSU
! (define_expand "fmulsu"
!   [(set (reg:QI 24)
!         (match_operand:QI 1 "register_operand" ""))
!    (set (reg:QI 25)
!         (match_operand:QI 2 "register_operand" ""))
!    (parallel [(set (reg:HI 22)
!                    (unspec:HI [(reg:QI 24)
!                                (reg:QI 25)] UNSPEC_FMULSU))
!               (clobber (reg:HI 24))])
!    (set (match_operand:HI 0 "register_operand" "")
!         (reg:HI 22))]
!   ""
!   {
!     if (AVR_HAVE_MUL)
!       {
!         emit_insn (gen_fmulsu_insn (operand0, operand1, operand2));
!         DONE;
!       }
!     avr_fix_inputs (operands, 1 << 2, regmask (QImode, 24));
!   })
! 
! (define_insn_and_split "fmulsu_insn"
!   [(set (match_operand:HI 0 "register_operand" "=r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
!                     (match_operand:QI 2 "register_operand" "a")]
!                    UNSPEC_FMULSU))]
!   "AVR_HAVE_MUL"
!   "#"
!   "&& reload_completed"
!   [(scratch)]
!   { DONE_ADD_CCC })
! 
! (define_insn "*fmulsu_insn"
!   [(set (match_operand:HI 0 "register_operand" "=r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "a")
!                     (match_operand:QI 2 "register_operand" "a")]
!                    UNSPEC_FMULSU))
     (clobber (reg:CC REG_CC))]
    "AVR_HAVE_MUL && reload_completed"
!   "fmulsu %1,%2
  	movw %0,r0
  	clr __zero_reg__"
    [(set_attr "length" "3")])
  
- (define_insn_and_split "*fmulsu.call_split"
-   [(set (reg:HI 22)
-         (unspec:HI [(reg:QI 24)
-                     (reg:QI 25)] UNSPEC_FMULSU))
-    (clobber (reg:HI 24))]
-   "!AVR_HAVE_MUL"
-   "#"
-   "&& reload_completed"
-   [(scratch)]
-   { DONE_ADD_CCC })
- 
- (define_insn "*fmulsu.call"
-   [(set (reg:HI 22)
-         (unspec:HI [(reg:QI 24)
-                     (reg:QI 25)] UNSPEC_FMULSU))
-    (clobber (reg:HI 24))
-    (clobber (reg:CC REG_CC))]
-   "!AVR_HAVE_MUL && reload_completed"
-   "%~call __fmulsu"
-   [(set_attr "type" "xcall")
-    ])
  
  
  ;; Some combiner patterns dealing with bits.
--- 9126,9179 ----
    [(set_attr "length" "1")])
  
  ;; FMUL
  ;; FMULS
! ;; FMULSU
! (define_int_iterator FMUL [UNSPEC_FMUL  UNSPEC_FMULS  UNSPEC_FMULSU])
! (define_int_attr fmul   [(UNSPEC_FMUL "fmul")  (UNSPEC_FMULS "fmuls") (UNSPEC_FMULSU "fmulsu")])
! (define_int_attr fmul_X [(UNSPEC_FMUL "%")     (UNSPEC_FMULS "%")     (UNSPEC_FMULSU "")])
! (define_int_attr fmul_1 [(UNSPEC_FMUL "{r25}") (UNSPEC_FMULS "{r25}") (UNSPEC_FMULSU "{r24}")])
! (define_int_attr fmul_2 [(UNSPEC_FMUL "{r24}") (UNSPEC_FMULS "{r24}") (UNSPEC_FMULSU "{r25}")])
  
! ;; "fmul"  "fmuls"  "fmulsu"
! (define_insn_and_split "<fmul>"
!   [(set (match_operand:HI 0 "register_operand"                    "={r22},{r22}   ,r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "<fmul_X>{r24},<fmul_1>,a")
!                     (match_operand:QI 2 "register_operand"         "{r25},<fmul_2>,a")]
!                    FMUL))
!    (clobber (match_scratch:HI 3                                   "={r24},{r24}   ,X"))]
!   ""
    "#"
    "&& reload_completed"
    [(scratch)]
!   { DONE_ADD_CCC }
!   [(set_attr "isa" "no_mul,no_mul,mul")])
  
! ;; "*fmul.call"  "*fmuls.call"  "*fmulsu.call"
! (define_insn "*<fmul>.call"
    [(set (reg:HI 22)
!         (unspec:HI [(match_operand:QI 0 "register_operand" "{r24},<fmul_1>")
!                     (match_operand:QI 1 "register_operand" "{r25},<fmul_2>")]
!                    FMUL))
     (clobber (reg:HI 24))
     (clobber (reg:CC REG_CC))]
    "!AVR_HAVE_MUL && reload_completed"
!   "%~call __<fmul>"
    [(set_attr "type" "xcall")])
  
! ;; "*fmul_insn"  "*fmuls_insn"  "*fmulsu_insn"
! (define_insn "*<fmul>_insn"
!   [(set (match_operand:HI 0 "register_operand"                    "=r")
!         (unspec:HI [(match_operand:QI 1 "register_operand" "<fmul_X>a")
!                     (match_operand:QI 2 "register_operand"         "a")]
!                    FMUL))
!    (clobber (scratch:HI))
     (clobber (reg:CC REG_CC))]
    "AVR_HAVE_MUL && reload_completed"
!   "<fmul> %1,%2
  	movw %0,r0
  	clr __zero_reg__"
    [(set_attr "length" "3")])
  
  
  
  ;; Some combiner patterns dealing with bits.
diff -Nrcpad gcc-17-20260524/gcc/config/avr/avr.opt gcc-17-20260531/gcc/config/avr/avr.opt
*** gcc-17-20260524/gcc/config/avr/avr.opt	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/avr/avr.opt	Sun May 31 22:32:05 2026
*************** mfuse-add=
*** 140,145 ****
--- 140,153 ----
  Target Joined RejectNegative UInteger Var(avropt_fuse_add) Init(0) Optimization IntegerRange(0, 3)
  -mfuse-add=<0,2>	Optimization. Split register additions from load/store instructions. Most useful on Reduced Tiny.
  
+ masm-len-notes
+ Target Var(avropt_asmlen_notes) Init(1) Save
+ Recognize [[len=<spec>]] notes to specify the size of inline asm constructs. Enabled by default.
+ 
+ Wasm-len-notes
+ Warning C C++ Var(avropt_warn_asmlen_notes) Init(1) Save
+ Warn about unrecognized [[len=<spec>]] notes in inline asm constructs. Enabled by default.
+ 
  Waddr-space-convert
  Warning C Var(avropt_warn_addr_space_convert) Init(0)
  Warn if the address space of an address is changed.
diff -Nrcpad gcc-17-20260524/gcc/config/avr/avr.opt.urls gcc-17-20260531/gcc/config/avr/avr.opt.urls
*** gcc-17-20260524/gcc/config/avr/avr.opt.urls	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/avr/avr.opt.urls	Sun May 31 22:32:05 2026
*************** UrlSuffix(gcc/AVR-Options.html#index-mfu
*** 78,83 ****
--- 78,89 ----
  mfuse-add=
  UrlSuffix(gcc/AVR-Options.html#index-mfuse-add)
  
+ masm-len-notes
+ UrlSuffix(gcc/AVR-Options.html#index-masm-len-notes)
+ 
+ Wasm-len-notes
+ UrlSuffix(gcc/AVR-Options.html#index-Wasm-len-notes)
+ 
  Waddr-space-convert
  UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
  
diff -Nrcpad gcc-17-20260524/gcc/config/i386/c86-4g-m7.md gcc-17-20260531/gcc/config/i386/c86-4g-m7.md
*** gcc-17-20260524/gcc/config/i386/c86-4g-m7.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/c86-4g-m7.md	Sun May 31 22:32:05 2026
***************
*** 20,27 ****
  ;; HYGON c86-4g-m7 Scheduling
  ;; Modeling automatons for decoders, integer execution pipes,
  ;; AGU pipes, branch, floating point execution, fp store units,
! ;; integer and floating point dividers.
! (define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu, c86_4g_m7_idiv, c86_4g_m7_fdiv")
  
  ;; Decoders unit has 4 decoders and all of them can decode fast path
  ;; and vector type instructions.
--- 20,29 ----
  ;; HYGON c86-4g-m7 Scheduling
  ;; Modeling automatons for decoders, integer execution pipes,
  ;; AGU pipes, branch, floating point execution, fp store units,
! ;; integer and floating point dividers.  Split fpu1 and fpu3
! ;; into their own automata to keep these units independent
! ;; without increasing the main c86_4g_m7_fpu state space.
! (define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu02, c86_4g_m7_fpu13, c86_4g_m7_idiv, c86_4g_m7_fdiv")
  
  ;; Decoders unit has 4 decoders and all of them can decode fast path
  ;; and vector type instructions.
***************
*** 30,39 ****
  (define_cpu_unit "c86-4g-m7-decode2" "c86_4g_m7")
  (define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7")
  
- ;; Two separated dividers for int and fp.
- (define_cpu_unit "c86-4g-m7-idiv" "c86_4g_m7_idiv")
- (define_cpu_unit "c86-4g-m7-fdiv" "c86_4g_m7_fdiv")
- 
  ;; Currently blocking all decoders for vector path instructions as
  ;; they are dispatched separetely as microcode sequence.
  (define_reservation "c86-4g-m7-vector" "c86-4g-m7-decode0+c86-4g-m7-decode1+c86-4g-m7-decode2+c86-4g-m7-decode3")
--- 32,37 ----
***************
*** 50,55 ****
--- 48,56 ----
  (define_cpu_unit "c86-4g-m7-ieu2" "c86_4g_m7_ieu")
  (define_cpu_unit "c86-4g-m7-ieu3" "c86_4g_m7_ieu")
  
+ ;; One separated integer divider.
+ (define_cpu_unit "c86-4g-m7-idiv" "c86_4g_m7_idiv")
+ 
  ;; c86-4g-m7 has an additional branch unit.
  (define_cpu_unit "c86-4g-m7-bru0" "c86_4g_m7_ieu")
  (define_reservation "c86-4g-m7-ieu" "c86-4g-m7-ieu0|c86-4g-m7-ieu1|c86-4g-m7-ieu2|c86-4g-m7-ieu3")
***************
*** 67,89 ****
  ;; vectorpath (microcoded) instructions are single issue instructions.
  ;; So, they occupy all the integer units.
  (define_reservation "c86-4g-m7-ivector" "c86-4g-m7-ieu0+c86-4g-m7-ieu1
! 				      +c86-4g-m7-ieu2+c86-4g-m7-ieu3+c86-4g-m7-bru0
! 				      +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
  
  ;; Floating point unit 4 FP pipes.
! (define_cpu_unit "c86-4g-m7-fpu0" "c86_4g_m7_fpu")
! (define_cpu_unit "c86-4g-m7-fpu1" "c86_4g_m7_fpu")
! (define_cpu_unit "c86-4g-m7-fpu2" "c86_4g_m7_fpu")
! (define_cpu_unit "c86-4g-m7-fpu3" "c86_4g_m7_fpu")
  (define_reservation "c86-4g-m7-fpu" "c86-4g-m7-fpu0|c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3")
- (define_reservation "c86-4g-m7-fpu_0_2" "c86-4g-m7-fpu0|c86-4g-m7-fpu2")
- (define_reservation "c86-4g-m7-fpu_1_3" "c86-4g-m7-fpu1|c86-4g-m7-fpu3")
  (define_reservation "c86-4g-m7-fpu_0_1" "c86-4g-m7-fpu0|c86-4g-m7-fpu1")
  (define_reservation "c86-4g-m7-fpu_0_2x2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu2*2")
  (define_reservation "c86-4g-m7-fpu_0_2x4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu2*4")
  (define_reservation "c86-4g-m7-fvector" "c86-4g-m7-fpu0+c86-4g-m7-fpu1
! 				      +c86-4g-m7-fpu2+c86-4g-m7-fpu3
! 				      +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
  
  ;; IMOV/IMOVX
  (define_insn_reservation "c86_4g_m7_imov_xchg" 1
--- 68,115 ----
  ;; vectorpath (microcoded) instructions are single issue instructions.
  ;; So, they occupy all the integer units.
  (define_reservation "c86-4g-m7-ivector" "c86-4g-m7-ieu0+c86-4g-m7-ieu1
! 					 +c86-4g-m7-ieu2+c86-4g-m7-ieu3+c86-4g-m7-bru0
! 					 +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
  
  ;; Floating point unit 4 FP pipes.
! (define_cpu_unit "c86-4g-m7-fpu0" "c86_4g_m7_fpu02")
! (define_cpu_unit "c86-4g-m7-fpu1" "c86_4g_m7_fpu13")
! (define_cpu_unit "c86-4g-m7-fpu2" "c86_4g_m7_fpu02")
! (define_cpu_unit "c86-4g-m7-fpu3" "c86_4g_m7_fpu13")
! 
  (define_reservation "c86-4g-m7-fpu" "c86-4g-m7-fpu0|c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3")
  (define_reservation "c86-4g-m7-fpu_0_1" "c86-4g-m7-fpu0|c86-4g-m7-fpu1")
+ (define_reservation "c86-4g-m7-fpu_0_2" "c86-4g-m7-fpu0|c86-4g-m7-fpu2")
  (define_reservation "c86-4g-m7-fpu_0_2x2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu2*2")
  (define_reservation "c86-4g-m7-fpu_0_2x4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu2*4")
+ (define_reservation "c86-4g-m7-fpu_0_3" "c86-4g-m7-fpu0|c86-4g-m7-fpu3")
+ (define_reservation "c86-4g-m7-fpu_1_3" "c86-4g-m7-fpu1|c86-4g-m7-fpu3")
+ (define_reservation "c86-4g-m7-fpu_1_3x2" "c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
+ (define_reservation "c86-4g-m7-fpu_1_3x3" "c86-4g-m7-fpu1*3|c86-4g-m7-fpu3*3")
+ (define_reservation "c86-4g-m7-fpu_1_3x6" "c86-4g-m7-fpu1*6|c86-4g-m7-fpu3*6")
+ (define_reservation "c86-4g-m7-fpux2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu1*2|c86-4g-m7-fpu2*2|c86-4g-m7-fpu3*2")
+ (define_reservation "c86-4g-m7-fpux4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu1*4|c86-4g-m7-fpu2*4|c86-4g-m7-fpu3*4")
+ (define_reservation "c86-4g-m7-fpux8" "c86-4g-m7-fpu0*8|c86-4g-m7-fpu1*8|c86-4g-m7-fpu2*8|c86-4g-m7-fpu3*8")
+ (define_reservation "c86-4g-m7-fpux6" "c86-4g-m7-fpu0*6|c86-4g-m7-fpu1*6|c86-4g-m7-fpu2*6|c86-4g-m7-fpu3*6")
+ (define_reservation "c86-4g-m7-fpux16" "c86-4g-m7-fpu0*16|c86-4g-m7-fpu1*16|c86-4g-m7-fpu2*16|c86-4g-m7-fpu3*16")
  (define_reservation "c86-4g-m7-fvector" "c86-4g-m7-fpu0+c86-4g-m7-fpu1
! 					 +c86-4g-m7-fpu2+c86-4g-m7-fpu3
! 					 +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2")
! 
! ;; Two FP dividers.
! (define_cpu_unit "c86-4g-m7-fdiv1" "c86_4g_m7_fdiv")
! (define_cpu_unit "c86-4g-m7-fdiv3" "c86_4g_m7_fdiv")
! 
! (define_reservation "c86-4g-m7-fp1fdiv1x4" "(c86-4g-m7-fpu1+c86-4g-m7-fdiv1)*4")
! (define_reservation "c86-4g-m7-fp3fdiv3x4" "(c86-4g-m7-fpu3+c86-4g-m7-fdiv3)*4")
! (define_reservation "c86-4g-m7-fdiv13" "(c86-4g-m7-fdiv1+c86-4g-m7-fdiv3)")
! (define_reservation "c86-4g-m7-fp13div13" "(c86-4g-m7-fpu1+c86-4g-m7-fpu3+c86-4g-m7-fdiv1+c86-4g-m7-fdiv3)")
! (define_reservation "c86-4g-m7-fp13div13x4" "c86-4g-m7-fp13div13*4")
! (define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x8" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*8)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*8)")
! (define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x9" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*9)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*9)")
! (define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x11" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*11)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*11)")
! (define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x15" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*15)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*15)")
! (define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x18" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*18)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*18)")
  
  ;; IMOV/IMOVX
  (define_insn_reservation "c86_4g_m7_imov_xchg" 1
***************
*** 168,228 ****
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu1")
  
  ;; IDIV
! (define_insn_reservation "c86_4g_m7_idiv_DI" 41
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "DI")
! 					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*41")
! 
! (define_insn_reservation "c86_4g_m7_idiv_SI" 25
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "SI")
! 					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*25")
! 
! (define_insn_reservation "c86_4g_m7_idiv_HI" 17
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "HI")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*17")
  
! (define_insn_reservation "c86_4g_m7_idiv_QI" 15
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
  				   (and (eq_attr "mode" "QI")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-ieu3,c86-4g-m7-idiv*15")
! 
! (define_insn_reservation "c86_4g_m7_idiv_DI_load" 45
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "DI")
! 					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*41")
! 
! (define_insn_reservation "c86_4g_m7_idiv_SI_load" 29
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "SI")
! 					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*25")
  
! (define_insn_reservation "c86_4g_m7_idiv_HI_load" 21
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "HI")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*17")
  
! (define_insn_reservation "c86_4g_m7_idiv_QI_load" 19
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
  				   (and (eq_attr "mode" "QI")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*15")
  
  ;; Integer/genaral Instructions
  (define_insn_reservation "c86_4g_m7_insn" 1
--- 194,226 ----
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu1")
  
  ;; IDIV
! (define_insn_reservation "c86_4g_m7_idiv" 7
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "!QI")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*7")
  
! (define_insn_reservation "c86_4g_m7_idiv_QI" 6
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
  				   (and (eq_attr "mode" "QI")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*6")
  
! (define_insn_reservation "c86_4g_m7_idiv_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
! 				   (and (eq_attr "mode" "!QI")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*7")
  
! (define_insn_reservation "c86_4g_m7_idiv_QI_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "idiv")
  				   (and (eq_attr "mode" "QI")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*6")
  
  ;; Integer/genaral Instructions
  (define_insn_reservation "c86_4g_m7_insn" 1
***************
*** 385,398 ****
  			      (and (eq_attr "type" "sseins")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "length_immediate" "2"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu0|c86-4g-m7-fpu3,c86-4g-m7-fpu1")
  
  (define_insn_reservation "c86_4g_m7_sse_insert" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sseins")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "length_immediate" "!2"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu1")
  
  ;; FCMOV
  (define_insn_reservation "c86_4g_m7_fp_cmov" 4
--- 383,396 ----
  			      (and (eq_attr "type" "sseins")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "length_immediate" "2"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu_0_3,c86-4g-m7-fpu1")
  
  (define_insn_reservation "c86_4g_m7_sse_insert" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sseins")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "length_immediate" "!2"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu1*2")
  
  ;; FCMOV
  (define_insn_reservation "c86_4g_m7_fp_cmov" 4
***************
*** 444,450 ****
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fpspc")
  				   (eq_attr "c86_attr" "sqrt")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*22")
  
  ;; FPSPC
  (define_insn_reservation "c86_4g_m7_fp_spc_direct" 5
--- 442,448 ----
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fpspc")
  				   (eq_attr "c86_attr" "sqrt")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x18")
  
  ;; FPSPC
  (define_insn_reservation "c86_4g_m7_fp_spc_direct" 5
***************
*** 487,507 ****
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
  
  (define_insn_reservation "c86_4g_m7_fp_div_load" 22
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "false")
  					(eq_attr "memory" "!none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
  
  (define_insn_reservation "c86_4g_m7_fp_idiv_load" 26
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "true")
  					(eq_attr "memory" "!none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15")
  
  (define_insn_reservation "c86_4g_m7_fp_fsgn" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 485,505 ----
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x11")
  
  (define_insn_reservation "c86_4g_m7_fp_div_load" 22
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "false")
  					(eq_attr "memory" "!none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x11")
  
  (define_insn_reservation "c86_4g_m7_fp_idiv_load" 26
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "true")
  					(eq_attr "memory" "!none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1*4,c86-4g-m7-fp1div1_fp3div3_x4x11")
  
  (define_insn_reservation "c86_4g_m7_fp_fsgn" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 634,640 ****
  				   (and (eq_attr "c86_attr" "insr")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu2,c86-4g-m7-fpu_0_1")
  
  (define_insn_reservation "c86_4g_m7_sse_pinsr_reg_load" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 632,638 ----
  				   (and (eq_attr "c86_attr" "insr")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-double,c86-4g-m7-ieu2,c86-4g-m7-fpu")
  
  (define_insn_reservation "c86_4g_m7_sse_pinsr_reg_load" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 642,648 ****
  				   (and (eq_attr "c86_attr" "insr")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
  
  (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg" 2
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 640,646 ----
  				   (and (eq_attr "c86_attr" "insr")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu")
  
  (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg" 2
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 650,656 ****
  				   (and (eq_attr "c86_attr" "insr")
  				     (and (eq_attr "prefix" "!orig")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu2*2")
  
  (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg_load" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 648,654 ----
  				   (and (eq_attr "c86_attr" "insr")
  				     (and (eq_attr "prefix" "!orig")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu_1_3x2")
  
  (define_insn_reservation "c86_4g_m7_avx_vpinsr_reg_load" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 658,664 ****
  				   (and (eq_attr "c86_attr" "insr")
  				     (and (eq_attr "prefix" "!orig")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3")
  
  ;; PERM
  (define_insn_reservation "c86_4g_m7_avx512_perm_xmm" 3
--- 656,662 ----
  				   (and (eq_attr "c86_attr" "insr")
  				     (and (eq_attr "prefix" "!orig")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
  
  ;; PERM
  (define_insn_reservation "c86_4g_m7_avx512_perm_xmm" 3
***************
*** 668,675 ****
  						  (eq_attr "mode" "V4SF,V2DF,TI"))
  					     (and (eq_attr "c86_attr" "perm")
  						  (eq_attr "mode" "V8SF,V4DF,TI,OI")))
! 				    (and (eq_attr "prefix" "evex")
! 					 (eq_attr "memory" "none")))))
  			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_xmm_opload" 10
--- 666,672 ----
  						  (eq_attr "mode" "V4SF,V2DF,TI"))
  					     (and (eq_attr "c86_attr" "perm")
  						  (eq_attr "mode" "V8SF,V4DF,TI,OI")))
! 					(eq_attr "memory" "none"))))
  			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_xmm_opload" 10
***************
*** 679,686 ****
  						  (eq_attr "mode" "V4SF,V2DF,TI"))
  					     (and (eq_attr "c86_attr" "perm")
  						  (eq_attr "mode" "V8SF,V4DF,TI,OI")))
! 				    (and (eq_attr "prefix" "evex")
! 					 (eq_attr "memory" "load")))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm" 4
--- 676,682 ----
  						  (eq_attr "mode" "V4SF,V2DF,TI"))
  					     (and (eq_attr "c86_attr" "perm")
  						  (eq_attr "mode" "V8SF,V4DF,TI,OI")))
! 					(eq_attr "memory" "load"))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm" 4
***************
*** 689,695 ****
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V8SF,V4DF,OI")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm" 16
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 685,691 ----
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V8SF,V4DF,OI")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpux4")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm" 16
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 697,703 ****
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 693,699 ----
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpux16")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_ymm_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 705,711 ****
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V8SF,V4DF,OI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm_load" 23
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 701,707 ----
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V8SF,V4DF,OI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux4")
  
  (define_insn_reservation "c86_4g_m7_avx512_permi2_zmm_load" 23
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 713,719 ****
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 709,715 ----
  				   (and (eq_attr "c86_attr" "perm2")
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux16")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 722,728 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "immediate_operand")
  					  (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x4")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 718,724 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "immediate_operand")
  					  (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpux4")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 731,737 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "immediate_operand")
  					  (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_noimm" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 727,733 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "immediate_operand")
  					  (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpux4")
  
  (define_insn_reservation "c86_4g_m7_avx512_perm_zmm_noimm" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 740,746 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "nonimmediate_operand")
  					  (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_sse_perm_zmm_noimm_load" 15
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 736,742 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "nonimmediate_operand")
  					  (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpux8")
  
  (define_insn_reservation "c86_4g_m7_sse_perm_zmm_noimm_load" 15
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 749,771 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "nonimmediate_operand")
  					 (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
! 
! (define_insn_reservation "c86_4g_m7_avx_perm_ymm" 3
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sselog")
! 				   (and (eq_attr "c86_attr" "perm")
! 				     (and (eq_attr "prefix" "!evex")
! 					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
! 
! (define_insn_reservation "c86_4g_m7_avx_perm_ymem" 10
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sselog")
! 				   (and (eq_attr "c86_attr" "perm")
! 				     (and (eq_attr "prefix" "!evex")
! 					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  ;; VINSERT
  (define_insn_reservation "c86_4g_m7_avx512_insertx_ymm" 3
--- 745,751 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (match_operand 2 "nonimmediate_operand")
  					 (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux8")
  
  ;; VINSERT
  (define_insn_reservation "c86_4g_m7_avx512_insertx_ymm" 3
***************
*** 853,859 ****
  				   (and (eq_attr "c86_attr" "shufx")
  				     (and (eq_attr "mode" "V8DF,V16SF,XI")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_shuf_xymem" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 833,839 ----
  				   (and (eq_attr "c86_attr" "shufx")
  				     (and (eq_attr "mode" "V8DF,V16SF,XI")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_0_2x4")
  
  (define_insn_reservation "c86_4g_m7_avx512_shuf_xymem" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 869,875 ****
  				   (and (eq_attr "c86_attr" "shufx")
  				     (and (eq_attr "mode" "V8DF,V16SF,XI")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  ;; SSELOGIC
  (define_insn_reservation "c86_4g_m7_sselogic_xymm" 1
--- 849,855 ----
  				   (and (eq_attr "c86_attr" "shufx")
  				     (and (eq_attr "mode" "V8DF,V16SF,XI")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4")
  
  ;; SSELOGIC
  (define_insn_reservation "c86_4g_m7_sselogic_xymm" 1
***************
*** 892,905 ****
  			      (and (eq_attr "type" "sselog")
  				   (and (eq_attr "c86_attr" "cmpestr")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_cmpestr_load" 13
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sselog")
  				   (and (eq_attr "c86_attr" "cmpestr")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  ;; SSELOG
  (define_insn_reservation "c86_4g_m7_avx512_log" 1
--- 872,885 ----
  			      (and (eq_attr "type" "sselog")
  				   (and (eq_attr "c86_attr" "cmpestr")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpux6")
  
  (define_insn_reservation "c86_4g_m7_avx512_cmpestr_load" 13
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sselog")
  				   (and (eq_attr "c86_attr" "cmpestr")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux6")
  
  ;; SSELOG
  (define_insn_reservation "c86_4g_m7_avx512_log" 1
***************
*** 940,946 ****
  				   (and (eq_attr "c86_attr" "sadbw")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmem" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 920,926 ----
  				   (and (eq_attr "c86_attr" "sadbw")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmem" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 948,954 ****
  				   (and (eq_attr "c86_attr" "sadbw")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  ;; ABS
  (define_insn_reservation "c86_4g_m7_avx512_abs" 1
--- 928,934 ----
  				   (and (eq_attr "c86_attr" "sadbw")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2")
  
  ;; ABS
  (define_insn_reservation "c86_4g_m7_avx512_abs" 1
***************
*** 1052,1065 ****
  			      (and (eq_attr "type" "ssecomi")
  				   (and (eq_attr "prefix_extra" "0")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
  
  (define_insn_reservation "c86_4g_m7_avx_ssecomi_comi_load" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssecomi")
  				   (and (eq_attr "prefix_extra" "0")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3")
  
  (define_insn_reservation "c86_4g_m7_avx_ssecomi_test" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1032,1045 ----
  			      (and (eq_attr "type" "ssecomi")
  				   (and (eq_attr "prefix_extra" "0")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu")
  
  (define_insn_reservation "c86_4g_m7_avx_ssecomi_comi_load" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssecomi")
  				   (and (eq_attr "prefix_extra" "0")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu")
  
  (define_insn_reservation "c86_4g_m7_avx_ssecomi_test" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1201,1207 ****
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1181,1187 ----
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1209,1215 ****
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_z" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1189,1195 ----
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (not (eq_attr "mode" "XI,V16SF,V8DF"))
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_z" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1217,1223 ****
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (eq_attr "mode" "XI,V16SF,V8DF")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_z_load" 17
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1197,1203 ----
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (eq_attr "mode" "XI,V16SF,V8DF")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_expand_z_load" 17
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1225,1231 ****
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (eq_attr "mode" "XI,V16SF,V8DF")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  ;; MOVNT
  (define_insn_reservation "c86_4g_m7_avx512_movnt_load" 8
--- 1205,1211 ----
  				   (and (eq_attr "c86_attr" "expand,compress")
  				    (and (eq_attr "mode" "XI,V16SF,V8DF")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3")
  
  ;; MOVNT
  (define_insn_reservation "c86_4g_m7_avx512_movnt_load" 8
***************
*** 1252,1258 ****
  					 (eq_attr "memory" "!none")))))
  			 "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1")
  
! (define_insn_reservation "c86_4g_m7_sse_movnt_xy" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemov")
  				   (and (eq_attr "c86_attr" "movnt")
--- 1232,1238 ----
  					 (eq_attr "memory" "!none")))))
  			 "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1")
  
! (define_insn_reservation "c86_4g_m7_sse_movnt" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemov")
  				   (and (eq_attr "c86_attr" "movnt")
***************
*** 1377,1390 ****
  			      (and (eq_attr "type" "sseadd")
  				   (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu3")
  
  (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sseadd")
  				   (and (eq_attr "c86_attr" "other")
  					 (eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3")
  
  ;; HADD/HSUB
  (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus" 7
--- 1357,1370 ----
  			      (and (eq_attr "type" "sseadd")
  				   (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_sseadd_xy_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sseadd")
  				   (and (eq_attr "c86_attr" "other")
  					 (eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3")
  
  ;; HADD/HSUB
  (define_insn_reservation "c86_4g_m7_avx_sseadd_hplus" 7
***************
*** 1507,1513 ****
  				   (and (eq_attr "c86_attr" "hplus")
  				    (and (eq_attr "prefix" "orig")
  				     (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu0*2")
  
  (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1487,1493 ----
  				   (and (eq_attr "c86_attr" "hplus")
  				    (and (eq_attr "prefix" "orig")
  				     (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpux2")
  
  (define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1515,1563 ****
  				   (and (eq_attr "c86_attr" "hplus")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu0*2")
  
  ;; SSEMUL
  (define_insn_reservation "c86_4g_m7_avx512_ssemul" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemul")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu0")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssemul_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemul")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0")
  
  ;; SSEDIV
! (define_insn_reservation "c86_4g_m7_avx512_ssediv" 13
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
! 				   (and (not (eq_attr "mode" "V16SF,V8DF"))
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13")
  
! (define_insn_reservation "c86_4g_m7_avx512_ssediv_mem" 20
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
! 				   (and (not (eq_attr "mode" "V16SF,V8DF"))
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
  				   (and (eq_attr "mode" "V16SF,V8DF")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
  				   (and (eq_attr "mode" "V16SF,V8DF")
  					 (eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24")
  
  ;; SSECMP
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5
--- 1495,1557 ----
  				   (and (eq_attr "c86_attr" "hplus")
  				    (and (eq_attr "prefix" "orig")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux2")
  
  ;; SSEMUL
  (define_insn_reservation "c86_4g_m7_avx512_ssemul" 3
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemul")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssemul_load" 10
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemul")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
  
  ;; SSEDIV
! (define_insn_reservation "c86_4g_m7_avx512_ssediv_x" 13
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
! 				   (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x8")
  
! (define_insn_reservation "c86_4g_m7_avx512_ssediv_xmem" 20
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
! 				   (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x8")
! 
! (define_insn_reservation "c86_4g_m7_avx512_ssediv_y" 13
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "ssediv")
! 				   (and (eq_attr "mode" "V8SF,V4DF")
! 					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8")
! 
! (define_insn_reservation "c86_4g_m7_avx512_ssediv_ymem" 20
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "ssediv")
! 				   (and (eq_attr "mode" "V8SF,V4DF")
! 					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
  				   (and (eq_attr "mode" "V16SF,V8DF")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssediv")
  				   (and (eq_attr "mode" "V16SF,V8DF")
  					 (eq_attr "memory" "load"))))
! 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20")
  
  ;; SSECMP
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5
***************
*** 1582,1588 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z_load" 12
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1576,1582 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp_z_load" 12
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1590,1596 ****
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1584,1590 ----
  				    (and (eq_attr "mode" "V16SF,V8DF,XI")
  				     (and (eq_attr "c86_attr" "other")
  					  (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1610,1615 ****
--- 1604,1627 ----
  					  (eq_attr "memory" "load"))))))
  			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
  
+ (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z" 5
+ 			 (and (eq_attr "cpu" "c86_4g_m7")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "prefix" "evex")
+ 				    (and (eq_attr "mode" "XI")
+ 				     (and (eq_attr "c86_attr" "other,ptest")
+ 					  (eq_attr "memory" "none"))))))
+ 			 "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3")
+ 
+ (define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z_load" 12
+ 			 (and (eq_attr "cpu" "c86_4g_m7")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "prefix" "evex")
+ 				    (and (eq_attr "mode" "XI")
+ 				     (and (eq_attr "c86_attr" "other,ptest")
+ 					  (eq_attr "memory" "load"))))))
+ 			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3x2")
+ 
  (define_insn_reservation "c86_4g_m7_avx_ssecmp_vp" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssecmp")
***************
*** 1641,1662 ****
  					  (eq_attr "memory" "load")))))
  			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3")
  
- (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_z" 4
- 			 (and (eq_attr "cpu" "c86_4g_m7")
- 			      (and (eq_attr "type" "ssecmp")
- 				    (and (eq_attr "mode" "XI")
- 				     (and (eq_attr "c86_attr" "ptest")
- 					  (eq_attr "memory" "none")))))
- 			 "c86-4g-m7-vector")
- 
- (define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_z_load" 11
- 			 (and (eq_attr "cpu" "c86_4g_m7")
- 			      (and (eq_attr "type" "ssecmp")
- 				    (and (eq_attr "mode" "XI")
- 				     (and (eq_attr "c86_attr" "ptest")
- 					  (eq_attr "memory" "load")))))
- 			 "c86-4g-m7-vector,c86-4g-m7-load")
- 
  ;; SSECVT
  (define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1653,1658 ----
***************
*** 1768,1784 ****
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemuladd")
  				   (and (eq_attr "c86_attr" "other")
! 				    (and (not (eq_attr "isa" "fma,fma4"))
! 					 (eq_attr "mode" "V32HF,V16SF,V8DF,XI")
! 					  (eq_attr "memory" "none")))))
  			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
  
  (define_insn_reservation "c86_4g_m7_avx512_muladd_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemuladd")
  				   (and (eq_attr "c86_attr" "other")
! 				    (and (not (eq_attr "isa" "fma,fma4"))
! 					 (eq_attr "memory" "load")))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
  
  (define_insn_reservation "c86_4g_m7_avx512_muladd_madd" 4
--- 1764,1777 ----
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemuladd")
  				   (and (eq_attr "c86_attr" "other")
! 					(eq_attr "memory" "none"))))
  			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_2")
  
  (define_insn_reservation "c86_4g_m7_avx512_muladd_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "ssemuladd")
  				   (and (eq_attr "c86_attr" "other")
! 					(eq_attr "memory" "load"))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
  
  (define_insn_reservation "c86_4g_m7_avx512_muladd_madd" 4
***************
*** 1797,1816 ****
  					 (eq_attr "memory" "load")))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2")
  
- (define_insn_reservation "c86_4g_m7_fma_muladd" 4
- 			 (and (eq_attr "cpu" "c86_4g_m7")
- 			      (and (eq_attr "type" "ssemuladd")
- 				   (and (eq_attr "isa" "fma,fma4")
- 					(eq_attr "memory" "none"))))
- 			 "c86-4g-m7-direct,c86-4g-m7-fpu_0_1")
- 
- (define_insn_reservation "c86_4g_m7_fma_muladd_load" 11
- 			 (and (eq_attr "cpu" "c86_4g_m7")
- 			      (and (eq_attr "type" "ssemuladd")
- 				   (and (eq_attr "isa" "fma,fma4")
- 					(eq_attr "memory" "load"))))
- 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
- 
  ;; SSE
  (define_insn_reservation "c86_4g_m7_avx512_sse_range" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1790,1795 ----
***************
*** 1838,1844 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "TI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x_load" 9
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1817,1823 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "TI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x_load" 9
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1846,1852 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "TI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1825,1831 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "TI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x2")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1854,1860 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "OI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y_load" 12
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1833,1839 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "OI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x3")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y_load" 12
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1862,1868 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "OI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1841,1847 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "OI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x3")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1870,1876 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z_load" 15
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1849,1855 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x6")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z_load" 15
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1878,1884 ****
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_class" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1857,1863 ----
  				   (and (eq_attr "c86_decode" "vector")
  				    (and (eq_attr "mode" "XI")
  					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x6")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_class" 4
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1905,1911 ****
  				     (and (eq_attr "length_immediate" "1")
  				      (and (eq_attr "mode" "V32HF,V16SF,V8DF")
  					   (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_class_z_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1884,1890 ----
  				     (and (eq_attr "length_immediate" "1")
  				      (and (eq_attr "mode" "V32HF,V16SF,V8DF")
  					   (eq_attr "memory" "none"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_sse_class_z_load" 11
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1914,1920 ****
  				     (and (eq_attr "length_immediate" "1")
  				      (and (eq_attr "mode" "V32HF,V16SF,V8DF")
  					   (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load")
  
  (define_insn_reservation "c86_4g_m7_avx_sse" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 1893,1899 ----
  				     (and (eq_attr "length_immediate" "1")
  				      (and (eq_attr "mode" "V32HF,V16SF,V8DF")
  					   (eq_attr "memory" "load"))))))
! 			 "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx_sse" 5
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1932,1950 ****
  					 (eq_attr "memory" "load")))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
  
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt" 16
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "c86_attr" "sqrt")
! 					(eq_attr "memory" "none"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16")
  
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_load" 23
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "c86_attr" "sqrt")
! 					(eq_attr "memory" "load"))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16")
  
  ;; MSKLOG/MSKMOV
  (define_insn_reservation "c86_4g_m7_avx512_msklog" 1
--- 1911,2012 ----
  					 (eq_attr "memory" "load")))))
  			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1")
  
! ;; SSE SQRT
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_x" 14
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "SF,V4SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x9")
  
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_xload" 21
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "SF,V4SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x9")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_y" 14
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V8SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_yload" 21
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V8SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_z" 26
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V16SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_zload" 33
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V16SF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_x" 20
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "DF,V2DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x15")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_xload" 27
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "DF,V2DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x15")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_y" 20
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V4DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_yload" 27
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V4DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_z" 38
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V8DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "none")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34")
! 
! (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_zload" 45
! 			 (and (eq_attr "cpu" "c86_4g_m7")
! 			      (and (eq_attr "type" "sse")
! 				   (and (eq_attr "mode" "V8DF")
! 				    (and (eq_attr "c86_attr" "sqrt")
! 					 (eq_attr "memory" "load")))))
! 			 "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34")
  
  ;; MSKLOG/MSKMOV
  (define_insn_reservation "c86_4g_m7_avx512_msklog" 1
***************
*** 1957,1963 ****
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "msklog")
  				   (eq_attr "c86_decode" "vector")))
! 			 "c86-4g-m7-vector")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_reg_k" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 2019,2025 ----
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "msklog")
  				   (eq_attr "c86_decode" "vector")))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_reg_k" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1977,1983 ****
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "mskmov")
  				   (match_operand:V8DI 0 "register_operand" "v")))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu3*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_k" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 2039,2045 ----
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "mskmov")
  				   (match_operand:V8DI 0 "register_operand" "v")))
! 			 "c86-4g-m7-vector,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_k" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
***************
*** 1991,1997 ****
  			      (and (eq_attr "type" "mskmov")
  				  (and (match_operand 0 "register_operand" "k")
  				       (match_operand 1 "register_operand" "r"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu1*2,c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_m" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
--- 2053,2059 ----
  			      (and (eq_attr "type" "mskmov")
  				  (and (match_operand 0 "register_operand" "k")
  				       (match_operand 1 "register_operand" "r"))))
! 			 "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3")
  
  (define_insn_reservation "c86_4g_m7_avx512_mskmov_k_m" 8
  			 (and (eq_attr "cpu" "c86_4g_m7")
diff -Nrcpad gcc-17-20260524/gcc/config/i386/c86-4g.md gcc-17-20260531/gcc/config/i386/c86-4g.md
*** gcc-17-20260524/gcc/config/i386/c86-4g.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/c86-4g.md	Sun May 31 22:32:05 2026
***************
*** 30,37 ****
  ;; HYGON Scheduling
  ;; Modeling automatons for decoders, integer execution pipes,
  ;; AGU pipes, floating point execution units, integer and
! ;; floating point dividers.
! (define_automaton "c86_4g, c86_4g_ieu, c86_4g_fp, c86_4g_agu, c86_4g_idiv, c86_4g_fdiv")
  
  ;; Decoders unit has 4 decoders and all of them can decode fast path
  ;; and vector type instructions.
--- 30,39 ----
  ;; HYGON Scheduling
  ;; Modeling automatons for decoders, integer execution pipes,
  ;; AGU pipes, floating point execution units, integer and
! ;; floating point dividers.  Split fp1 into its own automaton
! ;; to keep this unit independent without increasing the main
! ;; c86_4g_fp state space.
! (define_automaton "c86_4g, c86_4g_ieu, c86_4g_fp024, c86_4g_fp1, c86_4g_agu, c86_4g_idiv, c86_4g_fdiv")
  
  ;; Decoders unit has 4 decoders and all of them can decode fast path
  ;; and vector type instructions.
***************
*** 40,49 ****
  (define_cpu_unit "c86-4g-decode2" "c86_4g")
  (define_cpu_unit "c86-4g-decode3" "c86_4g")
  
- ;; Two separated dividers for int and fp.
- (define_cpu_unit "c86-4g-idiv" "c86_4g_idiv")
- (define_cpu_unit "c86-4g-fdiv" "c86_4g_fdiv")
- 
  ;; Currently blocking all decoders for vector path instructions as
  ;; they are dispatched separetely as microcode sequence.
  ;; Fix me: Need to revisit this.
--- 42,47 ----
***************
*** 55,61 ****
  ;; Fix me: Need to revisit this later to simulate fast path double behavior.
  (define_reservation "c86-4g-double" "c86-4g-direct")
  
- 
  ;; Integer unit 4 ALU pipes.
  (define_cpu_unit "c86-4g-ieu0" "c86_4g_ieu")
  (define_cpu_unit "c86-4g-ieu1" "c86_4g_ieu")
--- 53,58 ----
***************
*** 63,68 ****
--- 60,68 ----
  (define_cpu_unit "c86-4g-ieu3" "c86_4g_ieu")
  (define_reservation "c86-4g-ieu" "c86-4g-ieu0|c86-4g-ieu1|c86-4g-ieu2|c86-4g-ieu3")
  
+ ;; One separated integer divider.
+ (define_cpu_unit "c86-4g-idiv" "c86_4g_idiv")
+ 
  ;; 2 AGU pipes in c86_4g
  ;; According to CPU diagram last AGU unit is used only for stores.
  (define_cpu_unit "c86-4g-agu0" "c86_4g_agu")
***************
*** 81,90 ****
  				      +c86-4g-agu0+c86-4g-agu1")
  
  ;; Floating point unit 4 FP pipes.
! (define_cpu_unit "c86-4g-fp0" "c86_4g_fp")
! (define_cpu_unit "c86-4g-fp1" "c86_4g_fp")
! (define_cpu_unit "c86-4g-fp2" "c86_4g_fp")
! (define_cpu_unit "c86-4g-fp3" "c86_4g_fp")
  
  (define_reservation "c86-4g-fpu" "c86-4g-fp0|c86-4g-fp1|c86-4g-fp2|c86-4g-fp3")
  
--- 81,90 ----
  				      +c86-4g-agu0+c86-4g-agu1")
  
  ;; Floating point unit 4 FP pipes.
! (define_cpu_unit "c86-4g-fp0" "c86_4g_fp024")
! (define_cpu_unit "c86-4g-fp1" "c86_4g_fp1")
! (define_cpu_unit "c86-4g-fp2" "c86_4g_fp024")
! (define_cpu_unit "c86-4g-fp3" "c86_4g_fp024")
  
  (define_reservation "c86-4g-fpu" "c86-4g-fp0|c86-4g-fp1|c86-4g-fp2|c86-4g-fp3")
  
***************
*** 92,97 ****
--- 92,102 ----
  				      +c86-4g-fp2+c86-4g-fp3
  				      +c86-4g-agu0+c86-4g-agu1")
  
+ ;; One separated FP divider.
+ (define_cpu_unit "c86-4g-fdiv" "c86_4g_fdiv")
+ 
+ (define_reservation "c86-4g-fp1fdivx4" "(c86-4g-fp1+c86-4g-fdiv)*4")
+ 
  ;; Call instruction
  (define_insn_reservation "c86_4g_call" 1
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
***************
*** 387,393 ****
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fpspc")
  				   (eq_attr "c86_attr" "sqrt")))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*22")
  
  (define_insn_reservation "c86_4g_sse_sqrt_sf" 14
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
--- 392,398 ----
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fpspc")
  				   (eq_attr "c86_attr" "sqrt")))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*18")
  
  (define_insn_reservation "c86_4g_sse_sqrt_sf" 14
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
***************
*** 395,401 ****
  				   (and (eq_attr "memory" "none,unknown")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*14")
  
  (define_insn_reservation "c86_4g_sse_sqrt_sf_mem" 21
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
--- 400,406 ----
  				   (and (eq_attr "memory" "none,unknown")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_sse_sqrt_sf_mem" 21
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
***************
*** 403,409 ****
  				   (and (eq_attr "memory" "load")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*14")
  
  (define_insn_reservation "c86_4g_sse_sqrt_df" 20
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
--- 408,414 ----
  				   (and (eq_attr "memory" "load")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_sse_sqrt_df" 20
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
***************
*** 411,417 ****
  				   (and (eq_attr "memory" "none,unknown")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*20")
  
  (define_insn_reservation "c86_4g_sse_sqrt_df_mem" 27
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
--- 416,422 ----
  				   (and (eq_attr "memory" "none,unknown")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*16")
  
  (define_insn_reservation "c86_4g_sse_sqrt_df_mem" 27
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
***************
*** 419,425 ****
  				   (and (eq_attr "memory" "load")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*20")
  
  ;; RCP
  (define_insn_reservation "c86_4g_sse_rcp" 5
--- 424,430 ----
  				   (and (eq_attr "memory" "load")
  					(and (eq_attr "c86_attr" "sqrt")
  					     (eq_attr "type" "sse")))))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*16")
  
  ;; RCP
  (define_insn_reservation "c86_4g_sse_rcp" 5
***************
*** 492,511 ****
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*15")
  
  (define_insn_reservation "c86_4g_fp_op_div_load" 22
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*15")
  
! (define_insn_reservation "c86_4g_fp_op_idiv_load" 27
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "true")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*19")
  
  ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions
  (define_insn_reservation "c86_4g_fp_insn" 1
--- 497,516 ----
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*11")
  
  (define_insn_reservation "c86_4g_fp_op_div_load" 22
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*11")
  
! (define_insn_reservation "c86_4g_fp_op_idiv_load" 26
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "type" "fdiv")
  				   (and (eq_attr "fp_int_src" "true")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1*4,c86-4g-fp1fdivx4,c86-4g-fdiv*11")
  
  ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions
  (define_insn_reservation "c86_4g_fp_insn" 1
***************
*** 1024,1051 ****
  					(eq_attr "mode" "V4SF,SF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_ssediv_ss_ps_load" 17
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					(eq_attr "mode" "V4SF,SF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_ssediv_sd_pd" 13
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					(eq_attr "mode" "V2DF,DF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*13")
  
  (define_insn_reservation "c86_4g_ssediv_sd_pd_load" 20
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					       (eq_attr "mode" "V2DF,DF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*13")
  
  
  (define_insn_reservation "c86_4g_ssediv_avx256_ps" 10
--- 1029,1056 ----
  					(eq_attr "mode" "V4SF,SF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*6")
  
  (define_insn_reservation "c86_4g_ssediv_ss_ps_load" 17
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					(eq_attr "mode" "V4SF,SF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*6")
  
  (define_insn_reservation "c86_4g_ssediv_sd_pd" 13
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					(eq_attr "mode" "V2DF,DF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "none")))
! 			 "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*9")
  
  (define_insn_reservation "c86_4g_ssediv_sd_pd_load" 20
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  					       (eq_attr "mode" "V2DF,DF"))
  			      (and (eq_attr "type" "ssediv")
  				   (eq_attr "memory" "load")))
! 			 "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*9")
  
  
  (define_insn_reservation "c86_4g_ssediv_avx256_ps" 10
***************
*** 1053,1080 ****
  			      (and (eq_attr "mode" "V8SF")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "type" "ssediv"))))
! 			 "c86-4g-double,c86-4g-fp1,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_ps_load" 17
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V8SF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*10")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_pd" 13
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V4DF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-double,c86-4g-fp1,c86-4g-fdiv*13")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_pd_load" 20
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V4DF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*13")
  ;; SSE MUL
  (define_insn_reservation "c86_4g_ssemul_ss_ps" 3
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
--- 1058,1085 ----
  			      (and (eq_attr "mode" "V8SF")
  				   (and (eq_attr "memory" "none")
  					(eq_attr "type" "ssediv"))))
! 			 "c86-4g-double,c86-4g-fp1fdivx4,c86-4g-fdiv*6")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_ps_load" 17
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V8SF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*6")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_pd" 13
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V4DF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "none"))))
! 			 "c86-4g-double,c86-4g-fp1fdivx4,c86-4g-fdiv*9")
  
  (define_insn_reservation "c86_4g_ssediv_avx256_pd_load" 20
  			 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
  			      (and (eq_attr "mode" "V4DF")
  				   (and (eq_attr "type" "ssediv")
  					(eq_attr "memory" "load"))))
! 			 "c86-4g-double,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*9")
  ;; SSE MUL
  (define_insn_reservation "c86_4g_ssemul_ss_ps" 3
  			 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6")
diff -Nrcpad gcc-17-20260524/gcc/config/i386/i386-features.cc gcc-17-20260531/gcc/config/i386/i386-features.cc
*** gcc-17-20260524/gcc/config/i386/i386-features.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/i386-features.cc	Sun May 31 22:32:05 2026
*************** scalar_chain::add_insn (bitmap candidate
*** 527,533 ****
        }
  
    for (ref = DF_INSN_UID_USES (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
!     if (!DF_REF_REG_MEM_P (ref))
        if (!analyze_register_chain (candidates, ref, disallowed))
  	return false;
  
--- 527,534 ----
        }
  
    for (ref = DF_INSN_UID_USES (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
!     if (DF_REF_TYPE (ref) == DF_REF_REG_USE
! 	&& !SUBREG_P (DF_REF_REG (ref)))
        if (!analyze_register_chain (candidates, ref, disallowed))
  	return false;
  
*************** scalar_chain::convert_op (rtx *op, rtx_i
*** 1167,1173 ****
    else
      {
        gcc_assert (SUBREG_P (*op));
!       gcc_assert (GET_MODE (*op) == vmode);
      }
  }
  
--- 1168,1175 ----
    else
      {
        gcc_assert (SUBREG_P (*op));
!       if (GET_MODE (*op) != vmode)
! 	*op = gen_lowpart (vmode, *op);
      }
  }
  
*************** timode_scalar_chain::compute_convert_gai
*** 1865,1871 ****
  	      else if (op1val > 32 && op1val < 96)
  		vcost = COSTS_N_INSNS (5);
  	      else
! 		vcost = COSTS_N_INSNS (1);
  	    }
  	  igain = scost - vcost;
  	  break;
--- 1867,1873 ----
  	      else if (op1val > 32 && op1val < 96)
  		vcost = COSTS_N_INSNS (5);
  	      else
! 		vcost = COSTS_N_INSNS (4);
  	    }
  	  igain = scost - vcost;
  	  break;
*************** convertible_comparison_p (rtx_insn *insn
*** 2343,2354 ****
    rtx op2 = XEXP (src, 1);
  
    /* *cmp<dwi>_doubleword.  */
!   if ((CONST_SCALAR_INT_P (op1)
!        || ((REG_P (op1) || MEM_P (op1))
! 	   && GET_MODE (op1) == mode))
!       && (CONST_SCALAR_INT_P (op2)
! 	  || ((REG_P (op2) || MEM_P (op2))
! 	      && GET_MODE (op2) == mode)))
      return true;
  
    /* *testti_doubleword.  */
--- 2345,2352 ----
    rtx op2 = XEXP (src, 1);
  
    /* *cmp<dwi>_doubleword.  */
!   if (general_operand (op1, mode)
!       && general_operand (op2, mode))
      return true;
  
    /* *testti_doubleword.  */
*************** timode_remove_non_convertible_regs (bitm
*** 2715,2722 ****
  					       DF_REF_REGNO (ref));
  
  	FOR_EACH_INSN_USE (ref, insn)
! 	  if (!DF_REF_REG_MEM_P (ref)
! 	      && GET_MODE (DF_REF_REG (ref)) == TImode)
  	    timode_check_non_convertible_regs (candidates, regs,
  					       DF_REF_REGNO (ref));
        }
--- 2713,2721 ----
  					       DF_REF_REGNO (ref));
  
  	FOR_EACH_INSN_USE (ref, insn)
! 	  if (DF_REF_TYPE (ref) == DF_REF_REG_USE
! 	      && GET_MODE (DF_REF_REG (ref)) == TImode
! 	      && !SUBREG_P (DF_REF_REG (ref)))
  	    timode_check_non_convertible_regs (candidates, regs,
  					       DF_REF_REGNO (ref));
        }
diff -Nrcpad gcc-17-20260524/gcc/config/i386/i386.cc gcc-17-20260531/gcc/config/i386/i386.cc
*** gcc-17-20260524/gcc/config/i386/i386.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/i386.cc	Sun May 31 22:32:05 2026
*************** static rtx ix86_function_value (const_tr
*** 430,435 ****
--- 430,436 ----
  static bool ix86_function_value_regno_p (const unsigned int);
  static unsigned int ix86_function_arg_boundary (machine_mode,
  						const_tree);
+ static bool ix86_overaligned_stack_slot_required (void);
  static rtx ix86_static_chain (const_tree, bool);
  static int ix86_function_regparm (const_tree, const_tree);
  static void ix86_compute_frame_layout (void);
*************** ix86_must_pass_in_stack (const function_
*** 1631,1636 ****
--- 1632,1645 ----
  	  && arg.type && TREE_CODE (arg.type) != VECTOR_TYPE);
  }
  
+ /* Implement TARGET_OVERALIGNED_STACK_SLOT_REQUIRED.  */
+ 
+ static bool
+ ix86_overaligned_stack_slot_required (void)
+ {
+   return TARGET_SEH;
+ }
+ 
  /* It returns the size, in bytes, of the area reserved for arguments passed
     in registers for the function represented by fndecl dependent to the used
     abi format.  */
*************** classify_argument (machine_mode mode, co
*** 2272,2278 ****
      }
  
    if (type && (AGGREGATE_TYPE_P (type)
! 	       || (TREE_CODE (type) == BITINT_TYPE && words > 1)))
      {
        int i;
        tree field;
--- 2281,2287 ----
      }
  
    if (type && (AGGREGATE_TYPE_P (type)
! 	       || (BITINT_TYPE_P (type) && words > 1)))
      {
        int i;
        tree field;
*************** classify_argument (machine_mode mode, co
*** 2422,2427 ****
--- 2431,2437 ----
  	  break;
  
  	case BITINT_TYPE:
+ 	case ENUMERAL_TYPE:
  	  /* _BitInt(N) for N > 64 is passed as structure containing
  	     (N + 63) / 64 64-bit elements.  */
  	  if (words > 2)
*************** function_value_ms_64 (machine_mode orig_
*** 4346,4354 ****
  
    if (TARGET_SSE)
      {
!       switch (GET_MODE_SIZE (mode))
  	{
  	case 16:
  	  if (valtype != NULL_TREE
  	      && !VECTOR_INTEGER_TYPE_P (valtype)
  	      && !INTEGRAL_TYPE_P (valtype)
--- 4356,4372 ----
  
    if (TARGET_SSE)
      {
!       unsigned int mode_size = GET_MODE_SIZE (mode);
! 
!       switch (mode_size)
  	{
  	case 16:
+ 	case 32:
+ 	case 64:
+ 	  if (mode_size == 32 && !TARGET_AVX)
+ 	    break;
+ 	  if (mode_size == 64 && !TARGET_AVX512F)
+ 	    break;
  	  if (valtype != NULL_TREE
  	      && !VECTOR_INTEGER_TYPE_P (valtype)
  	      && !INTEGRAL_TYPE_P (valtype)
*************** ix86_return_in_memory (const_tree type,
*** 4458,4470 ****
  	{
  	  size = int_size_in_bytes (type);
  
! 	  /* __m128 is returned in xmm0.  */
  	  if ((!type || VECTOR_INTEGER_TYPE_P (type)
  	       || INTEGRAL_TYPE_P (type)
  	       || VECTOR_FLOAT_TYPE_P (type))
  	      && (SCALAR_INT_MODE_P (mode) || VECTOR_MODE_P (mode))
  	      && !COMPLEX_MODE_P (mode)
! 	      && (GET_MODE_SIZE (mode) == 16 || size == 16))
  	    return false;
  
  	  /* Otherwise, the size must be exactly in [1248]. */
--- 4476,4492 ----
  	{
  	  size = int_size_in_bytes (type);
  
! 	  /* __m128 is returned in xmm0.  256/512-bit vector values are
! 	     returned in ymm0/zmm0 when AVX/AVX512 is enabled.  */
  	  if ((!type || VECTOR_INTEGER_TYPE_P (type)
  	       || INTEGRAL_TYPE_P (type)
  	       || VECTOR_FLOAT_TYPE_P (type))
  	      && (SCALAR_INT_MODE_P (mode) || VECTOR_MODE_P (mode))
  	      && !COMPLEX_MODE_P (mode)
! 	      && ((GET_MODE_SIZE (mode) == 16 || size == 16)
! 		  || (TARGET_AVX && (GET_MODE_SIZE (mode) == 32 || size == 32))
! 		  || (TARGET_AVX512F
! 		      && (GET_MODE_SIZE (mode) == 64 || size == 64))))
  	    return false;
  
  	  /* Otherwise, the size must be exactly in [1248]. */
*************** ix86_decompose_address (rtx addr, struct
*** 11483,11488 ****
--- 11505,11514 ----
        std::swap (base_reg, index_reg);
      }
  
+   /* Special case: rewrite index*1+disp into base+disp.  */
+   if (!base && index && scale == 1)
+     base = index, base_reg = index_reg, index = index_reg = NULL_RTX;
+ 
    /* Special case: %ebp cannot be encoded as a base without a displacement.
       Similarly %r13.  */
    if (!disp && base_reg
*************** static const scoped_attribute_specs *con
*** 28493,28498 ****
--- 28519,28526 ----
  #define TARGET_SETUP_INCOMING_VARARGS ix86_setup_incoming_varargs
  #undef TARGET_MUST_PASS_IN_STACK
  #define TARGET_MUST_PASS_IN_STACK ix86_must_pass_in_stack
+ #undef TARGET_OVERALIGNED_STACK_SLOT_REQUIRED
+ #define TARGET_OVERALIGNED_STACK_SLOT_REQUIRED ix86_overaligned_stack_slot_required
  #undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
  #define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS ix86_allocate_stack_slots_for_args
  #undef TARGET_FUNCTION_ARG_ADVANCE
diff -Nrcpad gcc-17-20260524/gcc/config/i386/i386.md gcc-17-20260531/gcc/config/i386/i386.md
*** gcc-17-20260524/gcc/config/i386/i386.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/i386.md	Sun May 31 22:32:05 2026
***************
*** 1021,1026 ****
--- 1021,1029 ----
    [(plus "add") (ss_plus "adds") (us_plus "addus")
     (minus "sub") (ss_minus "subs") (us_minus "subus")])
  
+ ;; Inverse instruction base name
+ (define_code_attr inv_insn [(plus "sub") (minus "add")])
+ 
  (define_code_iterator multdiv [mult div])
  
  (define_code_attr multdiv_mnemonic
***************
*** 6749,6755 ****
        if (TARGET_APX_NDD && <nf_applied>)
  	return "%{nf%} add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}";
        else
! 	return "#";
  
      case TYPE_INCDEC:
        if (operands[2] == const1_rtx)
--- 6752,6761 ----
        if (TARGET_APX_NDD && <nf_applied>)
  	return "%{nf%} add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}";
        else
! 	{
! 	  operands[3] = gen_rtx_PLUS (<MODE>mode, operands[1], operands[2]);
! 	  return "lea{<imodesuffix>}\t{%E3, %0|%0, %E3}";
! 	}
  
      case TYPE_INCDEC:
        if (operands[2] == const1_rtx)
diff -Nrcpad gcc-17-20260524/gcc/config/i386/sse.md gcc-17-20260531/gcc/config/i386/sse.md
*** gcc-17-20260524/gcc/config/i386/sse.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/sse.md	Sun May 31 22:32:05 2026
***************
*** 16590,16598 ****
    [(set (match_operand:VI_AVX2 0 "register_operand")
  	(plusminus:VI_AVX2
  	  (match_operand:VI_AVX2 1 "vector_operand")
! 	  (match_operand:VI_AVX2 2 "vector_operand")))]
    "TARGET_SSE2"
!   "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
  
  (define_expand "cond_<insn><mode>"
    [(set (match_operand:VI1248_AVX512VLBW 0 "register_operand")
--- 16590,16612 ----
    [(set (match_operand:VI_AVX2 0 "register_operand")
  	(plusminus:VI_AVX2
  	  (match_operand:VI_AVX2 1 "vector_operand")
! 	  (match_operand:VI_AVX2 2 "vector_or_const_vector_operand")))]
    "TARGET_SSE2"
! {
!   /* Expand vector add/sub 1 as vector sub/add -1.  */
!   if (rtx_equal_p (operands[2], CONST1_RTX (<MODE>mode)))
!     {
!       operands[2] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode));
!       emit_insn (gen_<inv_insn><mode>3 (operands[0], operands[1],
! 					operands[2]));
!       DONE;
!     }
! 
!   if (CONST_VECTOR_P (operands[2]))
!     operands[2] = force_reg (<MODE>mode, operands[2]);
! 
!   ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);
! })
  
  (define_expand "cond_<insn><mode>"
    [(set (match_operand:VI1248_AVX512VLBW 0 "register_operand")
***************
*** 16677,16682 ****
--- 16691,16723 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
+ /* Split vector add 1 into vector sub -1.  */
+ (define_insn_and_split "*add<mode>3_one"
+   [(set (match_operand:VI_AVX2 0 "register_operand")
+ 	(plus:VI_AVX2
+ 	  (match_operand:VI_AVX2 1 "nonimmediate_operand")
+ 	  (match_operand:VI_AVX2 2 "const1_operand")))]
+   "TARGET_SSE2 && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0) (minus:VI_AVX2 (match_dup 1) (match_dup 3)))]
+ {
+   operands[1] = force_reg (<MODE>mode, operands[1]);
+   operands[3] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode));
+ })
+ 
+ /* Split vector sub 1 into vector add -1.  */
+ (define_insn_and_split "*sub<mode>3_one"
+   [(set (match_operand:VI_AVX2 0 "register_operand")
+ 	(minus:VI_AVX2
+ 	  (match_operand:VI_AVX2 1 "nonimmediate_operand")
+ 	  (match_operand:VI_AVX2 2 "const1_operand")))]
+   "TARGET_SSE2 && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0) (plus:VI_AVX2 (match_dup 3) (match_dup 1)))]
+   "operands[3] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode));")
+ 
  (define_expand "<insn><mode>3<mask_name>"
    [(set (match_operand:VI12_AVX2_AVX512BW 0 "register_operand")
  	(sat_plusminus:VI12_AVX2_AVX512BW
diff -Nrcpad gcc-17-20260524/gcc/config/i386/x86-tune.def gcc-17-20260531/gcc/config/i386/x86-tune.def
*** gcc-17-20260524/gcc/config/i386/x86-tune.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/i386/x86-tune.def	Sun May 31 22:32:05 2026
*************** DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES,
*** 534,540 ****
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS
  	    | m_C86_4G))
  
--- 534,540 ----
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS
  	    | m_C86_4G))
  
*************** DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "
*** 547,553 ****
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS
  	    | m_C86_4G))
  
--- 547,553 ----
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS
  	    | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS
  	    | m_C86_4G))
  
diff -Nrcpad gcc-17-20260524/gcc/config/loongarch/loongarch.h gcc-17-20260531/gcc/config/loongarch/loongarch.h
*** gcc-17-20260524/gcc/config/loongarch/loongarch.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/loongarch/loongarch.h	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 271,277 ****
        && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
      { \
        if ((MODE) == SImode \
! 	  && !(TYPE && TREE_CODE (TYPE) == BITINT_TYPE \
  	       && TYPE_PRECISION (TYPE) < 32)) \
  	(UNSIGNEDP) = 0; \
        (MODE) = Pmode; \
--- 271,277 ----
        && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
      { \
        if ((MODE) == SImode \
! 	  && !(TYPE && BITINT_TYPE_P (TYPE) \
  	       && TYPE_PRECISION (TYPE) < 32)) \
  	(UNSIGNEDP) = 0; \
        (MODE) = Pmode; \
diff -Nrcpad gcc-17-20260524/gcc/config/m68k/m68k.h gcc-17-20260531/gcc/config/m68k/m68k.h
*** gcc-17-20260524/gcc/config/m68k/m68k.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/m68k/m68k.h	Sun May 31 22:32:05 2026
*************** __transfer_from_trampoline ()					\
*** 777,783 ****
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)			   \
    (flag_pic								   \
     && !((TARGET_ID_SHARED_LIBRARY || TARGET_SEP_DATA)			   \
! 	&& ((GLOBAL) || (CODE)))					   \
     ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4 \
     : DW_EH_PE_absptr)
  
--- 777,783 ----
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)			   \
    (flag_pic								   \
     && !((TARGET_ID_SHARED_LIBRARY || TARGET_SEP_DATA)			   \
! 	&& ((GLOBAL) || (!!CODE)))					   \
     ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4 \
     : DW_EH_PE_absptr)
  
diff -Nrcpad gcc-17-20260524/gcc/config/pa/pa.cc gcc-17-20260531/gcc/config/pa/pa.cc
*** gcc-17-20260524/gcc/config/pa/pa.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/pa/pa.cc	Sun May 31 22:32:05 2026
*************** static void
*** 10651,10660 ****
  pa_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
!   rtx start_addr = gen_reg_rtx (Pmode);
!   rtx end_addr = gen_reg_rtx (Pmode);
!   rtx line_length = gen_reg_rtx (Pmode);
!   rtx r_tramp, tmp;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
--- 10651,10657 ----
  pa_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
  {
    rtx fnaddr = XEXP (DECL_RTL (fndecl), 0);
!   rtx start, end, r_tramp, tmp;
  
    emit_block_move (m_tramp, assemble_trampoline_template (),
  		   GEN_INT (TRAMPOLINE_SIZE), BLOCK_OP_NORMAL);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10662,10667 ****
--- 10659,10667 ----
  
    if (!TARGET_64BIT)
      {
+       /* Start of trampoline code.  */
+       start = r_tramp;
+ 
        tmp = adjust_address (m_tramp, Pmode, 48);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 52);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10669,10696 ****
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 56);
!       emit_move_insn (tmp, r_tramp);
        tmp = adjust_address (m_tramp, Pmode, 60);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
- 
-       /* fdc and fic only use registers for the address to flush,
- 	 they do not accept integer displacements.  We align the
- 	 start and end addresses to the beginning of their respective
- 	 cache lines to minimize the number of lines flushed.  */
-       emit_insn (gen_andsi3 (start_addr, r_tramp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       tmp = force_reg (Pmode, plus_constant (Pmode, r_tramp,
- 					     TRAMPOLINE_CODE_SIZE-1));
-       emit_insn (gen_andsi3 (end_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
-       emit_insn (gen_dcacheflushsi (start_addr, end_addr, line_length));
-       emit_insn (gen_icacheflushsi (start_addr, end_addr, line_length,
- 				    gen_reg_rtx (Pmode),
- 				    gen_reg_rtx (Pmode)));
      }
    else
      {
        tmp = adjust_address (m_tramp, Pmode, 56);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 64);
--- 10669,10683 ----
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 56);
!       emit_move_insn (tmp, start);
        tmp = adjust_address (m_tramp, Pmode, 60);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
      }
    else
      {
+       /* Start of trampoline code.  */
+       start = force_reg (Pmode, plus_constant (Pmode, r_tramp, 32));
+ 
        tmp = adjust_address (m_tramp, Pmode, 56);
        emit_move_insn (tmp, fnaddr);
        tmp = adjust_address (m_tramp, Pmode, 64);
*************** pa_trampoline_init (rtx m_tramp, tree fn
*** 10698,10726 ****
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 16);
!       emit_move_insn (tmp, force_reg (Pmode, plus_constant (Pmode,
! 							    r_tramp, 32)));
        tmp = adjust_address (m_tramp, Pmode, 24);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 27));
- 
-       /* fdc and fic only use registers for the address to flush,
- 	 they do not accept integer displacements.  We align the
- 	 start and end addresses to the beginning of their respective
- 	 cache lines to minimize the number of lines flushed.  */
-       tmp = force_reg (Pmode, plus_constant (Pmode, r_tramp, 32));
-       emit_insn (gen_anddi3 (start_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       tmp = force_reg (Pmode, plus_constant (Pmode, tmp,
- 					     TRAMPOLINE_CODE_SIZE - 1));
-       emit_insn (gen_anddi3 (end_addr, tmp,
- 			     GEN_INT (-MIN_CACHELINE_SIZE)));
-       emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
-       emit_insn (gen_dcacheflushdi (start_addr, end_addr, line_length));
-       emit_insn (gen_icacheflushdi (start_addr, end_addr, line_length,
- 				    gen_reg_rtx (Pmode),
- 				    gen_reg_rtx (Pmode)));
      }
  
  #ifdef HAVE_ENABLE_EXECUTE_STACK
    emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
--- 10685,10700 ----
  
        /* Create a fat pointer for the trampoline.  */
        tmp = adjust_address (m_tramp, Pmode, 16);
!       emit_move_insn (tmp, start);
        tmp = adjust_address (m_tramp, Pmode, 24);
        emit_move_insn (tmp, gen_rtx_REG (Pmode, 27));
      }
  
+   end = force_reg (Pmode, plus_constant (Pmode, start, TRAMPOLINE_CODE_SIZE));
+ 
+   /* Flush trampoline.  */
+   emit_insn (gen_clear_cache (start, end));
+ 
  #ifdef HAVE_ENABLE_EXECUTE_STACK
    emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
  		     LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
diff -Nrcpad gcc-17-20260524/gcc/config/pa/pa.md gcc-17-20260531/gcc/config/pa/pa.md
*** gcc-17-20260524/gcc/config/pa/pa.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/pa/pa.md	Sun May 31 22:32:05 2026
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9947,9956 ****
    [(set_attr "type" "fpalu")
     (set_attr "length" "4")])
  
! ;; The following two patterns are used by the trampoline code for nested
  ;; functions.  They flush the I and D cache lines from the start address
! ;; (operand0) to the end address (operand1).  No lines are flushed if the
! ;; end address is less than the start address (unsigned).
  ;;
  ;; Because the range of memory flushed is variable and the size of a MEM
  ;; can only be a CONST_INT, the patterns specify that they perform an
--- 9947,9955 ----
    [(set_attr "type" "fpalu")
     (set_attr "length" "4")])
  
! ;; The following four patterns are used by the trampoline code for nested
  ;; functions.  They flush the I and D cache lines from the start address
! ;; (operand0) to the end address (operand1).
  ;;
  ;; Because the range of memory flushed is variable and the size of a MEM
  ;; can only be a CONST_INT, the patterns specify that they perform an
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9959,9967 ****
  ;; The address range for an icache flush must lie within a single
  ;; space on targets with non-equivalent space registers.
  ;;
! ;; Operand 0 contains the start address.
  ;; Operand 1 contains the end address.
! ;; Operand 2 contains the line length to use.
  (define_insn "dcacheflush<P:mode>"
    [(const_int 1)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_DCACHE)
--- 9958,9966 ----
  ;; The address range for an icache flush must lie within a single
  ;; space on targets with non-equivalent space registers.
  ;;
! ;; Operand 0 contains the line aligned start address.
  ;; Operand 1 contains the end address.
! ;; Operand 2 contains the line size to use.
  (define_insn "dcacheflush<P:mode>"
    [(const_int 1)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_DCACHE)
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9970,9980 ****
     (use (match_operand 2 "pmode_register_operand" "r"))
     (clobber (match_scratch:P 3 "=&0"))]
    ""
!   "cmpb,<dwc><<=,n %3,%1,.\;fdc,m %2(%3)\;sync"
    [(set_attr "type" "multi")
     (set_attr "length" "12")])
  
! (define_insn "icacheflush<P:mode>"
    [(const_int 2)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
     (use (match_operand 0 "pmode_register_operand" "r"))
--- 9969,9979 ----
     (use (match_operand 2 "pmode_register_operand" "r"))
     (clobber (match_scratch:P 3 "=&0"))]
    ""
!   "{comb|cmpb},<dwc><<,n %3,%1,.\;fdc,m %2(%3)\;sync"
    [(set_attr "type" "multi")
     (set_attr "length" "12")])
  
! (define_insn "icacheflush1<P:mode>"
    [(const_int 2)
     (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
     (use (match_operand 0 "pmode_register_operand" "r"))
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9984,10007 ****
     (clobber (match_operand 4 "pmode_register_operand" "=&r"))
     (clobber (match_scratch:P 5 "=&0"))]
    ""
!   "mfsp %%sr0,%4\;ldsid (%5),%3\;mtsp %3,%%sr0\;cmpb,<dwc><<=,n %5,%1,.\;fic,m %2(%%sr0,%5)\;sync\;mtsp %4,%%sr0\;nop\;nop\;nop\;nop\;nop\;nop"
    [(set_attr "type" "multi")
     (set_attr "length" "52")])
  
  (define_expand "clear_cache"
    [(match_operand 0 "pmode_register_operand")
     (match_operand 1 "pmode_register_operand")]
    ""
  {
!   rtx line_length = gen_reg_rtx (Pmode);
  
-   emit_move_insn (line_length, GEN_INT (MIN_CACHELINE_SIZE));
    if (TARGET_64BIT)
!     emit_insn (gen_icacheflushdi (operands[0], operands[1], line_length,
! 				  gen_reg_rtx (Pmode), gen_reg_rtx (Pmode)));
    else
!     emit_insn (gen_icacheflushsi (operands[0], operands[1], line_length,
! 				  gen_reg_rtx (Pmode), gen_reg_rtx (Pmode)));
    DONE;
  })
  
--- 9983,10068 ----
     (clobber (match_operand 4 "pmode_register_operand" "=&r"))
     (clobber (match_scratch:P 5 "=&0"))]
    ""
!   "mfsp %%sr1,%4\;ldsid (%5),%3\;mtsp %3,%%sr1\;{comb|cmpb},<dwc><<,n %5,%1,.\;fic,m %2(%%sr1,%5)\;sync\;mtsp %4,%%sr1\;nop\;nop\;nop\;nop\;nop\;nop"
    [(set_attr "type" "multi")
     (set_attr "length" "52")])
  
+ (define_insn "icacheflush2<P:mode>"
+   [(const_int 2)
+    (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
+    (use (match_operand 0 "pmode_register_operand" "r"))
+    (use (match_operand 1 "pmode_register_operand" "r"))
+    (use (match_operand 2 "pmode_register_operand" "r"))
+    (clobber (match_scratch:P 3 "=&0"))]
+   "TARGET_PA_20"
+   "cmpb,<dwc><<,n %3,%1,.\;fic,m %2(%3)\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop"
+   [(set_attr "type" "multi")
+    (set_attr "length" "40")])
+ 
+ (define_insn "icacheflush3<P:mode>"
+   [(const_int 3)
+    (unspec_volatile [(mem:BLK (scratch))] UNSPECV_ICACHE)
+    (use (match_operand 0 "pmode_register_operand" "r"))
+    (use (match_operand 1 "pmode_register_operand" "r"))
+    (use (match_operand 2 "pmode_register_operand" "r"))
+    (clobber (match_scratch:P 3 "=&0"))]
+   "!TARGET_PA_20 && TARGET_NO_SPACE_REGS"
+   "comb,<dwc><<,n %3,%1,.\;fic,m %2(%%sr4,%3)\;sync\;nop\;nop\;nop\;nop\;nop\;nop\;nop"
+   [(set_attr "type" "multi")
+    (set_attr "length" "40")])
+ 
+ ;; clear_cache
+ ;;
+ ;; Note the data and instruction cache flushes need to be separated
+ ;; by a sync instruction (see page 7-151 in PA 2.0 architecture manual).
+ ;; Thus, we can't combine the flush operations in a single loop.
+ 
+ ;; Operand 0 contains the start address (inclusive).
+ ;; Operand 1 contains the end address (exclusive).
  (define_expand "clear_cache"
    [(match_operand 0 "pmode_register_operand")
     (match_operand 1 "pmode_register_operand")]
    ""
  {
!   rtx start = gen_reg_rtx (Pmode);
!   rtx line_size = gen_reg_rtx (Pmode);
!   rtx lab = gen_label_rtx ();
!   rtx op0 = operands[0];
!   rtx op1 = operands[1];
! 
!   /* Skip flush if op0 is greater than or equal to op1.  */
!   emit_cmp_and_jump_insns (op0, op1, GEU, NULL_RTX, Pmode, 0, lab);
! 
!   /* Load cache line size.  */
!   emit_move_insn (line_size, GEN_INT (MIN_CACHELINE_SIZE));
  
    if (TARGET_64BIT)
!     {
!       /* Align the start address.  */
!       emit_insn (gen_anddi3 (start, op0, GEN_INT (-MIN_CACHELINE_SIZE)));
! 
!       /* Flush the cache.  */
!       emit_insn (gen_dcacheflushdi (start, op1, line_size));
!       emit_insn (gen_icacheflush2di (start, op1, line_size));
!     }
    else
!     {
!       /* Align the start address.  */
!       emit_insn (gen_andsi3 (start, op0, GEN_INT (-MIN_CACHELINE_SIZE)));
! 
!       /* Flush the cache.  */
!       emit_insn (gen_dcacheflushsi (start, op1, line_size));
!       if (TARGET_PA_20)
! 	emit_insn (gen_icacheflush2si (start, op1, line_size));
!       else if (TARGET_NO_SPACE_REGS)
! 	emit_insn (gen_icacheflush3si (start, op1, line_size));
!       else
! 	emit_insn (gen_icacheflush1si (start, op1, line_size,
! 				       gen_reg_rtx (Pmode),
! 				       gen_reg_rtx (Pmode)));
!     }
! 
!   emit_label (lab);
    DONE;
  })
  
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/riscv-fusion.cc gcc-17-20260531/gcc/config/riscv/riscv-fusion.cc
*** gcc-17-20260524/gcc/config/riscv/riscv-fusion.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/riscv-fusion.cc	Sun May 31 22:32:05 2026
*************** riscv_fusion_enabled_p (enum riscv_fusio
*** 51,61 ****
    return riscv_get_fusible_ops () & op;
  }
  
  /* Matches an add:
     (set (reg:DI rd) (plus:SI (reg:SI rs1) (reg:SI rs2))) */
  
  static bool
! riscv_set_is_add (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && REG_P (XEXP (SET_SRC (set), 0))
--- 51,82 ----
    return riscv_get_fusible_ops () & op;
  }
  
+ /* Return true if PREV_SET and CURR_SET satisfy the same-dest constraint
+    required by most fusion rules: when we are past register allocation
+    (i.e. can_create_pseudo_p () is false), the destination registers of
+    the two sets must be the same physical register.  */
+ 
+ static bool
+ riscv_fusion_same_dest_p (rtx prev_set, rtx curr_set)
+ {
+   if (can_create_pseudo_p ())
+     return true;
+ 
+   unsigned int prev_dest_regno = (REG_P (SET_DEST (prev_set))
+ 				  ? REGNO (SET_DEST (prev_set))
+ 				  : FIRST_PSEUDO_REGISTER);
+   unsigned int curr_dest_regno = (REG_P (SET_DEST (curr_set))
+ 				  ? REGNO (SET_DEST (curr_set))
+ 				  : FIRST_PSEUDO_REGISTER);
+ 
+   return prev_dest_regno == curr_dest_regno;
+ }
+ 
  /* Matches an add:
     (set (reg:DI rd) (plus:SI (reg:SI rs1) (reg:SI rs2))) */
  
  static bool
! riscv_set_is_add_p (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && REG_P (XEXP (SET_SRC (set), 0))
*************** riscv_set_is_add (rtx set)
*** 67,73 ****
     (set (reg:DI rd) (plus:SI (reg:SI rs1) (const_int imm))) */
  
  static bool
! riscv_set_is_addi (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && REG_P (XEXP (SET_SRC (set), 0))
--- 88,94 ----
     (set (reg:DI rd) (plus:SI (reg:SI rs1) (const_int imm))) */
  
  static bool
! riscv_set_is_addi_p (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && REG_P (XEXP (SET_SRC (set), 0))
*************** riscv_set_is_addi (rtx set)
*** 80,86 ****
      (plus:DI (zero_extend:DI (reg:SI rs1)) (reg:DI rs2))) */
  
  static bool
! riscv_set_is_adduw (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == ZERO_EXTEND
--- 101,107 ----
      (plus:DI (zero_extend:DI (reg:SI rs1)) (reg:DI rs2))) */
  
  static bool
! riscv_set_is_adduw_p (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == ZERO_EXTEND
*************** riscv_set_is_adduw (rtx set)
*** 94,100 ****
         (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rS2)) */
  
  static bool
! riscv_set_is_shNadd (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == ASHIFT
--- 115,121 ----
         (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rS2)) */
  
  static bool
! riscv_set_is_shNadd_p (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == ASHIFT
*************** riscv_set_is_shNadd (rtx set)
*** 113,119 ****
  		(reg:DI rs2)) */
  
  static bool
! riscv_set_is_shNadduw (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == AND
--- 134,140 ----
  		(reg:DI rs2)) */
  
  static bool
! riscv_set_is_shNadduw_p (rtx set)
  {
    return (GET_CODE (SET_SRC (set)) == PLUS
  	  && GET_CODE (XEXP (SET_SRC (set), 0)) == AND
*************** riscv_set_is_shNadduw (rtx set)
*** 126,759 ****
  	  && REG_P (SET_DEST (set)));
  }
  
! /* Implement TARGET_SCHED_MACRO_FUSION_PAIR_P.  Return true if PREV and CURR
!    should be kept together during scheduling.  */
  
! bool
! riscv_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
  {
!   /* If fusion is not enabled, then there's nothing to do.  */
!   if (!riscv_macro_fusion_p ())
      return false;
  
!   /* If PREV is already marked as fused, then we can't fuse CURR with PREV
!      and if we were to fuse them we'd end up with a blob of insns that
!      essentially are an atomic unit which is bad for scheduling.  */
!   if (SCHED_GROUP_P (prev))
      return false;
  
    rtx prev_set = single_set (prev);
    rtx curr_set = single_set (curr);
!   /* prev and curr are simple SET insns i.e. no flag setting or branching.  */
!   bool simple_sets_p = prev_set && curr_set && !any_condjump_p (curr);
!   bool sched1 = can_create_pseudo_p ();
  
!   unsigned int prev_dest_regno = (prev_set && REG_P (SET_DEST (prev_set))
! 				  ? REGNO (SET_DEST (prev_set))
! 				  : FIRST_PSEUDO_REGISTER);
!   unsigned int curr_dest_regno = (curr_set && REG_P (SET_DEST (curr_set))
! 				  ? REGNO (SET_DEST (curr_set))
! 				  : FIRST_PSEUDO_REGISTER);
  
!   if (simple_sets_p
!       && (riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW)
! 	  || riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS))
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	   prev (slli) == (set (reg:DI rD)
! 			       (ashift:DI (reg:DI rS) (const_int 32)))
! 	   curr (slri) == (set (reg:DI rD)
! 			       (lshiftrt:DI (reg:DI rD) (const_int <shift>)))
! 	 with <shift> being either 32 for FUSE_ZEXTW, or
! 			 `less than 32 for FUSE_ZEXTWS. */
  
!       if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
! 	  && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno
! 	  && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
! 	  && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	  && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 32
! 	  && ((INTVAL (XEXP (SET_SRC (curr_set), 1)) == 32
! 	       && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW) )
! 	      || (INTVAL (XEXP (SET_SRC (curr_set), 1)) < 32
! 		  && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS))))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_ZEXTWS\n");
! 	  return true;
! 	}
      }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTH)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
      {
!       /* We are trying to match the following:
! 	   prev (slli) == (set (reg:DI rD)
! 			       (ashift:DI (reg:DI rS) (const_int 48)))
! 	   curr (slri) == (set (reg:DI rD)
! 			       (lshiftrt:DI (reg:DI rD) (const_int 48))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
! 	  && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno
! 	  && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
! 	  && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	  && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 48
! 	  && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 48)
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file,"RISCV_FUSE_ZEXTH\n");
! 	  return true;
! 	}
      }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDINDEXED)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
      {
!       /* We are trying to match the following:
! 	   prev (add) == (set (reg:DI rD)
! 			      (plus:DI (reg:DI rS1) (reg:DI rS2))
! 	   curr (ld)  == (set (reg:DI rD)
! 			      (mem:DI (reg:DI rD))) */
  
!       if (MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno
! 	  && GET_CODE (SET_SRC (prev_set)) == PLUS
! 	  && REG_P (XEXP (SET_SRC (prev_set), 0))
! 	  && REG_P (XEXP (SET_SRC (prev_set), 1)))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n");
! 	  return true;
! 	}
  
!       /* We are trying to match the following:
! 	   prev (add) == (set (reg:DI rD)
! 			      (plus:DI (reg:DI rS1) (reg:DI rS2)))
! 	   curr (lw)  == (set (any_extend:DI (mem:SUBX (reg:DI rD)))) */
  
!       if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
! 	   || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
! 	  && MEM_P (XEXP (SET_SRC (curr_set), 0))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno
! 	  && GET_CODE (SET_SRC (prev_set)) == PLUS
! 	  && REG_P (XEXP (SET_SRC (prev_set), 0))
! 	  && REG_P (XEXP (SET_SRC (prev_set), 1)))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n");
! 	  return true;
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_EXPANDED_LD)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* For the "expanded add/load fusion" family we have 2 main
! 	 categories: memory loads with displacement (i.e. with imm offset)
! 	 and loads without displacement (i.e. with offset = x0).
  
! 	 For loads without displacement we'll need:
! 	 - add + ld (done in RISCV_FUSE_LDINDEXED)
! 	 - addi + ld (done in RISCV_FUSE_LDPREINCREMENT)
! 	 - shNadd + ld
! 	 - add.uw + lw
! 	 - shNadd.uw + lw
  
! 	 For loads with displacement/immediates:
! 	 with lw with immediate):
! 	 - add + ld with displacement
! 	 - addi + ld with displacement
! 	 - shNadd + ld with displacement
! 	 - add.uw + lw with displacement
! 	 - shNadd.uw + lw with displacement */
  
!       /* We're trying to match a curr_set ld with displacement:
! 	  prev (add|addi) = (set (reg:DI rd) (...))
! 	  curr (ld)  == (set (reg:DI rD)
! 		(mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */
!       if (MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS
! 	  && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno)
! 	{
! 	  if (riscv_set_is_add (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
  
! 	  if (riscv_set_is_addi (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
  
! 	  if (riscv_set_is_shNadd (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
! 	}
  
!       /* We're trying to match a ld without displacement:
! 	  prev (addi|shNadd) = (reg:DI rD) (...))
! 	  curr (ld)  == (set (reg:DI rD)
! 			     (mem:DI (reg:DI rD))) */
!       if (MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno)
! 	{
! 	  if (riscv_set_is_addi (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
  
! 	  if (riscv_set_is_shNadd (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
! 	}
  
!       /* We're trying to match a curr_set lw with displacement:
! 	  prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...))
! 	  curr (lw)  == (set (reg:DI rd)
! 		(any_extend:DI (mem:SUBX (plus:DI ((reg:DI rd)
! 						   (const_int IMM)))) */
!       if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
! 	   || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
! 	  && MEM_P (XEXP (SET_SRC (curr_set), 0))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == PLUS
  	  && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
  	  && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
! 	      == prev_dest_regno))
! 	{
! 	  if (riscv_set_is_adduw (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
  
! 	  if (riscv_set_is_shNadduw (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
! 	}
  
!       /* We're trying to match a curr_set lw without displacement:
! 	  prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...))
! 	  curr (ld|lh|lw)  == (set (reg:DI rd)
! 		(any_extend:DI (mem:SUBX (reg:DI rsd)))) */
!       if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
! 	   || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
! 	  && MEM_P (XEXP (SET_SRC (curr_set), 0))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno)
! 	{
! 	  if (riscv_set_is_adduw (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
  
! 	  if (riscv_set_is_shNadduw (prev_set))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n");
! 	      return true;
! 	    }
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDPREINCREMENT)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	   prev (add) == (set (reg:DI rS)
! 			      (plus:DI (reg:DI rS) (const_int))
! 	   curr (ld)  == (set (reg:DI rD)
! 			      (mem:DI (reg:DI rS))) */
  
!       if (MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno
! 	  && GET_CODE (SET_SRC (prev_set)) == PLUS
! 	  && REG_P (XEXP (SET_SRC (prev_set), 0))
! 	  && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LDPREINCREMENT\n");
! 	  return true;
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_ADDI)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	   prev (lui)  == (set (reg:DI rD) (const_int UPPER_IMM_20))
! 	   curr (addi) == (set (reg:DI rD)
! 			       (plus:DI (reg:DI rD) (const_int IMM12))) */
  
!       if ((GET_CODE (SET_SRC (curr_set)) == LO_SUM
! 	   || (GET_CODE (SET_SRC (curr_set)) == PLUS
! 	       && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	       && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1)))))
! 	  && (GET_CODE (SET_SRC (prev_set)) == HIGH
! 	      || (CONST_INT_P (SET_SRC (prev_set))
! 		  && LUI_OPERAND (INTVAL (SET_SRC (prev_set))))))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LUI_ADDI\n");
! 	  return true;
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_ADDI)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
      {
!       /* We are trying to match the following:
! 	   prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC))
! 	   curr (addi)  == (set (reg:DI rD)
! 				(plus:DI (reg:DI rD) (const_int IMM12)))
! 	 and
! 	   prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC))
! 	   curr (addi)  == (set (reg:DI rD)
! 				(lo_sum:DI (reg:DI rD) (const_int IMM12))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
! 	  && XINT (SET_SRC (prev_set), 1) == UNSPEC_AUIPC
! 	  && (GET_CODE (SET_SRC (curr_set)) == LO_SUM
! 	      || (GET_CODE (SET_SRC (curr_set)) == PLUS
! 		  && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 		  && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1))))))
  
  	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_AUIPC_ADDI\n");
! 	  return true;
  	}
      }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_LD)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
      {
!       /* We are trying to match the following:
! 	   prev (lui)  == (set (reg:DI rD) (const_int UPPER_IMM_20))
! 	   curr (ld)  == (set (reg:DI rD)
! 			      (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */
  
!       /* A LUI_OPERAND accepts (const_int 0), but we won't emit that as LUI.  So
! 	 reject that case explicitly.  */
!       if (CONST_INT_P (SET_SRC (prev_set))
! 	  && SET_SRC (prev_set) != CONST0_RTX (GET_MODE (SET_DEST (prev_set)))
! 	  && LUI_OPERAND (INTVAL (SET_SRC (prev_set)))
! 	  && MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS
! 	  && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno)
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LUI_LD\n");
! 	  return true;
! 	}
  
!       if (GET_CODE (SET_SRC (prev_set)) == HIGH
! 	  && MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == LO_SUM
! 	  && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno)
  	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LUI_LD\n");
! 	  return true;
! 	}
  
!       if (GET_CODE (SET_SRC (prev_set)) == HIGH
! 	  && (GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
! 	      || GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)
! 	  && MEM_P (XEXP (SET_SRC (curr_set), 0))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && (GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == LO_SUM
! 	      && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
! 	      && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
! 		  == prev_dest_regno)))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_LUI_LD\n");
! 	  return true;
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_LD)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	   prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC))
! 	   curr (ld)  == (set (reg:DI rD)
! 			      (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
! 	  && XINT (prev_set, 1) == UNSPEC_AUIPC
! 	  && MEM_P (SET_SRC (curr_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS)
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_AUIPC_LD\n");
! 	  return true;
  	}
      }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_CACHE_ALIGNED_STD))
!     {
!       /* We are trying to match the following:
! 	   prev (sd) == (set (mem (plus (reg sp|fp) (const_int)))
! 			      (reg rS1))
! 	   curr (sd) == (set (mem (plus (reg sp|fp) (const_int)))
! 			      (reg rS2)) */
  
!       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 hte 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)))
! 		{
! 		  if (dump_file)
! 		    fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n");
! 		  return true;
! 		}
! 	    }
! 	}
!     }
  
!   /* More general form of the RISCV_FUSE_CACHE_ALIGNED_STD.  The
!      major difference is the dependency on the stores being opposite
!      halves of a cache line is dropped.  Instead the lowest address
!      needs 2X the alignment of the object and the higher address
!      immediately followed the first object.  */
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ALIGNED_STD))
!     {
!       /* We are trying to match the following:
! 	prev (sd) == (set (mem (plus (reg rS1) (const_int)))
! 			  (reg rS2))
! 	curr (sd) == (set (mem (plus (reg rS1) (const_int)))
! 			  (reg rS3)) */
  
!       if (MEM_P (SET_DEST (prev_set))
! 	  && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
! 	  && MEM_P (SET_DEST (curr_set))
! 	  /* Stores must have the same width */
! 	  && GET_MODE (SET_DEST (curr_set)) == GET_MODE (SET_DEST (prev_set)))
! 	{
! 	  rtx base_prev, base_curr, offset_prev, offset_curr;
! 	  unsigned mode_size;
  
! 	  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 registers 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))
! 	    {
! 	      machine_mode mode = GET_MODE (SET_DEST (curr_set));
! 	      mode_size = estimated_poly_value (GET_MODE_SIZE (mode));
  
! 	      HOST_WIDE_INT offset_prev_int = INTVAL (offset_prev);
! 	      HOST_WIDE_INT offset_curr_int = INTVAL (offset_curr);
  
! 	      /* Get the smaller offset into OFFSET_PREV_INT.  */
! 	      if (offset_prev_int > offset_curr_int)
! 		std::swap (offset_prev_int, offset_curr_int);
  
! 	      /* We've normalized, so we need to check that the lower
! 		 address is aligned to 2X the size of the object.  The
! 		 higher address must be the lower address plus the
! 		 size of the object.  */
! 	      if (((offset_prev_int % (2 * mode_size)) == 0)
! 		  && offset_prev_int + mode_size == offset_curr_int)
! 		{
! 		  if (dump_file)
! 		    fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n");
! 		  return true;
! 		}
! 	    }
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_BFEXT)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	   prev (slli) == (set (reg:DI rD)
! 			       (ashift:DI (reg:DI rS) (const_int)))
! 	   curr (srli) == (set (reg:DI rD)
! 			       (lshiftrt:DI (reg:DI rD) (const_int))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
! 	  && (GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
! 	      || GET_CODE (SET_SRC (curr_set)) == ASHIFTRT)
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno
! 	  && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
! 	  && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_BFEXT\n");
! 	  return true;
! 	}
!     }
  
!   if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_B_ALUI)
!       && (sched1 || prev_dest_regno == curr_dest_regno))
!     {
!       /* We are trying to match the following:
! 	  prev (orc.b) == (set (reg rD)
! 				(unspec (reg rS1)))
! 	  curr (not) == (set (reg rD2) (not (reg rD))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
! 	  && GET_CODE (SET_SRC (curr_set)) == NOT
! 	  && XINT (SET_SRC (prev_set), 1) == UNSPEC_ORC_B
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno)
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_B_ALUI\n");
! 	  return true;
! 	}
  
!       /* We are trying to match the following:
! 	  prev (ctz) == (set (reg rD) (ctz (reg rS1)))
! 	  curr (andi) == (set (reg rD)
! 				(and (reg rD) (const_int 63))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == CTZ
! 	  && GET_CODE (SET_SRC (curr_set)) == AND
! 	  && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	  && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 63
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno)
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_B_ALUI\n");
! 	  return true;
! 	}
  
!       /* We are trying to match the following:
! 	  prev (sub) == (set (reg rD)
! 				(minus (const_int 0) (reg rS2))
! 	  curr (max) == (set (reg rD)
! 				(smax (reg rD) (reg rS2))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == MINUS
! 	  && (XEXP (SET_SRC (prev_set), 0)
! 	      == CONST0_RTX (GET_MODE (SET_SRC (prev_set))))
! 	  && CONST_INT_P (XEXP (SET_SRC (prev_set), 0))
! 	  && GET_CODE (SET_SRC (curr_set)) == SMAX
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno
! 	  && REG_P (XEXP (SET_SRC (prev_set), 1))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 1))
! 	  && (REGNO (XEXP (SET_SRC (prev_set), 1))
! 	      == REGNO (XEXP (SET_SRC (curr_set), 1))))
! 	{
! 	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_B_ALUI\n");
! 	  return true;
! 	}
  
!       /* We are trying to match the following:
! 	  prev (neg) == (set (reg rD) (neg (reg rS1)))
! 	  curr (max) == (set (reg rD)
! 				(smax (reg rD) (reg rS1))) */
  
!       if (GET_CODE (SET_SRC (prev_set)) == NEG
! 	  && GET_CODE (SET_SRC (curr_set)) == SMAX
! 	  && REG_P (SET_DEST (prev_set))
! 	  && REG_P (SET_DEST (curr_set))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 0))
! 	  && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno
! 	  && REG_P (XEXP (SET_SRC (prev_set), 0))
! 	  && REG_P (XEXP (SET_SRC (curr_set), 1))
! 	  && (REGNO (XEXP (SET_SRC (prev_set), 0))
! 	      == REGNO (XEXP (SET_SRC (curr_set), 1))))
  	{
  	  if (dump_file)
! 	    fprintf (dump_file, "RISCV_FUSE_B_ALUI\n");
  	  return true;
  	}
      }
--- 147,776 ----
  	  && REG_P (SET_DEST (set)));
  }
  
! /* Check for RISCV_FUSE_ZEXTW and RISCV_FUSE_ZEXTWS fusion.
!    prev (slli) == (set (reg:DI rD) (ashift:DI (reg:DI rS) (const_int 32)))
!    curr (srli) == (set (reg:DI rD) (lshiftrt:DI (reg:DI rD) (const_int N)))
!    with N being 32 for FUSE_ZEXTW, or less than 32 for FUSE_ZEXTWS.  */
  
! static bool
! riscv_fuse_zextws (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
      return false;
  
+   if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
+       && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
+       && REG_P (SET_DEST (prev_set))
+       && REG_P (SET_DEST (curr_set))
+       && REG_P (XEXP (SET_SRC (curr_set), 0))
+       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (curr_set))
+       && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
+       && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
+       && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 32
+       && ((INTVAL (XEXP (SET_SRC (curr_set), 1)) == 32
+ 	   && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW))
+ 	  || (INTVAL (XEXP (SET_SRC (curr_set), 1)) < 32
+ 	      && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS))))
+     return true;
+ 
+   return false;
+ }
+ 
+ /* Check for RISCV_FUSE_ZEXTH fusion.
+    prev (slli) == (set (reg:DI rD) (ashift:DI (reg:DI rS) (const_int 48)))
+    curr (srli) == (set (reg:DI rD) (lshiftrt:DI (reg:DI rD) (const_int 48)))  */
+ 
+ static bool
+ riscv_fuse_zexth (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
!       && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (curr_set))
!       && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
!       && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
!       && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 48
!       && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 48)
!     return true;
  
!   return false;
! }
! 
! /* Check for RISCV_FUSE_LDINDEXED fusion.
!    prev (add) == (set (reg:DI rD) (plus:DI (reg:DI rS1) (reg:DI rS2)))
!    curr (ld)  == (set (reg:DI rD) (mem:DI (reg:DI rD)))  */
! 
! static bool
! riscv_fuse_ldindexed (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
! 
!   if (MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set))
!       && GET_CODE (SET_SRC (prev_set)) == PLUS
!       && REG_P (XEXP (SET_SRC (prev_set), 0))
!       && REG_P (XEXP (SET_SRC (prev_set), 1)))
!     return true;
! 
!   /* curr (lw) == (set (any_extend:DI (mem:SUBX (reg:DI rD)))).  */
!   if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
!        || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
!       && MEM_P (XEXP (SET_SRC (curr_set), 0))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
!       && (REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  == REGNO (SET_DEST (prev_set)))
!       && GET_CODE (SET_SRC (prev_set)) == PLUS
!       && REG_P (XEXP (SET_SRC (prev_set), 0))
!       && REG_P (XEXP (SET_SRC (prev_set), 1)))
!     return true;
! 
!   return false;
! }
! 
! /* Check for RISCV_FUSE_EXPANDED_LD fusion.
!    Covers add/addi/shNadd + ld (with or without displacement) and
!    add.uw/shNadd.uw + lw (with or without displacement).  */
! 
! static bool
! riscv_fuse_expanded_ld (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
! 
!   /* Match ld with displacement:
!      curr (ld) == (set (reg:DI rD)
! 		       (mem:DI (plus:DI (reg:DI rD) (const_int IMM12))))  */
!   if (MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS
!       && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
!       && (REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  == REGNO (SET_DEST (prev_set))))
!     {
!       if (riscv_set_is_add_p (prev_set)
! 	  || riscv_set_is_addi_p (prev_set)
! 	  || riscv_set_is_shNadd_p (prev_set))
! 	return true;
      }
  
!   /* Match ld without displacement:
!      curr (ld) == (set (reg:DI rD) (mem:DI (reg:DI rD))).  */
!   if (MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set)))
      {
!       if (riscv_set_is_addi_p (prev_set)
! 	  || riscv_set_is_shNadd_p (prev_set))
! 	return true;
!     }
  
!   /* Match lw with displacement.  */
!   if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
!        || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
!       && MEM_P (XEXP (SET_SRC (curr_set), 0))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == PLUS
!       && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
!       && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
! 	  == REGNO (SET_DEST (prev_set))))
!     {
!       if (riscv_set_is_adduw_p (prev_set)
! 	  || riscv_set_is_shNadduw_p (prev_set))
! 	return true;
      }
  
!   /* Match lw without displacement.  */
!   if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
!        || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND))
!       && MEM_P (XEXP (SET_SRC (curr_set), 0))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
!       && (REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  == REGNO (SET_DEST (prev_set))))
      {
!       if (riscv_set_is_adduw_p (prev_set)
! 	  || riscv_set_is_shNadduw_p (prev_set))
! 	return true;
!     }
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_LDPREINCREMENT fusion.
!    prev (addi) == (set (reg:DI rS) (plus:DI (reg:DI rS) (const_int)))
!    curr (ld)   == (set (reg:DI rD) (mem:DI (reg:DI rS)))  */
  
! static bool
! riscv_fuse_ldpreincrement (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   if (MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set))
!       && GET_CODE (SET_SRC (prev_set)) == PLUS
!       && REG_P (XEXP (SET_SRC (prev_set), 0))
!       && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)))
!     return true;
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_LUI_ADDI fusion.
!    prev (lui)  == (set (reg:DI rD) (const_int UPPER_IMM_20))
!    curr (addi) == (set (reg:DI rD) (plus:DI (reg:DI rD) (const_int IMM12)))  */
  
! static bool
! riscv_fuse_lui_addi (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   if ((GET_CODE (SET_SRC (curr_set)) == LO_SUM
!        || (GET_CODE (SET_SRC (curr_set)) == PLUS
! 	   && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	   && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1)))))
!       && (GET_CODE (SET_SRC (prev_set)) == HIGH
! 	  || (CONST_INT_P (SET_SRC (prev_set))
! 	      && LUI_OPERAND (INTVAL (SET_SRC (prev_set))))))
!     return true;
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_AUIPC_ADDI fusion.
!    prev (auipc) == (set (reg:DI rD) (unspec:DI UNSPEC_AUIPC))
!    curr (addi)  == (set (reg:DI rD) (plus:DI (reg:DI rD) (const_int)))  */
! 
! static bool
! riscv_fuse_auipc_addi (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
! 
!   if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
!       && XINT (SET_SRC (prev_set), 1) == UNSPEC_AUIPC
!       && (GET_CODE (SET_SRC (curr_set)) == LO_SUM
! 	  || (GET_CODE (SET_SRC (curr_set)) == PLUS
! 	      && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
! 	      && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1))))))
!     return true;
! 
!   return false;
! }
! 
! /* Check for RISCV_FUSE_LUI_LD fusion.
!    prev (lui) == (set (reg:DI rD) (const_int UPPER_IMM_20))
!    curr (ld)  == (set (reg:DI rD) (mem:DI (plus:DI (reg:DI rD) ...)))  */
! 
! static bool
! riscv_fuse_lui_ld (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
! 
!   /* A LUI_OPERAND accepts (const_int 0), but we won't emit that as LUI.
!      Reject that case explicitly.  */
!   if (CONST_INT_P (SET_SRC (prev_set))
!       && SET_SRC (prev_set) != CONST0_RTX (GET_MODE (SET_DEST (prev_set)))
!       && LUI_OPERAND (INTVAL (SET_SRC (prev_set)))
!       && MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS
!       && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
!       && (REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  == REGNO (SET_DEST (prev_set))))
!     return true;
! 
!   if (GET_CODE (SET_SRC (prev_set)) == HIGH
!       && MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == LO_SUM
!       && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
!       && (REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0))
! 	  == REGNO (SET_DEST (prev_set))))
!     return true;
! 
!   if (GET_CODE (SET_SRC (prev_set)) == HIGH
!       && (GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND
! 	  || GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)
!       && MEM_P (XEXP (SET_SRC (curr_set), 0))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && (GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == LO_SUM
  	  && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
  	  && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0))
! 	      == REGNO (SET_DEST (prev_set)))))
!     return true;
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_AUIPC_LD fusion.
!    prev (auipc) == (set (reg:DI rD) (unspec:DI UNSPEC_AUIPC))
!    curr (ld)    == (set (reg:DI rD) (mem:DI (plus:DI (reg:DI rD) ...)))  */
  
! static bool
! riscv_fuse_auipc_ld (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
!       && XINT (SET_SRC (prev_set), 1) == UNSPEC_AUIPC
!       && MEM_P (SET_SRC (curr_set))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS)
!     return true;
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_CACHE_ALIGNED_STD fusion.
!    prev (sd) == (set (mem (plus (reg sp|fp) (const_int))) (reg rS1))
!    curr (sd) == (set (mem (plus (reg sp|fp) (const_int))) (reg rS2))  */
  
! 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.  More general form of
!    RISCV_FUSE_CACHE_ALIGNED_STD.  The dependency on the stores being
!    opposite halves of a cache line is dropped.  Instead the lowest
!    address needs 2X the alignment of the object and the higher address
!    immediately follows the first object.  */
! 
! static bool
! riscv_fuse_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))
!       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
!       && MEM_P (SET_DEST (curr_set))
!       /* Stores must have the same width.  */
!       && GET_MODE (SET_DEST (curr_set)) == GET_MODE (SET_DEST (prev_set)))
      {
!       rtx base_prev, base_curr, offset_prev, offset_curr;
!       unsigned mode_size;
  
!       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 registers 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))
  	{
! 	  machine_mode mode = GET_MODE (SET_DEST (curr_set));
! 	  mode_size = estimated_poly_value (GET_MODE_SIZE (mode));
  
! 	  HOST_WIDE_INT offset_prev_int = INTVAL (offset_prev);
! 	  HOST_WIDE_INT offset_curr_int = INTVAL (offset_curr);
  
! 	  /* Get the smaller offset into OFFSET_PREV_INT.  */
! 	  if (offset_prev_int > offset_curr_int)
! 	    std::swap (offset_prev_int, offset_curr_int);
  
! 	  /* We've normalized, so we need to check that the lower
! 	     address is aligned to 2X the size of the object.  The
! 	     higher address must be the lower address plus the
! 	     size of the object.  */
! 	  if (((offset_prev_int % (2 * mode_size)) == 0)
! 	      && offset_prev_int + mode_size == offset_curr_int)
! 	    return true;
  	}
      }
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_BFEXT fusion.
!    prev (slli) == (set (reg:DI rD) (ashift:DI (reg:DI rS) (const_int)))
!    curr (srli) == (set (reg:DI rD) (lshiftrt:DI (reg:DI rD) (const_int)))  */
  
! static bool
! riscv_fuse_bfext (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   if (GET_CODE (SET_SRC (prev_set)) == ASHIFT
!       && (GET_CODE (SET_SRC (curr_set)) == LSHIFTRT
! 	  || GET_CODE (SET_SRC (curr_set)) == ASHIFTRT)
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set))
!       && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
!       && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)))
!     return true;
  
!   return false;
! }
  
! /* Check for RISCV_FUSE_B_ALUI fusion.
!    Covers orc.b+not, ctz+andi, sub+smax, neg+smax patterns.  */
  
! static bool
! riscv_fuse_b_alui (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 (!riscv_fusion_same_dest_p (prev_set, curr_set))
!     return false;
  
!   /* orc.b + not.  */
!   if (GET_CODE (SET_SRC (prev_set)) == UNSPEC
!       && GET_CODE (SET_SRC (curr_set)) == NOT
!       && XINT (SET_SRC (prev_set), 1) == UNSPEC_ORC_B
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set)))
!     return true;
  
!   /* ctz + andi.  */
!   if (GET_CODE (SET_SRC (prev_set)) == CTZ
!       && GET_CODE (SET_SRC (curr_set)) == AND
!       && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))
!       && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 63
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set)))
!     return true;
  
!   /* sub + smax (abs pattern).  */
!   if (GET_CODE (SET_SRC (prev_set)) == MINUS
!       && (XEXP (SET_SRC (prev_set), 0)
! 	  == CONST0_RTX (GET_MODE (SET_SRC (prev_set))))
!       && GET_CODE (SET_SRC (curr_set)) == SMAX
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set))
!       && REG_P (XEXP (SET_SRC (prev_set), 1))
!       && REG_P (XEXP (SET_SRC (curr_set), 1))
!       && (REGNO (XEXP (SET_SRC (prev_set), 1))
! 	  == REGNO (XEXP (SET_SRC (curr_set), 1))))
!     return true;
  
!   /* neg + smax (abs pattern).  */
!   if (GET_CODE (SET_SRC (prev_set)) == NEG
!       && GET_CODE (SET_SRC (curr_set)) == SMAX
!       && REG_P (SET_DEST (prev_set))
!       && REG_P (SET_DEST (curr_set))
!       && REG_P (XEXP (SET_SRC (curr_set), 0))
!       && REGNO (XEXP (SET_SRC (curr_set), 0)) == REGNO (SET_DEST (prev_set))
!       && REG_P (XEXP (SET_SRC (prev_set), 0))
!       && REG_P (XEXP (SET_SRC (curr_set), 1))
!       && (REGNO (XEXP (SET_SRC (prev_set), 0))
! 	  == REGNO (XEXP (SET_SRC (curr_set), 1))))
!     return true;
  
!   return false;
! }
  
! /* Type for a fusion checker function.  Takes the two candidate insns
!    and returns true if they should be fused.  */
  
! typedef bool (*fusion_checker_fn) (rtx_insn *, rtx_insn *);
  
! /* Descriptor for a single fusion rule.  */
  
! struct riscv_fusion_entry
! {
!   /* The fusion operation flag to check enablement.  For entries that
!      check multiple flags (ZEXTW/ZEXTWS), use the bitwise OR.  */
!   unsigned int op_flags;
  
!   /* The checker function.  */
!   fusion_checker_fn checker;
  
!   /* The fusion type name used in dump output.  */
!   const char *fusion_type;
! };
  
! /* Table of all fusion rules.  */
  
! static const struct riscv_fusion_entry riscv_fusion_table[] =
! {
!   { RISCV_FUSE_ZEXTW | RISCV_FUSE_ZEXTWS,
!     riscv_fuse_zextws, "RISCV_FUSE_ZEXTWS" },
!   { RISCV_FUSE_ZEXTH,
!     riscv_fuse_zexth, "RISCV_FUSE_ZEXTH" },
!   { RISCV_FUSE_LDINDEXED,
!     riscv_fuse_ldindexed, "RISCV_FUSE_LDINDEXED" },
!   { RISCV_FUSE_EXPANDED_LD,
!     riscv_fuse_expanded_ld, "RISCV_FUSE_EXPANDED_LD" },
!   { RISCV_FUSE_LDPREINCREMENT,
!     riscv_fuse_ldpreincrement, "RISCV_FUSE_LDPREINCREMENT" },
!   { RISCV_FUSE_LUI_ADDI,
!     riscv_fuse_lui_addi, "RISCV_FUSE_LUI_ADDI" },
!   { RISCV_FUSE_AUIPC_ADDI,
!     riscv_fuse_auipc_addi, "RISCV_FUSE_AUIPC_ADDI" },
!   { RISCV_FUSE_LUI_LD,
!     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,
!     riscv_fuse_bfext, "RISCV_FUSE_BFEXT" },
!   { RISCV_FUSE_B_ALUI,
!     riscv_fuse_b_alui, "RISCV_FUSE_B_ALUI" },
! };
  
! /* Implement TARGET_SCHED_MACRO_FUSION_PAIR_P.  Return true if PREV and CURR
!    should be kept together during scheduling.  */
! 
! bool
! riscv_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
! {
!   /* If fusion is not enabled, then there's nothing to do.  */
!   if (!riscv_macro_fusion_p ())
!     return false;
! 
!   /* If PREV is already marked as fused, then we can't fuse CURR with PREV
!      and if we were to fuse them we'd end up with a blob of insns that
!      essentially are an atomic unit which is bad for scheduling.  */
!   if (SCHED_GROUP_P (prev))
!     return false;
! 
!   for (size_t i = 0; i < ARRAY_SIZE (riscv_fusion_table); i++)
!     {
!       const struct riscv_fusion_entry *entry = &riscv_fusion_table[i];
! 
!       /* Check if this fusion type is enabled.  */
!       if (!(riscv_get_fusible_ops () & entry->op_flags))
! 	continue;
! 
!       if (entry->checker (prev, curr))
  	{
  	  if (dump_file)
! 	    fprintf (dump_file, "%s\n", entry->fusion_type);
  	  return true;
  	}
      }
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/riscv-vector-costs.cc gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.cc
*** gcc-17-20260524/gcc/config/riscv/riscv-vector-costs.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.cc	Sun May 31 22:32:05 2026
*************** costs::prefer_unrolled_loop () const
*** 1095,1100 ****
--- 1095,1168 ----
  	      <= (unsigned int) param_max_completely_peeled_insns));
  }
  
+ /* Return the estimated number of vector iterations for LOOP_VINFO, or
+    HOST_WIDE_INT_M1U if the scalar iteration count is not known.  */
+ static unsigned HOST_WIDE_INT
+ estimated_loop_iters (loop_vec_info loop_vinfo)
+ {
+   if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo))
+     return HOST_WIDE_INT_M1U;
+ 
+   unsigned HOST_WIDE_INT scalar_niters = LOOP_VINFO_INT_NITERS (loop_vinfo);
+   unsigned int vf = vect_vf_for_cost (loop_vinfo);
+   return (LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo)
+ 	  ? CEIL (scalar_niters, vf)
+ 	  : scalar_niters / vf);
+ }
+ 
+ /* Compare the estimated loop overheads of two loops.  With LMUL cost scaling,
+    simple loop bodies can have equal inside-loop costs for different LMULs.
+    Include loop-back branch costs so that larger RVV modes are preferred when
+    they reduce or eliminate vector loop iterations.  */
+ static int
+ compare_loop_overhead (loop_vec_info this_loop_vinfo,
+ 		       loop_vec_info other_loop_vinfo)
+ {
+   gcc_assert (LOOP_VINFO_NITERS_KNOWN_P (this_loop_vinfo));
+   gcc_assert (LOOP_VINFO_NITERS_KNOWN_P (other_loop_vinfo));
+ 
+   unsigned HOST_WIDE_INT this_niters = estimated_loop_iters (this_loop_vinfo);
+   unsigned HOST_WIDE_INT other_niters = estimated_loop_iters (other_loop_vinfo);
+   bool this_eliminate_loop_p = this_niters == 1;
+   bool other_eliminate_loop_p = other_niters == 1;
+ 
+   if (this_eliminate_loop_p != other_eliminate_loop_p)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Preferring %s loop because it is estimated to"
+ 			 " eliminate the main loop entirely\n",
+ 			 GET_MODE_NAME ((this_eliminate_loop_p
+ 					 ? this_loop_vinfo
+ 					 : other_loop_vinfo)->vector_mode));
+       return this_eliminate_loop_p ? -1 : 1;
+     }
+ 
+   unsigned int branch_cost
+     = builtin_vectorization_cost (cond_branch_taken, NULL_TREE, 0);
+   unsigned HOST_WIDE_INT this_overhead
+     = this_niters > 1 ? (this_niters - 1) * branch_cost : 0;
+   unsigned HOST_WIDE_INT other_overhead
+     = other_niters > 1 ? (other_niters - 1) * branch_cost : 0;
+ 
+   if (this_overhead != other_overhead)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "Preferring %s loop because it has lower"
+ 			 " loop overhead ("
+ 			 HOST_WIDE_INT_PRINT_UNSIGNED " vs. "
+ 			 HOST_WIDE_INT_PRINT_UNSIGNED ")\n",
+ 			 GET_MODE_NAME ((this_overhead < other_overhead
+ 					 ? this_loop_vinfo
+ 					 : other_loop_vinfo)->vector_mode),
+ 			 this_overhead, other_overhead);
+       return this_overhead < other_overhead ? -1 : 1;
+     }
+ 
+   return 0;
+ }
+ 
  bool
  costs::better_main_loop_than_p (const vector_costs *uncast_other) const
  {
*************** costs::better_main_loop_than_p (const ve
*** 1213,1219 ****
  	   && m_cost_type == VLS_VECTOR_COST)
      return false;
  
!   return vector_costs::better_main_loop_than_p (other);
  }
  
  /* Returns the group size i.e. the number of vectors to be loaded by a
--- 1281,1308 ----
  	   && m_cost_type == VLS_VECTOR_COST)
      return false;
  
!   /* Fall back to generic costing if either iteration count is unknown.  For
!      known iteration counts, include loop overhead when comparing different
!      LMULs.  This handles such cases better than better_main_loop_than_p,
!      especially while outside costs can still overestimate prologue costs
!      (PR target/125476).  */
!   if (!LOOP_VINFO_NITERS_KNOWN_P (this_loop_vinfo)
!       || !LOOP_VINFO_NITERS_KNOWN_P (other_loop_vinfo))
!     return vector_costs::better_main_loop_than_p (other);
! 
!   int diff = compare_inside_loop_cost (other);
!   if (diff != 0)
!     return diff < 0;
! 
!   diff = compare_loop_overhead (this_loop_vinfo, other_loop_vinfo);
!   if (diff != 0)
!     return diff < 0;
! 
!   diff = compare_outside_loop_cost (other);
!   if (diff != 0)
!     return diff < 0;
! 
!   return false;
  }
  
  /* Returns the group size i.e. the number of vectors to be loaded by a
*************** segment_loadstore_group_size (enum vect_
*** 1245,1253 ****
  static unsigned
  get_lmul_cost_scaling (machine_mode mode)
  {
-   if (!riscv_vla_mode_p (mode))
-     return 1;
- 
    enum vlmul_type vlmul = get_vlmul (mode);
  
    /* Cost scaling based on LMUL and data processed.
--- 1334,1339 ----
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/riscv.cc gcc-17-20260531/gcc/config/riscv/riscv.cc
*** gcc-17-20260524/gcc/config/riscv/riscv.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/riscv.cc	Sun May 31 22:32:05 2026
*************** const enum reg_class riscv_regno_to_clas
*** 351,364 ****
    JALR_REGS,	JALR_REGS,	JALR_REGS,	JALR_REGS,
    JALR_REGS,	JALR_REGS,	JALR_REGS,	JALR_REGS,
    SIBCALL_REGS,	SIBCALL_REGS,	SIBCALL_REGS,	SIBCALL_REGS,
    RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
    RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
    FRAME_REGS,	FRAME_REGS,	NO_REGS,	NO_REGS,
    NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
    NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
--- 351,364 ----
    JALR_REGS,	JALR_REGS,	JALR_REGS,	JALR_REGS,
    JALR_REGS,	JALR_REGS,	JALR_REGS,	JALR_REGS,
    SIBCALL_REGS,	SIBCALL_REGS,	SIBCALL_REGS,	SIBCALL_REGS,
+   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
+   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
    RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,	RVC_FP_REGS,
!   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
!   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
!   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
!   FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    FRAME_REGS,	FRAME_REGS,	NO_REGS,	NO_REGS,
    NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
    NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
*************** static bool
*** 10962,10969 ****
  riscv_secondary_memory_needed (machine_mode mode, reg_class_t class1,
  			       reg_class_t class2)
  {
!   bool class1_is_fpr = class1 == FP_REGS || class1 == RVC_FP_REGS;
!   bool class2_is_fpr = class2 == FP_REGS || class2 == RVC_FP_REGS;
    return (!riscv_vector_mode_p (mode)
  	  && GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD
  	  && (class1_is_fpr != class2_is_fpr)
--- 10962,10969 ----
  riscv_secondary_memory_needed (machine_mode mode, reg_class_t class1,
  			       reg_class_t class2)
  {
!   bool class1_is_fpr = reg_class_subset_p (class1, FP_REGS);
!   bool class2_is_fpr = reg_class_subset_p (class2, FP_REGS);
    return (!riscv_vector_mode_p (mode)
  	  && GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD
  	  && (class1_is_fpr != class2_is_fpr)
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/sync-rvwmo.md gcc-17-20260531/gcc/config/riscv/sync-rvwmo.md
*** gcc-17-20260524/gcc/config/riscv/sync-rvwmo.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/sync-rvwmo.md	Sun May 31 22:32:05 2026
***************
*** 51,57 ****
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "memory_operand" "A")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPEC_ATOMIC_LOAD))]
    "!TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
--- 51,57 ----
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "memory_operand" "A")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPECV_ATOMIC_LOAD))]
    "!TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
***************
*** 81,87 ****
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "reg_or_0_operand" "rJ")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPEC_ATOMIC_STORE))]
    "!TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
--- 81,87 ----
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "reg_or_0_operand" "rJ")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPECV_ATOMIC_STORE))]
    "!TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/sync-ztso.md gcc-17-20260531/gcc/config/riscv/sync-ztso.md
*** gcc-17-20260524/gcc/config/riscv/sync-ztso.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/sync-ztso.md	Sun May 31 22:32:05 2026
***************
*** 45,51 ****
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "memory_operand" "A")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPEC_ATOMIC_LOAD))]
    "TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
--- 45,51 ----
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "memory_operand" "A")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPECV_ATOMIC_LOAD))]
    "TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
***************
*** 70,76 ****
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "reg_or_0_operand" "rJ")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPEC_ATOMIC_STORE))]
    "TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
--- 70,76 ----
  	(unspec_volatile:ANYI
  	    [(match_operand:ANYI 1 "reg_or_0_operand" "rJ")
  	     (match_operand:SI 2 "const_int_operand")]  ;; model
! 	 UNSPECV_ATOMIC_STORE))]
    "TARGET_ZTSO"
    {
      enum memmodel model = (enum memmodel) INTVAL (operands[2]);
diff -Nrcpad gcc-17-20260524/gcc/config/riscv/sync.md gcc-17-20260531/gcc/config/riscv/sync.md
*** gcc-17-20260524/gcc/config/riscv/sync.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/riscv/sync.md	Sun May 31 22:32:05 2026
***************
*** 20,38 ****
  ;; <http://www.gnu.org/licenses/>.
  
  (define_c_enum "unspec" [
-   UNSPEC_COMPARE_AND_SWAP
-   UNSPEC_COMPARE_AND_SWAP_SUBWORD
-   UNSPEC_SYNC_OLD_OP
-   UNSPEC_SYNC_OLD_OP_SUBWORD
-   UNSPEC_SYNC_OLD_OP_ZABHA
-   UNSPEC_SYNC_EXCHANGE
-   UNSPEC_SYNC_EXCHANGE_SUBWORD
-   UNSPEC_SYNC_EXCHANGE_ZABHA
-   UNSPEC_ATOMIC_LOAD
-   UNSPEC_ATOMIC_STORE
    UNSPEC_MEMORY_BARRIER
  ])
  
  ;; Memory barriers.
  
  (define_expand "mem_thread_fence"
--- 20,41 ----
  ;; <http://www.gnu.org/licenses/>.
  
  (define_c_enum "unspec" [
    UNSPEC_MEMORY_BARRIER
  ])
  
+ (define_c_enum "unspecv" [
+   UNSPECV_COMPARE_AND_SWAP
+   UNSPECV_COMPARE_AND_SWAP_SUBWORD
+   UNSPECV_SYNC_OLD_OP
+   UNSPECV_SYNC_OLD_OP_SUBWORD
+   UNSPECV_SYNC_OLD_OP_ZABHA
+   UNSPECV_SYNC_EXCHANGE
+   UNSPECV_SYNC_EXCHANGE_SUBWORD
+   UNSPECV_SYNC_EXCHANGE_ZABHA
+   UNSPECV_ATOMIC_LOAD
+   UNSPECV_ATOMIC_STORE
+ ])
+ 
  ;; Memory barriers.
  
  (define_expand "mem_thread_fence"
***************
*** 96,102 ****
  	  [(any_atomic:SHORT (match_dup 0)
  		     (match_operand:SHORT 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP_ZABHA))]
    "TARGET_ZABHA"
    "amo<insn>.<amobh>%A2\tzero,%z1,%0"
    [(set_attr "type" "atomic")
--- 99,105 ----
  	  [(any_atomic:SHORT (match_dup 0)
  		     (match_operand:SHORT 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP_ZABHA))]
    "TARGET_ZABHA"
    "amo<insn>.<amobh>%A2\tzero,%z1,%0"
    [(set_attr "type" "atomic")
***************
*** 123,129 ****
  	  [(any_atomic:GPR (match_dup 0)
  		     (match_operand:GPR 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ZAAMO"
    "amo<insn>.<amo>%A2\tzero,%z1,%0"
    [(set_attr "type" "atomic")
--- 126,132 ----
  	  [(any_atomic:GPR (match_dup 0)
  		     (match_operand:GPR 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP))]
    "TARGET_ZAAMO"
    "amo<insn>.<amo>%A2\tzero,%z1,%0"
    [(set_attr "type" "atomic")
***************
*** 135,141 ****
  	  [(any_atomic:GPR (match_dup 0)
  		     (match_operand:GPR 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP))
     (clobber (match_scratch:GPR 3 "=&r"))]	     ;; tmp_1
    "!TARGET_ZAAMO && TARGET_ZALRSC"
    {
--- 138,144 ----
  	  [(any_atomic:GPR (match_dup 0)
  		     (match_operand:GPR 1 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 2 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP))
     (clobber (match_scratch:GPR 3 "=&r"))]	     ;; tmp_1
    "!TARGET_ZAAMO && TARGET_ZALRSC"
    {
***************
*** 174,180 ****
  	  [(any_atomic:GPR (match_dup 1)
  		     (match_operand:GPR 2 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ZAAMO"
    "amo<insn>.<amo>%A3\t%0,%z2,%1"
    [(set_attr "type" "atomic")
--- 177,183 ----
  	  [(any_atomic:GPR (match_dup 1)
  		     (match_operand:GPR 2 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP))]
    "TARGET_ZAAMO"
    "amo<insn>.<amo>%A3\t%0,%z2,%1"
    [(set_attr "type" "atomic")
***************
*** 188,194 ****
  	  [(any_atomic:GPR (match_dup 1)
  		     (match_operand:GPR 2 "arith_operand" "rI"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP))
     (clobber (match_scratch:GPR 4 "=&r"))]	  ;; tmp_1
    "!TARGET_ZAAMO && TARGET_ZALRSC"
    {
--- 191,197 ----
  	  [(any_atomic:GPR (match_dup 1)
  		     (match_operand:GPR 2 "arith_operand" "rI"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP))
     (clobber (match_scratch:GPR 4 "=&r"))]	  ;; tmp_1
    "!TARGET_ZAAMO && TARGET_ZALRSC"
    {
***************
*** 209,215 ****
  	  [(any_atomic:SI (match_dup 1)
  		     (match_operand:SI 2 "arith_operand" "rI")) ;; value for op
  	   (match_operand:SI 3 "const_int_operand")]		   ;; model
! 	 UNSPEC_SYNC_OLD_OP_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))	   ;; mask
      (use (match_operand:SI 5 "arith_operand" "rI"))	   ;; not_mask
      (clobber (match_scratch:SI 6 "=&r"))			   ;; tmp_1
--- 212,218 ----
  	  [(any_atomic:SI (match_dup 1)
  		     (match_operand:SI 2 "arith_operand" "rI")) ;; value for op
  	   (match_operand:SI 3 "const_int_operand")]		   ;; model
! 	 UNSPECV_SYNC_OLD_OP_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))	   ;; mask
      (use (match_operand:SI 5 "arith_operand" "rI"))	   ;; not_mask
      (clobber (match_scratch:SI 6 "=&r"))			   ;; tmp_1
***************
*** 276,282 ****
  	  [(not:SI (and:SI (match_dup 1)
  			   (match_operand:SI 2 "arith_operand" "rI")))    ;; value for op
  	   (match_operand:SI 3 "const_int_operand")]			  ;; mask
! 	 UNSPEC_SYNC_OLD_OP_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))		  ;; mask
      (use (match_operand:SI 5 "arith_operand" "rI"))		  ;; not_mask
      (clobber (match_scratch:SI 6 "=&r"))				  ;; tmp_1
--- 279,285 ----
  	  [(not:SI (and:SI (match_dup 1)
  			   (match_operand:SI 2 "arith_operand" "rI")))    ;; value for op
  	   (match_operand:SI 3 "const_int_operand")]			  ;; mask
! 	 UNSPECV_SYNC_OLD_OP_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))		  ;; mask
      (use (match_operand:SI 5 "arith_operand" "rI"))		  ;; not_mask
      (clobber (match_scratch:SI 6 "=&r"))				  ;; tmp_1
***************
*** 320,326 ****
  	  [(any_atomic:SHORT (match_dup 1)
  		     (match_operand:SHORT 2 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPEC_SYNC_OLD_OP_ZABHA))]
     "TARGET_ZABHA"
     "amo<insn>.<amobh>%A3\t%0,%z2,%1"
     [(set_attr "type" "atomic")
--- 323,329 ----
  	  [(any_atomic:SHORT (match_dup 1)
  		     (match_operand:SHORT 2 "reg_or_0_operand" "rJ"))
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	 UNSPECV_SYNC_OLD_OP_ZABHA))]
     "TARGET_ZABHA"
     "amo<insn>.<amobh>%A3\t%0,%z2,%1"
     [(set_attr "type" "atomic")
***************
*** 402,408 ****
  	(unspec_volatile:GPR
  	  [(match_operand:GPR 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPEC_SYNC_EXCHANGE))
     (set (match_dup 1)
  	(match_operand:GPR 2 "reg_or_0_operand" "rJ"))]
    "TARGET_ZAAMO"
--- 405,411 ----
  	(unspec_volatile:GPR
  	  [(match_operand:GPR 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPECV_SYNC_EXCHANGE))
     (set (match_dup 1)
  	(match_operand:GPR 2 "reg_or_0_operand" "rJ"))]
    "TARGET_ZAAMO"
***************
*** 415,421 ****
      (sign_extend:DI (unspec_volatile:SI
        [(match_operand:SI 1 "memory_operand" "+A")
         (match_operand:SI 3 "const_int_operand")] ;; model
!       UNSPEC_SYNC_EXCHANGE)))
     (set (match_dup 1)
      (match_operand:SI 2 "reg_or_0_operand" "rJ"))]
    "TARGET_64BIT && TARGET_ZAAMO"
--- 418,424 ----
      (sign_extend:DI (unspec_volatile:SI
        [(match_operand:SI 1 "memory_operand" "+A")
         (match_operand:SI 3 "const_int_operand")] ;; model
!       UNSPECV_SYNC_EXCHANGE)))
     (set (match_dup 1)
      (match_operand:SI 2 "reg_or_0_operand" "rJ"))]
    "TARGET_64BIT && TARGET_ZAAMO"
***************
*** 428,434 ****
  	(unspec_volatile:GPR
  	  [(match_operand:GPR 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPEC_SYNC_EXCHANGE))
     (set (match_dup 1)
  	(match_operand:GPR 2 "reg_or_0_operand" "rJ"))
     (clobber (match_scratch:GPR 4 "=&r"))]	  ;; tmp_1
--- 431,437 ----
  	(unspec_volatile:GPR
  	  [(match_operand:GPR 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPECV_SYNC_EXCHANGE))
     (set (match_dup 1)
  	(match_operand:GPR 2 "reg_or_0_operand" "rJ"))
     (clobber (match_scratch:GPR 4 "=&r"))]	  ;; tmp_1
***************
*** 463,469 ****
  	(unspec_volatile:SHORT
  	  [(match_operand:SHORT 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPEC_SYNC_EXCHANGE_ZABHA))
     (set (match_dup 1)
  	(match_operand:SHORT 2 "reg_or_0_operand" "rJ"))]
    "TARGET_ZABHA"
--- 466,472 ----
  	(unspec_volatile:SHORT
  	  [(match_operand:SHORT 1 "memory_operand" "+A")
  	   (match_operand:SI 3 "const_int_operand")] ;; model
! 	  UNSPECV_SYNC_EXCHANGE_ZABHA))
     (set (match_dup 1)
  	(match_operand:SHORT 2 "reg_or_0_operand" "rJ"))]
    "TARGET_ZABHA"
***************
*** 511,517 ****
  	(unspec_volatile:SI
  	  [(match_operand:SI 2 "arith_operand" "rI")	 ;; value
  	   (match_operand:SI 3 "const_int_operand")]	 ;; model
!       UNSPEC_SYNC_EXCHANGE_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))	 ;; not_mask
      (clobber (match_scratch:SI 5 "=&r"))]		 ;; tmp_1
    "TARGET_ZALRSC && TARGET_INLINE_SUBWORD_ATOMIC"
--- 514,520 ----
  	(unspec_volatile:SI
  	  [(match_operand:SI 2 "arith_operand" "rI")	 ;; value
  	   (match_operand:SI 3 "const_int_operand")]	 ;; model
!       UNSPECV_SYNC_EXCHANGE_SUBWORD))
      (use (match_operand:SI 4 "arith_operand" "rI"))	 ;; not_mask
      (clobber (match_scratch:SI 5 "=&r"))]		 ;; tmp_1
    "TARGET_ZALRSC && TARGET_INLINE_SUBWORD_ATOMIC"
***************
*** 541,547 ****
  			      (match_operand:GPR 3 "reg_or_0_operand" "rJ") ;; desired val
  			      (match_operand:SI 4 "const_int_operand")	    ;; mod_s
  			      (match_operand:SI 5 "const_int_operand")]	    ;; mod_f
! 	 UNSPEC_COMPARE_AND_SWAP))]
    "TARGET_ZACAS"
    {
      enum memmodel model_success = (enum memmodel) INTVAL (operands[4]);
--- 544,550 ----
  			      (match_operand:GPR 3 "reg_or_0_operand" "rJ") ;; desired val
  			      (match_operand:SI 4 "const_int_operand")	    ;; mod_s
  			      (match_operand:SI 5 "const_int_operand")]	    ;; mod_f
! 	 UNSPECV_COMPARE_AND_SWAP))]
    "TARGET_ZACAS"
    {
      enum memmodel model_success = (enum memmodel) INTVAL (operands[4]);
***************
*** 569,575 ****
  			      (match_operand:GPR 3 "reg_or_0_operand" "rJ")
  			      (match_operand:SI 4 "const_int_operand")  ;; mod_s
  			      (match_operand:SI 5 "const_int_operand")] ;; mod_f
! 	 UNSPEC_COMPARE_AND_SWAP))
     (clobber (match_scratch:GPR 6 "=&r"))]
    "TARGET_ZALRSC"
    {
--- 572,578 ----
  			      (match_operand:GPR 3 "reg_or_0_operand" "rJ")
  			      (match_operand:SI 4 "const_int_operand")  ;; mod_s
  			      (match_operand:SI 5 "const_int_operand")] ;; mod_f
! 	 UNSPECV_COMPARE_AND_SWAP))
     (clobber (match_scratch:GPR 6 "=&r"))]
    "TARGET_ZALRSC"
    {
***************
*** 654,660 ****
  				(match_operand:SHORT 3 "reg_or_0_operand" "rJ") ;; desired_val
  				(match_operand:SI 4 "const_int_operand")	;; mod_s
  				(match_operand:SI 5 "const_int_operand")]	;; mod_f
! 	 UNSPEC_COMPARE_AND_SWAP))]
    "TARGET_ZACAS && TARGET_ZABHA"
    {
      enum memmodel model_success = (enum memmodel) INTVAL (operands[4]);
--- 657,663 ----
  				(match_operand:SHORT 3 "reg_or_0_operand" "rJ") ;; desired_val
  				(match_operand:SI 4 "const_int_operand")	;; mod_s
  				(match_operand:SI 5 "const_int_operand")]	;; mod_f
! 	 UNSPECV_COMPARE_AND_SWAP))]
    "TARGET_ZACAS && TARGET_ZABHA"
    {
      enum memmodel model_success = (enum memmodel) INTVAL (operands[4]);
***************
*** 784,790 ****
     (set (match_dup 1)
  	(unspec_volatile:SI [(match_operand:SI 2 "reg_or_0_operand" "rJ")  ;; expected value
  			     (match_operand:SI 3 "arith_operand" "rI")] ;; desired value
! 	 UNSPEC_COMPARE_AND_SWAP_SUBWORD))
  	(match_operand:SI 4 "const_int_operand")		;; model
  	(use (match_operand:SI 5 "arith_operand" "rI"))		;; mask
  	(use (match_operand:SI 6 "arith_operand" "rI"))		;; not_mask
--- 787,793 ----
     (set (match_dup 1)
  	(unspec_volatile:SI [(match_operand:SI 2 "reg_or_0_operand" "rJ")  ;; expected value
  			     (match_operand:SI 3 "arith_operand" "rI")] ;; desired value
! 	 UNSPECV_COMPARE_AND_SWAP_SUBWORD))
  	(match_operand:SI 4 "const_int_operand")		;; model
  	(use (match_operand:SI 5 "arith_operand" "rI"))		;; mask
  	(use (match_operand:SI 6 "arith_operand" "rI"))		;; not_mask
diff -Nrcpad gcc-17-20260524/gcc/config/xtensa/xtensa.md gcc-17-20260531/gcc/config/xtensa/xtensa.md
*** gcc-17-20260524/gcc/config/xtensa/xtensa.md	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/config/xtensa/xtensa.md	Sun May 31 22:32:05 2026
***************
*** 869,921 ****
     (set_attr "mode"	"SI")
     (set_attr "length"	"3")])
  
- (define_insn_and_split "*splice_bits"
-   [(set (match_operand:SI 0 "register_operand" "=a")
- 	(ior:SI (and:SI (match_operand:SI 1 "register_operand" "r")
- 			(match_operand:SI 3 "const_int_operand" ""))
- 		(and:SI (match_operand:SI 2 "register_operand" "r")
- 			(match_operand:SI 4 "const_int_operand" ""))))]
- 
-   "!optimize_debug && optimize
-    && INTVAL (operands[3]) + INTVAL (operands[4]) == -1
-    && (exact_log2 (INTVAL (operands[3]) + 1) > 16
-        || exact_log2 (INTVAL (operands[4]) + 1) > 16)"
-   "#"
-   "&& can_create_pseudo_p ()"
-   [(set (match_dup 5)
- 	(ashift:SI (match_dup 1)
- 		   (match_dup 4)))
-    (set (match_dup 6)
- 	(lshiftrt:SI (match_dup 2)
- 		     (match_dup 3)))
-    (set (match_dup 0)
- 	(ior:SI (lshiftrt:SI (match_dup 5)
- 			     (match_dup 4))
- 		(ashift:SI (match_dup 6)
- 			   (match_dup 3))))]
- {
-   int shift;
-   if (INTVAL (operands[3]) < 0)
-     {
-       rtx x;
-       x = operands[1], operands[1] = operands[2], operands[2] = x;
-       x = operands[3], operands[3] = operands[4], operands[4] = x;
-     }
-   shift = floor_log2 (INTVAL (operands[3]) + 1);
-   operands[3] = GEN_INT (shift);
-   operands[4] = GEN_INT (32 - shift);
-   operands[5] = gen_reg_rtx (SImode);
-   operands[6] = gen_reg_rtx (SImode);
- }
-   [(set_attr "type"	"arith")
-    (set_attr "mode"	"SI")
-    (set (attr "length")
- 	(if_then_else (match_test "TARGET_DENSITY
- 				   && (INTVAL (operands[3]) == 0x7FFFFFFF
- 				       || INTVAL (operands[4]) == 0x7FFFFFFF)")
- 		      (const_int 11)
- 		      (const_int 12)))])
- 
  
  ;; Zero-extend instructions.
  
--- 869,874 ----
***************
*** 1126,1132 ****
     (set_attr "mode"	"SI")
     (set_attr "length"	"6")])
  
! (define_insn "insvsi"
    [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+a")
  			 (match_operand:SI 1 "extui_fldsz_operand" "")
  			 (match_operand:SI 2 "const_int_operand" ""))
--- 1079,1113 ----
     (set_attr "mode"	"SI")
     (set_attr "length"	"6")])
  
! (define_expand "insvsi"
!   [(set (zero_extract:SI (match_operand:SI 0 "register_operand")
! 			 (match_operand:SI 1 "extui_fldsz_operand")
! 			 (match_operand:SI 2 "const_int_operand"))
! 	(match_operand:SI 3 "register_operand"))]
!   ""
! {
!   if (TARGET_DEPBITS)
!     emit_insn (gen_insvsi_internal (operands[0], operands[1], operands[2],
! 				    operands[3]));
!   else
!     {
!       int fldsz = INTVAL (operands[1]), shift;
!       rtx temp = gen_reg_rtx (SImode), mask;
!       if (BITS_BIG_ENDIAN)
! 	shift = (32 - (fldsz + INTVAL (operands[2]))) & 0x1f;
!       else
! 	shift = INTVAL (operands[2]) & 0x1f;
!       mask = GEN_INT (((1 << fldsz) - 1) << shift);
!       emit_insn (shift ? gen_ashlsi3 (temp, operands[3], GEN_INT (shift))
! 		       : gen_rtx_SET (temp, operands[3]));
!       emit_insn (gen_xorsi3 (temp, operands[0], temp));
!       emit_insn (gen_andsi3 (temp, temp, force_reg (SImode, mask)));
!       emit_insn (gen_xorsi3 (operands[0], operands[0], temp));
!     }
!   DONE;
! })
! 
! (define_insn "insvsi_internal"
    [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+a")
  			 (match_operand:SI 1 "extui_fldsz_operand" "")
  			 (match_operand:SI 2 "const_int_operand" ""))
diff -Nrcpad gcc-17-20260524/gcc/configure.ac gcc-17-20260531/gcc/configure.ac
*** gcc-17-20260524/gcc/configure.ac	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/configure.ac	Sun May 31 22:32:05 2026
*************** stk_clash_min=12
*** 896,902 ****
  stk_clash_max=30
  
  # Keep the default value when the option is not used to 0, this allows us to
! # distinguish between the cases where the user specifially set a value via
  # configure and when the normal default value is used.
  AC_ARG_WITH(stack-clash-protection-guard-size,
  [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
--- 896,902 ----
  stk_clash_max=30
  
  # Keep the default value when the option is not used to 0, this allows us to
! # distinguish between the cases where the user specifically set a value via
  # configure and when the normal default value is used.
  AC_ARG_WITH(stack-clash-protection-guard-size,
  [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
*************** elif test x$gcc_cv_ld != x; then
*** 4406,4412 ****
        ld_soname_option='-install_name'
        ;;
      # Solaris 2 ld always supports -h.  It also supports --soname for GNU
!     # ld compatiblity since some Solaris 10 update.
      *-*-solaris2*)
        gcc_cv_ld_soname=yes
        ld_soname_option='-h'
--- 4406,4412 ----
        ld_soname_option='-install_name'
        ;;
      # Solaris 2 ld always supports -h.  It also supports --soname for GNU
!     # ld compatibility since some Solaris 10 update.
      *-*-solaris2*)
        gcc_cv_ld_soname=yes
        ld_soname_option='-h'
diff -Nrcpad gcc-17-20260524/gcc/convert.cc gcc-17-20260531/gcc/convert.cc
*** gcc-17-20260524/gcc/convert.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/convert.cc	Sun May 31 22:32:05 2026
*************** convert_to_integer_1 (tree type, tree ex
*** 704,709 ****
--- 704,715 ----
  	  return maybe_fold_build1_loc (dofold, loc, code, type, expr);
  	}
  
+       else if (TREE_CODE (type) == ENUMERAL_TYPE && BITINT_TYPE_P (type))
+ 	{
+ 	  expr = convert_to_integer_1 (TREE_TYPE (type), expr, dofold);
+ 	  return maybe_fold_build1_loc (dofold, loc, NOP_EXPR, type, expr);
+ 	}
+ 
        /* If TYPE is an enumeral type or a type with a precision less
  	 than the number of bits in its mode, do the conversion to the
  	 type corresponding to its mode, then do a nop conversion
diff -Nrcpad gcc-17-20260524/gcc/coretypes.h gcc-17-20260531/gcc/coretypes.h
*** gcc-17-20260524/gcc/coretypes.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/coretypes.h	Sun May 31 22:32:05 2026
*************** enum pad_direction {
*** 299,310 ****
    /* No padding is required.  */
    PAD_NONE,
  
!   /* Insert padding above the data, i.e. at higher memeory addresses
       when dealing with memory, and at the most significant end when
       dealing with registers.  */
    PAD_UPWARD,
  
!   /* Insert padding below the data, i.e. at lower memeory addresses
       when dealing with memory, and at the least significant end when
       dealing with registers.  */
    PAD_DOWNWARD
--- 299,310 ----
    /* No padding is required.  */
    PAD_NONE,
  
!   /* Insert padding above the data, i.e. at higher memory addresses
       when dealing with memory, and at the most significant end when
       dealing with registers.  */
    PAD_UPWARD,
  
!   /* Insert padding below the data, i.e. at lower memory addresses
       when dealing with memory, and at the least significant end when
       dealing with registers.  */
    PAD_DOWNWARD
*************** enum var_init_status
*** 320,349 ****
    VAR_INIT_STATUS_INITIALIZED
  };
  
- /* Names for the different levels of -Wstrict-overflow=N.  The numeric
-    values here correspond to N.  */
- enum warn_strict_overflow_code
- {
-   /* Overflow warning that should be issued with -Wall: a questionable
-      construct that is easy to avoid even when using macros.  Example:
-      folding (x + CONSTANT > x) to 1.  */
-   WARN_STRICT_OVERFLOW_ALL = 1,
-   /* Overflow warning about folding a comparison to a constant because
-      of undefined signed overflow, other than cases covered by
-      WARN_STRICT_OVERFLOW_ALL.  Example: folding (abs (x) >= 0) to 1
-      (this is false when x == INT_MIN).  */
-   WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
-   /* Overflow warning about changes to comparisons other than folding
-      them to a constant.  Example: folding (x + 1 > 1) to (x > 0).  */
-   WARN_STRICT_OVERFLOW_COMPARISON = 3,
-   /* Overflow warnings not covered by the above cases.  Example:
-      folding ((x * 10) / 5) to (x * 2).  */
-   WARN_STRICT_OVERFLOW_MISC = 4,
-   /* Overflow warnings about reducing magnitude of constants in
-      comparison.  Example: folding (x + 2 > y) to (x + 1 >= y).  */
-   WARN_STRICT_OVERFLOW_MAGNITUDE = 5
- };
- 
  /* Kind of artificial, compiler-generated lookup table.  Type of the
     second argument of TARGET_ADDR_SPACE_FOR_ARTIFICIAL_RODATA resp.
     targetm.addr_space.for_artificial_rodata.  */
--- 320,325 ----
diff -Nrcpad gcc-17-20260524/gcc/coroutine-passes.cc gcc-17-20260531/gcc/coroutine-passes.cc
*** gcc-17-20260524/gcc/coroutine-passes.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/coroutine-passes.cc	Sun May 31 22:32:05 2026
*************** make_pass_coroutine_lower_builtins (gcc:
*** 267,273 ****
     resume and destroy paths as separate functions if that is found
     profitable by the optimisers.
  
!    Once we have remade the connections to their correct postions, we elide
     the labels that the front end inserted.  */
  
  static void
--- 267,273 ----
     resume and destroy paths as separate functions if that is found
     profitable by the optimisers.
  
!    Once we have remade the connections to their correct positions, we elide
     the labels that the front end inserted.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/coverage.cc gcc-17-20260531/gcc/coverage.cc
*** gcc-17-20260524/gcc/coverage.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/coverage.cc	Sun May 31 22:32:05 2026
*************** coverage_compute_profile_id (struct cgra
*** 591,597 ****
     The checksum is calculated carefully so that
     source code changes that doesn't affect the control flow graph
     won't change the checksum.
!    This is to make the profile data useable across source code change.
     The downside of this is that the compiler may use potentially
     wrong profile data - that the source code change has non-trivial impact
     on the validity of profile data (e.g. the reversed condition)
--- 591,597 ----
     The checksum is calculated carefully so that
     source code changes that doesn't affect the control flow graph
     won't change the checksum.
!    This is to make the profile data usable across source code change.
     The downside of this is that the compiler may use potentially
     wrong profile data - that the source code change has non-trivial impact
     on the validity of profile data (e.g. the reversed condition)
diff -Nrcpad gcc-17-20260524/gcc/cp/ChangeLog gcc-17-20260531/gcc/cp/ChangeLog
*** gcc-17-20260524/gcc/cp/ChangeLog	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,120 ----
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125123
+ 	* parser.cc (cp_build_range_for_decls): If range_temp or begin
+ 	are static, set DECL_IGNORED_P on it.
+ 	* pt.cc (finish_expansion_stmt): Similarly for iter.
+ 	* decl.cc (cp_finish_decl): Call determine_local_discriminator
+ 	etc. also for DECL_ARTIFICIAL TREE_STATIC vars.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* call.cc (involves_qualification_conversion_p): Fix typos.
+ 	(build_user_type_conversion_1): Likewise.
+ 	(complain_about_access): Likewise.
+ 	(maybe_warn_class_memaccess): Likewise.
+ 	* class.cc (inherit_targ_abi_tags): Likewise.
+ 	(warn_hidden): Likewise.
+ 	(maybe_add_class_template_decl_list): Likewise.
+ 	(check_bases_and_members): Likewise.
+ 	(dfs_accumulate_vtbl_inits): Likewise.
+ 	* constexpr.cc (cx_check_missing_mem_inits): Likewise.
+ 	(cxx_eval_call_expression): Likewise.
+ 	(modifying_const_object_error): Likewise.
+ 	(cxx_replaceable_global_alloc_fn): Likewise.
+ 	* contracts.cc (copy_contracts_list): Likewise.
+ 	(check_redecl_contract): Likewise.
+ 	(update_late_contract): Likewise.
+ 	(get_precondition_function): Likewise.
+ 	* coroutines.cc (cp_coroutine_transform::build_ramp_function): Likewise.
+ 	* cp-tree.def (DISJ_CONSTR): Likewise.
+ 	* cp-tree.h (struct lang_decl_base): Likewise.
+ 	(SCOPE_DEPTH): Likewise.
+ 	(set_anon_aggr_type_field): Likewise.
+ 	(struct cp_decl_specifier_seq): Likewise.
+ 	* decl.cc (reshape_init_array_1): Likewise.
+ 	(omp_declare_variant_finalize): Likewise.
+ 	(grokdeclarator): Likewise.
+ 	(copy_type_enum): Likewise.
+ 	* decl2.cc (struct priority_map_traits): Likewise.
+ 	(determine_visibility): Likewise.
+ 	(constrain_class_visibility): Likewise.
+ 	(one_static_initialization_or_destruction): Likewise.
+ 	* g++spec.cc (lang_specific_driver): Likewise.
+ 	* init.cc (constant_value_1): Likewise.
+ 	(build_new): Likewise.
+ 	* mangle.cc (write_unqualified_name): Likewise.
+ 	* method.cc (inherited_ctor_binfo): Likewise.
+ 	(synthesized_method_walk): Likewise.
+ 	* module.cc (GTY): Likewise.
+ 	(trees_out::lang_decl_bools): Likewise.
+ 	(trees_out::core_vals): Likewise.
+ 	(trees_in::core_vals): Likewise.
+ 	(trees_in::install_implicit_member): Likewise.
+ 	(trees_in::odr_duplicate): Likewise.
+ 	(instantiating_tu_local_entity): Likewise.
+ 	(sort_cluster): Likewise.
+ 	(module_state::write_define): Likewise.
+ 	(module_state::write_begin): Likewise.
+ 	(declare_module): Likewise.
+ 	(init_modules): Likewise.
+ 	* name-lookup.cc (name_lookup::ambiguous): Likewise.
+ 	(pushdecl): Likewise.
+ 	(suggest_alternatives_for_1): Likewise.
+ 	(maybe_add_fuzzy_decl): Likewise.
+ 	* name-lookup.h (INHERITED_VALUE_BINDING_P): Likewise.
+ 	(HIDDEN_TYPE_BINDING_P): Likewise.
+ 	(BINDING_VECTOR_GLOBAL_DUPS_P): Likewise.
+ 	* operators.def: Likewise.
+ 	* parser.cc (cp_lexer_new_main): Likewise.
+ 	(get_cast_suggestion): Likewise.
+ 	(cp_parser_expression): Likewise.
+ 	(cp_parser_simple_type_specifier): Likewise.
+ 	(cp_parser_noexcept_specification_opt): Likewise.
+ 	(cp_parser_lookup_name): Likewise.
+ 	(class_decl_loc_t::diag_mismatched_tags): Likewise.
+ 	(cp_parser_cache_defarg): Likewise.
+ 	(cp_parser_objc_statement): Likewise.
+ 	(cp_parser_omp_loop_nest): Likewise.
+ 	(cp_parser_omp_taskloop): Likewise.
+ 	(cp_parser_objc_at_property_declaration): Likewise.
+ 	* parser.h (struct cp_unparsed_functions_entry): Likewise.
+ 	* pt.cc (tsubst_friend_class): Likewise.
+ 	(use_pack_expansion_extra_args_p): Likewise.
+ 	(tsubst_unary_left_fold): Likewise.
+ 	(tsubst_unary_right_fold): Likewise.
+ 	(filter_memfn_lookup): Likewise.
+ 	* semantics.cc (maybe_convert_cond): Likewise.
+ 	(finish_switch_cond): Likewise.
+ 	(cp_finish_omp_clause_doacross_sink): Likewise.
+ 	(finish_omp_target_clauses_r): Likewise.
+ 	* tree.cc (build_cplus_new): Likewise.
+ 	(apply_identity_attributes): Likewise.
+ 	* vtable-class-hierarchy.cc (vtv_compute_class_hierarchy_transitive_closure): Likewise.
+ 	(vtv_generate_init_routine): Likewise.
+ 
+ 2026-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* init.cc (build_value_init_noctor): Zero initialize anonymous
+ 	union/struct subobjects.  Formatting fix.
+ 
+ 2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125454
+ 	* typeck.cc (cp_build_array_ref): Don't recurse for array[array].
+ 
+ 2026-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125412
+ 	* reflect.cc (process_metafunction): If ht is error_operand_p,
+ 	set *non_constant_p and return NULL_TREE.
+ 
+ 2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125423
+ 	* pt.cc (tsubst_expr) <case REFLECT_EXPR>: Don't tsubst
+ 	REFLECT_BASEs.
+ 
  2026-05-23  Jason Merrill  <jason@redhat.com>
  
  	PR c++/125135
diff -Nrcpad gcc-17-20260524/gcc/cp/call.cc gcc-17-20260531/gcc/cp/call.cc
*** gcc-17-20260524/gcc/cp/call.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/call.cc	Sun May 31 22:32:05 2026
*************** reference_compatible_p (tree t1, tree t2
*** 1711,1717 ****
  static bool
  involves_qualification_conversion_p (tree to, tree from)
  {
!   /* If we're not convering a pointer to another one, we won't get
       a qualification conversion.  */
    if (!((TYPE_PTR_P (to) && TYPE_PTR_P (from))
  	|| (TYPE_PTRDATAMEM_P (to) && TYPE_PTRDATAMEM_P (from))))
--- 1711,1717 ----
  static bool
  involves_qualification_conversion_p (tree to, tree from)
  {
!   /* If we're not converting a pointer to another one, we won't get
       a qualification conversion.  */
    if (!((TYPE_PTR_P (to) && TYPE_PTR_P (from))
  	|| (TYPE_PTRDATAMEM_P (to) && TYPE_PTRDATAMEM_P (from))))
*************** build_user_type_conversion_1 (tree totyp
*** 4700,4706 ****
        struct z_candidate *old_candidates;
  
        /* If LOOKUP_NO_CONVERSION, don't consider a conversion function that
! 	 would need an addional user-defined conversion, i.e. if the return
  	 type differs in class-ness from the desired type.  So we avoid
  	 considering operator bool when calling a copy constructor.
  
--- 4700,4706 ----
        struct z_candidate *old_candidates;
  
        /* If LOOKUP_NO_CONVERSION, don't consider a conversion function that
! 	 would need an additional user-defined conversion, i.e. if the return
  	 type differs in class-ness from the desired type.  So we avoid
  	 considering operator bool when calling a copy constructor.
  
*************** complain_about_access (tree decl, tree d
*** 8452,8458 ****
  	error ("%q#D is protected within this context", diag_decl);
        inform (DECL_SOURCE_LOCATION (diag_location), "declared protected here");
      }
!   /* Couldn't figure out why DECL is inaccesible, so just say it's
       inaccessible.  */
    else
      {
--- 8452,8458 ----
  	error ("%q#D is protected within this context", diag_decl);
        inform (DECL_SOURCE_LOCATION (diag_location), "declared protected here");
      }
!   /* Couldn't figure out why DECL is inaccessible, so just say it's
       inaccessible.  */
    else
      {
*************** maybe_warn_class_memaccess (location_t l
*** 11416,11422 ****
        else
  	srctype = TREE_TYPE (srctype);
  
!       /* Since it's impossible to determine wheter the byte copy is
  	 being used in place of assignment to an existing object or
  	 as a substitute for initialization, assume it's the former.
  	 Determine the best alternative to use instead depending on
--- 11416,11422 ----
        else
  	srctype = TREE_TYPE (srctype);
  
!       /* Since it's impossible to determine whether the byte copy is
  	 being used in place of assignment to an existing object or
  	 as a substitute for initialization, assume it's the former.
  	 Determine the best alternative to use instead depending on
diff -Nrcpad gcc-17-20260524/gcc/cp/class.cc gcc-17-20260531/gcc/cp/class.cc
*** gcc-17-20260524/gcc/cp/class.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/class.cc	Sun May 31 22:32:05 2026
*************** inherit_targ_abi_tags (tree t)
*** 2005,2011 ****
  }
  
  /* Return true, iff class T has a non-virtual destructor that is
!    accessible from outside the class heirarchy (i.e. is public, or
     there's a suitable friend.  */
  
  static bool
--- 2005,2011 ----
  }
  
  /* Return true, iff class T has a non-virtual destructor that is
!    accessible from outside the class hierarchy (i.e. is public, or
     there's a suitable friend.  */
  
  static bool
*************** warn_hidden (tree t)
*** 3289,3295 ****
  	unsigned j;
  	size_t num_overriders = 0;
  	hash_set<tree> overriden_base_fndecls;
! 	/* base_fndecls that are hidden but not overriden. The "value"
  	   contains the last fndecl we saw that hides the "key".  */
  	hash_map<tree, tree> hidden_base_fndecls;
  
--- 3289,3295 ----
  	unsigned j;
  	size_t num_overriders = 0;
  	hash_set<tree> overriden_base_fndecls;
! 	/* base_fndecls that are hidden but not overridden. The "value"
  	   contains the last fndecl we saw that hides the "key".  */
  	hash_map<tree, tree> hidden_base_fndecls;
  
*************** maybe_add_class_template_decl_list (tree
*** 3455,3463 ****
  /* This function is called from declare_virt_assop_and_dtor via
     dfs_walk_all.
  
!    DATA is a type that direcly or indirectly inherits the base
     represented by BINFO.  If BINFO contains a virtual assignment [copy
!    assignment or move assigment] operator or a virtual constructor,
     declare that function in DATA if it hasn't been already declared.  */
  
  static tree
--- 3455,3463 ----
  /* This function is called from declare_virt_assop_and_dtor via
     dfs_walk_all.
  
!    DATA is a type that directly or indirectly inherits the base
     represented by BINFO.  If BINFO contains a virtual assignment [copy
!    assignment or move assignment] operator or a virtual constructor,
     declare that function in DATA if it hasn't been already declared.  */
  
  static tree
*************** check_bases_and_members (tree t)
*** 6483,6489 ****
  
    /* Deduce noexcept on destructor.  This needs to happen after we've set
       triviality flags appropriately for our bases, and before checking
!      overriden virtual functions via check_methods.  */
    if (cxx_dialect >= cxx11)
      if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
        for (tree fn : ovl_range (dtor))
--- 6483,6489 ----
  
    /* Deduce noexcept on destructor.  This needs to happen after we've set
       triviality flags appropriately for our bases, and before checking
!      overridden virtual functions via check_methods.  */
    if (cxx_dialect >= cxx11)
      if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
        for (tree fn : ovl_range (dtor))
*************** dfs_accumulate_vtbl_inits (tree binfo,
*** 10493,10499 ****
         straighten this out.  */
      BINFO_VTABLE (binfo) = tree_cons (rtti_binfo, vtbl, BINFO_VTABLE (binfo));
    else if (BINFO_PRIMARY_P (binfo) && BINFO_VIRTUAL_P (binfo))
!     /* Throw away any unneeded intializers.  */
      (*l)->truncate (n_inits);
    else
       /* For an ordinary vtable, set BINFO_VTABLE.  */
--- 10493,10499 ----
         straighten this out.  */
      BINFO_VTABLE (binfo) = tree_cons (rtti_binfo, vtbl, BINFO_VTABLE (binfo));
    else if (BINFO_PRIMARY_P (binfo) && BINFO_VIRTUAL_P (binfo))
!     /* Throw away any unneeded initializers.  */
      (*l)->truncate (n_inits);
    else
       /* For an ordinary vtable, set BINFO_VTABLE.  */
diff -Nrcpad gcc-17-20260524/gcc/cp/constexpr.cc gcc-17-20260531/gcc/cp/constexpr.cc
*** gcc-17-20260524/gcc/cp/constexpr.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/constexpr.cc	Sun May 31 22:32:05 2026
*************** cx_check_missing_mem_inits (tree ctype,
*** 878,884 ****
  	    }
  	  ftype = TREE_TYPE (field);
  	  if (!ftype || !TYPE_P (ftype) || !COMPLETE_TYPE_P (ftype))
! 	    /* A flexible array can't be intialized here, so don't complain
  	       that it isn't.  */
  	    continue;
  	  if (is_empty_field (field))
--- 878,884 ----
  	    }
  	  ftype = TREE_TYPE (field);
  	  if (!ftype || !TYPE_P (ftype) || !COMPLETE_TYPE_P (ftype))
! 	    /* A flexible array can't be initialized here, so don't complain
  	       that it isn't.  */
  	    continue;
  	  if (is_empty_field (field))
*************** cx_check_missing_mem_inits (tree ctype,
*** 920,926 ****
  }
  
  /* We are processing the definition of the constexpr function FUN.
!    Check that its body fulfills the apropriate requirements and
     enter it in the constexpr function definition table.  */
  
  void
--- 920,926 ----
  }
  
  /* We are processing the definition of the constexpr function FUN.
!    Check that its body fulfills the appropriate requirements and
     enter it in the constexpr function definition table.  */
  
  void
*************** modifying_const_object_error (tree expr,
*** 3350,3356 ****
  }
  
  /* Return true if FNDECL is a replaceable global allocation function that
!    should be useable during constant expression evaluation.  */
  
  static inline bool
  cxx_replaceable_global_alloc_fn (tree fndecl)
--- 3350,3356 ----
  }
  
  /* Return true if FNDECL is a replaceable global allocation function that
!    should be usable during constant expression evaluation.  */
  
  static inline bool
  cxx_replaceable_global_alloc_fn (tree fndecl)
*************** cxx_replaceable_global_alloc_fn (tree fn
*** 3363,3369 ****
  }
  
  /* Return true if FNDECL is a placement new function that should be
!    useable during constant expression evaluation of std::construct_at.  */
  
  static inline bool
  cxx_placement_new_fn (tree fndecl)
--- 3363,3369 ----
  }
  
  /* Return true if FNDECL is a placement new function that should be
!    usable during constant expression evaluation of std::construct_at.  */
  
  static inline bool
  cxx_placement_new_fn (tree fndecl)
*************** cxx_eval_call_expression (const constexp
*** 4689,4695 ****
  
       However, in C++20, a constexpr constructor doesn't necessarily have
       to initialize all the fields, so we don't clear CONSTRUCTOR_NO_CLEARING
!      in order to detect reading an unitialized object in constexpr instead
       of value-initializing it.  (reduced_constant_expression_p is expected to
       take care of clearing the flag.)  */
    if (TREE_CODE (result) == CONSTRUCTOR
--- 4689,4695 ----
  
       However, in C++20, a constexpr constructor doesn't necessarily have
       to initialize all the fields, so we don't clear CONSTRUCTOR_NO_CLEARING
!      in order to detect reading an uninitialized object in constexpr instead
       of value-initializing it.  (reduced_constant_expression_p is expected to
       take care of clearing the flag.)  */
    if (TREE_CODE (result) == CONSTRUCTOR
diff -Nrcpad gcc-17-20260524/gcc/cp/contracts.cc gcc-17-20260531/gcc/cp/contracts.cc
*** gcc-17-20260524/gcc/cp/contracts.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/contracts.cc	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 65,71 ****
  
    'pre' and 'post' function contract specifiers require most of the special
    handling, since they must be tracked across re-declarations of functions and
!   there are contraints on how such specifiers may change in these cases.
  
    The contracts specification identifies a "first declaration" of any given
    function - which is the first encountered when parsing a given TU.
--- 65,71 ----
  
    'pre' and 'post' function contract specifiers require most of the special
    handling, since they must be tracked across re-declarations of functions and
!   there are constraints on how such specifiers may change in these cases.
  
    The contracts specification identifies a "first declaration" of any given
    function - which is the first encountered when parsing a given TU.
*************** copy_contracts_list (tree contracts, tre
*** 1231,1237 ****
    return new_contracts;
  }
  
! /* Returns a copy of FNDECL contracts. This is used when emiting a contract.
   If we were to emit the original contract tree, any folding of the contract
   condition would affect the original contract too. The original contract
   tree needs to be preserved in case it is used to apply to a different
--- 1231,1237 ----
    return new_contracts;
  }
  
! /* Returns a copy of FNDECL contracts. This is used when emitting a contract.
   If we were to emit the original contract tree, any folding of the contract
   condition would affect the original contract too. The original contract
   tree needs to be preserved in case it is used to apply to a different
*************** check_redecl_contract (tree newdecl, tre
*** 1686,1692 ****
  	   && contract_any_deferred_p (new_contracts)
  	   && DECL_UNIQUE_FRIEND_P (newdecl))
      {
!       /* Put the defered contracts on the olddecl so we parse it when
  	 we can.  */
        set_fn_contract_specifiers (olddecl, old_contracts);
      }
--- 1686,1692 ----
  	   && contract_any_deferred_p (new_contracts)
  	   && DECL_UNIQUE_FRIEND_P (newdecl))
      {
!       /* Put the deferred contracts on the olddecl so we parse it when
  	 we can.  */
        set_fn_contract_specifiers (olddecl, old_contracts);
      }
*************** update_late_contract (tree contract, tre
*** 2150,2156 ****
    CONTRACT_CONDITION (contract) = condition;
  }
  
! /* Returns the precondition funtion for FNDECL, or null if not set.  */
  
  tree
  get_precondition_function (tree fndecl)
--- 2150,2156 ----
    CONTRACT_CONDITION (contract) = condition;
  }
  
! /* Returns the precondition function for FNDECL, or null if not set.  */
  
  tree
  get_precondition_function (tree fndecl)
*************** get_precondition_function (tree fndecl)
*** 2160,2166 ****
    return result ? *result : NULL_TREE;
  }
  
! /* Returns the postcondition funtion for FNDECL, or null if not set.  */
  
  tree
  get_postcondition_function (tree fndecl)
--- 2160,2166 ----
    return result ? *result : NULL_TREE;
  }
  
! /* Returns the postcondition function for FNDECL, or null if not set.  */
  
  tree
  get_postcondition_function (tree fndecl)
diff -Nrcpad gcc-17-20260524/gcc/cp/coroutines.cc gcc-17-20260531/gcc/cp/coroutines.cc
*** gcc-17-20260524/gcc/cp/coroutines.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/coroutines.cc	Sun May 31 22:32:05 2026
*************** cp_coroutine_transform::build_ramp_funct
*** 5059,5065 ****
      = build_coroutine_frame_alloc_expr (promise_type, orig_fn_decl, fn_start,
  					grooaf, &param_uses, frame_size);
  
!   /* We must have a useable allocator to proceed.  */
    if (!new_fn_call || new_fn_call == error_mark_node)
      return false;
  
--- 5059,5065 ----
      = build_coroutine_frame_alloc_expr (promise_type, orig_fn_decl, fn_start,
  					grooaf, &param_uses, frame_size);
  
!   /* We must have a usable allocator to proceed.  */
    if (!new_fn_call || new_fn_call == error_mark_node)
      return false;
  
*************** cp_coroutine_transform::build_ramp_funct
*** 5358,5364 ****
    else
      {
        /* Per CWG2563, we keep the result of promise.get_return_object () in
! 	 a temp which is then used to intialize the return object, including
  	 NVRO.  */
  
        coro_gro
--- 5358,5364 ----
    else
      {
        /* Per CWG2563, we keep the result of promise.get_return_object () in
! 	 a temp which is then used to initialize the return object, including
  	 NVRO.  */
  
        coro_gro
diff -Nrcpad gcc-17-20260524/gcc/cp/cp-tree.def gcc-17-20260531/gcc/cp/cp-tree.def
*** gcc-17-20260524/gcc/cp/cp-tree.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/cp-tree.def	Sun May 31 22:32:05 2026
*************** DEFTREECODE (DISJ_CONSTR, "disj_constr",
*** 547,553 ****
  
  /* The co_await expression is used to support coroutines.
  
!   Op 0 is the cast expresssion (potentially modified by the
    promise "await_transform()" method).
    Op1 is a proxy for the temp / coro frame slot 'e' value.
    Op2 is the initialiser for Op1 (Op0, potentially modified by any
--- 547,553 ----
  
  /* The co_await expression is used to support coroutines.
  
!   Op 0 is the cast expression (potentially modified by the
    promise "await_transform()" method).
    Op1 is a proxy for the temp / coro frame slot 'e' value.
    Op2 is the initialiser for Op1 (Op0, potentially modified by any
diff -Nrcpad gcc-17-20260524/gcc/cp/cp-tree.h gcc-17-20260531/gcc/cp/cp-tree.h
*** gcc-17-20260524/gcc/cp/cp-tree.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/cp-tree.h	Sun May 31 22:32:05 2026
*************** struct GTY(()) lang_decl_base {
*** 3200,3206 ****
    unsigned module_purview_p : 1;	   /* in named-module purview */
    unsigned module_attach_p : 1;		   /* attached to named module */
    unsigned module_import_p : 1;		   /* from an import */
!   unsigned module_entity_p : 1;		   /* is in the entitity ary & hash */
  
    unsigned module_keyed_decls_p : 1;	   /* has keys, applies to all decls */
  
--- 3200,3206 ----
    unsigned module_purview_p : 1;	   /* in named-module purview */
    unsigned module_attach_p : 1;		   /* attached to named module */
    unsigned module_import_p : 1;		   /* from an import */
!   unsigned module_entity_p : 1;		   /* is in the entity ary & hash */
  
    unsigned module_keyed_decls_p : 1;	   /* has keys, applies to all decls */
  
*************** struct GTY(()) lang_decl {
*** 3971,3977 ****
  #define SCOPE_DEPTH(NODE) \
    (NAMESPACE_DECL_CHECK (NODE)->base.u.bits.address_space)
  
! /* Whether the namepace is an inline namespace.  */
  #define DECL_NAMESPACE_INLINE_P(NODE) \
    TREE_LANG_FLAG_0 (NAMESPACE_DECL_CHECK (NODE))
  
--- 3971,3977 ----
  #define SCOPE_DEPTH(NODE) \
    (NAMESPACE_DECL_CHECK (NODE)->base.u.bits.address_space)
  
! /* Whether the namespace is an inline namespace.  */
  #define DECL_NAMESPACE_INLINE_P(NODE) \
    TREE_LANG_FLAG_0 (NAMESPACE_DECL_CHECK (NODE))
  
*************** set_anon_aggr_type_field (tree &typeinfo
*** 5548,5554 ****
     TYPE_DECL).
  
     FIXME: const_cast<tree> is a hack that hopefully will go away after
!    tree is converted to C++ class hiearchy.  */
  #define DECL_TEMPLATE_PARMS(NODE)       \
     ((struct tree_template_decl *)const_cast<tree> (TEMPLATE_DECL_CHECK \
  						   (NODE)))->arguments
--- 5548,5554 ----
     TYPE_DECL).
  
     FIXME: const_cast<tree> is a hack that hopefully will go away after
!    tree is converted to C++ class hierarchy.  */
  #define DECL_TEMPLATE_PARMS(NODE)       \
     ((struct tree_template_decl *)const_cast<tree> (TEMPLATE_DECL_CHECK \
  						   (NODE)))->arguments
*************** set_anon_aggr_type_field (tree &typeinfo
*** 5559,5565 ****
  /* For function, method, class-data templates.
  
     FIXME: const_cast<tree> is a hack that hopefully will go away after
!    tree is converted to C++ class hiearchy.  */
  #define DECL_TEMPLATE_RESULT(NODE)      \
     ((struct tree_template_decl *)const_cast<tree> (TEMPLATE_DECL_CHECK \
  						   (NODE)))->result
--- 5559,5565 ----
  /* For function, method, class-data templates.
  
     FIXME: const_cast<tree> is a hack that hopefully will go away after
!    tree is converted to C++ class hierarchy.  */
  #define DECL_TEMPLATE_RESULT(NODE)      \
     ((struct tree_template_decl *)const_cast<tree> (TEMPLATE_DECL_CHECK \
  						   (NODE)))->result
*************** enum cp_decl_spec {
*** 6971,6977 ****
  /* A decl-specifier-seq.  */
  
  struct cp_decl_specifier_seq {
!   /* An array of locations for the declaration sepecifiers, indexed by
       enum cp_decl_spec_word.  */
    location_t locations[ds_last];
    /* The primary type, if any, given by the decl-specifier-seq.
--- 6971,6977 ----
  /* A decl-specifier-seq.  */
  
  struct cp_decl_specifier_seq {
!   /* An array of locations for the declaration specifiers, indexed by
       enum cp_decl_spec_word.  */
    location_t locations[ds_last];
    /* The primary type, if any, given by the decl-specifier-seq.
diff -Nrcpad gcc-17-20260524/gcc/cp/decl.cc gcc-17-20260531/gcc/cp/decl.cc
*** gcc-17-20260524/gcc/cp/decl.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/decl.cc	Sun May 31 22:32:05 2026
*************** reshape_init_array_1 (tree elt_type, tre
*** 7609,7615 ****
        else
  	midx = tree_to_poly_uint64 (fold_convert (size_type_node, max_index));
  
!       /* For VLA vectors, we restict the number of elements in the constructor
  	 to lower bound of the VLA elements.  */
        max_index_cst = constant_lower_bound (midx);
      }
--- 7609,7615 ----
        else
  	midx = tree_to_poly_uint64 (fold_convert (size_type_node, max_index));
  
!       /* For VLA vectors, we restrict the number of elements in the constructor
  	 to lower bound of the VLA elements.  */
        max_index_cst = constant_lower_bound (midx);
      }
*************** omp_declare_variant_finalize (tree decl,
*** 9418,9424 ****
      }
    /* This loop is like private_lookup_attribute, except that it works
       with tree * rather than tree, as we might want to remove the
!      attributes that are diagnosed as errorneous.  */
    while (*list)
      {
        tree attr = get_attribute_name (*list);
--- 9418,9424 ----
      }
    /* This loop is like private_lookup_attribute, except that it works
       with tree * rather than tree, as we might want to remove the
!      attributes that are diagnosed as erroneous.  */
    while (*list)
      {
        tree attr = get_attribute_name (*list);
*************** cp_finish_decl (tree decl, tree init, bo
*** 9887,9895 ****
  	 require a guard variable, and since the mangled name of the
  	 guard variable will depend on the mangled name of this
  	 variable.  */
!       if (DECL_FUNCTION_SCOPE_P (decl)
! 	  && TREE_STATIC (decl)
! 	  && !DECL_ARTIFICIAL (decl))
  	{
  	  /* The variable holding an anonymous union will have had its
  	     discriminator set in finish_anon_union, after which it's
--- 9887,9893 ----
  	 require a guard variable, and since the mangled name of the
  	 guard variable will depend on the mangled name of this
  	 variable.  */
!       if (DECL_FUNCTION_SCOPE_P (decl) && TREE_STATIC (decl))
  	{
  	  /* The variable holding an anonymous union will have had its
  	     discriminator set in finish_anon_union, after which it's
*************** grokdeclarator (const cp_declarator *dec
*** 15815,15821 ****
    id_loc = declarator ? declarator->id_loc : input_location;
  
    if (innermost_code != cdk_function
!     /* Don't check this if it can be the artifical decltype(auto)
         we created when building a constraint in a compound-requirement:
         that the type-constraint is plain is going to be checked in
         cp_parser_compound_requirement.  */
--- 15813,15819 ----
    id_loc = declarator ? declarator->id_loc : input_location;
  
    if (innermost_code != cdk_function
!     /* Don't check this if it can be the artificial decltype(auto)
         we created when building a constraint in a compound-requirement:
         that the type-constraint is plain is going to be checked in
         cp_parser_compound_requirement.  */
*************** copy_type_enum (tree dst, tree src)
*** 18865,18871 ****
  /* Begin compiling the definition of an enumeration type.
     NAME is its name,
  
!    if ENUMTYPE is not NULL_TREE then the type has alredy been found.
  
     UNDERLYING_TYPE is the type that will be used as the storage for
     the enumeration type. This should be NULL_TREE if no storage type
--- 18863,18869 ----
  /* Begin compiling the definition of an enumeration type.
     NAME is its name,
  
!    if ENUMTYPE is not NULL_TREE then the type has already been found.
  
     UNDERLYING_TYPE is the type that will be used as the storage for
     the enumeration type. This should be NULL_TREE if no storage type
diff -Nrcpad gcc-17-20260524/gcc/cp/decl2.cc gcc-17-20260531/gcc/cp/decl2.cc
*** gcc-17-20260524/gcc/cp/decl2.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/decl2.cc	Sun May 31 22:32:05 2026
*************** struct priority_map_traits
*** 157,163 ****
    {
      entry.m_key = 0;
    }
!   // Entries are not deleteable
    template <typename T> static bool is_deleted (const T &)
    {
      return false;
--- 157,163 ----
    {
      entry.m_key = 0;
    }
!   // Entries are not deletable
    template <typename T> static bool is_deleted (const T &)
    {
      return false;
*************** determine_visibility (tree decl)
*** 3304,3310 ****
    enum symbol_visibility orig_visibility = DECL_VISIBILITY (decl);
  
    /* The decl may be a template instantiation, which could influence
!      visibilty.  */
    tree template_decl = NULL_TREE;
    if (TREE_CODE (decl) == TYPE_DECL)
      {
--- 3304,3310 ----
    enum symbol_visibility orig_visibility = DECL_VISIBILITY (decl);
  
    /* The decl may be a template instantiation, which could influence
!      visibility.  */
    tree template_decl = NULL_TREE;
    if (TREE_CODE (decl) == TYPE_DECL)
      {
*************** constrain_class_visibility (tree type)
*** 3670,3676 ****
     types and declarations when it gets a name for linkage purposes from a
     typedef.  */
  // FIXME: It is now a DR for such a class type to contain anything
! // other than C.  So at minium most of this can probably be deleted.
  
  /* First reset the visibility of all the types.  */
  
--- 3670,3676 ----
     types and declarations when it gets a name for linkage purposes from a
     typedef.  */
  // FIXME: It is now a DR for such a class type to contain anything
! // other than C.  So at minimum most of this can probably be deleted.
  
  /* First reset the visibility of all the types.  */
  
*************** one_static_initialization_or_destruction
*** 4862,4868 ****
  
  /* Helper function for emit_partial_init_fini_fn and handle_tls_init.
     For structured bindings, disable stmts_are_full_exprs_p ()
!    on STATIC_INIT_DECOMP_BASE_P nodes, reenable it on the
     first STATIC_INIT_DECOMP_NONBASE_P node and emit all the
     STATIC_INIT_DECOMP_BASE_P and STATIC_INIT_DECOMP_NONBASE_P
     consecutive nodes in a single STATEMENT_LIST wrapped with
--- 4862,4868 ----
  
  /* Helper function for emit_partial_init_fini_fn and handle_tls_init.
     For structured bindings, disable stmts_are_full_exprs_p ()
!    on STATIC_INIT_DECOMP_BASE_P nodes, re-enable it on the
     first STATIC_INIT_DECOMP_NONBASE_P node and emit all the
     STATIC_INIT_DECOMP_BASE_P and STATIC_INIT_DECOMP_NONBASE_P
     consecutive nodes in a single STATEMENT_LIST wrapped with
diff -Nrcpad gcc-17-20260524/gcc/cp/g++spec.cc gcc-17-20260531/gcc/cp/g++spec.cc
*** gcc-17-20260524/gcc/cp/g++spec.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/g++spec.cc	Sun May 31 22:32:05 2026
*************** lang_specific_driver (struct cl_decoded_
*** 115,121 ****
    /* "-lm" or "-lmath" if it appears on the command line.  */
    const struct cl_decoded_option *saw_math = NULL;
  
!   /* "-lrt" or eqivalent if it appears on the command line.  */
    const struct cl_decoded_option *saw_time = NULL;
  
    /* "-lc" if it appears on the command line.  */
--- 115,121 ----
    /* "-lm" or "-lmath" if it appears on the command line.  */
    const struct cl_decoded_option *saw_math = NULL;
  
!   /* "-lrt" or equivalent if it appears on the command line.  */
    const struct cl_decoded_option *saw_time = NULL;
  
    /* "-lc" if it appears on the command line.  */
diff -Nrcpad gcc-17-20260524/gcc/cp/init.cc gcc-17-20260531/gcc/cp/init.cc
*** gcc-17-20260524/gcc/cp/init.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/init.cc	Sun May 31 22:32:05 2026
*************** build_value_init_noctor (tree type, tsub
*** 445,450 ****
--- 445,458 ----
  		  && integer_zerop (DECL_SIZE (field)))
  		continue;
  
+ 	      /* Zero-initialize anonymous union and struct members.  The
+ 		 default constructor doesn't exist for those and if NSDMIs
+ 		 are used, the containing type's default constructor is
+ 		 non-trivial.  */
+ 	      if (ANON_AGGR_TYPE_P (ftype))
+ 		value = build_zero_init (ftype, NULL_TREE,
+ 					 /*static_storage_p=*/false);
+ 
  	      /* We could skip vfields and fields of types with
  		 user-defined constructors, but I think that won't improve
  		 performance at all; it should be simpler in general just
*************** build_value_init_noctor (tree type, tsub
*** 455,467 ****
  		 corresponding to base classes as well.  Thus, iterating
  		 over TYPE_FIELDs will result in correct initialization of
  		 all of the subobjects.  */
! 	      value = build_value_init (ftype, complain);
! 	      value = maybe_constant_init (value);
  
  	      if (value == error_mark_node)
  		return error_mark_node;
  
! 	      CONSTRUCTOR_APPEND_ELT(v, field, value);
  
  	      /* We shouldn't have gotten here for anything that would need
  		 non-trivial initialization, and gimplify_init_ctor_preeval
--- 463,478 ----
  		 corresponding to base classes as well.  Thus, iterating
  		 over TYPE_FIELDs will result in correct initialization of
  		 all of the subobjects.  */
! 	      else
! 		{
! 		  value = build_value_init (ftype, complain);
! 		  value = maybe_constant_init (value);
! 		}
  
  	      if (value == error_mark_node)
  		return error_mark_node;
  
! 	      CONSTRUCTOR_APPEND_ELT (v, field, value);
  
  	      /* We shouldn't have gotten here for anything that would need
  		 non-trivial initialization, and gimplify_init_ctor_preeval
*************** constant_value_1 (tree decl, bool strict
*** 2601,2607 ****
  	init = TREE_VALUE (init);
        /* Instantiate a non-dependent initializer for user variables.  We
  	 mustn't do this for the temporary for an array compound literal;
! 	 trying to instatiate the initializer will keep creating new
  	 temporaries until we crash.  Probably it's not useful to do it for
  	 other artificial variables, either.  */
        if (!DECL_ARTIFICIAL (decl))
--- 2612,2618 ----
  	init = TREE_VALUE (init);
        /* Instantiate a non-dependent initializer for user variables.  We
  	 mustn't do this for the temporary for an array compound literal;
! 	 trying to instantiate the initializer will keep creating new
  	 temporaries until we crash.  Probably it's not useful to do it for
  	 other artificial variables, either.  */
        if (!DECL_ARTIFICIAL (decl))
*************** build_new (location_t loc, vec<tree, va_
*** 4087,4093 ****
        /* The expression in a noptr-new-declarator is erroneous if it's of
  	 non-class type and its value before converting to std::size_t is
  	 less than zero. ... If the expression is a constant expression,
! 	 the program is ill-fomed.  */
        if (TREE_CODE (cst_nelts) == INTEGER_CST
  	  && !valid_array_size_p (nelts_loc, cst_nelts, NULL_TREE,
  				  complain & tf_error))
--- 4098,4104 ----
        /* The expression in a noptr-new-declarator is erroneous if it's of
  	 non-class type and its value before converting to std::size_t is
  	 less than zero. ... If the expression is a constant expression,
! 	 the program is ill-formed.  */
        if (TREE_CODE (cst_nelts) == INTEGER_CST
  	  && !valid_array_size_p (nelts_loc, cst_nelts, NULL_TREE,
  				  complain & tf_error))
diff -Nrcpad gcc-17-20260524/gcc/cp/mangle.cc gcc-17-20260531/gcc/cp/mangle.cc
*** gcc-17-20260524/gcc/cp/mangle.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/mangle.cc	Sun May 31 22:32:05 2026
*************** write_unqualified_name (tree decl)
*** 1653,1659 ****
  	    decl = res;
  	  else if (flag_abi_version == 10)
  	    {
! 	      /* In ABI 10, we want explict and implicit tags.  */
  	      write_abi_tags (mtags);
  	      return;
  	    }
--- 1653,1659 ----
  	    decl = res;
  	  else if (flag_abi_version == 10)
  	    {
! 	      /* In ABI 10, we want explicit and implicit tags.  */
  	      write_abi_tags (mtags);
  	      return;
  	    }
diff -Nrcpad gcc-17-20260524/gcc/cp/method.cc gcc-17-20260531/gcc/cp/method.cc
*** gcc-17-20260524/gcc/cp/method.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/method.cc	Sun May 31 22:32:05 2026
*************** inherited_ctor_binfo (tree fndecl)
*** 560,566 ****
  
  
  /* True if we should omit all user-declared parameters from a base
!    construtor built from complete constructor FN.
     That's when the ctor is inherited from a virtual base.  */
  
  bool
--- 560,566 ----
  
  
  /* True if we should omit all user-declared parameters from a base
!    constructor built from complete constructor FN.
     That's when the ctor is inherited from a virtual base.  */
  
  bool
*************** synthesized_method_walk (tree ctype, spe
*** 3167,3173 ****
    else if (ABSTRACT_CLASS_TYPE_P (ctype) && cxx_dialect >= cxx14
  	   /* DR 1658 specifies that vbases of abstract classes are
  	      ignored for both ctors and dtors.  Except DR 2336
! 	      overrides that skipping when determing the eh-spec of a
  	      virtual destructor.  */
  	   && sfk != sfk_virtual_destructor)
      /* Vbase cdtors are not relevant.  */;
--- 3167,3173 ----
    else if (ABSTRACT_CLASS_TYPE_P (ctype) && cxx_dialect >= cxx14
  	   /* DR 1658 specifies that vbases of abstract classes are
  	      ignored for both ctors and dtors.  Except DR 2336
! 	      overrides that skipping when determining the eh-spec of a
  	      virtual destructor.  */
  	   && sfk != sfk_virtual_destructor)
      /* Vbase cdtors are not relevant.  */;
diff -Nrcpad gcc-17-20260524/gcc/cp/module.cc gcc-17-20260531/gcc/cp/module.cc
*** gcc-17-20260524/gcc/cp/module.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/module.cc	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  
  /* Comments in this file have a non-negligible chance of being wrong
     or at least inaccurate.  Due to (a) my misunderstanding, (b)
!    ambiguities that I have interpretted differently to original intent
     (c) changes in the specification, (d) my poor wording, (e) source
     changes.  */
  
--- 20,26 ----
  
  /* Comments in this file have a non-negligible chance of being wrong
     or at least inaccurate.  Due to (a) my misunderstanding, (b)
!    ambiguities that I have interpreted differently to original intent
     (c) changes in the specification, (d) my poor wording, (e) source
     changes.  */
  
*************** along with GCC; see the file COPYING3.
*** 42,48 ****
     Additionally each imported decl is mapped in the entity_map via its
     DECL_UID to the flat index in the entity_ary.  Thus we can locate
     the index for any imported decl by using this map and then
!    de-flattening the index via a binary seach of the module vector.
     Cross-module references are by (remapped) module number and
     module-local index.
  
--- 42,48 ----
     Additionally each imported decl is mapped in the entity_map via its
     DECL_UID to the flat index in the entity_ary.  Thus we can locate
     the index for any imported decl by using this map and then
!    de-flattening the index via a binary search of the module vector.
     Cross-module references are by (remapped) module number and
     module-local index.
  
*************** Classes used:
*** 188,194 ****
     The mapper object uses fileno IO to communicate with the server or
     program.   */
  
! /* In expermental (trunk) sources, MODULE_VERSION is a #define passed
     in from the Makefile.  It records the modification date of the
     source directory -- that's the only way to stay sane.  In release
     sources, we (plan to) use the compiler's major.minor versioning.
--- 188,194 ----
     The mapper object uses fileno IO to communicate with the server or
     program.   */
  
! /* In experimental (trunk) sources, MODULE_VERSION is a #define passed
     in from the Makefile.  It records the modification date of the
     source directory -- that's the only way to stay sane.  In release
     sources, we (plan to) use the compiler's major.minor versioning.
*************** version2string (unsigned version, verstr
*** 323,329 ****
  /* Include files to note translation for.  */
  static vec<const char *, va_heap, vl_embed> *note_includes;
  
! /* Modules to note CMI pathames.  */
  static vec<const char *, va_heap, vl_embed> *note_cmis;
  
  /* Traits to hash an arbitrary pointer.  Entries are not deletable,
--- 323,329 ----
  /* Include files to note translation for.  */
  static vec<const char *, va_heap, vl_embed> *note_includes;
  
! /* Modules to note CMI pathnames.  */
  static vec<const char *, va_heap, vl_embed> *note_cmis;
  
  /* Traits to hash an arbitrary pointer.  Entries are not deletable,
*************** pending_map_t *pending_table;
*** 2846,2852 ****
     completed.  */
  vec<tree, va_heap, vl_embed> *post_load_decls;
  
! /* Some entities are keyed to another entitity for ODR purposes.
     For example, at namespace scope, 'inline auto var = []{};', that
     lambda is keyed to 'var', and follows its ODRness.  */
  typedef hash_map<tree, auto_vec<tree>> keyed_map_t;
--- 2846,2852 ----
     completed.  */
  vec<tree, va_heap, vl_embed> *post_load_decls;
  
! /* Some entities are keyed to another entity for ODR purposes.
     For example, at namespace scope, 'inline auto var = []{};', that
     lambda is keyed to 'var', and follows its ODRness.  */
  typedef hash_map<tree, auto_vec<tree>> keyed_map_t;
*************** static GTY(()) vec<tree, va_gc> *class_m
*** 4220,4226 ****
     expecting them in the instantiation table no longer holds.  One of
     the constrained partial specializations will be there, but the
     others not so much.  It's not even an unconstrained partial
!    spacialization in the table :(  so any partial template declaration
     is added to this list too.  */
  static GTY(()) vec<tree, va_gc> *partial_specializations;
  
--- 4220,4226 ----
     expecting them in the instantiation table no longer holds.  One of
     the constrained partial specializations will be there, but the
     others not so much.  It's not even an unconstrained partial
!    specialization in the table :(  so any partial template declaration
     is added to this list too.  */
  static GTY(()) vec<tree, va_gc> *partial_specializations;
  
*************** trees_out::lang_decl_bools (tree t, bits
*** 6110,6116 ****
    WB (lang->u.base.var_declared_inline_p);
    WB (lang->u.base.dependent_init_p);
  
!   /* When building a header unit, everthing is marked as purview, (so
       we know which decls to write).  But when we import them we do not
       want to mark them as in module purview.  */
    WB (lang->u.base.module_purview_p && !header_module_p ());
--- 6110,6116 ----
    WB (lang->u.base.var_declared_inline_p);
    WB (lang->u.base.dependent_init_p);
  
!   /* When building a header unit, everything is marked as purview, (so
       we know which decls to write).  But when we import them we do not
       want to mark them as in module purview.  */
    WB (lang->u.base.module_purview_p && !header_module_p ());
*************** trees_out::core_vals (tree t)
*** 6563,6569 ****
  			 && TREE_CODE_CLASS (code) != tcc_vl_exp);
  
    /* Then by CODE.  Special cases and/or 1:1 tree shape
!      correspondance. */
    switch (code)
      {
      default:
--- 6563,6569 ----
  			 && TREE_CODE_CLASS (code) != tcc_vl_exp);
  
    /* Then by CODE.  Special cases and/or 1:1 tree shape
!      correspondence. */
    switch (code)
      {
      default:
*************** trees_in::core_vals (tree t)
*** 7146,7152 ****
      }
  
    /* Then by CODE.  Special cases and/or 1:1 tree shape
!      correspondance. */
    switch (code)
      {
      default:
--- 7146,7152 ----
      }
  
    /* Then by CODE.  Special cases and/or 1:1 tree shape
!      correspondence. */
    switch (code)
      {
      default:
*************** trees_in::core_vals (tree t)
*** 7168,7174 ****
        break;
  
      case FIXED_CST:
!       /* Not suported in C++.  */
        return false;
  
      case INTEGER_CST:
--- 7168,7174 ----
        break;
  
      case FIXED_CST:
!       /* Not supported in C++.  */
        return false;
  
      case INTEGER_CST:
*************** trees_in::install_implicit_member (tree
*** 12920,12926 ****
    tree name = DECL_NAME (fn);
    /* We know these are synthesized, so the set of expected prototypes
       is quite restricted.  We're not validating correctness, just
!      distinguishing beteeen the small set of possibilities.  */
    tree parm_type = TREE_VALUE (FUNCTION_FIRST_USER_PARMTYPE (fn));
    if (IDENTIFIER_CTOR_P (name))
      {
--- 12920,12926 ----
    tree name = DECL_NAME (fn);
    /* We know these are synthesized, so the set of expected prototypes
       is quite restricted.  We're not validating correctness, just
!      distinguishing between the small set of possibilities.  */
    tree parm_type = TREE_VALUE (FUNCTION_FIRST_USER_PARMTYPE (fn));
    if (IDENTIFIER_CTOR_P (name))
      {
*************** trees_in::odr_duplicate (tree maybe_exis
*** 13129,13135 ****
  
  /* The following writer functions rely on the current behaviour of
     depset::hash::add_dependency making the decl and defn depset nodes
!    depend on eachother.  That way we don't have to worry about seeding
     the tree map with named decls that cannot be looked up by name (I.e
     template and function parms).  We know the decl and definition will
     be in the same cluster, which is what we want.  */
--- 13129,13135 ----
  
  /* The following writer functions rely on the current behaviour of
     depset::hash::add_dependency making the decl and defn depset nodes
!    depend on each other.  That way we don't have to worry about seeding
     the tree map with named decls that cannot be looked up by name (I.e
     template and function parms).  We know the decl and definition will
     be in the same cluster, which is what we want.  */
*************** instantiating_tu_local_entity (tree decl
*** 14568,14574 ****
    inform (DECL_SOURCE_LOCATION (decl), "declared here");
  
    /* We treat TU-local entities from the GMF as not actually being
!      TU-local as an extension, so allow instantation to proceed.  */
    return false;
  }
  
--- 14568,14574 ----
    inform (DECL_SOURCE_LOCATION (decl), "declared here");
  
    /* We treat TU-local entities from the GMF as not actually being
!      TU-local as an extension, so allow instantiation to proceed.  */
    return false;
  }
  
*************** sort_cluster (depset::hash *original, de
*** 16299,16305 ****
  
       The instantiation of TPL will be in the specialization table, and
       refer to Foo via arg.  But we can only get to that specialization
!      from Foo's declaration, so we only need to treat Foo as mergable
       (We'll do structural comparison of TPL<decltype (arg)>).
  
       We approximate finding the single cluster entry dep by checking for
--- 16299,16305 ----
  
       The instantiation of TPL will be in the specialization table, and
       refer to Foo via arg.  But we can only get to that specialization
!      from Foo's declaration, so we only need to treat Foo as mergeable
       (We'll do structural comparison of TPL<decltype (arg)>).
  
       We approximate finding the single cluster entry dep by checking for
*************** module_state::write_define (bytes_out &s
*** 19662,19668 ****
  
  	case CPP_TOKEN_FLD_STR:
  	  /* A string, number or comment.  Not always NUL terminated,
! 	     we stream out in a single contatenation with embedded
  	     NULs as that's a safe default.  */
  	  len += token->val.str.len + 1;
  	  sec.u (token->val.str.len);
--- 19662,19668 ----
  
  	case CPP_TOKEN_FLD_STR:
  	  /* A string, number or comment.  Not always NUL terminated,
! 	     we stream out in a single concatenation with embedded
  	     NULs as that's a safe default.  */
  	  len += token->val.str.len + 1;
  	  sec.u (token->val.str.len);
*************** module_state::write_begin (elf_out *to,
*** 21203,21209 ****
    gcc_assert (counts[MSC_sec_hwm] == to->get_section_limit ()
  	      && spaces.length () == counts[MSC_namespaces]);
  
!   /* Write the entitites.  None happens if we contain namespaces or
       nothing. */
    config.num_entities = counts[MSC_entities];
    if (counts[MSC_entities])
--- 21203,21209 ----
    gcc_assert (counts[MSC_sec_hwm] == to->get_section_limit ()
  	      && spaces.length () == counts[MSC_namespaces]);
  
!   /* Write the entities.  None happens if we contain namespaces or
       nothing. */
    config.num_entities = counts[MSC_entities];
    if (counts[MSC_entities])
*************** declare_module (module_state *module, lo
*** 22859,22865 ****
      {
        /* Copy the importing information we may have already done.  We
  	 do not need to separate out the imports that only happen in
! 	 the GMF, inspite of what the literal wording of the std
  	 might imply.  See p2191, the core list had a discussion
  	 where the module implementors agreed that the GMF of a named
  	 module is invisible to importers.  */
--- 22859,22865 ----
      {
        /* Copy the importing information we may have already done.  We
  	 do not need to separate out the imports that only happen in
! 	 the GMF, in spite of what the literal wording of the std
  	 might imply.  See p2191, the core list had a discussion
  	 where the module implementors agreed that the GMF of a named
  	 module is invisible to importers.  */
*************** void
*** 23579,23585 ****
  init_modules (cpp_reader *reader)
  {
    /* PCH should not be reachable because of lang-specs, but the
!      user could have overriden that.  */
    if (pch_file)
      fatal_error (input_location,
  		 "C++ modules are incompatible with precompiled headers");
--- 23579,23585 ----
  init_modules (cpp_reader *reader)
  {
    /* PCH should not be reachable because of lang-specs, but the
!      user could have overridden that.  */
    if (pch_file)
      fatal_error (input_location,
  		 "C++ modules are incompatible with precompiled headers");
diff -Nrcpad gcc-17-20260524/gcc/cp/name-lookup.cc gcc-17-20260531/gcc/cp/name-lookup.cc
*** gcc-17-20260524/gcc/cp/name-lookup.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/name-lookup.cc	Sun May 31 22:32:05 2026
*************** vec<tree, va_heap, vl_embed> *name_looku
*** 550,557 ****
  /* Currently active lookup.  */
  name_lookup *name_lookup::active;
  
! /* Name lookup is recursive, becase ADL can cause template
!    instatiation.  This is of course a rare event, so we optimize for
     it not happening.  When we discover an active name-lookup, which
     must be an ADL lookup,  we need to unmark the marked scopes and also
     unmark the lookup we might have been accumulating.  */
--- 550,557 ----
  /* Currently active lookup.  */
  name_lookup *name_lookup::active;
  
! /* Name lookup is recursive, because ADL can cause template
!    instantiation.  This is of course a rare event, so we optimize for
     it not happening.  When we discover an active name-lookup, which
     must be an ADL lookup,  we need to unmark the marked scopes and also
     unmark the lookup we might have been accumulating.  */
*************** name_lookup::ambiguous (tree thing, tree
*** 681,687 ****
    return current;
  }
  
! /* FNS is a new overload set to add to the exising set.  */
  
  void
  name_lookup::add_overload (tree fns)
--- 681,687 ----
    return current;
  }
  
! /* FNS is a new overload set to add to the existing set.  */
  
  void
  name_lookup::add_overload (tree fns)
*************** pushdecl (tree decl, bool hiding)
*** 4236,4242 ****
  		  if (level->kind != sk_namespace
  		      && !instantiating_current_function_p ())
  		    /* This is a locally defined typedef in a function that
! 		       is not a template instantation, record it to implement
  		       -Wunused-local-typedefs.  */
  		    record_locally_defined_typedef (decl);
  		}
--- 4236,4242 ----
  		  if (level->kind != sk_namespace
  		      && !instantiating_current_function_p ())
  		    /* This is a locally defined typedef in a function that
! 		       is not a template instantiation, record it to implement
  		       -Wunused-local-typedefs.  */
  		    record_locally_defined_typedef (decl);
  		}
*************** suggest_alternatives_for_1 (location_t l
*** 7498,7504 ****
     Search through all available namespaces and generate a suggestion and/or
     a deferred diagnostic that lists possible candidate(s).
  
!    This is similiar to suggest_alternatives_for, but doesn't fallback to
     the other approaches used by that function.  */
  
  name_hint
--- 7498,7504 ----
     Search through all available namespaces and generate a suggestion and/or
     a deferred diagnostic that lists possible candidate(s).
  
!    This is similar to suggest_alternatives_for, but doesn't fallback to
     the other approaches used by that function.  */
  
  name_hint
*************** maybe_add_fuzzy_decl (auto_vec<tree> &ve
*** 7812,7818 ****
    return true;
  }
  
! /* Examing the namespace binding BINDING, and add at most one instance
     of the name, if it contains a visible entity of interest.  Return
     true if we added something.  */
  
--- 7812,7818 ----
    return true;
  }
  
! /* Examine the namespace binding BINDING, and add at most one instance
     of the name, if it contains a visible entity of interest.  Return
     true if we added something.  */
  
diff -Nrcpad gcc-17-20260524/gcc/cp/name-lookup.h gcc-17-20260531/gcc/cp/name-lookup.h
*** gcc-17-20260524/gcc/cp/name-lookup.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/name-lookup.h	Sun May 31 22:32:05 2026
*************** struct cp_binding_level;
*** 36,48 ****
  #define INHERITED_VALUE_BINDING_P(NODE) ((NODE)->value_is_inherited)
  
  /* The IMPLICIT_TYPEDEF is hidden from ordinary name lookup (it was
!    injected via a local class's friend decl). The typdef may be in the
     VALUE or the TYPE slot.  We do not get the situation where the
     value and type slots are both filled and both hidden.  */
  #define HIDDEN_TYPE_BINDING_P(NODE) ((NODE)->type_is_hidden)
  
  /* Create an overload suitable for recording an artificial TYPE_DECL
!    and another decl.  We use this machanism to implement the struct
     stat hack.  */
  
  #define STAT_HACK_P(N) ((N) && TREE_CODE (N) == OVERLOAD && OVL_LOOKUP_P (N))
--- 36,48 ----
  #define INHERITED_VALUE_BINDING_P(NODE) ((NODE)->value_is_inherited)
  
  /* The IMPLICIT_TYPEDEF is hidden from ordinary name lookup (it was
!    injected via a local class's friend decl). The typedef may be in the
     VALUE or the TYPE slot.  We do not get the situation where the
     value and type slots are both filled and both hidden.  */
  #define HIDDEN_TYPE_BINDING_P(NODE) ((NODE)->type_is_hidden)
  
  /* Create an overload suitable for recording an artificial TYPE_DECL
!    and another decl.  We use this mechanism to implement the struct
     stat hack.  */
  
  #define STAT_HACK_P(N) ((N) && TREE_CODE (N) == OVERLOAD && OVL_LOOKUP_P (N))
*************** struct GTY(()) tree_binding_vec {
*** 193,199 ****
     entity.  */
  #define BINDING_VECTOR_GLOBAL_DUPS_P(NODE) \
    (BINDING_VECTOR_CHECK (NODE)->base.static_flag)
! /* This binding contains duplicate references to a partioned module
     entity.  */
  #define BINDING_VECTOR_PARTITION_DUPS_P(NODE) \
    (BINDING_VECTOR_CHECK (NODE)->base.volatile_flag)
--- 193,199 ----
     entity.  */
  #define BINDING_VECTOR_GLOBAL_DUPS_P(NODE) \
    (BINDING_VECTOR_CHECK (NODE)->base.static_flag)
! /* This binding contains duplicate references to a partitioned module
     entity.  */
  #define BINDING_VECTOR_PARTITION_DUPS_P(NODE) \
    (BINDING_VECTOR_CHECK (NODE)->base.volatile_flag)
diff -Nrcpad gcc-17-20260524/gcc/cp/operators.def gcc-17-20260531/gcc/cp/operators.def
*** gcc-17-20260524/gcc/cp/operators.def	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/operators.def	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 61,67 ****
  
     There is code (such as in grok_op_properties) that depends on the
     order the operators are presented in this file.  Unary_ops must
!    preceed a matching binary op (i.e. '+').  Assignment operators must
     be last, after OPERATOR_TRANSITION.  */
  
  /* Use DEF_ASSN_OPERATOR to define an assignment operator.  Its
--- 61,67 ----
  
     There is code (such as in grok_op_properties) that depends on the
     order the operators are presented in this file.  Unary_ops must
!    precede a matching binary op (i.e. '+').  Assignment operators must
     be last, after OPERATOR_TRANSITION.  */
  
  /* Use DEF_ASSN_OPERATOR to define an assignment operator.  Its
diff -Nrcpad gcc-17-20260524/gcc/cp/parser.cc gcc-17-20260531/gcc/cp/parser.cc
*** gcc-17-20260524/gcc/cp/parser.cc	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/parser.cc	Sun May 31 22:32:05 2026
*************** cp_lexer_new_main (void)
*** 857,863 ****
  	     by the current token which is either not a CPP_NUMBER (e.g.
  	     often CPP_CLOSE_BRACE), or CPP_NUMBER with non-int type or with
  	     value not in [0, UCHAR_MAX], or reaching the raw_data_max_len
! 	     limit.  So we need to substract 1 (to get at the current token
  	     index) plus 3 + !last_number to get at the CPP_EMBED index.  */
  	  unsigned int idx = lexer->buffer->length () - 4 - !last_number;
  	  if (!last_number)
--- 857,863 ----
  	     by the current token which is either not a CPP_NUMBER (e.g.
  	     often CPP_CLOSE_BRACE), or CPP_NUMBER with non-int type or with
  	     value not in [0, UCHAR_MAX], or reaching the raw_data_max_len
! 	     limit.  So we need to subtract 1 (to get at the current token
  	     index) plus 3 + !last_number to get at the CPP_EMBED index.  */
  	  unsigned int idx = lexer->buffer->length () - 4 - !last_number;
  	  if (!last_number)
*************** cp_lexer_new_main (void)
*** 907,913 ****
      {
        /* Set the EOF token's location to be the just after the previous
           token's range.  That way 'at-eof' diagnostics point at something
! 	 meaninful.  */
        auto range = get_range_from_loc (line_table, tok[-1].location);
        tok[0].location
  	= linemap_position_for_loc_and_offset (line_table, range.m_finish, 1);
--- 907,913 ----
      {
        /* Set the EOF token's location to be the just after the previous
           token's range.  That way 'at-eof' diagnostics point at something
! 	 meaningful.  */
        auto range = get_range_from_loc (line_table, tok[-1].location);
        tok[0].location
  	= linemap_position_for_loc_and_offset (line_table, range.m_finish, 1);
*************** get_cast_suggestion (tree dst_type, tree
*** 11331,11337 ****
  
     to a C++-style cast.
  
!    The primary range of RICHLOC is asssumed to be that of the original
     expression.  OPEN_PAREN_LOC and CLOSE_PAREN_LOC give the locations
     of the parens in the C-style cast.  */
  
--- 11331,11337 ----
  
     to a C++-style cast.
  
!    The primary range of RICHLOC is assumed to be that of the original
     expression.  OPEN_PAREN_LOC and CLOSE_PAREN_LOC give the locations
     of the parens in the C-style cast.  */
  
*************** cp_parser_expression (cp_parser* parser,
*** 12152,12158 ****
        /* Parse the next assignment-expression.  */
        if (cp_lexer_next_token_is (parser->lexer, CPP_EMBED))
  	{
! 	  /* Users aren't interested in milions of -Wunused-value
  	     warnings when using #embed inside of a comma expression,
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
--- 12152,12158 ----
        /* Parse the next assignment-expression.  */
        if (cp_lexer_next_token_is (parser->lexer, CPP_EMBED))
  	{
! 	  /* Users aren't interested in millions of -Wunused-value
  	     warnings when using #embed inside of a comma expression,
  	     and one CPP_NUMBER plus CPP_COMMA before it and one
  	     CPP_COMMA plus CPP_NUMBER after it is guaranteed by
*************** cp_build_range_for_decls (location_t loc
*** 16063,16068 ****
--- 16063,16069 ----
  		  DECL_INTERFACE_KNOWN (range_temp) = 1;
  		  DECL_DECLARED_CONSTEXPR_P (range_temp) = 1;
  		  TREE_READONLY (range_temp) = 1;
+ 		  DECL_IGNORED_P (range_temp) = 1;
  		}
  	    }
  	  else
*************** cp_build_range_for_decls (location_t loc
*** 16092,16097 ****
--- 16093,16099 ----
        TREE_STATIC (begin) = 1;
        DECL_DECLARED_CONSTEXPR_P (begin) = 1;
        TREE_READONLY (begin) = 1;
+       DECL_IGNORED_P (begin) = 1;
      }
    pushdecl (begin);
    cp_finish_decl (begin, begin_expr,
*************** cp_parser_simple_type_specifier (cp_pars
*** 23056,23062 ****
    return type;
  }
  
! /* Parse the remainder of a placholder-type-specifier.
  
     placeholder-type-specifier:
       type-constraint_opt auto
--- 23058,23064 ----
    return type;
  }
  
! /* Parse the remainder of a placeholder-type-specifier.
  
     placeholder-type-specifier:
       type-constraint_opt auto
*************** cp_parser_noexcept_specification_opt (cp
*** 32199,32205 ****
      {
        tree expr;
  
!       /* [class.mem]/6 says that a noexcept-specifer (within the
  	 member-specification of the class) is a complete-class context of
  	 a class.  So, if the noexcept-specifier has the optional expression,
  	 just save the tokens, and reparse this after we're done with the
--- 32201,32207 ----
      {
        tree expr;
  
!       /* [class.mem]/6 says that a noexcept-specifier (within the
  	 member-specification of the class) is a complete-class context of
  	 a class.  So, if the noexcept-specifier has the optional expression,
  	 just save the tokens, and reparse this after we're done with the
*************** cp_parser_lookup_name (cp_parser *parser
*** 35430,35436 ****
  	}
  
        /* If the scope is a dependent type and either we deferred lookup or
! 	 we did lookup but didn't find the name, rememeber the name.  */
        if (decl == error_mark_node
  	  && ((TYPE_P (parser->scope)
  	       && dependentish_scope_p (parser->scope))
--- 35432,35438 ----
  	}
  
        /* If the scope is a dependent type and either we deferred lookup or
! 	 we did lookup but didn't find the name, remember the name.  */
        if (decl == error_mark_node
  	  && ((TYPE_P (parser->scope)
  	       && dependentish_scope_p (parser->scope))
*************** class_decl_loc_t::diag_mismatched_tags (
*** 38657,38663 ****
    auto_diagnostic_group d;
    /* Issue a warning for the first mismatched declaration.
       Avoid using "%#qT" since the class-key for the same type will
!      be the same regardless of which one was used in the declaraion.  */
    if (warning_at (loc, OPT_Wmismatched_tags,
  		  "%qT declared with a mismatched class-key %qs",
  		  type_decl, xmatchkstr))
--- 38659,38665 ----
    auto_diagnostic_group d;
    /* Issue a warning for the first mismatched declaration.
       Avoid using "%#qT" since the class-key for the same type will
!      be the same regardless of which one was used in the declaration.  */
    if (warning_at (loc, OPT_Wmismatched_tags,
  		  "%qT declared with a mismatched class-key %qs",
  		  type_decl, xmatchkstr))
*************** cp_parser_cache_defarg (cp_parser *parse
*** 38926,38932 ****
  	      if (nsdmi)
  		{
  		  /* Parse declarators until we reach a non-comma or
! 		     somthing that cannot be an initializer.
  		     Just checking whether we're looking at a single
  		     declarator is insufficient.  Consider:
  		       int var = tuple<T,U>::x;
--- 38928,38934 ----
  	      if (nsdmi)
  		{
  		  /* Parse declarators until we reach a non-comma or
! 		     something that cannot be an initializer.
  		     Just checking whether we're looking at a single
  		     declarator is insufficient.  Consider:
  		       int var = tuple<T,U>::x;
*************** cp_parser_objc_statement (cp_parser * pa
*** 40782,40788 ****
    return error_mark_node;
  }
  
! /* If we are compiling ObjC++ and we see an __attribute__ we neeed to
     look ahead to see if an objc keyword follows the attributes.  This
     is to detect the use of prefix attributes on ObjC @interface and
     @protocol.  */
--- 40784,40790 ----
    return error_mark_node;
  }
  
! /* If we are compiling ObjC++ and we see an __attribute__ we need to
     look ahead to see if an objc keyword follows the attributes.  This
     is to detect the use of prefix attributes on ObjC @interface and
     @protocol.  */
*************** cp_parser_objc_at_property_declaration (
*** 41082,41088 ****
  	      }
  
  	    /* If we see a comma here, then keep going - even if we already
! 	       saw a syntax error.  For simple mistakes e.g. (asign, getter=x)
  	       this makes a more useful output and avoid spurious warnings
  	       about missing attributes that are, in fact, specified after the
  	       one with the syntax error.  */
--- 41084,41090 ----
  	      }
  
  	    /* If we see a comma here, then keep going - even if we already
! 	       saw a syntax error.  For simple mistakes e.g. (assign, getter=x)
  	       this makes a more useful output and avoid spurious warnings
  	       about missing attributes that are, in fact, specified after the
  	       one with the syntax error.  */
*************** cp_parser_omp_loop_nest (cp_parser *pars
*** 50012,50018 ****
  	 of the variables from intervening code.  However, putting this
  	 code in each level of loop instead of all around the innermost
  	 body also makes the decomposition variables visible to the
! 	 inner for init/bound/step exressions, which is not supposed to
  	 happen and causes test failures.  */
        if (omp_for_parse_state->orig_declv)
  	for (int i = 0; i < omp_for_parse_state->count; i++)
--- 50014,50020 ----
  	 of the variables from intervening code.  However, putting this
  	 code in each level of loop instead of all around the innermost
  	 body also makes the decomposition variables visible to the
! 	 inner for init/bound/step expressions, which is not supposed to
  	 happen and causes test failures.  */
        if (omp_for_parse_state->orig_declv)
  	for (int i = 0; i < omp_for_parse_state->count; i++)
*************** cp_parser_omp_taskloop (cp_parser *parse
*** 56380,56386 ****
  /* Parse the OpenACC routine pragma.  This has an optional '( name )'
     component, which must resolve to a declared namespace-scope
     function.  The clauses are either processed directly (for a named
!    function), or defered until the immediatley following declaration
     is parsed.  */
  
  static void
--- 56382,56388 ----
  /* Parse the OpenACC routine pragma.  This has an optional '( name )'
     component, which must resolve to a declared namespace-scope
     function.  The clauses are either processed directly (for a named
!    function), or deferred until the immediately following declaration
     is parsed.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/cp/parser.h gcc-17-20260531/gcc/cp/parser.h
*** gcc-17-20260524/gcc/cp/parser.h	Sun May 24 22:32:05 2026
--- gcc-17-20260531/gcc/cp/parser.h	Sun May 31 22:32:05 2026
*************** struct GTY(()) cp_unparsed_functions_ent
*** 172,178 ****
       Functions appear in this list in declaration order.  */
    vec<cp_default_arg_entry, va_gc> *funs_with_default_args;
  
!   /* Functions with defintions that require post-processing.  Functions
       appear in this list in declaration order.  */
    vec<tree, va_gc> *funs_with_definitions;
  
--- 172,178 ----
       Functions appear in this list in declaration order.  */
    vec<cp_default_arg_entry, va_gc> *funs_with_default_args;
  
!   /* Functions with definitions that require post-processing.  Functions
       appear in this list in declaration order.  */
    vec<tree, va_gc> *funs_with_definitions;
  
diff -Nrcpad gcc-17-20260524/gcc/cp/pt.cc gcc-17-20260531/gcc/cp/pt.cc
*** gcc-17-20260524/gcc/cp/pt.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/pt.cc	Sun May 31 22:32:05 2026
*************** tsubst_friend_class (tree friend_tmpl, t
*** 12202,12208 ****
  	     newly instantiated template type.  */
  	  propagate_defining_module (tmpl, friend_tmpl);
  
! 	  /* Inject this template into the enclosing namspace scope.  */
  	  tmpl = pushdecl_namespace_level (tmpl, /*hiding=*/true);
  	}
      }
--- 12202,12208 ----
  	     newly instantiated template type.  */
  	  propagate_defining_module (tmpl, friend_tmpl);
  
! 	  /* Inject this template into the enclosing namespace scope.  */
  	  tmpl = pushdecl_namespace_level (tmpl, /*hiding=*/true);
  	}
      }
*************** use_pack_expansion_extra_args_p (tree t,
*** 13445,13451 ****
    else if (has_empty_arg)
      {
        /* If all the actual packs are pack expansions, we can still
! 	 subsitute directly.  */
        for (tree p = parm_packs; p; p = TREE_CHAIN (p))
  	{
  	  tree a = TREE_VALUE (p);
--- 13445,13451 ----
    else if (has_empty_arg)
      {
        /* If all the actual packs are pack expansions, we can still
! 	 substitute directly.  */
        for (tree p = parm_packs; p; p = TREE_CHAIN (p))
  	{
  	  tree a = TREE_VALUE (p);
*************** tsubst_unary_left_fold (tree t, tree arg
*** 13729,13735 ****
  
  /* Substitute into a binary left fold expression.
  
!    Do ths by building a single (non-empty) vector of argumnts and
     building the expression from those elements. */
  
  static tree
--- 13729,13735 ----
  
  /* Substitute into a binary left fold expression.
  
!    Do this by building a single (non-empty) vector of arguments and
     building the expression from those elements. */
  
  static tree
*************** tsubst_unary_right_fold (tree t, tree ar
*** 13806,13812 ****
  
  /* Substitute into a binary right fold expression.
  
!    Do ths by building a single (non-empty) vector of arguments and
     building the expression from those elements. */
  
  static tree
--- 13806,13812 ----
  
  /* Substitute into a binary right fold expression.
  
!    Do this by building a single (non-empty) vector of arguments and
     building the expression from those elements. */
  
  static tree
*************** filter_memfn_lookup (tree oldfns, tree n
*** 18106,18112 ****
  /* tsubst a BASELINK.  OBJECT_TYPE, if non-NULL, is the type of the
     expression on the left-hand side of the "." or "->" operator.  We
     only do the lookup if we had a dependent BASELINK.  Otherwise we
!    adjust it onto the instantiated heirarchy.  */
  
  static tree
  tsubst_baselink (tree baselink, tree object_type,
--- 18106,18112 ----
  /* tsubst a BASELINK.  OBJECT_TYPE, if non-NULL, is the type of the
     expression on the left-hand side of the "." or "->" operator.  We
     only do the lookup if we had a dependent BASELINK.  Otherwise we
!    adjust it onto the instantiated hierarchy.  */
  
  static tree
  tsubst_baselink (tree baselink, tree object_type,
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 23376,23381 ****
--- 23376,23384 ----
  	     instantiated entities and so no need to tsubst the annotation
  	     attribute and we rely on pointer equality of that.  */
  	  ;
+ 	else if (kind == REFLECT_BASE)
+ 	  /* Don't substitute; class_bases_of is never called for a dependent
+ 	     type.  */;
  	else if (TREE_CODE (h) == SCOPE_REF)
  	  h = tsubst_qualified_id (h, args, complain, in_decl,
  				   /*done=*/true, /*address_p=*/false,
*************** finish_expansion_stmt (tree expansion_st
*** 33701,33706 ****
--- 33704,33710 ----
  	      TREE_STATIC (iter) = 1;
  	      DECL_DECLARED_CONSTEXPR_P (iter) = 1;
  	      TREE_READONLY (iter) = 1;
+ 	      DECL_IGNORED_P (iter) = 1;
  	    }
  	  pushdecl (iter);
  	  cp_finish_decl (iter, iter_init, /*is_constant_init*/false,
diff -Nrcpad gcc-17-20260524/gcc/cp/reflect.cc gcc-17-20260531/gcc/cp/reflect.cc
*** gcc-17-20260524/gcc/cp/reflect.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/reflect.cc	Sun May 31 22:32:05 2026
*************** process_metafunction (const constexpr_ct
*** 7887,7892 ****
--- 7887,7897 ----
  	if (*jump_target || *non_constant_p)
  	  return NULL_TREE;
  	ht = REFLECT_EXPR_HANDLE (info);
+ 	if (error_operand_p (ht))
+ 	  {
+ 	    *non_constant_p = true;
+ 	    return NULL_TREE;
+ 	  }
  	if (METAFN_KIND_ARG (minfo, argno) == METAFN_KIND_ARG_TINFO
  	    && eval_is_type (ht) != boolean_true_node)
  	  return throw_exception_nontype (loc, ctx, fun, non_constant_p,
diff -Nrcpad gcc-17-20260524/gcc/cp/semantics.cc gcc-17-20260531/gcc/cp/semantics.cc
*** gcc-17-20260524/gcc/cp/semantics.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/semantics.cc	Sun May 31 22:32:05 2026
*************** maybe_convert_cond (tree cond)
*** 1138,1144 ****
  
    /* For structured binding used in condition, the conversion needs to be
       evaluated before the individual variables are initialized in the
!      std::tuple_{size,elemenet} case.  cp_finish_decomp saved the conversion
       result in a TARGET_EXPR, pick it up from there.  */
    if (DECL_DECOMPOSITION_P (cond)
        && DECL_DECOMP_IS_BASE (cond)
--- 1138,1144 ----
  
    /* For structured binding used in condition, the conversion needs to be
       evaluated before the individual variables are initialized in the
!      std::tuple_{size,element} case.  cp_finish_decomp saved the conversion
       result in a TARGET_EXPR, pick it up from there.  */
    if (DECL_DECOMPOSITION_P (cond)
        && DECL_DECOMP_IS_BASE (cond)
*************** finish_switch_cond (tree cond, tree swit
*** 1931,1937 ****
        tree orig_cond = cond;
        /* For structured binding used in condition, the conversion needs to be
  	 evaluated before the individual variables are initialized in the
! 	 std::tuple_{size,elemenet} case.  cp_finish_decomp saved the
  	 conversion result in a TARGET_EXPR, pick it up from there.  */
        if (DECL_DECOMPOSITION_P (cond)
  	  && DECL_DECOMP_IS_BASE (cond)
--- 1931,1937 ----
        tree orig_cond = cond;
        /* For structured binding used in condition, the conversion needs to be
  	 evaluated before the individual variables are initialized in the
! 	 std::tuple_{size,element} case.  cp_finish_decomp saved the
  	 conversion result in a TARGET_EXPR, pick it up from there.  */
        if (DECL_DECOMPOSITION_P (cond)
  	  && DECL_DECOMP_IS_BASE (cond)
*************** cp_finish_omp_clause_doacross_sink (tree
*** 7584,7590 ****
    return false;
  }
  
! /* Finish OpenMP iterators ITER.  Return true if they are errorneous
     and clauses containing them should be removed.  */
  
  static bool
--- 7584,7590 ----
    return false;
  }
  
! /* Finish OpenMP iterators ITER.  Return true if they are erroneous
     and clauses containing them should be removed.  */
  
  static bool
*************** finish_omp_target_clauses_r (tree *tp, i
*** 11049,11055 ****
      }
  
    /* When the current_function_decl is a lambda function, the closure object
!      argument's type seems to not yet have fields layed out, so a recording
       of DECL_VALUE_EXPRs during the target body walk seems the only way to
       find them.  */
    if (current_closure
--- 11049,11055 ----
      }
  
    /* When the current_function_decl is a lambda function, the closure object
!      argument's type seems to not yet have fields laid out, so a recording
       of DECL_VALUE_EXPRs during the target body walk seems the only way to
       find them.  */
    if (current_closure
diff -Nrcpad gcc-17-20260524/gcc/cp/tree.cc gcc-17-20260531/gcc/cp/tree.cc
*** gcc-17-20260524/gcc/cp/tree.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/tree.cc	Sun May 31 22:32:05 2026
*************** build_cplus_new (tree type, tree init, t
*** 855,861 ****
  }
  
  /* Subroutine of build_vec_init_expr: Build up a single element
!    intialization as a proxy for the full array initialization to get things
     marked as used and any appropriate diagnostics.
  
     This used to be necessary because we were deferring building the actual
--- 855,861 ----
  }
  
  /* Subroutine of build_vec_init_expr: Build up a single element
!    initialization as a proxy for the full array initialization to get things
     marked as used and any appropriate diagnostics.
  
     This used to be necessary because we were deferring building the actual
*************** apply_identity_attributes (tree result,
*** 1724,1730 ****
     Because of several reasons:
      * If T is a type that needs structural equality
        its TYPE_CANONICAL (T) will be NULL.
!     * TYPE_CANONICAL (T) desn't carry type attributes
        and loses template parameter names.
  
     If REMOVE_ATTRIBUTES is non-null, also strip attributes that don't
--- 1724,1730 ----
     Because of several reasons:
      * If T is a type that needs structural equality
        its TYPE_CANONICAL (T) will be NULL.
!     * TYPE_CANONICAL (T) doesn't carry type attributes
        and loses template parameter names.
  
     If REMOVE_ATTRIBUTES is non-null, also strip attributes that don't
diff -Nrcpad gcc-17-20260524/gcc/cp/typeck.cc gcc-17-20260531/gcc/cp/typeck.cc
*** gcc-17-20260524/gcc/cp/typeck.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/typeck.cc	Sun May 31 22:32:05 2026
*************** cp_build_array_ref (location_t loc, tree
*** 4162,4168 ****
      return error_mark_node;
  
    /* 0[array] */
!   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE)
      {
        std::swap (array, idx);
  
--- 4162,4169 ----
      return error_mark_node;
  
    /* 0[array] */
!   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE
!       && TREE_CODE (TREE_TYPE (array)) != ARRAY_TYPE)
      {
        std::swap (array, idx);
  
diff -Nrcpad gcc-17-20260524/gcc/cp/vtable-class-hierarchy.cc gcc-17-20260531/gcc/cp/vtable-class-hierarchy.cc
*** gcc-17-20260524/gcc/cp/vtable-class-hierarchy.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cp/vtable-class-hierarchy.cc	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 51,57 ****
    hacker targets.
  
    To find and reference the set of valid vtable pointers for any given
!   virtual class, we create a special global varible for each virtual
    class.  We refer to this as the "vtable map variable" for that
    class.  The vtable map variable has the type "void *", and is
    initialized by the compiler to NULL.  At runtime when the set of
--- 51,57 ----
    hacker targets.
  
    To find and reference the set of valid vtable pointers for any given
!   virtual class, we create a special global variable for each virtual
    class.  We refer to this as the "vtable map variable" for that
    class.  The vtable map variable has the type "void *", and is
    initialized by the compiler to NULL.  At runtime when the set of
*************** along with GCC; see the file COPYING3.
*** 86,92 ****
    The vtable verification feature is controlled by the flag
    '-fvtable-verify='.  There are three flavors of this:
    '-fvtable-verify=std', '-fvtable-verify=preinit', and
!   '-fvtable-verify=none'.  If the option '-fvtable-verfy=preinit' is
    used, then our constructor initialization function gets put into the
    preinit array.  This is necessary if there are data sets that need
    to be built very early in execution.  If the constructor
--- 86,92 ----
    The vtable verification feature is controlled by the flag
    '-fvtable-verify='.  There are three flavors of this:
    '-fvtable-verify=std', '-fvtable-verify=preinit', and
!   '-fvtable-verify=none'.  If the option '-fvtable-verify=preinit' is
    used, then our constructor initialization function gets put into the
    preinit array.  This is necessary if there are data sets that need
    to be built very early in execution.  If the constructor
*************** vtv_compute_class_hierarchy_transitive_c
*** 436,442 ****
     offset into the vtable (VTABLE_DECL).  It is the actual vtable
     pointer address that will be stored in our list of valid vtable
     pointers for BASE_CLASS.  BASE_CLASS is the record_type node for
!    the base class to whose hiearchy we want to add
     VPTR_ADDRESS. (VTABLE_DECL should be the vtable for BASE_CLASS or
     one of BASE_CLASS' descendents.  */
  
--- 436,442 ----
     offset into the vtable (VTABLE_DECL).  It is the actual vtable
     pointer address that will be stored in our list of valid vtable
     pointers for BASE_CLASS.  BASE_CLASS is the record_type node for
!    the base class to whose hierarchy we want to add
     VPTR_ADDRESS. (VTABLE_DECL should be the vtable for BASE_CLASS or
     one of BASE_CLASS' descendents.  */
  
*************** vtv_generate_init_routine (void)
*** 1194,1200 ****
    pop_lang_context ();
  }
  
! /* This funtion takes a tree containing a class type (BASE_TYPE), and
     it either finds the existing vtbl_map_node for that class in our
     data structure, or it creates a new node and adds it to the data
     structure if there is not one for the class already.  As part of
--- 1194,1200 ----
    pop_lang_context ();
  }
  
! /* This function takes a tree containing a class type (BASE_TYPE), and
     it either finds the existing vtbl_map_node for that class in our
     data structure, or it creates a new node and adds it to the data
     structure if there is not one for the class already.  As part of
diff -Nrcpad gcc-17-20260524/gcc/cse.cc gcc-17-20260531/gcc/cse.cc
*** gcc-17-20260524/gcc/cse.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cse.cc	Sun May 31 22:32:05 2026
*************** struct set
*** 4163,4169 ****
    /* Nonzero if the SET_SRC contains something
       whose value cannot be predicted and understood.  */
    unsigned int src_volatile : 1;
!   /* Nonzero if RTL is an artifical set that has been created to describe
       part of an insn's effect.  Zero means that RTL appears directly in
       the insn pattern.  */
    unsigned int is_fake_set : 1;
--- 4163,4169 ----
    /* Nonzero if the SET_SRC contains something
       whose value cannot be predicted and understood.  */
    unsigned int src_volatile : 1;
!   /* Nonzero if RTL is an artificial set that has been created to describe
       part of an insn's effect.  Zero means that RTL appears directly in
       the insn pattern.  */
    unsigned int is_fake_set : 1;
*************** try_back_substitute_reg (rtx set, rtx_in
*** 4262,4268 ****
  }
  
  /* Add an entry containing RTL X into SETS.  IS_FAKE_SET is true if X is
!    an artifical set that has been created to describe part of an insn's
     effect.  */
  static inline void
  add_to_set (vec<struct set> *sets, rtx x, bool is_fake_set)
--- 4262,4268 ----
  }
  
  /* Add an entry containing RTL X into SETS.  IS_FAKE_SET is true if X is
!    an artificial set that has been created to describe part of an insn's
     effect.  */
  static inline void
  add_to_set (vec<struct set> *sets, rtx x, bool is_fake_set)
*************** count_stores (rtx x, const_rtx set ATTRI
*** 7046,7052 ****
  
  /* Return if DEBUG_INSN pattern PAT needs to be reset because some dead
     pseudo doesn't have a replacement.  COUNTS[X] is zero if register X
!    is dead and REPLACEMENTS[X] is null if it has no replacemenet.
     Set *SEEN_REPL to true if we see a dead register that does have
     a replacement.  */
  
--- 7046,7052 ----
  
  /* Return if DEBUG_INSN pattern PAT needs to be reset because some dead
     pseudo doesn't have a replacement.  COUNTS[X] is zero if register X
!    is dead and REPLACEMENTS[X] is null if it has no replacement.
     Set *SEEN_REPL to true if we see a dead register that does have
     a replacement.  */
  
diff -Nrcpad gcc-17-20260524/gcc/cselib.cc gcc-17-20260531/gcc/cselib.cc
*** gcc-17-20260524/gcc/cselib.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/cselib.cc	Sun May 31 22:32:05 2026
*************** struct cselib_hasher : nofree_ptr_hash <
*** 102,108 ****
         integers).  */
      machine_mode mode;
      rtx x;
!     /* The mode of the contaning MEM, if any, otherwise VOIDmode.  */
      machine_mode memmode;
    };
    typedef key *compare_type;
--- 102,108 ----
         integers).  */
      machine_mode mode;
      rtx x;
!     /* The mode of the containing MEM, if any, otherwise VOIDmode.  */
      machine_mode memmode;
    };
    typedef key *compare_type;
diff -Nrcpad gcc-17-20260524/gcc/ctfc.cc gcc-17-20260531/gcc/ctfc.cc
*** gcc-17-20260524/gcc/ctfc.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ctfc.cc	Sun May 31 22:32:05 2026
*************** unsigned int ctfc_get_num_ctf_vars (ctf_
*** 58,64 ****
    return ctfc->ctfc_vars->elements ();
  }
  
! /* Get reference to the CTF string table or the CTF auxilliary
     string table.  */
  
  ctf_strtable_t *
--- 58,64 ----
    return ctfc->ctfc_vars->elements ();
  }
  
! /* Get reference to the CTF string table or the CTF auxiliary
     string table.  */
  
  ctf_strtable_t *
*************** const char *
*** 321,327 ****
  ctf_add_string (ctf_container_ref ctfc, const char * name,
  		uint32_t * name_offset, int aux_str = CTF_STRTAB)
  {
!   /* Get the CTF string table or the CTF auxilliary string table,
       as applicable.  */
    ctf_strtable_t *str_table = ctfc_get_strtab (ctfc, aux_str);
    return ctfc_strtable_add_str (str_table, name, name_offset);
--- 321,327 ----
  ctf_add_string (ctf_container_ref ctfc, const char * name,
  		uint32_t * name_offset, int aux_str = CTF_STRTAB)
  {
!   /* Get the CTF string table or the CTF auxiliary string table,
       as applicable.  */
    ctf_strtable_t *str_table = ctfc_get_strtab (ctfc, aux_str);
    return ctfc_strtable_add_str (str_table, name, name_offset);
*************** ctf_add_function_arg (ctf_container_ref
*** 816,823 ****
  
    farg = ggc_cleared_alloc<ctf_func_arg_t> ();
  
!   /* Buffer the strings in the auxilliary string table.  CTF V3 format does not
!      require function argument names.  Use auxilliary string table to keep
       these strings to avoid unnecessary bloat in CTF section in CTF V3.  */
    farg->farg_name = ctf_add_string (ctfc, name, &(farg->farg_name_offset),
  				    CTF_AUX_STRTAB);
--- 816,823 ----
  
    farg = ggc_cleared_alloc<ctf_func_arg_t> ();
  
!   /* Buffer the strings in the auxiliary string table.  CTF V3 format does not
!      require function argument names.  Use auxiliary string table to keep
       these strings to avoid unnecessary bloat in CTF section in CTF V3.  */
    farg->farg_name = ctf_add_string (ctfc, name, &(farg->farg_name_offset),
  				    CTF_AUX_STRTAB);
diff -Nrcpad gcc-17-20260524/gcc/ctfc.h gcc-17-20260531/gcc/ctfc.h
*** gcc-17-20260524/gcc/ctfc.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ctfc.h	Sun May 31 22:32:05 2026
*************** typedef struct GTY (()) ctf_container
*** 314,320 ****
  
    /* CTF string table.  */
    ctf_strtable_t ctfc_strtable;
!   /* Auxilliary string table.  At this time, used for keeping func arg names
       for BTF.  */
    ctf_strtable_t ctfc_aux_strtable;
  
--- 314,320 ----
  
    /* CTF string table.  */
    ctf_strtable_t ctfc_strtable;
!   /* Auxiliary string table.  At this time, used for keeping func arg names
       for BTF.  */
    ctf_strtable_t ctfc_aux_strtable;
  
*************** typedef struct GTY (()) ctf_container
*** 369,375 ****
  /* Markers for which string table from the CTF container to use.  */
  
  #define CTF_STRTAB 0	    /* CTF string table.  */
! #define CTF_AUX_STRTAB 1    /* CTF auxilliary string table.  */
  
  typedef ctf_container_t * ctf_container_ref;
  
--- 369,375 ----
  /* Markers for which string table from the CTF container to use.  */
  
  #define CTF_STRTAB 0	    /* CTF string table.  */
! #define CTF_AUX_STRTAB 1    /* CTF auxiliary string table.  */
  
  typedef ctf_container_t * ctf_container_ref;
  
*************** extern unsigned int ctfc_get_num_ctf_typ
*** 389,395 ****
  
  extern unsigned int ctfc_get_num_ctf_vars (ctf_container_ref);
  
! /* Get reference to the CTF string table or the CTF auxilliary
     string table.  */
  
  extern ctf_strtable_t * ctfc_get_strtab (ctf_container_ref, int);
--- 389,395 ----
  
  extern unsigned int ctfc_get_num_ctf_vars (ctf_container_ref);
  
! /* Get reference to the CTF string table or the CTF auxiliary
     string table.  */
  
  extern ctf_strtable_t * ctfc_get_strtab (ctf_container_ref, int);
diff -Nrcpad gcc-17-20260524/gcc/ctfout.cc gcc-17-20260531/gcc/ctfout.cc
*** gcc-17-20260524/gcc/ctfout.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ctfout.cc	Sun May 31 22:32:05 2026
*************** ctf_asm_sou_lmember (ctf_dmdef_t * dmd)
*** 422,428 ****
  		       "ctlm_offsetlo");
  }
  
! /* Asm'out a member of a CTF sruct or union, represented by ctf_member_t.  */
  
  static void
  ctf_asm_sou_member (ctf_dmdef_t * dmd)
--- 422,428 ----
  		       "ctlm_offsetlo");
  }
  
! /* Asm'out a member of a CTF struct or union, represented by ctf_member_t.  */
  
  static void
  ctf_asm_sou_member (ctf_dmdef_t * dmd)
*************** output_ctf_header (ctf_container_ref ctf
*** 487,493 ****
        funcoff = objtoff + ctfc->ctfc_num_global_objts * sizeof (uint32_t);
        /* Object index appears after function info.  */
        objtidxoff = funcoff + ctfc->ctfc_num_global_funcs * sizeof (uint32_t);
!       /* Funxtion index goes next.  */
        funcidxoff = objtidxoff + ctfc->ctfc_num_global_objts * sizeof (uint32_t);
        /* Vars appear after function index.  */
        varoff = funcidxoff + ctfc->ctfc_num_global_funcs * sizeof (uint32_t);
--- 487,493 ----
        funcoff = objtoff + ctfc->ctfc_num_global_objts * sizeof (uint32_t);
        /* Object index appears after function info.  */
        objtidxoff = funcoff + ctfc->ctfc_num_global_funcs * sizeof (uint32_t);
!       /* Function index goes next.  */
        funcidxoff = objtidxoff + ctfc->ctfc_num_global_objts * sizeof (uint32_t);
        /* Vars appear after function index.  */
        varoff = funcidxoff + ctfc->ctfc_num_global_funcs * sizeof (uint32_t);
diff -Nrcpad gcc-17-20260524/gcc/d/ChangeLog gcc-17-20260531/gcc/d/ChangeLog
*** gcc-17-20260524/gcc/d/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/ChangeLog	Sun May 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,33 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* d-attribs.cc (d_handle_alloc_size_attribute): Fix typos.
+ 	* d-codegen.cc (build_boolop): Likewise.
+ 	(get_frame_for_symbol): Likewise.
+ 	* d-gimplify.cc (empty_modify_p): Likewise.
+ 	* d-lang.cc (d_parse_file): Likewise.
+ 	* d-spec.cc (lang_specific_driver): Likewise.
+ 	* d-target.cc (Target::systemLinkage): Likewise.
+ 	* decl.cc (get_fndecl_arguments): Likewise.
+ 	(build_class_instance): Likewise.
+ 	* expr.cc: Likewise.
+ 	* implement-d.texi: Likewise.
+ 	* intrinsics.cc (call_builtin_fn): Likewise.
+ 	(expand_intrinsic_bsf): Likewise.
+ 	(expand_intrinsic_rotate): Likewise.
+ 	(expand_intrinsic_vastart): Likewise.
+ 	(expand_intrinsic_checkedint): Likewise.
+ 	(expand_volatile_load): Likewise.
+ 	(expand_volatile_store): Likewise.
+ 	(expand_intrinsic_vec_convert): Likewise.
+ 	(expand_intrinsic_vec_blend): Likewise.
+ 	(expand_intrinsic_vec_shuffle): Likewise.
+ 	(expand_intrinsic_vec_shufflevector): Likewise.
+ 	(expand_intrinsic_vec_load_unaligned): Likewise.
+ 	* modules.cc (get_dso_registry_fn): Likewise.
+ 	* toir.cc: Likewise.
+ 	* typeinfo.cc: Likewise.
+ 	* types.cc (finish_aggregate_type): Likewise.
+ 
  2026-05-05  Iain Buclaw  <ibuclaw@gdcproject.org>
  
  	PR d/125089
diff -Nrcpad gcc-17-20260524/gcc/d/d-attribs.cc gcc-17-20260531/gcc/d/d-attribs.cc
*** gcc-17-20260524/gcc/d/d-attribs.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-attribs.cc	Sun May 31 22:32:05 2026
*************** d_handle_alloc_size_attribute (tree *nod
*** 1340,1346 ****
    tree next = TREE_CHAIN (args);
  
    /* NUM_ARG is null when the attribute includes just one argument, or is
!      explictly set to null if it has been left uninitialized by the caller.  */
    tree num_arg = NULL_TREE;
    if (next != NULL_TREE)
      {
--- 1340,1346 ----
    tree next = TREE_CHAIN (args);
  
    /* NUM_ARG is null when the attribute includes just one argument, or is
!      explicitly set to null if it has been left uninitialized by the caller.  */
    tree num_arg = NULL_TREE;
    if (next != NULL_TREE)
      {
diff -Nrcpad gcc-17-20260524/gcc/d/d-codegen.cc gcc-17-20260531/gcc/d/d-codegen.cc
*** gcc-17-20260524/gcc/d/d-codegen.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-codegen.cc	Sun May 31 22:32:05 2026
*************** tree
*** 1520,1526 ****
  build_boolop (tree_code code, tree arg0, tree arg1)
  {
    /* Aggregate comparisons may get lowered to a call to builtin memcmp,
!      so need to remove all side effects incase its address is taken.  */
    if (AGGREGATE_TYPE_P (TREE_TYPE (arg0)))
      arg0 = d_save_expr (arg0);
    if (AGGREGATE_TYPE_P (TREE_TYPE (arg1)))
--- 1520,1526 ----
  build_boolop (tree_code code, tree arg0, tree arg1)
  {
    /* Aggregate comparisons may get lowered to a call to builtin memcmp,
!      so need to remove all side effects in case its address is taken.  */
    if (AGGREGATE_TYPE_P (TREE_TYPE (arg0)))
      arg0 = d_save_expr (arg0);
    if (AGGREGATE_TYPE_P (TREE_TYPE (arg1)))
*************** get_frame_for_symbol (Dsymbol *sym)
*** 2634,2640 ****
  	  int offset;
  	  if (cdo->isBaseOf (cd, &offset) && offset != 0)
  	    {
! 	      /* Generate a new frame to pass to the overriden function that
  		 has the `this' pointer adjusted.  */
  	      gcc_assert (offset != OFFSET_RUNTIME);
  
--- 2634,2640 ----
  	  int offset;
  	  if (cdo->isBaseOf (cd, &offset) && offset != 0)
  	    {
! 	      /* Generate a new frame to pass to the overridden function that
  		 has the `this' pointer adjusted.  */
  	      gcc_assert (offset != OFFSET_RUNTIME);
  
diff -Nrcpad gcc-17-20260524/gcc/d/d-gimplify.cc gcc-17-20260531/gcc/d/d-gimplify.cc
*** gcc-17-20260524/gcc/d/d-gimplify.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-gimplify.cc	Sun May 31 22:32:05 2026
*************** empty_modify_p (tree type, tree op)
*** 41,47 ****
        return empty_modify_p (type, TREE_OPERAND (op, 1));
  
      case CONSTRUCTOR:
!       /* Non-empty construcors are valid.  */
        if (CONSTRUCTOR_NELTS (op) != 0 || TREE_CLOBBER_P (op))
  	return false;
        break;
--- 41,47 ----
        return empty_modify_p (type, TREE_OPERAND (op, 1));
  
      case CONSTRUCTOR:
!       /* Non-empty constructors are valid.  */
        if (CONSTRUCTOR_NELTS (op) != 0 || TREE_CLOBBER_P (op))
  	return false;
        break;
diff -Nrcpad gcc-17-20260524/gcc/d/d-lang.cc gcc-17-20260531/gcc/d/d-lang.cc
*** gcc-17-20260524/gcc/d/d-lang.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-lang.cc	Sun May 31 22:32:05 2026
*************** d_parse_file (void)
*** 1345,1351 ****
  
    dmd::runDeferredSemantic3 ();
  
!   /* Check again, incase semantic3 pass loaded any more modules.  */
    while (builtin_modules.length != 0)
      {
        Module *m = builtin_modules.pop ();
--- 1345,1351 ----
  
    dmd::runDeferredSemantic3 ();
  
!   /* Check again, in case semantic3 pass loaded any more modules.  */
    while (builtin_modules.length != 0)
      {
        Module *m = builtin_modules.pop ();
diff -Nrcpad gcc-17-20260524/gcc/d/d-spec.cc gcc-17-20260531/gcc/d/d-spec.cc
*** gcc-17-20260524/gcc/d/d-spec.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-spec.cc	Sun May 31 22:32:05 2026
*************** lang_specific_driver (cl_decoded_option
*** 224,230 ****
  	case OPT_M:
  	case OPT_MM:
  	case OPT_fsyntax_only:
! 	  /* Don't specify libaries if we won't link, since that would
  	     cause a warning.  */
  	  saw_opt_c = true;
  	  phobos_library = PHOBOS_NOLINK;
--- 224,230 ----
  	case OPT_M:
  	case OPT_MM:
  	case OPT_fsyntax_only:
! 	  /* Don't specify libraries if we won't link, since that would
  	     cause a warning.  */
  	  saw_opt_c = true;
  	  phobos_library = PHOBOS_NOLINK;
diff -Nrcpad gcc-17-20260524/gcc/d/d-target.cc gcc-17-20260531/gcc/d/d-target.cc
*** gcc-17-20260524/gcc/d/d-target.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/d-target.cc	Sun May 31 22:32:05 2026
*************** Target::systemLinkage (void)
*** 431,437 ****
  /* Generate a TypeTuple of the equivalent types used to determine if a
     function argument of the given type can be passed in registers.
     The results of this are highly platform dependent, and intended
!    primarly for use in implementing va_arg() with RTTI.  */
  
  TypeTuple *
  Target::toArgTypes (Type *)
--- 431,437 ----
  /* Generate a TypeTuple of the equivalent types used to determine if a
     function argument of the given type can be passed in registers.
     The results of this are highly platform dependent, and intended
!    primarily for use in implementing va_arg() with RTTI.  */
  
  TypeTuple *
  Target::toArgTypes (Type *)
diff -Nrcpad gcc-17-20260524/gcc/d/decl.cc gcc-17-20260531/gcc/d/decl.cc
*** gcc-17-20260524/gcc/d/decl.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/decl.cc	Sun May 31 22:32:05 2026
*************** get_fndecl_arguments (FuncDeclaration *d
*** 219,225 ****
     emitted from the D Front-end to GCC trees.
     All visit methods accept one parameter D, which holds the frontend AST
     of the declaration to compile.  These also don't return any value, instead
!    generated code are appened to global_declarations or added to the
     current_binding_level by d_pushdecl().  */
  
  class DeclVisitor : public Visitor
--- 219,225 ----
     emitted from the D Front-end to GCC trees.
     All visit methods accept one parameter D, which holds the frontend AST
     of the declaration to compile.  These also don't return any value, instead
!    generated code are appended to global_declarations or added to the
     current_binding_level by d_pushdecl().  */
  
  class DeclVisitor : public Visitor
*************** public:
*** 1003,1009 ****
      rest_of_decl_compilation (fndecl, 1, 0);
  
      /* If this is a member function that nested (possibly indirectly) in another
!        function, construct an expession for this member function's static chain
         by going through parent link of nested classes.  */
      if (d->vthis)
        d_function_chain->static_chain = get_symbol_decl (d->vthis);
--- 1003,1009 ----
      rest_of_decl_compilation (fndecl, 1, 0);
  
      /* If this is a member function that nested (possibly indirectly) in another
!        function, construct an expression for this member function's static chain
         by going through parent link of nested classes.  */
      if (d->vthis)
        d_function_chain->static_chain = get_symbol_decl (d->vthis);
*************** build_class_instance (ClassReferenceExp
*** 2364,2370 ****
     implementation detail.  The initialization of these symbols could be done at
     run-time using during as part of the module initialization or shared static
     constructors phase of run-time start-up - whichever comes after `gc_init()'.
!    And infact that would be the better thing to do here eventually.  */
  
  tree
  build_new_class_expr (ClassReferenceExp *expr)
--- 2364,2370 ----
     implementation detail.  The initialization of these symbols could be done at
     run-time using during as part of the module initialization or shared static
     constructors phase of run-time start-up - whichever comes after `gc_init()'.
!    And in fact that would be the better thing to do here eventually.  */
  
  tree
  build_new_class_expr (ClassReferenceExp *expr)
diff -Nrcpad gcc-17-20260524/gcc/d/expr.cc gcc-17-20260531/gcc/d/expr.cc
*** gcc-17-20260524/gcc/d/expr.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/expr.cc	Sun May 31 22:32:05 2026
*************** public:
*** 635,641 ****
    void visit (CatExp *e) final override
    {
      /* This error is only emitted during the code generation pass because
!        concatentation is allowed in CTFE.  */
      if (!global.params.useGC)
        {
  	error_at (make_location_t (e->loc),
--- 635,641 ----
    void visit (CatExp *e) final override
    {
      /* This error is only emitted during the code generation pass because
!        concatenation is allowed in CTFE.  */
      if (!global.params.useGC)
        {
  	error_at (make_location_t (e->loc),
*************** public:
*** 707,713 ****
        case EXP::unsignedRightShiftAssign:
  	/* Use the original lhs type before it was promoted.  The left operand
  	   of `>>>=' does not undergo integral promotions before shifting.
! 	   Strip off casts just incase anyway.  */
  	while (e1b->op == EXP::cast_)
  	  {
  	    CastExp *ce = e1b->isCastExp ();
--- 707,713 ----
        case EXP::unsignedRightShiftAssign:
  	/* Use the original lhs type before it was promoted.  The left operand
  	   of `>>>=' does not undergo integral promotions before shifting.
! 	   Strip off casts just in case anyway.  */
  	while (e1b->op == EXP::cast_)
  	  {
  	    CastExp *ce = e1b->isCastExp ();
diff -Nrcpad gcc-17-20260524/gcc/d/implement-d.texi gcc-17-20260531/gcc/d/implement-d.texi
*** gcc-17-20260524/gcc/d/implement-d.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/implement-d.texi	Sun May 31 22:32:05 2026
*************** result = __builtin_ssub (0, x, overflow)
*** 1215,1221 ****
  @deftypefnx {Function} {long} core.checkedint.subs (long @var{x}, long @var{y}, @
                                                      ref bool @var{overflow})
  
! Substract two signed integers, checking for overflow.
  
  This intrinsic is the same as the GCC built-in function
  @code{__builtin_ssub_overflow}.
--- 1215,1221 ----
  @deftypefnx {Function} {long} core.checkedint.subs (long @var{x}, long @var{y}, @
                                                      ref bool @var{overflow})
  
! Subtract two signed integers, checking for overflow.
  
  This intrinsic is the same as the GCC built-in function
  @code{__builtin_ssub_overflow}.
*************** This intrinsic is the same as the GCC bu
*** 1226,1232 ****
  @deftypefnx {Function} {long} core.checkedint.subu (long @var{x}, long @var{y}, @
                                                      ref bool @var{overflow})
  
! Substract two unsigned integers, checking for overflow.
  
  This intrinsic is the same as the GCC built-in function
  @code{__builtin_usub_overflow}.
--- 1226,1232 ----
  @deftypefnx {Function} {long} core.checkedint.subu (long @var{x}, long @var{y}, @
                                                      ref bool @var{overflow})
  
! Subtract two unsigned integers, checking for overflow.
  
  This intrinsic is the same as the GCC built-in function
  @code{__builtin_usub_overflow}.
*************** This intrinsic is the same as the GCC bu
*** 1366,1372 ****
  
  @deftypefn {Function} {void} core.stdc.stdarg.va_end (va_list ap)
  
! Destroy @var{ap} so that it is no longer useable.
  
  This intrinsic is the same as the GCC built-in function @code{__builtin_va_end}.
  @end deftypefn
--- 1366,1372 ----
  
  @deftypefn {Function} {void} core.stdc.stdarg.va_end (va_list ap)
  
! Destroy @var{ap} so that it is no longer usable.
  
  This intrinsic is the same as the GCC built-in function @code{__builtin_va_end}.
  @end deftypefn
*************** computable at compile-time, either becau
*** 1441,1447 ****
  too complex, or do some low-level bit manipulation of floating point types.
  
  Calls to these functions that exist after CTFE has finished will get standard
! code-generation without any special compiler intrinsic suppport.
  
  @deftypefn {Function} {float} std.math.exponential.exp (float x)
  @deftypefnx {Function} {double} std.math.exponential.exp (double x)
--- 1441,1447 ----
  too complex, or do some low-level bit manipulation of floating point types.
  
  Calls to these functions that exist after CTFE has finished will get standard
! code-generation without any special compiler intrinsic support.
  
  @deftypefn {Function} {float} std.math.exponential.exp (float x)
  @deftypefnx {Function} {double} std.math.exponential.exp (double x)
diff -Nrcpad gcc-17-20260524/gcc/d/intrinsics.cc gcc-17-20260531/gcc/d/intrinsics.cc
*** gcc-17-20260524/gcc/d/intrinsics.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/intrinsics.cc	Sun May 31 22:32:05 2026
*************** call_builtin_fn (tree callexp, built_in_
*** 515,521 ****
    return convert (TREE_TYPE (callexp), fold (exp));
  }
  
! /* Expand a front-end instrinsic call to bsf().  This takes one argument,
     the signature to which can be either:
  
  	int bsf (uint arg);
--- 515,521 ----
    return convert (TREE_TYPE (callexp), fold (exp));
  }
  
! /* Expand a front-end intrinsic call to bsf().  This takes one argument,
     the signature to which can be either:
  
  	int bsf (uint arg);
*************** expand_intrinsic_bsf (tree callexp)
*** 544,550 ****
    return call_builtin_fn (callexp, code, 1, arg);
  }
  
! /* Expand a front-end instrinsic call to bsr().  This takes one argument,
     the signature to which can be either:
  
  	int bsr (uint arg);
--- 544,550 ----
    return call_builtin_fn (callexp, code, 1, arg);
  }
  
! /* Expand a front-end intrinsic call to bsr().  This takes one argument,
     the signature to which can be either:
  
  	int bsr (uint arg);
*************** expand_intrinsic_rotate (intrinsic_code
*** 714,720 ****
      count = CALL_EXPR_ARG (callexp, 1);
    else
      {
!       /* Retrieve from the encoded template instantation.  */
        tree callee = get_callee_fndecl (callexp);
        TemplateInstance *ti = DECL_LANG_FRONTEND (callee)->isInstantiated ();
        gcc_assert (ti && ti->tiargs && ti->tiargs->length == 2);
--- 714,720 ----
      count = CALL_EXPR_ARG (callexp, 1);
    else
      {
!       /* Retrieve from the encoded template instantiation.  */
        tree callee = get_callee_fndecl (callexp);
        TemplateInstance *ti = DECL_LANG_FRONTEND (callee)->isInstantiated ();
        gcc_assert (ti && ti->tiargs && ti->tiargs->length == 2);
*************** expand_intrinsic_vastart (tree callexp)
*** 897,903 ****
    return call_builtin_fn (callexp, BUILT_IN_VA_START, 2, ap, parmn);
  }
  
! /* Expand a front-end instrinsic call to INTRINSIC, which is either a call to
     adds(), addu(), subs(), subu(), negs(), muls(), or mulu().  These intrinsics
     expect to take two or three arguments, the signature to which can be either:
  
--- 897,903 ----
    return call_builtin_fn (callexp, BUILT_IN_VA_START, 2, ap, parmn);
  }
  
! /* Expand a front-end intrinsic call to INTRINSIC, which is either a call to
     adds(), addu(), subs(), subu(), negs(), muls(), or mulu().  These intrinsics
     expect to take two or three arguments, the signature to which can be either:
  
*************** expand_intrinsic_checkedint (intrinsic_c
*** 987,993 ****
    return compound_expr (exp, real_part (result));
  }
  
! /* Expand a front-end instrinsic call to volatileLoad().  This takes one
     argument, the signature to which can be either:
  
  	ubyte volatileLoad (ubyte* ptr);
--- 987,993 ----
    return compound_expr (exp, real_part (result));
  }
  
! /* Expand a front-end intrinsic call to volatileLoad().  This takes one
     argument, the signature to which can be either:
  
  	ubyte volatileLoad (ubyte* ptr);
*************** expand_volatile_load (tree callexp)
*** 1015,1021 ****
    return result;
  }
  
! /* Expand a front-end instrinsic call to volatileStore().  This takes two
     arguments, the signature to which can be either:
  
  	void volatileStore (ubyte* ptr, ubyte value);
--- 1015,1021 ----
    return result;
  }
  
! /* Expand a front-end intrinsic call to volatileStore().  This takes two
     arguments, the signature to which can be either:
  
  	void volatileStore (ubyte* ptr, ubyte value);
*************** expand_volatile_store (tree callexp)
*** 1045,1051 ****
    return modify_expr (result, value);
  }
  
! /* Expand a front-end instrinsic call to convertvector().  This takes one
     argument, the signature to which is:
  
  	vector(T) convertvector (vector(F) vec);
--- 1045,1051 ----
    return modify_expr (result, value);
  }
  
! /* Expand a front-end intrinsic call to convertvector().  This takes one
     argument, the signature to which is:
  
  	vector(T) convertvector (vector(F) vec);
*************** expand_intrinsic_vec_convert (tree calle
*** 1072,1078 ****
  				       type, 1, vec);
  }
  
! /* Expand a front-end instrinsic call to blendvector().  This expects to take
     three arguments, the signature to which is:
  
  	vector(T) blendvector (vector(T) vec0, vector(U) vec1, vector(M) mask);
--- 1072,1078 ----
  				       type, 1, vec);
  }
  
! /* Expand a front-end intrinsic call to blendvector().  This expects to take
     three arguments, the signature to which is:
  
  	vector(T) blendvector (vector(T) vec0, vector(U) vec1, vector(M) mask);
*************** expand_intrinsic_vec_blend (tree callexp
*** 1101,1107 ****
    return ret;
  }
  
! /* Expand a front-end instrinsic call to shuffle().  This expects to take three
     arguments, the signature to which is:
  
  	vector(T) shuffle (vector(T) vec0, vector(T) vec1, vector(M) mask);
--- 1101,1107 ----
    return ret;
  }
  
! /* Expand a front-end intrinsic call to shuffle().  This expects to take three
     arguments, the signature to which is:
  
  	vector(T) shuffle (vector(T) vec0, vector(T) vec1, vector(M) mask);
*************** expand_intrinsic_vec_shuffle (tree calle
*** 1121,1127 ****
  		     TREE_TYPE (callexp), vec0, vec1, mask);
  }
  
! /* Expand a front-end instrinsic call to shufflevector().  This takes two
     positional arguments and a variadic list, the signature to which is:
  
  	vector(TM) shuffle (vector(T) vec1, vector(T) vec2, index...);
--- 1121,1127 ----
  		     TREE_TYPE (callexp), vec0, vec1, mask);
  }
  
! /* Expand a front-end intrinsic call to shufflevector().  This takes two
     positional arguments and a variadic list, the signature to which is:
  
  	vector(TM) shuffle (vector(T) vec1, vector(T) vec2, index...);
*************** expand_intrinsic_vec_shufflevector (tree
*** 1202,1208 ****
    return ret;
  }
  
! /* Expand a front-end instrinsic call to loadUnaligned().  This takes one
     argument, the signature to which is:
  
  	vector(T) loadUnaligned (vector(T)* ptr)
--- 1202,1208 ----
    return ret;
  }
  
! /* Expand a front-end intrinsic call to loadUnaligned().  This takes one
     argument, the signature to which is:
  
  	vector(T) loadUnaligned (vector(T)* ptr)
*************** expand_intrinsic_vec_load_unaligned (tre
*** 1223,1229 ****
    return convert (TREE_TYPE (callexp), load);
  }
  
! /* Expand a front-end instrinsic call to storeUnaligned().  This takes two
     arguments, the signature to which is:
  
  	vector(T) storeUnaligned (vector(T)* ptr, vector(T) value)
--- 1223,1229 ----
    return convert (TREE_TYPE (callexp), load);
  }
  
! /* Expand a front-end intrinsic call to storeUnaligned().  This takes two
     arguments, the signature to which is:
  
  	vector(T) storeUnaligned (vector(T)* ptr, vector(T) value)
diff -Nrcpad gcc-17-20260524/gcc/d/modules.cc gcc-17-20260531/gcc/d/modules.cc
*** gcc-17-20260524/gcc/d/modules.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/modules.cc	Sun May 31 22:32:05 2026
*************** get_dso_registry_fn (void)
*** 330,336 ****
    return dso_registry_fn;
  }
  
! /* Depending on CTOR_P, builds and emits eiter a constructor or destructor
     calling _d_dso_registry if `dso_initialized' is `false' in a constructor
     or `true' in a destructor.  */
  
--- 330,336 ----
    return dso_registry_fn;
  }
  
! /* Depending on CTOR_P, builds and emits either a constructor or destructor
     calling _d_dso_registry if `dso_initialized' is `false' in a constructor
     or `true' in a destructor.  */
  
diff -Nrcpad gcc-17-20260524/gcc/d/toir.cc gcc-17-20260531/gcc/d/toir.cc
*** gcc-17-20260524/gcc/d/toir.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/toir.cc	Sun May 31 22:32:05 2026
*************** public:
*** 381,387 ****
    {
      /* Don't write out label unless it is marked as used by the frontend.
         This makes auto-vectorization possible in conditional loops.
!        The only excemption to this is in the LabelStatement visitor,
         in which all computed labels are marked regardless.  */
      if (TREE_USED (label))
        add_stmt (build1 (LABEL_EXPR, void_type_node, label));
--- 381,387 ----
    {
      /* Don't write out label unless it is marked as used by the frontend.
         This makes auto-vectorization possible in conditional loops.
!        The only exception to this is in the LabelStatement visitor,
         in which all computed labels are marked regardless.  */
      if (TREE_USED (label))
        add_stmt (build1 (LABEL_EXPR, void_type_node, label));
*************** public:
*** 656,662 ****
      gcc_unreachable ();
    }
  
!   /* Do while statments implement simple loops.  The body is executed, then
       the condition is evaluated.  */
  
    void visit (DoStatement *s) final override
--- 656,662 ----
      gcc_unreachable ();
    }
  
!   /* Do while statements implement simple loops.  The body is executed, then
       the condition is evaluated.  */
  
    void visit (DoStatement *s) final override
*************** public:
*** 840,846 ****
  
      condition = fold (condition);
  
!     /* Build LABEL_DECLs now so they can be refered to by goto case.
         Also checking the jump from the switch to the label is allowed.  */
      if (s->cases)
        {
--- 840,846 ----
  
      condition = fold (condition);
  
!     /* Build LABEL_DECLs now so they can be referred to by goto case.
         Also checking the jump from the switch to the label is allowed.  */
      if (s->cases)
        {
diff -Nrcpad gcc-17-20260524/gcc/d/typeinfo.cc gcc-17-20260531/gcc/d/typeinfo.cc
*** gcc-17-20260524/gcc/d/typeinfo.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/typeinfo.cc	Sun May 31 22:32:05 2026
*************** make_internal_typeinfo (tinfo_kind tk, I
*** 195,201 ****
  static Module *object_module;
  
  /* Helper for create_frontend_tinfo_types.  Creates a typeinfo class
!    declaration incase one wasn't supplied by reading `object.d'.  */
  
  static void
  make_frontend_typeinfo (Identifier *ident, ClassDeclaration *base = NULL)
--- 195,201 ----
  static Module *object_module;
  
  /* Helper for create_frontend_tinfo_types.  Creates a typeinfo class
!    declaration in case one wasn't supplied by reading `object.d'.  */
  
  static void
  make_frontend_typeinfo (Identifier *ident, ClassDeclaration *base = NULL)
diff -Nrcpad gcc-17-20260524/gcc/d/types.cc gcc-17-20260531/gcc/d/types.cc
*** gcc-17-20260524/gcc/d/types.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/d/types.cc	Sun May 31 22:32:05 2026
*************** finish_aggregate_type (unsigned structsi
*** 727,733 ****
    finish_incomplete_fields (type);
  }
  
! /* Returns true if the class or struct type TYPE has already been layed out by
     the lowering of another front-end AST type.  In which case, there will either
     be a reuse of the back-end type, or a multiple definition error.
     DECO is the uniquely mangled decoration for the type.  */
--- 727,733 ----
    finish_incomplete_fields (type);
  }
  
! /* Returns true if the class or struct type TYPE has already been laid out by
     the lowering of another front-end AST type.  In which case, there will either
     be a reuse of the back-end type, or a multiple definition error.
     DECO is the uniquely mangled decoration for the type.  */
diff -Nrcpad gcc-17-20260524/gcc/debug.h gcc-17-20260531/gcc/debug.h
*** gcc-17-20260524/gcc/debug.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/debug.h	Sun May 31 22:32:05 2026
*************** dump_go_spec_init (const char *, const s
*** 268,274 ****
  typedef hash_map<const_tree, int> decl_to_instance_map_t;
  extern decl_to_instance_map_t *decl_to_instance_map;
  
! /* Allocate decl_to_instance_map with COUNT slots to begin wtih, if it
   * hasn't been allocated yet.  */
  
  inline decl_to_instance_map_t *
--- 268,274 ----
  typedef hash_map<const_tree, int> decl_to_instance_map_t;
  extern decl_to_instance_map_t *decl_to_instance_map;
  
! /* Allocate decl_to_instance_map with COUNT slots to begin with, if it
   * hasn't been allocated yet.  */
  
  inline decl_to_instance_map_t *
diff -Nrcpad gcc-17-20260524/gcc/defaults.h gcc-17-20260531/gcc/defaults.h
*** gcc-17-20260524/gcc/defaults.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/defaults.h	Sun May 31 22:32:05 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 956,962 ****
     configuration using MD constraint definitions.  */
  #endif
  
! /* Determin whether the target runtime library is Bionic */
  #ifndef TARGET_HAS_BIONIC
  #define TARGET_HAS_BIONIC 0
  #endif
--- 956,962 ----
     configuration using MD constraint definitions.  */
  #endif
  
! /* Determine whether the target runtime library is Bionic */
  #ifndef TARGET_HAS_BIONIC
  #define TARGET_HAS_BIONIC 0
  #endif
diff -Nrcpad gcc-17-20260524/gcc/df-problems.cc gcc-17-20260531/gcc/df-problems.cc
*** gcc-17-20260524/gcc/df-problems.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/df-problems.cc	Sun May 31 22:32:05 2026
*************** df_simulate_fixup_sets (basic_block bb,
*** 3938,3944 ****
     i.e. they process the defs before the uses.
  
     df_simulate_initialize_backwards should be called first with a
!    bitvector copyied from the DF_LIVE_OUT or DF_LR_OUT.  Then
     df_simulate_one_insn_backwards should be called for each insn in
     the block, starting with the last one.  Finally,
     df_simulate_finalize_backwards can be called to get a new value
--- 3938,3944 ----
     i.e. they process the defs before the uses.
  
     df_simulate_initialize_backwards should be called first with a
!    bitvector copied from the DF_LIVE_OUT or DF_LR_OUT.  Then
     df_simulate_one_insn_backwards should be called for each insn in
     the block, starting with the last one.  Finally,
     df_simulate_finalize_backwards can be called to get a new value
*************** df_simulate_finalize_backwards (basic_bl
*** 4007,4013 ****
     problems computed before using these functions.
  
     df_simulate_initialize_forwards should be called first with a
!    bitvector copyied from the DF_LIVE_IN or DF_LR_IN.  Then
     df_simulate_one_insn_forwards should be called for each insn in
     the block, starting with the first one.
     ----------------------------------------------------------------------------*/
--- 4007,4013 ----
     problems computed before using these functions.
  
     df_simulate_initialize_forwards should be called first with a
!    bitvector copied from the DF_LIVE_IN or DF_LR_IN.  Then
     df_simulate_one_insn_forwards should be called for each insn in
     the block, starting with the first one.
     ----------------------------------------------------------------------------*/
diff -Nrcpad gcc-17-20260524/gcc/diagnostic-context-rich-location.cc gcc-17-20260531/gcc/diagnostic-context-rich-location.cc
*** gcc-17-20260524/gcc/diagnostic-context-rich-location.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/diagnostic-context-rich-location.cc	Sun May 31 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 34,40 ****
  #include "simple-diagnostic-path.h"
  #include "diagnostic-context-rich-location.h"
  
! /* Implemenation of the method make_inner_path of the class
     lazy_diagnostic_context_path.  */
  
  std::unique_ptr<diagnostics::paths::path>
--- 34,40 ----
  #include "simple-diagnostic-path.h"
  #include "diagnostic-context-rich-location.h"
  
! /* Implementation of the method make_inner_path of the class
     lazy_diagnostic_context_path.  */
  
  std::unique_ptr<diagnostics::paths::path>
*************** lazy_diagnostic_context_path::make_inner
*** 133,139 ****
  	  gimple *cond_stmt = NULL;
  	  gimple_stmt_iterator gsi = gsi_last_bb (cond_bb);
  
! 	  /* Currently, we only hanlde GIMPLE_COND.
  	     FIXME, will handle GIMPLE_SWITCH and other ctrl stmt later.  */
  	  if (gsi_stmt (gsi) && stmt_ends_bb_p (gsi_stmt (gsi)))
  	    if (gimple_code (gsi_stmt (gsi)) == GIMPLE_COND)
--- 133,139 ----
  	  gimple *cond_stmt = NULL;
  	  gimple_stmt_iterator gsi = gsi_last_bb (cond_bb);
  
! 	  /* Currently, we only handle GIMPLE_COND.
  	     FIXME, will handle GIMPLE_SWITCH and other ctrl stmt later.  */
  	  if (gsi_stmt (gsi) && stmt_ends_bb_p (gsi_stmt (gsi)))
  	    if (gimple_code (gsi_stmt (gsi)) == GIMPLE_COND)
diff -Nrcpad gcc-17-20260524/gcc/diagnostics/color.cc gcc-17-20260531/gcc/diagnostics/color.cc
*** gcc-17-20260524/gcc/diagnostics/color.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/diagnostics/color.cc	Sun May 31 22:32:05 2026
*************** auto_enable_urls ()
*** 443,449 ****
  
    /* When logging in a linux over serial line, we see TERM=linux
       and no COLORTERM, it is unlikely that the URL escapes will
!      work in that environmen either.  */
    if (!colorterm && term && !strcmp (term, "linux"))
      return false;
  
--- 443,449 ----
  
    /* When logging in a linux over serial line, we see TERM=linux
       and no COLORTERM, it is unlikely that the URL escapes will
!      work in that environment either.  */
    if (!colorterm && term && !strcmp (term, "linux"))
      return false;
  
diff -Nrcpad gcc-17-20260524/gcc/diagnostics/context.h gcc-17-20260531/gcc/diagnostics/context.h
*** gcc-17-20260524/gcc/diagnostics/context.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/diagnostics/context.h	Sun May 31 22:32:05 2026
*************** private:
*** 226,232 ****
     - reporting those diagnostics to zero or more output sinks
       (e.g. text vs SARIF)
     - providing a "dump" member function for a debug dump of the state of
!      the diagnostics subsytem
     - direct vs buffered diagnostics (see class diagnostics::buffer)
     - tracking the original argv of the program (for SARIF output)
     - crash-handling
--- 226,232 ----
     - reporting those diagnostics to zero or more output sinks
       (e.g. text vs SARIF)
     - providing a "dump" member function for a debug dump of the state of
!      the diagnostics subsystem
     - direct vs buffered diagnostics (see class diagnostics::buffer)
     - tracking the original argv of the program (for SARIF output)
     - crash-handling
diff -Nrcpad gcc-17-20260524/gcc/diagnostics/sarif-sink.cc gcc-17-20260531/gcc/diagnostics/sarif-sink.cc
*** gcc-17-20260524/gcc/diagnostics/sarif-sink.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/diagnostics/sarif-sink.cc	Sun May 31 22:32:05 2026
*************** get_message_from_result (const sarif_res
*** 5175,5181 ****
  }
  
  /* Assuming that a single diagnostic has been emitted to
!    DC, get a json::object for the messsage object within
     the result.  */
  
  static const json::object *
--- 5175,5181 ----
  }
  
  /* Assuming that a single diagnostic has been emitted to
!    DC, get a json::object for the message object within
     the result.  */
  
  static const json::object *
diff -Nrcpad gcc-17-20260524/gcc/doc/analyzer.texi gcc-17-20260531/gcc/doc/analyzer.texi
*** gcc-17-20260524/gcc/doc/analyzer.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/analyzer.texi	Sun May 31 22:32:05 2026
*************** This will dump a @file{SRC.eg.txt} file
*** 875,882 ****
  @code{exploded_graph}. I use @code{diff -u50 -p} to compare two different
  such files (e.g. before and after a patch) to find the first place where the
  two graphs diverge.  The option @option{-fdump-noaddr} will suppress
! printing pointers withihn the dumps (which would otherwise hide the real
! differences with irrelevent churn).
  
  The option @option{-fdump-analyzer-json} will dump both the supergraph
  and the exploded graph in compressed JSON form.
--- 875,882 ----
  @code{exploded_graph}. I use @code{diff -u50 -p} to compare two different
  such files (e.g. before and after a patch) to find the first place where the
  two graphs diverge.  The option @option{-fdump-noaddr} will suppress
! printing pointers within the dumps (which would otherwise hide the real
! differences with irrelevant churn).
  
  The option @option{-fdump-analyzer-json} will dump both the supergraph
  and the exploded graph in compressed JSON form.
diff -Nrcpad gcc-17-20260524/gcc/doc/cpp.texi gcc-17-20260531/gcc/doc/cpp.texi
*** gcc-17-20260524/gcc/doc/cpp.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/cpp.texi	Sun May 31 22:32:05 2026
*************** reject source code containing ``other''
*** 590,596 ****
  ``other'' characters are @samp{@@}, @samp{$}, @samp{`}, and control
  characters other than NUL (all bits zero).  (Note that @samp{$} is
  normally considered a letter.)  All bytes with the high bit set
! (numeric range 0x7F--0xFF) that were not succesfully interpreted as
  part of an extended character in the input encoding are also ``other''
  in the present implementation.
  
--- 590,596 ----
  ``other'' characters are @samp{@@}, @samp{$}, @samp{`}, and control
  characters other than NUL (all bits zero).  (Note that @samp{$} is
  normally considered a letter.)  All bytes with the high bit set
! (numeric range 0x7F--0xFF) that were not successfully interpreted as
  part of an extended character in the input encoding are also ``other''
  in the present implementation.
  
diff -Nrcpad gcc-17-20260524/gcc/doc/extend.texi gcc-17-20260531/gcc/doc/extend.texi
*** gcc-17-20260524/gcc/doc/extend.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/extend.texi	Sun May 31 22:32:05 2026
*************** extern void f3 [[gnu::section ("bar")]]
*** 1740,1746 ****
  @end smallexample
  
  Typedefs follow the same attribute placement rules for other as other
! declarations.  These declarations are all valid with similiar meanings.
  
  @smallexample
  [[gnu::unavailable]] typedef int *t1;
--- 1740,1746 ----
  @end smallexample
  
  Typedefs follow the same attribute placement rules for other as other
! declarations.  These declarations are all valid with similar meanings.
  
  @smallexample
  [[gnu::unavailable]] typedef int *t1;
*************** to the function is accessed according to
*** 1886,1892 ****
  one of @code{read_only}, @code{read_write}, @code{write_only},
  or @code{none}.  The semantics of these modes are described below.
  
! The argument the attribute applies to is identifed by @var{ref-index}, which
  is an integer constant representing its position in the argument list.
  Argument numbering starts from 1.  You can specify multiple @code{access}
  attributes to describe the access modes of different arguments, but multiple
--- 1886,1892 ----
  one of @code{read_only}, @code{read_write}, @code{write_only},
  or @code{none}.  The semantics of these modes are described below.
  
! The argument the attribute applies to is identified by @var{ref-index}, which
  is an integer constant representing its position in the argument list.
  Argument numbering starts from 1.  You can specify multiple @code{access}
  attributes to describe the access modes of different arguments, but multiple
*************** member or a pointer field of a structure
*** 2585,2591 ****
  It indicates that the number
  of the elements of the array that is held by the flexible array member
  field, or is pointed to by the pointer field, is given by the field
! named by the identifer @var{count} in the same structure as the
  flexible array member or the pointer field.
  
  This attribute is available only in C for now.
--- 2585,2591 ----
  It indicates that the number
  of the elements of the array that is held by the flexible array member
  field, or is pointed to by the pointer field, is given by the field
! named by the identifier @var{count} in the same structure as the
  flexible array member or the pointer field.
  
  This attribute is available only in C for now.
*************** This attribute applies to functions.
*** 7741,7747 ****
  
  It tells GCC to keep interrupts masked for the whole function.
  Without this attribute,
! GCC tries to reenable interrupts for as much of the function as it can.
  
  @atindex @code{use_debug_exception_return}, MIPS
  @item use_debug_exception_return
--- 7741,7747 ----
  
  It tells GCC to keep interrupts masked for the whole function.
  Without this attribute,
! GCC tries to re-enable interrupts for as much of the function as it can.
  
  @atindex @code{use_debug_exception_return}, MIPS
  @item use_debug_exception_return
*************** per-function basis.
*** 8358,8364 ****
  @item arch=
  Specifies the architecture version and architectural extensions to use
  for this function.  The behavior and permissible arguments are the same as
! for the @option{-march=} command-line option, in addtion, it also support
  extension enablement list, a list of extension name and prefixed with @code{+},
  like @code{arch=+zba} means enable @code{zba} extension.
  Multiple extension can be enabled by separating them with a comma.  For example:
--- 8358,8364 ----
  @item arch=
  Specifies the architecture version and architectural extensions to use
  for this function.  The behavior and permissible arguments are the same as
! for the @option{-march=} command-line option, in addition, it also support
  extension enablement list, a list of extension name and prefixed with @code{+},
  like @code{arch=+zba} means enable @code{zba} extension.
  Multiple extension can be enabled by separating them with a comma.  For example:
*************** This size is also used for inlining deci
*** 13464,13469 ****
--- 13464,13542 ----
  instead of just @code{asm}, then for inlining purposes the size of the asm
  is taken as the minimum size, ignoring how many instructions GCC thinks it is.
  
+ @subsubheading Specifying the size of an @code{asm} on AVR
+ 
+ Apart from the default size calculation explained above, since GCC@tie{}17
+ there is a way to specify the exact size of an @code{asm} by means of
+ @code{[[len=@var{spec}]]} annotations.  The annotations must be placed
+ in assembly comments in the @code{asm} template:
+ In a @code{/* ... */} block comment, or after a @samp{;} that starts
+ a single-line comment.
+ 
+ The following @code{@var{spec}}'s are supported.  They specify the
+ size of the @code{asm} --- or parts of it --- in units of 16-bit words:
+ 
+ @table @code
+ @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.
+ 
+ @item %[0-9]+
+ @itemx %[@var{name}]
+ The value of the referred operand, which must evaluate to a
+ compile-time integer constant.
+ 
+ @item %~
+ @itemx %~jmp
+ @itemx %~call
+ The length of a @code{%~call} or @code{%~jmp} instruction before relaxing.
+ 
+ @item lds
+ @itemx sts
+ The length of a @code{lds} resp.@: @code{sts} instruction.
+ @end table
+ 
+ The following rules apply:
+ 
+ @itemize
+ @item All such annotations will be ignored with option
+ @ref{avr_masm_len_notes,,@option{-mno-asm-len-notes}}.  Diagnosing can be
+ adjusted with option @ref{avr_Wasm_len_notes,,@option{-Wasm-len-notes}}.
+ 
+ @item The length of the @code{asm} is the sum over all
+ @code{[[len=@var{spec}]]} notes in the @code{asm} template.  When an invalid
+ or unrecognizable note is found, then the default length (as calculated from
+ the number of physical and logical line breaks) applies.
+ 
+ @item No white-spaces are recognized inside @code{[[...]]} notes, and all
+ letters must be lower case.  Otherwise, all notes in that asm are ignored,
+ and the default length of the @code{asm} is used.
+ @end itemize
+ 
+ The actual instruction lengths can be inferred from @samp{;; ADDR = ...}
+ assembly comments as generated with, say
+ @option{-save-temps -mlog=insn_addresses}.
+ Length calculations are also shown in the RTL dump file(s) as generated with
+ @option{-fdump-rtl-shorten}.
+ 
+ Lengths annotations can solve two issues:
+ 
+ @itemize
+ @item Cases where the expanded assembly code is longer than determined from the
+ number of physical and logical line breaks.  Such cases can lead to errors when
+ a jump that uses a too optimistic jump offset is crossing such assembly code.
+ 
+ @item Better code generation for jumps that are crossing an @code{asm}.
+ The default length in words is @emph{twice} the number of lines in
+ the code template, though almost all AVR instructions occupy only
+ @emph{one} 16-bit word.
+ @end itemize
+ 
+ 
  @node Syntax Extensions
  @section Other Extensions to C Syntax
  
*************** i.e.@: they subtract 2 unsigned values f
*** 16305,16311 ****
  set what the last argument points to to 1 if any of the two subtractions
  overflowed (otherwise 0) and return the result of the subtractions.
  Note, while all the first 3 arguments can have arbitrary values, better code
! will be emitted if one of them (preferrably the third one) has only values
  0 or 1 (i.e.@: carry-in).
  
  @enddefbuiltin
--- 16378,16384 ----
  set what the last argument points to to 1 if any of the two subtractions
  overflowed (otherwise 0) and return the result of the subtractions.
  Note, while all the first 3 arguments can have arbitrary values, better code
! will be emitted if one of them (preferably the third one) has only values
  0 or 1 (i.e.@: carry-in).
  
  @enddefbuiltin
*************** void foo () @{
*** 17722,17728 ****
    delete a; // This pair of allocation/deallocation operators can be omitted
  	    // or replaced with int _temp; int *a = &_temp; etc.@:
    void *b = ::operator new (32);
!   ::operator delete (b); // This one cannnot.
    void *c = __builtin_operator_new (32);
    __builtin_operator_delete (c); // This one can.
  @}
--- 17795,17801 ----
    delete a; // This pair of allocation/deallocation operators can be omitted
  	    // or replaced with int _temp; int *a = &_temp; etc.@:
    void *b = ::operator new (32);
!   ::operator delete (b); // This one cannot.
    void *c = __builtin_operator_new (32);
    __builtin_operator_delete (c); // This one can.
  @}
*************** unsigned int);
*** 25986,25992 ****
  Extract an element from two concatenated vectors starting at the given byte
  index.  The index is based on big endian order for a little endian system.
  Similarly, the index is based on little endian order for a big endian system.
! The extraced elements are zero-extended and put in doubleword 1
  according to natural element order.  If the byte index is out of range for the
  data type, the intrinsic will be rejected.  For little-endian, this output
  will match the placement by the hardware instruction (vextdubvrx, vextduhvrx,
--- 26059,26065 ----
  Extract an element from two concatenated vectors starting at the given byte
  index.  The index is based on big endian order for a little endian system.
  Similarly, the index is based on little endian order for a big endian system.
! The extracted elements are zero-extended and put in doubleword 1
  according to natural element order.  If the byte index is out of range for the
  data type, the intrinsic will be rejected.  For little-endian, this output
  will match the placement by the hardware instruction (vextdubvrx, vextduhvrx,
diff -Nrcpad gcc-17-20260524/gcc/doc/gcov.texi gcc-17-20260531/gcc/doc/gcov.texi
*** gcc-17-20260524/gcc/doc/gcov.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/gcov.texi	Sun May 31 22:32:05 2026
*************** path  4 not covered: lines 8 8(false) 11
*** 227,233 ****
  @end smallexample
  
  This means to cover path 2 you must run lines 8, 11, 13, 14, and 17,
! evaluting the decision at 8 false and the decisions at 11 and 13 to
  @code{false}.
  
  @item --prime-paths-source [=@var{type}]
--- 227,233 ----
  @end smallexample
  
  This means to cover path 2 you must run lines 8, 11, 13, 14, and 17,
! evaluating the decision at 8 false and the decisions at 11 and 13 to
  @code{false}.
  
  @item --prime-paths-source [=@var{type}]
*************** and exit without doing any further proce
*** 625,631 ****
  
  @item -w
  @itemx --verbose
! Print verbose informations related to basic blocks and arcs.
  
  @item -x
  @itemx --hash-filenames
--- 625,631 ----
  
  @item -w
  @itemx --verbose
! Print verbose information related to basic blocks and arcs.
  
  @item -x
  @itemx --hash-filenames
*************** extended regular expressions (like @comm
*** 1248,1254 ****
  match too.  @option{--include} and @option{--exclude} can be used
  multiple times, and if a name matches multiple filters it is the last
  one to match which takes preference.  For example, to match
! @code{main} and the @code{int} instatiation of @code{inc}, while
  omitting the @code{Foo} constructor:
  
  @smallexample
--- 1248,1254 ----
  match too.  @option{--include} and @option{--exclude} can be used
  multiple times, and if a name matches multiple filters it is the last
  one to match which takes preference.  For example, to match
! @code{main} and the @code{int} instantiation of @code{inc}, while
  omitting the @code{Foo} constructor:
  
  @smallexample
diff -Nrcpad gcc-17-20260524/gcc/doc/gm2.texi gcc-17-20260531/gcc/doc/gm2.texi
*** gcc-17-20260524/gcc/doc/gm2.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/gm2.texi	Sun May 31 22:32:06 2026
*************** EXCEPT
*** 2122,2128 ****
     (* Now fixup.  Determine the source of the exception and retry.  *)
     IF head = NIL
     THEN
!       printf ("list was empty, add sentinal\n");
        Add (head, -1) ;
        RETRY  (* Jump back to the begin statement.  *)
     ELSIF p^.next = NIL
--- 2122,2128 ----
     (* Now fixup.  Determine the source of the exception and retry.  *)
     IF head = NIL
     THEN
!       printf ("list was empty, add sentinel\n");
        Add (head, -1) ;
        RETRY  (* Jump back to the begin statement.  *)
     ELSIF p^.next = NIL
*************** END lazyunique.
*** 2159,2165 ****
  @example
  @group
  new value 0
! list was empty, add sentinal
  new value 0
  growing the list
  new value 0
--- 2159,2165 ----
  @example
  @group
  new value 0
! list was empty, add sentinel
  new value 0
  growing the list
  new value 0
*************** cp .libs/libNumberIO.so _NumberIO.so
*** 2527,2533 ****
  
  The first four commands, generate the swig interface file
  @file{NumberIO.i} and python wrap files @file{NumberIO_wrap.cxx} and
! @file{NumberIO.py}.  The next three @file{libtool} commnads compile
  the C++ and Modula-2 source code into @file{.lo} objects.  The last
  @file{libtool} command links all the @file{.lo} files into a
  @file{.la} file and includes all shared library dependencies.
--- 2527,2533 ----
  
  The first four commands, generate the swig interface file
  @file{NumberIO.i} and python wrap files @file{NumberIO_wrap.cxx} and
! @file{NumberIO.py}.  The next three @file{libtool} commands compile
  the C++ and Modula-2 source code into @file{.lo} objects.  The last
  @file{libtool} command links all the @file{.lo} files into a
  @file{.la} file and includes all shared library dependencies.
diff -Nrcpad gcc-17-20260524/gcc/doc/gty.texi gcc-17-20260531/gcc/doc/gty.texi
*** gcc-17-20260524/gcc/doc/gty.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/gty.texi	Sun May 31 22:32:06 2026
*************** from a process reading PCH.
*** 252,258 ****
  @item for_user
  
  Use this to mark types that need to be marked by user gc routines, but are not
! refered to in a template argument.  So if you have some user gc type T1 and a
  non user gc type T2 you can give T2 the for_user option so that the marking
  functions for T1 can call non mangled functions to mark T2.
  
--- 252,258 ----
  @item for_user
  
  Use this to mark types that need to be marked by user gc routines, but are not
! referred to in a template argument.  So if you have some user gc type T1 and a
  non user gc type T2 you can give T2 the for_user option so that the marking
  functions for T1 can call non mangled functions to mark T2.
  
diff -Nrcpad gcc-17-20260524/gcc/doc/install.texi gcc-17-20260531/gcc/doc/install.texi
*** gcc-17-20260524/gcc/doc/install.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/install.texi	Sun May 31 22:32:06 2026
*************** specified, then the default set of libra
*** 1366,1372 ****
  profiles respectively.  Note that, due to some limitation of the current
  multilib framework, using the combined @code{aprofile,rmprofile}
  multilibs selects in some cases a less optimal multilib than when using
! the multilib profile for the architecture targetted.  The special value
  @code{default} is also accepted and is equivalent to omitting the
  option, i.e., only the default run-time library will be enabled.
  
--- 1366,1372 ----
  profiles respectively.  Note that, due to some limitation of the current
  multilib framework, using the combined @code{aprofile,rmprofile}
  multilibs selects in some cases a less optimal multilib than when using
! the multilib profile for the architecture targeted.  The special value
  @code{default} is also accepted and is equivalent to omitting the
  option, i.e., only the default run-time library will be enabled.
  
*************** This configuration is intended for embed
*** 4674,4680 ****
  @anchor{mips-x-x}
  @heading mips-*-*
  If on a MIPS system you get an error message saying ``does not have gp
! sections for all it's [sic] sectons [sic]'', don't worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
--- 4674,4680 ----
  @anchor{mips-x-x}
  @heading mips-*-*
  If on a MIPS system you get an error message saying ``does not have gp
! sections for all it's [sic] sections [sic]'', don't worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
  really anything wrong, and it is okay to use the output file.  You can
  stop such warnings by installing the GNU linker.
diff -Nrcpad gcc-17-20260524/gcc/doc/invoke.texi gcc-17-20260531/gcc/doc/invoke.texi
*** gcc-17-20260524/gcc/doc/invoke.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/invoke.texi	Sun May 31 22:32:06 2026
*************** Objective-C and Objective-C++ Dialects}.
*** 445,451 ****
  -Wsizeof-array-div
  -Wsizeof-pointer-div  -Wsizeof-pointer-memaccess
  -Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing
! -Wstrict-aliasing=@var{n}  -Wstrict-overflow  -Wstrict-overflow=@var{n}
  -Wstring-compare
  -Wno-stringop-overflow  -Wno-stringop-overread
  -Wno-stringop-truncation  -Wstrict-flex-arrays
--- 445,451 ----
  -Wsizeof-array-div
  -Wsizeof-pointer-div  -Wsizeof-pointer-memaccess
  -Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing
! -Wstrict-aliasing=@var{n}
  -Wstring-compare
  -Wno-stringop-overflow  -Wno-stringop-overread
  -Wno-stringop-truncation  -Wstrict-flex-arrays
*************** Objective-C and Objective-C++ Dialects}.
*** 984,991 ****
  -mvectorize-with-neon-quad  -mvectorize-with-neon-double}
  
  @emph{AVR Options} (@ref{AVR Options})
! @gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args  -mcvt
! -mbranch-cost=@var{cost}  -mfuse-add=@var{level}  -mfuse-move=@var{level}
  -mfuse-move2  -mcall-prologues  -mgas-isr-prologues  -mint8  -mflmap
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
--- 984,991 ----
  -mvectorize-with-neon-quad  -mvectorize-with-neon-double}
  
  @emph{AVR Options} (@ref{AVR Options})
! @gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args -masm-len-notes
! -mcvt  -mbranch-cost=@var{cost}  -mfuse-add=@var{level}  -mfuse-move=@var{level}
  -mfuse-move2  -mcall-prologues  -mgas-isr-prologues  -mint8  -mflmap
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
*************** Objective-C and Objective-C++ Dialects}.
*** 993,999 ****
  -mrmw  -mstrict-X  -mtiny-stack
  -mrodata-in-ram  -msplit-bit-shift  -msplit-ldst  -mshort-calls
  -mskip-bug  -muse-nonzero-bits  -nodevicelib  -nodevicespecs
! -Waddr-space-convert  -Wmisspelled-isr}
  
  @emph{Blackfin Options} (@ref{Blackfin Options})
  @gccoptlist{-mcpu=@var{cpu}@r{[}-@var{sirevision}@r{]}
--- 993,999 ----
  -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}
  
  @emph{Blackfin Options} (@ref{Blackfin Options})
  @gccoptlist{-mcpu=@var{cpu}@r{[}-@var{sirevision}@r{]}
*************** Summing it all up for an intuitive thoug
*** 2139,2145 ****
  the primary output name is broken into a directory part and a basename
  part; @var{dumppfx} is set to the former, unless overridden by
  @option{-dumpdir} or @option{-save-temps=*}, and @var{dumpbase} is set
! to the latter, unless overriden by @option{-dumpbase}.  If there are
  multiple inputs or linking, this @var{dumpbase} may be combined with
  @var{dumppfx} and taken from each input file.  Auxiliary output names
  for each input are formed by combining @var{dumppfx}, @var{dumpbase}
--- 2139,2145 ----
  the primary output name is broken into a directory part and a basename
  part; @var{dumppfx} is set to the former, unless overridden by
  @option{-dumpdir} or @option{-save-temps=*}, and @var{dumpbase} is set
! to the latter, unless overridden by @option{-dumpbase}.  If there are
  multiple inputs or linking, this @var{dumpbase} may be combined with
  @var{dumppfx} and taken from each input file.  Auxiliary output names
  for each input are formed by combining @var{dumppfx}, @var{dumpbase}
*************** Options} and @ref{Objective-C and Object
*** 6864,6870 ****
  -Wsizeof-pointer-div
  -Wsizeof-pointer-memaccess
  -Wstrict-aliasing
- -Wstrict-overflow=1
  -Wswitch
  -Wtautological-compare
  -Wtrigraphs
--- 6864,6869 ----
*************** Does not warn about incomplete types.
*** 8718,8771 ****
  @opindex Wno-strict-overflow
  @item -Wstrict-overflow
  @itemx -Wstrict-overflow=@var{n}
! This option is only active when signed overflow is undefined.
! It warns about cases where the compiler optimizes based on the
! assumption that signed overflow does not occur.  Note that it does not
! warn about all cases where the code might overflow: it only warns
! about cases where the compiler implements some optimization.  Thus
! this warning depends on the optimization level.
! 
! An optimization that assumes that signed overflow does not occur is
! perfectly safe if the values of the variables involved are such that
! overflow never does, in fact, occur.  Therefore this warning can
! easily give a false positive: a warning about code that is not
! actually a problem.  To help focus on important issues, several
! warning levels are defined.  No warnings are issued for the use of
! undefined signed overflow when estimating how many iterations a loop
! requires, in particular when determining whether a loop will be
! executed at all.
  
  @table @gcctabopt
  @item -Wstrict-overflow=1
! Warn about cases that are both questionable and easy to avoid.  For
! example the compiler simplifies
! @code{x + 1 > x} to @code{1}.  This level of
! @option{-Wstrict-overflow} is enabled by @option{-Wall}; higher levels
! are not, and must be explicitly requested.
  
  @item -Wstrict-overflow=2
! Also warn about other cases where a comparison is simplified to a
! constant.  For example: @code{abs (x) >= 0}.  This can only be
! simplified when signed integer overflow is undefined, because
! @code{abs (INT_MIN)} overflows to @code{INT_MIN}, which is less than
! zero.  @option{-Wstrict-overflow} (with no level) is the same as
! @option{-Wstrict-overflow=2}.
  
  @item -Wstrict-overflow=3
! Also warn about other cases where a comparison is simplified.  For
! example: @code{x + 1 > 1} is simplified to @code{x > 0}.
  
  @item -Wstrict-overflow=4
! Also warn about other simplifications not covered by the above cases.
! For example: @code{(x * 10) / 5} is simplified to @code{x * 2}.
  
  @item -Wstrict-overflow=5
! Also warn about cases where the compiler reduces the magnitude of a
! constant involved in a comparison.  For example: @code{x + 2 > y} is
! simplified to @code{x + 1 >= y}.  This is reported only at the
! highest warning level because this simplification applies to many
! comparisons, so this warning level gives a very large number of
! false positives.
  @end table
  
  @opindex Wstring-compare
--- 8717,8739 ----
  @opindex Wno-strict-overflow
  @item -Wstrict-overflow
  @itemx -Wstrict-overflow=@var{n}
! Does nothing.  Preserved for backward compatibility.
  
  @table @gcctabopt
  @item -Wstrict-overflow=1
! Does nothing.  Preserved for backward compatibility.
  
  @item -Wstrict-overflow=2
! Does nothing.  Preserved for backward compatibility.
  
  @item -Wstrict-overflow=3
! Does nothing.  Preserved for backward compatibility.
  
  @item -Wstrict-overflow=4
! Does nothing.  Preserved for backward compatibility.
  
  @item -Wstrict-overflow=5
! Does nothing.  Preserved for backward compatibility.
  @end table
  
  @opindex Wstring-compare
*************** The analyzer will complain for the above
*** 12010,12016 ****
  ever matches none of the cases, the @code{switch} will follow the
  implicit @code{default} case, making the body of the loop be a ``no-op''
  with @code{cpu_state.pc} unchanged, and thus using the same value of
! @code{opcode} on all subseqent iterations, leading to an infinite loop.
  
  See @uref{https://cwe.mitre.org/data/definitions/835.html, CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')}.
  
--- 11978,11984 ----
  ever matches none of the cases, the @code{switch} will follow the
  implicit @code{default} case, making the body of the loop be a ``no-op''
  with @code{cpu_state.pc} unchanged, and thus using the same value of
! @code{opcode} on all subsequent iterations, leading to an infinite loop.
  
  See @uref{https://cwe.mitre.org/data/definitions/835.html, CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')}.
  
*************** to parameters or globals are assumed to
*** 12031,12037 ****
  recursion and thus suppress the warning.
  
  This diagnostic is likely to miss cases of infinite recursion that
! are convered to iteration by the optimizer before the analyzer "sees"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  
--- 11999,12005 ----
  recursion and thus suppress the warning.
  
  This diagnostic is likely to miss cases of infinite recursion that
! are converted to iteration by the optimizer before the analyzer "sees"
  them.  Hence optimization should be disabled when attempting to trigger
  this diagnostic.
  
*************** per-function basis.  The filename for th
*** 21095,21109 ****
  @file{.su} to the @var{auxname}.  @var{auxname} is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
! of three fields:
  
  @itemize
  @item
! The name of the function.
  @item
! A number of bytes.
  @item
! One or more qualifiers: @code{static}, @code{dynamic}, @code{bounded}.
  @end itemize
  
  The qualifier @code{static} means that the function manipulates the stack
--- 21063,21079 ----
  @file{.su} to the @var{auxname}.  @var{auxname} is generated from the name of
  the output file, if explicitly specified and it is not an executable,
  otherwise it is the basename of the source file.  An entry is made up
! of four fields separated by tabulation characters:
  
  @itemize
  @item
! The name of the function preceded by its source location
  @item
! The mangled name of the function
  @item
! A number of bytes
! @item
! One or more qualifiers: @code{static}, @code{dynamic}, @code{bounded}
  @end itemize
  
  The qualifier @code{static} means that the function manipulates the stack
*************** Enable SVE2 aes instructions.  This also
*** 21964,21969 ****
--- 21934,21941 ----
  Enable SVE2 sha3 instructions.  This also enables SVE2 instructions.
  @item sve2p1
  Enable SVE2.1 instructions.  This also enables SVE2 instructions.
+ @item sve2p2
+ Enable SVE2.2 instructions.  This also enables SVE2 and SVE2.1 instructions.
  @item tme
  Enable the Transactional Memory Extension.
  @item i8mm
*************** instructions.
*** 22026,22031 ****
--- 21998,22006 ----
  @item sme2p1
  Enable the Scalable Matrix Extension version 2.1.  This also enables SME2
  instructions.
+ @item sme2p2
+ Enable the Scalable Matrix Extension version 2.2.  This also enables SME2
+ and SME2.1 instructions.
  @item fcma
  Enable the complex number SIMD extensions.
  @item jscvt
*************** The following AVR devices and ISAs are s
*** 24293,24303 ****
  @emph{Note:} A complete device support consists of
  startup code @code{crt@var{mcu}.o}, a device header @code{avr/io*.h},
  a device library @code{lib@var{mcu}.a} and a
! @uref{https://gcc.gnu.org/wiki/avr-gcc#spec-files,device-specs} file
  @code{specs-@var{mcu}}. Only the latter is provided by the compiler
  according the supported @code{@var{mcu}}s below.  The rest is supported
! by @w{@uref{https://github.com/avrdudes/avr-libc/,AVR-LibC}}, or by means of
! @uref{https://gcc.gnu.org/wiki/avr-gcc#atpack,@code{atpack}} files
  from the hardware manufacturer.
  
  @c Auto-generated.  Re-build when new devices are added to avr-mcus.def
--- 24268,24278 ----
  @emph{Note:} A complete device support consists of
  startup code @code{crt@var{mcu}.o}, a device header @code{avr/io*.h},
  a device library @code{lib@var{mcu}.a} and a
! @uref{https://gcc.gnu.org/wiki/avr-gcc#spec-files,,device-specs} file
  @code{specs-@var{mcu}}. Only the latter is provided by the compiler
  according the supported @code{@var{mcu}}s below.  The rest is supported
! by @w{@uref{https://github.com/avrdudes/avr-libc/,,AVR-LibC}}, or by means of
! @uref{https://gcc.gnu.org/wiki/avr-gcc#atpack,,@code{atpack}} files
  from the hardware manufacturer.
  
  @c Auto-generated.  Re-build when new devices are added to avr-mcus.def
*************** instructions.  This option has only an e
*** 24312,24317 ****
--- 24287,24301 ----
  ATtiny40.  See also the @code{absdata}
  @ref{AVR Attributes,variable attribute}.
  
+ @anchor{avr_masm_len_notes}
+ @opindex masm-len-notes
+ @item -masm-len-notes
+ @itemx -mno-asm-len-notes
+ Recognize resp.@: ignore @code{[[len=@var{spec}]]} notes that are placed in
+ (comments in) inline assembly code templates.  They allow to specify
+ the exact @ref{Size of an asm,,size of @code{asm} constructs}.
+ This option is on per default.
+ 
  @opindex mcvt
  @item -mcvt
  Use a @emph{compact vector table}.  Some devices support a CVT
*************** code is no more pulled in from @code{lib
*** 24327,24333 ****
  For example, you can link with @code{-Wl,--defsym,__init_cvt=0}.
  
  The CVT startup code is available since
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1010,AVR-LibC v2.3}}.
  
  @opindex mdouble
  @opindex mlong-double
--- 24311,24317 ----
  For example, you can link with @code{-Wl,--defsym,__init_cvt=0}.
  
  The CVT startup code is available since
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1010,,AVR-LibC v2.3}}.
  
  @opindex mdouble
  @opindex mlong-double
*************** Set the size (in bits) of the @code{doub
*** 24337,24343 ****
  respectively.  Possible values for @var{bits} are 32 and 64.
  Whether or not a specific value for @var{bits} is allowed depends on
  the @code{--with-double=} and @code{--with-long-double=}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,configure options}},
  and the same applies for the default values of the options.
  
  @opindex mgas-isr-prologues
--- 24321,24327 ----
  respectively.  Possible values for @var{bits} are 32 and 64.
  Whether or not a specific value for @var{bits} is allowed depends on
  the @code{--with-double=} and @code{--with-long-double=}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,,configure options}},
  and the same applies for the default values of the options.
  
  @opindex mgas-isr-prologues
*************** If this option is on, the feature can st
*** 24348,24354 ****
  ISRs by means of the @ref{AVR Attributes,,@code{no_gccisr}}
  function attribute.  This feature is activated per default
  if optimization is on (but not with @option{-Og}, @pxref{Optimize Options}),
! and if GNU Binutils support @w{@uref{https://sourceware.org/PR21683,PR21683}}.
  
  @opindex mint8
  @item -mint8
--- 24332,24338 ----
  ISRs by means of the @ref{AVR Attributes,,@code{no_gccisr}}
  function attribute.  This feature is activated per default
  if optimization is on (but not with @option{-Og}, @pxref{Optimize Options}),
! and if GNU Binutils support @w{@uref{https://sourceware.org/PR21683,,PR21683}}.
  
  @opindex mint8
  @item -mint8
*************** XCALL  main
*** 24373,24385 ****
  XJMP   exit
  @end example
  Instead, put @code{main} in section
! @w{@uref{https://avrdudes.github.io/avr-libc/avr-libc-user-manual/mem_sections.html#sec_dot_init,@code{.init9}}}
  so that no call is required.
  By setting this option the user asserts that @code{main} will not return.
  
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1012,AVR-LibC v2.3}}.
  With older versions, there will be no performance gain.
  
  @opindex mno-interrupts
--- 24357,24369 ----
  XJMP   exit
  @end example
  Instead, put @code{main} in section
! @w{@uref{https://avrdudes.github.io/avr-libc/avr-libc-user-manual/mem_sections.html#sec_dot_init,,@code{.init9}}}
  so that no call is required.
  By setting this option the user asserts that @code{main} will not return.
  
  This option can be used for devices with very limited resources in order
  to save a few bytes of code and stack space.  It will work as expected since
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1012,,AVR-LibC v2.3}}.
  With older versions, there will be no performance gain.
  
  @opindex mno-interrupts
*************** like an assertion.
*** 24418,24424 ****
  
  Since v14 and for the AVR64* and AVR128* devices, @code{.rodata}
  is located in flash memory per default, provided the required GNU Binutils
! support (@w{@uref{https://sourceware.org/PR31124,PR31124}}) is available.
  In that case, @option{-mrodata-in-ram} can be used to return to the old
  layout with @code{.rodata} in RAM.
  
--- 24402,24408 ----
  
  Since v14 and for the AVR64* and AVR128* devices, @code{.rodata}
  is located in flash memory per default, provided the required GNU Binutils
! support (@w{@uref{https://sourceware.org/PR31124,,PR31124}}) is available.
  In that case, @option{-mrodata-in-ram} can be used to return to the old
  layout with @code{.rodata} in RAM.
  
*************** Don't link against AVR-LibC's device spe
*** 24437,24449 ****
  Notice that since AVR-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1011,@code{__init_sp}}}
  to initialize the stack pointer with symbol @code{__stack},
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1010,@code{__init_cvt}}}
  to set up the hardware to use a compact vector table with @option{-mcvt},
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1012,@code{__call_main}}}
  to call @code{main} and @code{exit}, and
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/931,@code{__do_flmap_init}}}
  to set up FLMAP according to symbol @code{__flmap}.
  
  @opindex nodevicespecs
--- 24421,24433 ----
  Notice that since AVR-LibC v2.3, that library contains code that is
  essential for the correct functioning of a program.  In particular,
  it contains parts of the startup code like:
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1011,,@code{__init_sp}}}
  to initialize the stack pointer with symbol @code{__stack},
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1010,,@code{__init_cvt}}}
  to set up the hardware to use a compact vector table with @option{-mcvt},
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/1012,,@code{__call_main}}}
  to call @code{main} and @code{exit}, and
! @w{@uref{https://github.com/avrdudes/avr-libc/issues/931,,@code{__do_flmap_init}}}
  to set up FLMAP according to symbol @code{__flmap}.
  
  @opindex nodevicespecs
*************** which contains a folder named @code{devi
*** 24466,24471 ****
--- 24450,24464 ----
  Warn about conversions between address spaces in the case where the
  resulting address space is not contained in the incoming address space.
  
+ @anchor{avr_Wasm_len_notes}
+ @opindex Wasm-len-notes
+ @item -Wasm-len-notes
+ Warn about unrecognized @code{[[len=@var{spec}]]}
+ @ref{Size of an asm,,length} annotations in inline assembly code templates.
+ This @ref{Warning Options,,warning} is on per default.
+ Notice that in LTO mode, the code must be compiled with option
+ @option{-ffat-lto-objects} in order for these diagnoses to appear.
+ 
  @opindex Wmisspelled-isr
  @opindex Wno-misspelled-isr
  @item -Wmisspelled-isr
*************** points to.
*** 24633,24639 ****
  The startup code from libgcc never sets @code{EIND}.
  Notice that startup code is a blend of code from libgcc and AVR-LibC.
  For the impact of AVR-LibC on @code{EIND}, see the
! @w{@uref{https://avrdudes.github.io/avr-libc/avr-libc-user-manual/,AVR-LibC user manual}}.
  
  @item
  It is legitimate for user-specific startup code to set up @code{EIND}
--- 24626,24632 ----
  The startup code from libgcc never sets @code{EIND}.
  Notice that startup code is a blend of code from libgcc and AVR-LibC.
  For the impact of AVR-LibC on @code{EIND}, see the
! @w{@uref{https://avrdudes.github.io/avr-libc/avr-libc-user-manual/,,AVR-LibC user manual}}.
  
  @item
  It is legitimate for user-specific startup code to set up @code{EIND}
*************** The startup code initializes the @code{R
*** 24735,24741 ****
  registers with zero.
  
  @item
! If a @ref{AVR Named Address Spaces,named address space} other than
  generic or @code{__flash} is used, then @code{RAMPZ} is set
  as needed before the operation.
  
--- 24728,24734 ----
  registers with zero.
  
  @item
! If a @ref{AVR Named Address Spaces,,named address space} other than
  generic or @code{__flash} is used, then @code{RAMPZ} is set
  as needed before the operation.
  
*************** This applies to the AVR64* and AVR128* d
*** 24927,24933 ****
  @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}}.
  
  @item __AVR_RODATA_IN_RAM__
  This macro is undefined when the code is compiled for a core architecture.
--- 24920,24926 ----
  @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}}.
  
  @item __AVR_RODATA_IN_RAM__
  This macro is undefined when the code is compiled for a core architecture.
*************** Same as above, but for @code{long double
*** 24968,24981 ****
  
  @item __WITH_DOUBLE_COMPARISON__
  Reflects the @code{--with-double-comparison=@{tristate|bool|libf7@}}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,configure option}}
  and is defined to @code{2} or @code{3}.
  
  @item __WITH_LIBF7_LIBGCC__
  @itemx __WITH_LIBF7_MATH__
  @itemx __WITH_LIBF7_MATH_SYMBOLS__
  Reflects the @code{--with-libf7=@{libgcc|math|math-symbols@}}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,configure option}}.
  
  @end table
  
--- 24961,24974 ----
  
  @item __WITH_DOUBLE_COMPARISON__
  Reflects the @code{--with-double-comparison=@{tristate|bool|libf7@}}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,,configure option}}
  and is defined to @code{2} or @code{3}.
  
  @item __WITH_LIBF7_LIBGCC__
  @itemx __WITH_LIBF7_MATH__
  @itemx __WITH_LIBF7_MATH_SYMBOLS__
  Reflects the @code{--with-libf7=@{libgcc|math|math-symbols@}}
! @w{@uref{https://gcc.gnu.org/install/configure.html#avr,,configure option}}.
  
  @end table
  
*************** options by hand, in particular they are
*** 24986,24992 ****
  Using these options in the wrong way may lead to sub-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
! @w{@uref{https://gcc.gnu.org/wiki/avr-gcc#spec-files,device specs}}
  files.
  
  @table @gcctabopt
--- 24979,24985 ----
  Using these options in the wrong way may lead to sub-optimal or wrong code.
  They are documented for completeness, and in order to get a better
  understanding of
! @w{@uref{https://gcc.gnu.org/wiki/avr-gcc#spec-files,,device specs}}
  files.
  
  @table @gcctabopt
*************** Set the cost of ADDRESS_REG_REG to the v
*** 27818,27824 ****
  @opindex mcheck-zero-division
  @opindex mno-check-zero-division
  @item -mcheck-zero-division
! @itemx -mno-check-zero-divison
  Trap (do not trap) on integer division by zero.  The default is
  @option{-mcheck-zero-division} for @option{-O0} or @option{-Og}, and
  @option{-mno-check-zero-division} for other optimization levels.
--- 27811,27817 ----
  @opindex mcheck-zero-division
  @opindex mno-check-zero-division
  @item -mcheck-zero-division
! @itemx -mno-check-zero-division
  Trap (do not trap) on integer division by zero.  The default is
  @option{-mcheck-zero-division} for @option{-O0} or @option{-Og}, and
  @option{-mno-check-zero-division} for other optimization levels.
*************** This option is disabled by default; GCC
*** 28597,28603 ****
  generates code that assumes that the data segment follows the text segment.
  
  @opindex mid-shared-library
! @opindex mno-id-shared-libary
  @item -mid-shared-library
  @itemx -mno-id-shared-library
  If enabled, generate code that supports shared libraries via the
--- 28590,28596 ----
  generates code that assumes that the data segment follows the text segment.
  
  @opindex mid-shared-library
! @opindex mno-id-shared-library
  @item -mid-shared-library
  @itemx -mno-id-shared-library
  If enabled, generate code that supports shared libraries via the
diff -Nrcpad gcc-17-20260524/gcc/doc/libgdiagnostics/topics/compatibility.rst gcc-17-20260531/gcc/doc/libgdiagnostics/topics/compatibility.rst
*** gcc-17-20260524/gcc/doc/libgdiagnostics/topics/compatibility.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/libgdiagnostics/topics/compatibility.rst	Sun May 31 22:32:06 2026
*************** libgdiagnostics.h.
*** 30,36 ****
            locked-down at this time.
  
  API compatibility is achieved by extending the API rather than changing
! it.  For ABI compatiblity, we avoid bumping the SONAME, and instead use
  symbol versioning to tag each symbol, so that a binary linked against
  libgdiagnostics.so is tagged according to the symbols that it uses.
  
--- 30,36 ----
            locked-down at this time.
  
  API compatibility is achieved by extending the API rather than changing
! it.  For ABI compatibility, we avoid bumping the SONAME, and instead use
  symbol versioning to tag each symbol, so that a binary linked against
  libgdiagnostics.so is tagged according to the symbols that it uses.
  
*************** tagged with ``LIBGDIAGNOSTICS_ABI_0``; t
*** 166,172 ****
  ``LIBGDIAGNOSTICS_ABI_1``
  -------------------------
  ``LIBGDIAGNOSTICS_ABI_1`` covers the addition of these functions for
! acccessing values within a :type:`diagnostic_logical_location`:
  
    * :func:`diagnostic_logical_location_get_kind`
  
--- 166,172 ----
  ``LIBGDIAGNOSTICS_ABI_1``
  -------------------------
  ``LIBGDIAGNOSTICS_ABI_1`` covers the addition of these functions for
! accessing values within a :type:`diagnostic_logical_location`:
  
    * :func:`diagnostic_logical_location_get_kind`
  
diff -Nrcpad gcc-17-20260524/gcc/doc/libgdiagnostics/topics/physical-locations.rst gcc-17-20260531/gcc/doc/libgdiagnostics/topics/physical-locations.rst
*** gcc-17-20260524/gcc/doc/libgdiagnostics/topics/physical-locations.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/libgdiagnostics/topics/physical-locations.rst	Sun May 31 22:32:06 2026
*************** locations.
*** 50,56 ****
     (`SARIF v2.1.0 §3.24.10 <https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790871>`_).
     See
     `SARIF v2.1.0 Appendix J <https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141791197>`_
!    for suggested values for various programmming languages.
  
     For example, this creates a :type:`diagnostic_file` for ``foo.c``
     and identifies it as C source code::
--- 50,56 ----
     (`SARIF v2.1.0 §3.24.10 <https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141790871>`_).
     See
     `SARIF v2.1.0 Appendix J <https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html#_Toc141791197>`_
!    for suggested values for various programming languages.
  
     For example, this creates a :type:`diagnostic_file` for ``foo.c``
     and identifies it as C source code::
diff -Nrcpad gcc-17-20260524/gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst gcc-17-20260531/gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst
*** gcc-17-20260524/gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/libgdiagnostics/tutorial/07-execution-paths.rst	Sun May 31 22:32:06 2026
*************** Tutorial part 7: execution paths
*** 23,29 ****
  A :type:`diagnostic` can optionally have a :type:`diagnostic_execution_path`
  describing a path of execution through code.
  
! For example, let's pretend we're writing a static analyis tool for finding
  bugs in `CPython extension code <https://docs.python.org/3/c-api/index.html>`_.
  
  Let's say we're analyzing this code:
--- 23,29 ----
  A :type:`diagnostic` can optionally have a :type:`diagnostic_execution_path`
  describing a path of execution through code.
  
! For example, let's pretend we're writing a static analysis tool for finding
  bugs in `CPython extension code <https://docs.python.org/3/c-api/index.html>`_.
  
  Let's say we're analyzing this code:
diff -Nrcpad gcc-17-20260524/gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst gcc-17-20260531/gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst
*** gcc-17-20260524/gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/libgdiagnostics/tutorial/08-message-buffers.rst	Sun May 31 22:32:06 2026
*************** In previous examples, we finished a diag
*** 25,31 ****
  to determine the text message of the diagnostic.
  
  Sometimes this approach is inconvenient, such as where you might want to
! build up a message programatically from a series of components.
  Additionally, you might have existing code that uses ``fprintf``, whereas
  :func:`diagnostic_finish` has its
  :doc:`own formatting conventions <../topics/message-formatting>` which are
--- 25,31 ----
  to determine the text message of the diagnostic.
  
  Sometimes this approach is inconvenient, such as where you might want to
! build up a message programmatically from a series of components.
  Additionally, you might have existing code that uses ``fprintf``, whereas
  :func:`diagnostic_finish` has its
  :doc:`own formatting conventions <../topics/message-formatting>` which are
diff -Nrcpad gcc-17-20260524/gcc/doc/match-and-simplify.texi gcc-17-20260531/gcc/doc/match-and-simplify.texi
*** gcc-17-20260524/gcc/doc/match-and-simplify.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/match-and-simplify.texi	Sun May 31 22:32:06 2026
*************** preprocessor directives.
*** 234,240 ****
  
  Here we introduce flags on match expressions.  The flag used
  above, @code{c}, denotes that the expression should
! be also matched commutated.  Thus the above match expression
  is really the following four match expressions:
  
  @smallexample
--- 234,240 ----
  
  Here we introduce flags on match expressions.  The flag used
  above, @code{c}, denotes that the expression should
! be also matched commuted.  Thus the above match expression
  is really the following four match expressions:
  
  @smallexample
diff -Nrcpad gcc-17-20260524/gcc/doc/md.texi gcc-17-20260531/gcc/doc/md.texi
*** gcc-17-20260524/gcc/doc/md.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/md.texi	Sun May 31 22:32:06 2026
*************** A @code{define_insn} is an RTL expressio
*** 117,123 ****
  @enumerate
  @item
  An optional name @var{n}.  When a name is present, the compiler
! automically generates a C++ function @samp{gen_@var{n}} that takes
  the operands of the instruction as arguments and returns the instruction's
  rtx pattern.  The compiler also assigns the instruction a unique code
  @samp{CODE_FOR_@var{n}}, with all such codes belonging to an enum
--- 117,123 ----
  @enumerate
  @item
  An optional name @var{n}.  When a name is present, the compiler
! automatically generates a C++ function @samp{gen_@var{n}} that takes
  the operands of the instruction as arguments and returns the instruction's
  rtx pattern.  The compiler also assigns the instruction a unique code
  @samp{CODE_FOR_@var{n}}, with all such codes belonging to an enum
*************** A signed 12-bit integer constant.
*** 2128,2134 ****
  
  @item Cal
  constant for arithmetic/logical operations.  This might be any constant
! that can be put into a long immediate by the assmbler or linker without
  involving a PIC relocation.
  
  @item K
--- 2128,2134 ----
  
  @item Cal
  constant for arithmetic/logical operations.  This might be any constant
! that can be put into a long immediate by the assembler or linker without
  involving a PIC relocation.
  
  @item K
*************** like code motion can lead to cases where
*** 4289,4297 ****
  alternatives that are not preferred for size, and similarly for speed.
  
  Although @code{define_insn}s can in principle specify the @code{enabled}
! attribute directly, it is often clearer to have subsiduary attributes
  for each architectural feature of interest.  The @code{define_insn}s
! can then use these subsiduary attributes to say which alternatives
  require which features.  The example below does this for @code{cpu_facility}.
  
  E.g. the following two patterns could easily be merged using the @code{enabled}
--- 4289,4297 ----
  alternatives that are not preferred for size, and similarly for speed.
  
  Although @code{define_insn}s can in principle specify the @code{enabled}
! attribute directly, it is often clearer to have subsidiary attributes
  for each architectural feature of interest.  The @code{define_insn}s
! can then use these subsidiary attributes to say which alternatives
  require which features.  The example below does this for @code{cpu_facility}.
  
  E.g. the following two patterns could easily be merged using the @code{enabled}
*************** Similar, for other arithmetic operations
*** 4894,4900 ****
  @mdindex ustrunc@var{m}@var{n}2
  @item @samp{ustrunc@var{m}@var{n}2}
  Truncate the operand 1, and storing the result in operand 0.  There will
! be saturation during the trunction.  The result will be saturated to the
  maximal value of operand 0 type if there is overflow when truncation.  The
  operand 1 must have mode @var{n},  and the operand 0 must have mode @var{m}.
  Both scalar and vector integer modes are allowed.
--- 4894,4900 ----
  @mdindex ustrunc@var{m}@var{n}2
  @item @samp{ustrunc@var{m}@var{n}2}
  Truncate the operand 1, and storing the result in operand 0.  There will
! be saturation during the truncation.  The result will be saturated to the
  maximal value of operand 0 type if there is overflow when truncation.  The
  operand 1 must have mode @var{n},  and the operand 0 must have mode @var{m}.
  Both scalar and vector integer modes are allowed.
*************** target can initialize all of the optabs
*** 6752,6758 ****
  @code{init_sync_libfuncs}.
  For the purposes of C++11 @code{std::atomic::is_lock_free}, it is
  assumed that these library calls do @emph{not} use any kind of
! interruptable locking.
  
  @mdindex sync_add@var{mode}
  @mdindex sync_sub@var{mode}
--- 6752,6758 ----
  @code{init_sync_libfuncs}.
  For the purposes of C++11 @code{std::atomic::is_lock_free}, it is
  assumed that these library calls do @emph{not} use any kind of
! interruptible locking.
  
  @mdindex sync_add@var{mode}
  @mdindex sync_sub@var{mode}
*************** result of a vector boolean can be repres
*** 8121,8141 ****
  @mdindex vec_addsub@var{m}3
  @item @samp{vec_addsub@var{m}3}
  Alternating subtract, add with even lanes doing subtract and odd
! lanes doing addition.  Operands 1 and 2 and the outout operand are vectors
  with mode @var{m}.
  
  @mdindex vec_fmaddsub@var{m}4
  @item @samp{vec_fmaddsub@var{m}4}
  Alternating multiply subtract, add with even lanes doing subtract and odd
  lanes doing addition of the third operand to the multiplication result
! of the first two operands.  Operands 1, 2 and 3 and the outout operand are vectors
  with mode @var{m}.
  
  @mdindex vec_fmsubadd@var{m}4
  @item @samp{vec_fmsubadd@var{m}4}
  Alternating multiply add, subtract with even lanes doing addition and odd
  lanes doing subtraction of the third operand to the multiplication result
! of the first two operands.  Operands 1, 2 and 3 and the outout operand are vectors
  with mode @var{m}.
  
  These instructions are not allowed to @code{FAIL}.
--- 8121,8141 ----
  @mdindex vec_addsub@var{m}3
  @item @samp{vec_addsub@var{m}3}
  Alternating subtract, add with even lanes doing subtract and odd
! lanes doing addition.  Operands 1 and 2 and the output operand are vectors
  with mode @var{m}.
  
  @mdindex vec_fmaddsub@var{m}4
  @item @samp{vec_fmaddsub@var{m}4}
  Alternating multiply subtract, add with even lanes doing subtract and odd
  lanes doing addition of the third operand to the multiplication result
! of the first two operands.  Operands 1, 2 and 3 and the output operand are vectors
  with mode @var{m}.
  
  @mdindex vec_fmsubadd@var{m}4
  @item @samp{vec_fmsubadd@var{m}4}
  Alternating multiply add, subtract with even lanes doing addition and odd
  lanes doing subtraction of the third operand to the multiplication result
! of the first two operands.  Operands 1, 2 and 3 and the output operand are vectors
  with mode @var{m}.
  
  These instructions are not allowed to @code{FAIL}.
*************** The @code{mnemonic} attribute set is not
*** 10779,10785 ****
  instruction string is generated via C code.
  
  An existing @code{mnemonic} attribute set in an insn definition will not
! be overriden by the md file parser.  That way it is possible to
  manually set the instruction mnemonics for the cases where the md file
  parser fails to determine it automatically.
  
--- 10779,10785 ----
  instruction string is generated via C code.
  
  An existing @code{mnemonic} attribute set in an insn definition will not
! be overridden by the md file parser.  That way it is possible to
  manually set the instruction mnemonics for the cases where the md file
  parser fails to determine it automatically.
  
*************** can be quite tedious to describe these f
*** 11411,11417 ****
    [@var{predicate-pattern}]
    "@var{condition}"
    "@var{output-template}"
!   "@var{optional-insn-attribues}")
  @end smallexample
  
  @var{predicate-pattern} is the condition that must be true for the
--- 11411,11417 ----
    [@var{predicate-pattern}]
    "@var{condition}"
    "@var{output-template}"
!   "@var{optional-insn-attributes}")
  @end smallexample
  
  @var{predicate-pattern} is the condition that must be true for the
*************** Attributes are defined using:
*** 12228,12234 ****
  (define_int_attr @var{attr_name} [(@var{int1} "@var{value1}") @dots{} (@var{intn} "@var{valuen}")])
  @end smallexample
  
! In additon to these user-defined attributes, it is possible to use
  @samp{<@var{name}>} to refer to the current expansion of iterator
  @var{name} (such as @var{int1}, @var{int2}, and so on).
  
--- 12228,12234 ----
  (define_int_attr @var{attr_name} [(@var{int1} "@var{value1}") @dots{} (@var{intn} "@var{valuen}")])
  @end smallexample
  
! In addition to these user-defined attributes, it is possible to use
  @samp{<@var{name}>} to refer to the current expansion of iterator
  @var{name} (such as @var{int1}, @var{int2}, and so on).
  
diff -Nrcpad gcc-17-20260524/gcc/doc/optinfo.texi gcc-17-20260531/gcc/doc/optinfo.texi
*** gcc-17-20260524/gcc/doc/optinfo.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/optinfo.texi	Sun May 31 22:32:06 2026
*************** gcc -fopt-info-vec-missed=vec.miss -fopt
*** 242,246 ****
  Here the two output file names @file{vec.miss} and @file{loop.opt} are
  in conflict since only one output file is allowed. In this case, only
  the first option takes effect and the subsequent options are
! ignored. Thus only the @file{vec.miss} is produced which containts
  dumps from the vectorizer about missed opportunities.
--- 242,246 ----
  Here the two output file names @file{vec.miss} and @file{loop.opt} are
  in conflict since only one output file is allowed. In this case, only
  the first option takes effect and the subsequent options are
! ignored. Thus only the @file{vec.miss} is produced which contains
  dumps from the vectorizer about missed opportunities.
diff -Nrcpad gcc-17-20260524/gcc/doc/params.texi gcc-17-20260531/gcc/doc/params.texi
*** gcc-17-20260524/gcc/doc/params.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/params.texi	Sun May 31 22:32:06 2026
*************** loop.  The default value is four.
*** 2073,2079 ****
  
  @paindex aarch64-tag-memory-loop-threshold
  @item aarch64-tag-memory-loop-threshold
! Parameter to control the treshold in number of granules beyond which an
  explicit loop for tagging a memory block is emitted.  The memory block
  is tagged using MTE instructions.
  
--- 2073,2079 ----
  
  @paindex aarch64-tag-memory-loop-threshold
  @item aarch64-tag-memory-loop-threshold
! Parameter to control the threshold in number of granules beyond which an
  explicit loop for tagging a memory block is emitted.  The memory block
  is tagged using MTE instructions.
  
diff -Nrcpad gcc-17-20260524/gcc/doc/poly-int.texi gcc-17-20260531/gcc/doc/poly-int.texi
*** gcc-17-20260524/gcc/doc/poly-int.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/poly-int.texi	Sun May 31 22:32:06 2026
*************** must be a nonnegative integer.  An indet
*** 93,99 ****
  represent the minimum possible runtime value, with @var{c0} specifying
  the value in that case.
  
! For example, when targetting the Arm SVE ISA, the single indeterminate
  represents the number of 128-bit blocks in a vector @emph{beyond the minimum
  length of 128 bits}.  Thus the number of 64-bit doublewords in a vector
  is 2 + 2 * @var{x1}.  If an aggregate has a single SVE vector and 16
--- 93,99 ----
  represent the minimum possible runtime value, with @var{c0} specifying
  the value in that case.
  
! For example, when targeting the Arm SVE ISA, the single indeterminate
  represents the number of 128-bit blocks in a vector @emph{beyond the minimum
  length of 128 bits}.  Thus the number of 64-bit doublewords in a vector
  is 2 + 2 * @var{x1}.  If an aggregate has a single SVE vector and 16
*************** out of range.  Return the result as a
*** 887,893 ****
  @item wi::shwi (@var{value}, @var{precision})
  Return a @code{poly_int} with the same value as @var{value}, but with
  the coefficients converted from @code{HOST_WIDE_INT} to @code{wide_int}.
! @var{precision} specifies the precision of the @code{wide_int} cofficients;
  if this is wider than a @code{HOST_WIDE_INT}, the coefficients of
  @var{value} will be sign-extended to fit.
  
--- 887,893 ----
  @item wi::shwi (@var{value}, @var{precision})
  Return a @code{poly_int} with the same value as @var{value}, but with
  the coefficients converted from @code{HOST_WIDE_INT} to @code{wide_int}.
! @var{precision} specifies the precision of the @code{wide_int} coefficients;
  if this is wider than a @code{HOST_WIDE_INT}, the coefficients of
  @var{value} will be sign-extended to fit.
  
*************** only needs to be given once.  For exampl
*** 1031,1037 ****
  Target-specific code in @file{config/@var{cpu}} only needs to handle
  non-constant @code{poly_int}s if @code{NUM_POLY_INT_COEFFS} is greater
  than one.  For other targets, @code{poly_int} degenerates to a compile-time
! constant and is often interchangable with a normal scalar integer.
  There are two main exceptions:
  
  @itemize
--- 1031,1037 ----
  Target-specific code in @file{config/@var{cpu}} only needs to handle
  non-constant @code{poly_int}s if @code{NUM_POLY_INT_COEFFS} is greater
  than one.  For other targets, @code{poly_int} degenerates to a compile-time
! constant and is often interchangeable with a normal scalar integer.
  There are two main exceptions:
  
  @itemize
diff -Nrcpad gcc-17-20260524/gcc/doc/riscv-ext.texi gcc-17-20260531/gcc/doc/riscv-ext.texi
*** gcc-17-20260524/gcc/doc/riscv-ext.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/riscv-ext.texi	Sun May 31 22:32:06 2026
***************
*** 728,734 ****
  
  @item @samp{xandesperf}
  @tab 5.0
! @tab Andes performace extension
  
  @item @samp{xandesbfhcvt}
  @tab 5.0
--- 728,734 ----
  
  @item @samp{xandesperf}
  @tab 5.0
! @tab Andes performance extension
  
  @item @samp{xandesbfhcvt}
  @tab 5.0
diff -Nrcpad gcc-17-20260524/gcc/doc/rtl.texi gcc-17-20260531/gcc/doc/rtl.texi
*** gcc-17-20260524/gcc/doc/rtl.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/rtl.texi	Sun May 31 22:32:06 2026
*************** using namespace rtl_ssa;
*** 4430,4436 ****
  However, this is purely a matter of taste, and the examples in the rest of
  this section do not require it.
  
! The RTL SSA represention is an optional on-the-side feature that applies
  on top of the normal RTL instructions.  It is currently local to individual
  RTL passes and is not maintained across passes.
  
--- 4430,4436 ----
  However, this is purely a matter of taste, and the examples in the rest of
  this section do not require it.
  
! The RTL SSA representation is an optional on-the-side feature that applies
  on top of the normal RTL instructions.  It is currently local to individual
  RTL passes and is not maintained across passes.
  
*************** structures and the underlying CFG @code{
*** 4520,4526 ****
  @cindex ``real'' instructions, RTL SSA
  @anchor{real RTL SSA insns}
  If a CFG basic block @var{bb} contains an RTL instruction @var{insn},
! the RTL SSA represenation of @var{bb} also contains an RTL SSA representation
  of @var{insn}@footnote{Note that this excludes non-instruction things like
  @code{note}s and @code{barrier}s that also appear in the chain of RTL
  instructions.}.  Within RTL SSA, these instructions are referred to as
--- 4520,4526 ----
  @cindex ``real'' instructions, RTL SSA
  @anchor{real RTL SSA insns}
  If a CFG basic block @var{bb} contains an RTL instruction @var{insn},
! the RTL SSA representation of @var{bb} also contains an RTL SSA representation
  of @var{insn}@footnote{Note that this excludes non-instruction things like
  @code{note}s and @code{barrier}s that also appear in the chain of RTL
  instructions.}.  Within RTL SSA, these instructions are referred to as
diff -Nrcpad gcc-17-20260524/gcc/doc/sourcebuild.texi gcc-17-20260531/gcc/doc/sourcebuild.texi
*** gcc-17-20260524/gcc/doc/sourcebuild.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/sourcebuild.texi	Sun May 31 22:32:06 2026
*************** assembler output, excluding LTO sections
*** 3612,3618 ****
  
  @item scan-assembler-bound @var{regex} @var{cmp} @var{num} [@{ target/xfail @var{selector} @}]
  Passes if @var{regex} is matched @var{cmp} @var{num} times in the test's
! assembler output, excluding LTO sections. @var{cmp} is a comparitor.
  
  @item scan-assembler-dem @var{regex} [@{ target/xfail @var{selector} @}]
  Passes if @var{regex} matches text in the test's demangled assembler output,
--- 3612,3618 ----
  
  @item scan-assembler-bound @var{regex} @var{cmp} @var{num} [@{ target/xfail @var{selector} @}]
  Passes if @var{regex} is matched @var{cmp} @var{num} times in the test's
! assembler output, excluding LTO sections. @var{cmp} is a comparator.
  
  @item scan-assembler-dem @var{regex} [@{ target/xfail @var{selector} @}]
  Passes if @var{regex} matches text in the test's demangled assembler output,
diff -Nrcpad gcc-17-20260524/gcc/doc/tm.texi gcc-17-20260531/gcc/doc/tm.texi
*** gcc-17-20260524/gcc/doc/tm.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/tm.texi	Sun May 31 22:32:06 2026
*************** applied.  @var{type} is either @code{EXC
*** 1039,1045 ****
  @code{EXCESS_PRECISION_TYPE_STANDARD}, or
  @code{EXCESS_PRECISION_TYPE_FLOAT16}.  For
  @code{EXCESS_PRECISION_TYPE_IMPLICIT}, the target should return which
! precision and range operations will be implictly evaluated in regardless
  of the excess precision explicitly added.  For
  @code{EXCESS_PRECISION_TYPE_STANDARD}, 
  @code{EXCESS_PRECISION_TYPE_FLOAT16}, and
--- 1039,1045 ----
  @code{EXCESS_PRECISION_TYPE_STANDARD}, or
  @code{EXCESS_PRECISION_TYPE_FLOAT16}.  For
  @code{EXCESS_PRECISION_TYPE_IMPLICIT}, the target should return which
! precision and range operations will be implicitly evaluated in regardless
  of the excess precision explicitly added.  For
  @code{EXCESS_PRECISION_TYPE_STANDARD}, 
  @code{EXCESS_PRECISION_TYPE_FLOAT16}, and
*************** the target machine.  If you don't define
*** 1695,1701 ****
  
  @defmac LIBGCC2_GNU_PREFIX
  This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target
! hook and should be defined if that hook is overriden to be true.  It
  causes function names in libgcc to be changed to use a @code{__gnu_}
  prefix for their name rather than the default @code{__}.  A port which
  uses this macro should also arrange to use @file{t-gnu-prefix} in
--- 1695,1701 ----
  
  @defmac LIBGCC2_GNU_PREFIX
  This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target
! hook and should be defined if that hook is overridden to be true.  It
  causes function names in libgcc to be changed to use a @code{__gnu_}
  prefix for their name rather than the default @code{__}.  A port which
  uses this macro should also arrange to use @file{t-gnu-prefix} in
*************** definition that is usually appropriate,
*** 4300,4305 ****
--- 4300,4315 ----
  documentation.
  @end deftypefn
  
+ @deftypefn {Target Hook} bool TARGET_OVERALIGNED_STACK_SLOT_REQUIRED (void)
+ This hook should return @code{true} when call-related stack slots whose
+ requested alignment exceeds @code{MAX_SUPPORTED_STACK_ALIGNMENT} need special
+ handling on the target.  This covers stack slots created by call expansion
+ (such as by-reference argument copies and hidden structure return storage) and
+ incoming argument setup.  When @code{true}, GCC may avoid normal fixed stack
+ slots for such cases and use over-allocation plus dynamic address alignment
+ instead.
+ @end deftypefn
+ 
  @deftypefn {Target Hook} rtx TARGET_FUNCTION_INCOMING_ARG (cumulative_args_t @var{ca}, const function_arg_info @var{&arg})
  Define this hook if the caller and callee on the target have different
  views of where arguments are passed.  Also define this hook if there are
*************** Define this to return true if the @code{
*** 4733,4739 ****
  built-in function without the @code{__builtin_} prefix in addition to the
  normal built-in function with the @code{__builtin_} prefix.  The default is
  to only enable built-in functions without the @code{__builtin_} prefix for
! the GNU C langauge.  In strict ANSI/ISO mode, the built-in function without
  the @code{__builtin_} prefix is not enabled.  The argument @code{FUNC} is the
  @code{enum built_in_function} id of the function to be enabled.
  @end deftypefn
--- 4743,4749 ----
  built-in function without the @code{__builtin_} prefix in addition to the
  normal built-in function with the @code{__builtin_} prefix.  The default is
  to only enable built-in functions without the @code{__builtin_} prefix for
! the GNU C language.  In strict ANSI/ISO mode, the built-in function without
  the @code{__builtin_} prefix is not enabled.  The argument @code{FUNC} is the
  @code{enum built_in_function} id of the function to be enabled.
  @end deftypefn
*************** for a given element mode.
*** 6455,6461 ****
  
  The modes returned in @var{modes} should use the smallest element mode
  possible for the vectorization approach that they represent, preferring
! integer modes over floating-poing modes in the event of a tie.  The first
  mode should be the @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE} for its
  element mode.
  
--- 6465,6471 ----
  
  The modes returned in @var{modes} should use the smallest element mode
  possible for the vectorization approach that they represent, preferring
! integer modes over floating-point modes in the event of a tie.  The first
  mode should be the @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE} for its
  element mode.
  
*************** way.
*** 6683,6689 ****
  @deftypefn {Target Hook} rtx TARGET_GOACC_EXPAND_VAR_DECL (tree @var{var})
  This hook, if defined, is used by accelerator target back-ends to expand
  specially handled kinds of @code{VAR_DECL} expressions.  A particular use is
! to place variables with specific attributes inside special accelarator
  memories.  A return value of @code{NULL} indicates that the target does not
  handle this @code{VAR_DECL}, and normal RTL expanding is resumed.
  
--- 6693,6699 ----
  @deftypefn {Target Hook} rtx TARGET_GOACC_EXPAND_VAR_DECL (tree @var{var})
  This hook, if defined, is used by accelerator target back-ends to expand
  specially handled kinds of @code{VAR_DECL} expressions.  A particular use is
! to place variables with specific attributes inside special accelerator
  memories.  A return value of @code{NULL} indicates that the target does not
  handle this @code{VAR_DECL}, and normal RTL expanding is resumed.
  
*************** specially named labels.  The collect2 pr
*** 10105,10111 ****
  labels and generate code to register the frames.
  
  This might be necessary, for instance, if the system linker will not
! place the eh_frames in-between the sentinals from @file{crtstuff.c},
  or if the system linker does garbage collection and sections cannot
  be marked as not to be collected.
  @end defmac
--- 10115,10121 ----
  labels and generate code to register the frames.
  
  This might be necessary, for instance, if the system linker will not
! place the eh_frames in-between the sentinels from @file{crtstuff.c},
  or if the system linker does garbage collection and sections cannot
  be marked as not to be collected.
  @end defmac
*************** hardware count register support for decr
*** 12449,12455 ****
  move IV value from hardware count register to general purpose register
  while doloop IV candidate is used for address IV uses.  It probably takes
  expensive penalty.  This hook allows target owners to define the cost for
! this escpecially for address IV uses.
  The default value is zero.
  @end deftypevr
  
--- 12459,12465 ----
  move IV value from hardware count register to general purpose register
  while doloop IV candidate is used for address IV uses.  It probably takes
  expensive penalty.  This hook allows target owners to define the cost for
! this especially for address IV uses.
  The default value is zero.
  @end deftypevr
  
*************** modes and they have different conditiona
*** 12602,12612 ****
  
  @deftypefn {Target Hook} rtx TARGET_GEN_CCMP_FIRST (rtx_insn **@var{prep_seq}, rtx_insn **@var{gen_seq}, rtx_code @var{code}, tree @var{op0}, tree @var{op1})
  This function prepares to emit a comparison insn for the first compare in a
!  sequence of conditional comparisions.  It returns an appropriate comparison
   with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.
   The insns to prepare the compare are saved in @var{prep_seq} and the compare
   insns are saved in @var{gen_seq}.  They will be emitted when all the
!  compares in the conditional comparision are generated without error.
   @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.
  @end deftypefn
  
--- 12612,12622 ----
  
  @deftypefn {Target Hook} rtx TARGET_GEN_CCMP_FIRST (rtx_insn **@var{prep_seq}, rtx_insn **@var{gen_seq}, rtx_code @var{code}, tree @var{op0}, tree @var{op1})
  This function prepares to emit a comparison insn for the first compare in a
!  sequence of conditional comparisons.  It returns an appropriate comparison
   with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.
   The insns to prepare the compare are saved in @var{prep_seq} and the compare
   insns are saved in @var{gen_seq}.  They will be emitted when all the
!  compares in the conditional comparison are generated without error.
   @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.
  @end deftypefn
  
*************** This function prepares to emit a conditi
*** 12616,12622 ****
   @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.
   The insns to prepare the compare are saved in @var{prep_seq} and the compare
   insns are saved in @var{gen_seq}.  They will be emitted when all the
!  compares in the conditional comparision are generated without error.  The
   @var{prev} expression is the result of a prior call to @code{gen_ccmp_first}
   or @code{gen_ccmp_next}.  It may return @code{NULL} if the combination of
   @var{prev} and this comparison is not supported, otherwise the result must
--- 12626,12632 ----
   @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.
   The insns to prepare the compare are saved in @var{prep_seq} and the compare
   insns are saved in @var{gen_seq}.  They will be emitted when all the
!  compares in the conditional comparison are generated without error.  The
   @var{prev} expression is the result of a prior call to @code{gen_ccmp_first}
   or @code{gen_ccmp_next}.  It may return @code{NULL} if the combination of
   @var{prev} and this comparison is not supported, otherwise the result must
*************** This hook is used to determine the level
*** 12971,12977 ****
   compilation for the second case.
   
   For targets that have no processors that can execute instructions
!  speculatively an alternative implemenation of this hook is available:
   simply redefine this hook to @code{speculation_safe_value_not_needed}
   along with your other target hooks.
  @end deftypefn
--- 12981,12987 ----
   compilation for the second case.
   
   For targets that have no processors that can execute instructions
!  speculatively an alternative implementation of this hook is available:
   simply redefine this hook to @code{speculation_safe_value_not_needed}
   along with your other target hooks.
  @end deftypefn
diff -Nrcpad gcc-17-20260524/gcc/doc/tm.texi.in gcc-17-20260531/gcc/doc/tm.texi.in
*** gcc-17-20260524/gcc/doc/tm.texi.in	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/tm.texi.in	Sun May 31 22:32:06 2026
*************** the target machine.  If you don't define
*** 1430,1436 ****
  
  @defmac LIBGCC2_GNU_PREFIX
  This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target
! hook and should be defined if that hook is overriden to be true.  It
  causes function names in libgcc to be changed to use a @code{__gnu_}
  prefix for their name rather than the default @code{__}.  A port which
  uses this macro should also arrange to use @file{t-gnu-prefix} in
--- 1430,1436 ----
  
  @defmac LIBGCC2_GNU_PREFIX
  This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target
! hook and should be defined if that hook is overridden to be true.  It
  causes function names in libgcc to be changed to use a @code{__gnu_}
  prefix for their name rather than the default @code{__}.  A port which
  uses this macro should also arrange to use @file{t-gnu-prefix} in
*************** the stack.
*** 3358,3363 ****
--- 3358,3365 ----
  
  @hook TARGET_MUST_PASS_IN_STACK
  
+ @hook TARGET_OVERALIGNED_STACK_SLOT_REQUIRED
+ 
  @hook TARGET_FUNCTION_INCOMING_ARG
  
  @hook TARGET_USE_PSEUDO_PIC_REG
*************** specially named labels.  The collect2 pr
*** 6585,6591 ****
  labels and generate code to register the frames.
  
  This might be necessary, for instance, if the system linker will not
! place the eh_frames in-between the sentinals from @file{crtstuff.c},
  or if the system linker does garbage collection and sections cannot
  be marked as not to be collected.
  @end defmac
--- 6587,6593 ----
  labels and generate code to register the frames.
  
  This might be necessary, for instance, if the system linker will not
! place the eh_frames in-between the sentinels from @file{crtstuff.c},
  or if the system linker does garbage collection and sections cannot
  be marked as not to be collected.
  @end defmac
diff -Nrcpad gcc-17-20260524/gcc/doc/tree-ssa.texi gcc-17-20260531/gcc/doc/tree-ssa.texi
*** gcc-17-20260524/gcc/doc/tree-ssa.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/doc/tree-ssa.texi	Sun May 31 22:32:06 2026
*************** a controlled position, and then iteratin
*** 385,391 ****
  optimization can manipulate the stmt when all the uses have been
  processed.  Only the current active @code{imm_use_p} may be altered
  when using an inner @code{FOR_EACH_IMM_USE_ON_STMT} iteration.
! You have to be careful to not inadvertedly modify the immediate
  use list by working on another stmt than the the current @code{stmt} during
  the iteration.  In particular calling @code{update_stmt} is destructive
  on all SSA uses immediate use lists related to the updated stmt.
--- 385,391 ----
  optimization can manipulate the stmt when all the uses have been
  processed.  Only the current active @code{imm_use_p} may be altered
  when using an inner @code{FOR_EACH_IMM_USE_ON_STMT} iteration.
! You have to be careful to not inadvertently modify the immediate
  use list by working on another stmt than the the current @code{stmt} during
  the iteration.  In particular calling @code{update_stmt} is destructive
  on all SSA uses immediate use lists related to the updated stmt.
diff -Nrcpad gcc-17-20260524/gcc/double-int.cc gcc-17-20260531/gcc/double-int.cc
*** gcc-17-20260524/gcc/double-int.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/double-int.cc	Sun May 31 22:32:06 2026
*************** double_int::lrotate (HOST_WIDE_INT count
*** 1246,1252 ****
    return t1 | t2;
  }
  
! /* Rotate A rigth by COUNT places keeping only PREC bits of result.
     Rotate right if COUNT is negative.  */
  
  double_int
--- 1246,1252 ----
    return t1 | t2;
  }
  
! /* Rotate A right by COUNT places keeping only PREC bits of result.
     Rotate right if COUNT is negative.  */
  
  double_int
diff -Nrcpad gcc-17-20260524/gcc/dwarf2asm.cc gcc-17-20260531/gcc/dwarf2asm.cc
*** gcc-17-20260524/gcc/dwarf2asm.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/dwarf2asm.cc	Sun May 31 22:32:06 2026
*************** dw2_asm_output_delta_uleb128 (const char
*** 874,880 ****
    putc ('-', asm_out_file);
    /* dwarf2out.cc might give us a label expression (e.g. .LVL548-1)
       as second argument.  If so, make it a subexpression, to make
!      sure the substraction is done in the right order.  */
    if (strchr (lab2, '-') != NULL)
      {
        putc ('(', asm_out_file);
--- 874,880 ----
    putc ('-', asm_out_file);
    /* dwarf2out.cc might give us a label expression (e.g. .LVL548-1)
       as second argument.  If so, make it a subexpression, to make
!      sure the subtraction is done in the right order.  */
    if (strchr (lab2, '-') != NULL)
      {
        putc ('(', asm_out_file);
diff -Nrcpad gcc-17-20260524/gcc/dwarf2cfi.cc gcc-17-20260531/gcc/dwarf2cfi.cc
*** gcc-17-20260524/gcc/dwarf2cfi.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/dwarf2cfi.cc	Sun May 31 22:32:06 2026
*************** dwarf2out_frame_debug_expr (rtx expr)
*** 2076,2082 ****
  
            /* Rule 18: If stack is aligned, we will use FP as a
  	     reference to represent the address of the stored
! 	     regiser.  */
            if (fde
                && fde->stack_realign
  	      && REG_P (src)
--- 2076,2082 ----
  
            /* Rule 18: If stack is aligned, we will use FP as a
  	     reference to represent the address of the stored
! 	     register.  */
            if (fde
                && fde->stack_realign
  	      && REG_P (src)
diff -Nrcpad gcc-17-20260524/gcc/dwarf2ctf.cc gcc-17-20260531/gcc/dwarf2ctf.cc
*** gcc-17-20260524/gcc/dwarf2ctf.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/dwarf2ctf.cc	Sun May 31 22:32:06 2026
*************** ctf_get_AT_data_member_location (dw_die_
*** 118,124 ****
        else if (attr)
  	field_location = AT_unsigned (attr) * 8;
  
!       /* Otherwise the location is non-existant, e.g. for union members.  */
      }
  
    return field_location;
--- 118,124 ----
        else if (attr)
  	field_location = AT_unsigned (attr) * 8;
  
!       /* Otherwise the location is non-existent, e.g. for union members.  */
      }
  
    return field_location;
*************** handle_ctf_type_tags (ctf_container_ref
*** 908,921 ****
  /* Handle any DW_AT_GNU_annotation on decl DIE by constructing a CTF_K_DECL_TAG
     type for the DW_TAG_GNU_annotation DIE to which it points, if this has not
     been previously constructed.  There may be multiple annotations chained
!    together by further occurances of DW_AT_GNU_annotation in the annoation DIEs
!    themselves, in which case a corresponding CTF_K_DECL_TAG type is created for
!    each.  Unlike TYPE_TAGs, which form a chain, each DECL_TAG individually
     refers directly to the annotated decl, which should be supplied in REF_DTD.
     IDX is the zero-based component index indicating to which function parameter
     or struct or union member the DECL_TAG refers, or (uint32_t) -1 if it refers
     to a function decl or sou itself.
!    Note that because individual DECL_TAGs refer direcly to the annotated decl,
     they cannot be deduplicated across usages.  */
  
  static void
--- 908,921 ----
  /* Handle any DW_AT_GNU_annotation on decl DIE by constructing a CTF_K_DECL_TAG
     type for the DW_TAG_GNU_annotation DIE to which it points, if this has not
     been previously constructed.  There may be multiple annotations chained
!    together by further occurrences of DW_AT_GNU_annotation in the annotation
!    DIEs themselves, in which case a corresponding CTF_K_DECL_TAG type is created
!    for each.  Unlike TYPE_TAGs, which form a chain, each DECL_TAG individually
     refers directly to the annotated decl, which should be supplied in REF_DTD.
     IDX is the zero-based component index indicating to which function parameter
     or struct or union member the DECL_TAG refers, or (uint32_t) -1 if it refers
     to a function decl or sou itself.
!    Note that because individual DECL_TAGs refer directly to the annotated decl,
     they cannot be deduplicated across usages.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/dwarf2out.cc gcc-17-20260531/gcc/dwarf2out.cc
*** gcc-17-20260524/gcc/dwarf2out.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/dwarf2out.cc	Sun May 31 22:32:06 2026
*************** cst_pool_loc_descr (tree loc)
*** 18321,18327 ****
    if (!TREE_ASM_WRITTEN (SYMBOL_REF_DECL (XEXP (rtl, 0))))
      {
        expansion_failed (loc, NULL_RTX,
! 			"CST value in contant pool but not marked.");
        return 0;
      }
    return mem_loc_descriptor (XEXP (rtl, 0), get_address_mode (rtl),
--- 18321,18327 ----
    if (!TREE_ASM_WRITTEN (SYMBOL_REF_DECL (XEXP (rtl, 0))))
      {
        expansion_failed (loc, NULL_RTX,
! 			"CST value in constant pool but not marked.");
        return 0;
      }
    return mem_loc_descriptor (XEXP (rtl, 0), get_address_mode (rtl),
*************** loc_list_for_address_of_addr_expr_of_ind
*** 18356,18362 ****
    if (!INDIRECT_REF_P (obj))
      {
        expansion_failed (obj,
! 			NULL_RTX, "no indirect ref in inner refrence");
        return 0;
      }
    if (!offset && known_eq (bitpos, 0))
--- 18356,18362 ----
    if (!INDIRECT_REF_P (obj))
      {
        expansion_failed (obj,
! 			NULL_RTX, "no indirect ref in inner reference");
        return 0;
      }
    if (!offset && known_eq (bitpos, 0))
*************** resolve_args_picking_1 (dw_loc_descr_ref
*** 18609,18615 ****
  	     one stack slot per argument (0 for the first one, 1 for the second
  	     one, etc.).
  
! 	     The targetted argument number (N) is already set as the operand,
  	     and the number of temporaries can be computed with:
  	       frame_offsets_ - dpi->args_count */
  	  off += frame_offset_ - dpi->args_count;
--- 18609,18615 ----
  	     one stack slot per argument (0 for the first one, 1 for the second
  	     one, etc.).
  
! 	     The targeted argument number (N) is already set as the operand,
  	     and the number of temporaries can be computed with:
  	       frame_offsets_ - dpi->args_count */
  	  off += frame_offset_ - dpi->args_count;
*************** typed_binop_from_tree (enum dwarf_locati
*** 19029,19035 ****
  /* Generate Dwarf location list representing LOC.
     If WANT_ADDRESS is false, expression computing LOC will be computed
     If WANT_ADDRESS is 1, expression computing address of LOC will be returned
!    if WANT_ADDRESS is 2, expression computing address useable in location
       will be returned (i.e. DW_OP_reg can be used
       to refer to register values).
  
--- 19029,19035 ----
  /* Generate Dwarf location list representing LOC.
     If WANT_ADDRESS is false, expression computing LOC will be computed
     If WANT_ADDRESS is 1, expression computing address of LOC will be returned
!    if WANT_ADDRESS is 2, expression computing address usable in location
       will be returned (i.e. DW_OP_reg can be used
       to refer to register values).
  
*************** gen_array_type_die (tree type, dw_die_re
*** 22912,22918 ****
       there is no difference between an array of arrays and a multidimensional
       array.  We don't do this for Ada to remain as close as possible to the
       actual representation, which is especially important against the language
!      flexibilty wrt arrays of variable size.  */
  
    bool collapse_nested_arrays = !is_ada ();
  
--- 22912,22918 ----
       there is no difference between an array of arrays and a multidimensional
       array.  We don't do this for Ada to remain as close as possible to the
       actual representation, which is especially important against the language
!      flexibility wrt arrays of variable size.  */
  
    bool collapse_nested_arrays = !is_ada ();
  
diff -Nrcpad gcc-17-20260524/gcc/dwarf2out.h gcc-17-20260531/gcc/dwarf2out.h
*** gcc-17-20260524/gcc/dwarf2out.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/dwarf2out.h	Sun May 31 22:32:06 2026
*************** struct GTY(()) dw_val_node {
*** 288,294 ****
  	     from DW_OP_addr with a dtp-relative symbol relocation.  */
  	  unsigned int dw_loc_dtprel_v : 1;
  	  /* For DW_OP_pick, DW_OP_dup and DW_OP_over operations: true iff.
! 	     it targets a DWARF prodecure argument.  In this case, it needs to be
  	     relocated according to the current frame offset.  */
  	  unsigned int dw_loc_frame_offset_rel_v : 1;
  	} u1;
--- 288,294 ----
  	     from DW_OP_addr with a dtp-relative symbol relocation.  */
  	  unsigned int dw_loc_dtprel_v : 1;
  	  /* For DW_OP_pick, DW_OP_dup and DW_OP_over operations: true iff.
! 	     it targets a DWARF procedure argument.  In this case, it needs to be
  	     relocated according to the current frame offset.  */
  	  unsigned int dw_loc_frame_offset_rel_v : 1;
  	} u1;
*************** struct GTY((chain_next ("%h.dw_loc_next"
*** 345,351 ****
       from DW_OP_addr with a dtp-relative symbol relocation.  */
  #define dw_loc_dtprel dw_loc_oprnd1.u.u1.dw_loc_dtprel_v
    /* For DW_OP_pick, DW_OP_dup and DW_OP_over operations: true iff.
!      it targets a DWARF prodecure argument.  In this case, it needs to be
       relocated according to the current frame offset.  */
  #define dw_loc_frame_offset_rel dw_loc_oprnd1.u.u1.dw_loc_frame_offset_rel_v
  #define dw_loc_addr dw_loc_oprnd2.u.u2
--- 345,351 ----
       from DW_OP_addr with a dtp-relative symbol relocation.  */
  #define dw_loc_dtprel dw_loc_oprnd1.u.u1.dw_loc_dtprel_v
    /* For DW_OP_pick, DW_OP_dup and DW_OP_over operations: true iff.
!      it targets a DWARF procedure argument.  In this case, it needs to be
       relocated according to the current frame offset.  */
  #define dw_loc_frame_offset_rel dw_loc_oprnd1.u.u1.dw_loc_frame_offset_rel_v
  #define dw_loc_addr dw_loc_oprnd2.u.u2
diff -Nrcpad gcc-17-20260524/gcc/emit-rtl.h gcc-17-20260531/gcc/emit-rtl.h
*** gcc-17-20260524/gcc/emit-rtl.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/emit-rtl.h	Sun May 31 22:32:06 2026
*************** struct GTY(()) rtl_data {
*** 89,95 ****
    rtx return_rtx;
  
    /* Vector of initial-value pairs.  Each pair consists of a pseudo
!      register of approprite mode that stores the initial value a hard
       register REGNO, and that hard register itself.  */
    /* ??? This could be a VEC but there is currently no way to define an
  	 opaque VEC type.  */
--- 89,95 ----
    rtx return_rtx;
  
    /* Vector of initial-value pairs.  Each pair consists of a pseudo
!      register of appropriate mode that stores the initial value a hard
       register REGNO, and that hard register itself.  */
    /* ??? This could be a VEC but there is currently no way to define an
  	 opaque VEC type.  */
*************** extern rtx adjust_automodify_address_1 (
*** 527,533 ****
     how reload pseudos are created.  */
  struct address_reload_context
  {
!   /* Can be overriden by derived classes.  */
    virtual rtx get_reload_reg () const { return gen_reg_rtx (Pmode); }
  
    /* Emit insns to reload VALUE into a new register.  VALUE is an
--- 527,533 ----
     how reload pseudos are created.  */
  struct address_reload_context
  {
!   /* Can be overridden by derived classes.  */
    virtual rtx get_reload_reg () const { return gen_reg_rtx (Pmode); }
  
    /* Emit insns to reload VALUE into a new register.  VALUE is an
diff -Nrcpad gcc-17-20260524/gcc/explow.cc gcc-17-20260531/gcc/explow.cc
*** gcc-17-20260524/gcc/explow.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/explow.cc	Sun May 31 22:32:06 2026
*************** promote_function_mode (const_tree type,
*** 852,860 ****
  	return mode;
      }
  
!   switch (TREE_CODE (type))
      {
-     case BITINT_TYPE:
        if (TYPE_MODE (type) == BLKmode)
  	return mode;
  
--- 852,859 ----
  	return mode;
      }
  
!   if (BITINT_TYPE_P (type))
      {
        if (TYPE_MODE (type) == BLKmode)
  	return mode;
  
*************** promote_function_mode (const_tree type,
*** 865,874 ****
  
        if (!info.extended)
  	return mode;
!       /* FALLTHRU */
      case INTEGER_TYPE:   case ENUMERAL_TYPE:   case BOOLEAN_TYPE:
      case REAL_TYPE:      case OFFSET_TYPE:     case FIXED_POINT_TYPE:
!     case POINTER_TYPE:   case REFERENCE_TYPE:
        return targetm.calls.promote_function_mode (type, mode, punsignedp, funtype,
  						  for_return);
  
--- 864,875 ----
  
        if (!info.extended)
  	return mode;
!     }
!   switch (TREE_CODE (type))
!     {
      case INTEGER_TYPE:   case ENUMERAL_TYPE:   case BOOLEAN_TYPE:
      case REAL_TYPE:      case OFFSET_TYPE:     case FIXED_POINT_TYPE:
!     case POINTER_TYPE:   case REFERENCE_TYPE:  case BITINT_TYPE:
        return targetm.calls.promote_function_mode (type, mode, punsignedp, funtype,
  						  for_return);
  
*************** promote_mode (const_tree type ATTRIBUTE_
*** 903,911 ****
    code = TREE_CODE (type);
    unsignedp = *punsignedp;
  
!   switch (code)
      {
-     case BITINT_TYPE:
        if (TYPE_MODE (type) == BLKmode)
  	return mode;
  
--- 904,911 ----
    code = TREE_CODE (type);
    unsignedp = *punsignedp;
  
!   if (BITINT_TYPE_P (type))
      {
        if (TYPE_MODE (type) == BLKmode)
  	return mode;
  
*************** promote_mode (const_tree type ATTRIBUTE_
*** 916,924 ****
  
        if (!info.extended)
  	return mode;
!       /* FALLTHRU */
      case INTEGER_TYPE:   case ENUMERAL_TYPE:   case BOOLEAN_TYPE:
      case REAL_TYPE:      case OFFSET_TYPE:     case FIXED_POINT_TYPE:
        /* Values of these types always have scalar mode.  */
        smode = as_a <scalar_mode> (mode);
        PROMOTE_MODE (smode, unsignedp, type);
--- 916,927 ----
  
        if (!info.extended)
  	return mode;
!     }
!   switch (code)
!     {
      case INTEGER_TYPE:   case ENUMERAL_TYPE:   case BOOLEAN_TYPE:
      case REAL_TYPE:      case OFFSET_TYPE:     case FIXED_POINT_TYPE:
+     case BITINT_TYPE:
        /* Values of these types always have scalar mode.  */
        smode = as_a <scalar_mode> (mode);
        PROMOTE_MODE (smode, unsignedp, type);
*************** anti_adjust_stack_and_probe (rtx size, b
*** 2202,2208 ****
  {
    /* We skip the probe for the first interval + a small dope of 4 words and
       probe that many bytes past the specified size to maintain a protection
!      area at the botton of the stack.  */
    const int dope = 4 * UNITS_PER_WORD;
  
    /* First ensure SIZE is Pmode.  */
--- 2205,2211 ----
  {
    /* We skip the probe for the first interval + a small dope of 4 words and
       probe that many bytes past the specified size to maintain a protection
!      area at the bottom of the stack.  */
    const int dope = 4 * UNITS_PER_WORD;
  
    /* First ensure SIZE is Pmode.  */
diff -Nrcpad gcc-17-20260524/gcc/explow.h gcc-17-20260531/gcc/explow.h
*** gcc-17-20260524/gcc/explow.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/explow.h	Sun May 31 22:32:06 2026
*************** extern void anti_adjust_stack_and_probe
*** 78,84 ****
  extern void anti_adjust_stack_and_probe_stack_clash (rtx);
  
  /* Support for building allocation/probing loops for stack-clash
!    protection of dyamically allocated stack space.  */
  extern void compute_stack_clash_protection_loop_data (rtx *, rtx *, rtx *,
  						      HOST_WIDE_INT *, rtx);
  extern void emit_stack_clash_protection_probe_loop_start (rtx *, rtx *,
--- 78,84 ----
  extern void anti_adjust_stack_and_probe_stack_clash (rtx);
  
  /* Support for building allocation/probing loops for stack-clash
!    protection of dynamically allocated stack space.  */
  extern void compute_stack_clash_protection_loop_data (rtx *, rtx *, rtx *,
  						      HOST_WIDE_INT *, rtx);
  extern void emit_stack_clash_protection_probe_loop_start (rtx *, rtx *,
diff -Nrcpad gcc-17-20260524/gcc/expmed.cc gcc-17-20260531/gcc/expmed.cc
*** gcc-17-20260524/gcc/expmed.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/expmed.cc	Sun May 31 22:32:06 2026
*************** store_bit_field_using_insv (const extrac
*** 663,669 ****
    /* There are similar overflow check at the start of store_bit_field_1,
       but that only check the situation where the field lies completely
       outside the register, while there do have situation where the field
!      lies partialy in the register, we need to adjust bitsize for this
       partial overflow situation.  Without this fix, pr48335-2.c on big-endian
       will broken on those arch support bit insert instruction, like arm, aarch64
       etc.  */
--- 663,669 ----
    /* There are similar overflow check at the start of store_bit_field_1,
       but that only check the situation where the field lies completely
       outside the register, while there do have situation where the field
!      lies partially in the register, we need to adjust bitsize for this
       partial overflow situation.  Without this fix, pr48335-2.c on big-endian
       will broken on those arch support bit insert instruction, like arm, aarch64
       etc.  */
*************** expand_mult (machine_mode mode, rtx op0,
*** 3545,3551 ****
  
        /* If mode is integer vector mode, check if the backend supports
  	 vector lshift (by scalar or vector) at all.  If not, we can't use
! 	 synthetized multiply.  */
        if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
  	  && optab_handler (vashl_optab, mode) == CODE_FOR_nothing
  	  && optab_handler (ashl_optab, mode) == CODE_FOR_nothing)
--- 3545,3551 ----
  
        /* If mode is integer vector mode, check if the backend supports
  	 vector lshift (by scalar or vector) at all.  If not, we can't use
! 	 synthesized multiply.  */
        if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
  	  && optab_handler (vashl_optab, mode) == CODE_FOR_nothing
  	  && optab_handler (ashl_optab, mode) == CODE_FOR_nothing)
*************** emit_store_flag_force (rtx target, enum
*** 6309,6315 ****
  }
  
  /* Expand a vector (left) rotate of MODE of X by an immediate AMT as a vector
!    permute operation.  Emit code to put the result in DST if successfull and
     return it.  Otherwise return NULL.  This is intended to implement vector
     rotates by byte amounts using vector permutes when the target does not offer
     native vector rotate operations.  */
--- 6309,6315 ----
  }
  
  /* Expand a vector (left) rotate of MODE of X by an immediate AMT as a vector
!    permute operation.  Emit code to put the result in DST if successful and
     return it.  Otherwise return NULL.  This is intended to implement vector
     rotates by byte amounts using vector permutes when the target does not offer
     native vector rotate operations.  */
*************** equivalent_cmp_code (enum rtx_code code)
*** 6384,6390 ****
      }
  }
  
! /* Choose the more appropiate immediate in scalar integer comparisons.  The
     purpose of this is to end up with an immediate which can be loaded into a
     register in fewer moves, if possible.
  
--- 6384,6390 ----
      }
  }
  
! /* Choose the more appropriate immediate in scalar integer comparisons.  The
     purpose of this is to end up with an immediate which can be loaded into a
     register in fewer moves, if possible.
  
diff -Nrcpad gcc-17-20260524/gcc/expr.cc gcc-17-20260531/gcc/expr.cc
*** gcc-17-20260524/gcc/expr.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/expr.cc	Sun May 31 22:32:06 2026
*************** class op_by_pieces_d
*** 1383,1389 ****
    /* The type of operation that we're performing.  */
    by_pieces_operation m_op;
  
!   /* Virtual functions, overriden by derived classes for the specific
       operation.  */
    virtual void generate (rtx, rtx, machine_mode) = 0;
    virtual bool prepare_mode (machine_mode, unsigned int) = 0;
--- 1383,1389 ----
    /* The type of operation that we're performing.  */
    by_pieces_operation m_op;
  
!   /* Virtual functions, overridden by derived classes for the specific
       operation.  */
    virtual void generate (rtx, rtx, machine_mode) = 0;
    virtual bool prepare_mode (machine_mode, unsigned int) = 0;
*************** op_by_pieces_d::run ()
*** 1565,1571 ****
  	  if (gap > 0)
  	    {
  	      /* If size of MODE > M_LEN, generate the last operation
! 		 in MODE for the remaining bytes with ovelapping memory
  		 from the previois operation.  */
  	      if (m_reverse)
  		m_offset += gap;
--- 1565,1571 ----
  	  if (gap > 0)
  	    {
  	      /* If size of MODE > M_LEN, generate the last operation
! 		 in MODE for the remaining bytes with overlapping memory
  		 from the previois operation.  */
  	      if (m_reverse)
  		m_offset += gap;
*************** use_group_regs (rtx *call_fusage, rtx re
*** 3817,3823 ****
  }
  
  /* Return the defining gimple statement for SSA_NAME NAME if it is an
!    assigment and the code of the expresion on the RHS is CODE.  Return
     NULL otherwise.  */
  
  static gimple *
--- 3817,3823 ----
  }
  
  /* Return the defining gimple statement for SSA_NAME NAME if it is an
!    assignment and the code of the expression on the RHS is CODE.  Return
     NULL otherwise.  */
  
  static gimple *
*************** get_def_for_expr (tree name, enum tree_c
*** 3838,3844 ****
  }
  
  /* Return the defining gimple statement for SSA_NAME NAME if it is an
!    assigment and the class of the expresion on the RHS is CLASS.  Return
     NULL otherwise.  */
  
  static gimple *
--- 3838,3844 ----
  }
  
  /* Return the defining gimple statement for SSA_NAME NAME if it is an
!    assignment and the class of the expression on the RHS is CLASS.  Return
     NULL otherwise.  */
  
  static gimple *
*************** emit_move_insn (rtx x, rtx y)
*** 4660,4666 ****
    auto candidate_mem_p = [&](machine_mode innermode, rtx mem) {
      return (!targetm.can_change_mode_class (innermode, GET_MODE (mem), ALL_REGS)
  	    && !push_operand (mem, GET_MODE (mem))
! 	    /* Not a candiate if innermode requires too much alignment.  */
  	    && (MEM_ALIGN (mem) >= GET_MODE_ALIGNMENT (innermode)
  		|| targetm.slow_unaligned_access (GET_MODE (mem),
  						  MEM_ALIGN (mem))
--- 4660,4666 ----
    auto candidate_mem_p = [&](machine_mode innermode, rtx mem) {
      return (!targetm.can_change_mode_class (innermode, GET_MODE (mem), ALL_REGS)
  	    && !push_operand (mem, GET_MODE (mem))
! 	    /* Not a candidate if innermode requires too much alignment.  */
  	    && (MEM_ALIGN (mem) >= GET_MODE_ALIGNMENT (innermode)
  		|| targetm.slow_unaligned_access (GET_MODE (mem),
  						  MEM_ALIGN (mem))
*************** expand_expr_real (tree exp, rtx target,
*** 9621,9627 ****
  }
  
  /* Try to expand the conditional expression which is represented by
!    TREEOP0 ? TREEOP1 : TREEOP2 using conditonal moves.  If it succeeds
     return the rtl reg which represents the result.  Otherwise return
     NULL_RTX.  */
  
--- 9621,9627 ----
  }
  
  /* Try to expand the conditional expression which is represented by
!    TREEOP0 ? TREEOP1 : TREEOP2 using conditional moves.  If it succeeds
     return the rtl reg which represents the result.  Otherwise return
     NULL_RTX.  */
  
*************** expand_expr_real_gassign (gassign *g, rt
*** 11337,11343 ****
      case GIMPLE_BINARY_RHS:
        ops.op1 = gimple_assign_rhs2 (g);
  
!       /* Try to expand conditonal compare.  */
        if (targetm.have_ccmp ())
  	{
  	  gcc_checking_assert (targetm.gen_ccmp_next != NULL);
--- 11337,11343 ----
      case GIMPLE_BINARY_RHS:
        ops.op1 = gimple_assign_rhs2 (g);
  
!       /* Try to expand conditional compare.  */
        if (targetm.have_ccmp ())
  	{
  	  gcc_checking_assert (targetm.gen_ccmp_next != NULL);
*************** expand_expr_real_1 (tree exp, rtx target
*** 11397,11403 ****
       internally extend after arithmetic operations, we can avoid doing that
       when reading from SSA_NAMEs of vars.  */
  #define EXTEND_BITINT(expr) \
!   ((TREE_CODE (type) == BITINT_TYPE					\
      && !bitint_extended							\
      && reduce_bit_field							\
      && mode != BLKmode							\
--- 11397,11403 ----
       internally extend after arithmetic operations, we can avoid doing that
       when reading from SSA_NAMEs of vars.  */
  #define EXTEND_BITINT(expr) \
!   ((BITINT_TYPE_P (type)						\
      && !bitint_extended							\
      && reduce_bit_field							\
      && mode != BLKmode							\
*************** expand_expr_real_1 (tree exp, rtx target
*** 11410,11416 ****
    type = TREE_TYPE (exp);
    mode = TYPE_MODE (type);
    unsignedp = TYPE_UNSIGNED (type);
!   if (TREE_CODE (type) == BITINT_TYPE && bitint_extended == -1)
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
--- 11410,11416 ----
    type = TREE_TYPE (exp);
    mode = TYPE_MODE (type);
    unsignedp = TYPE_UNSIGNED (type);
!   if (BITINT_TYPE_P (type) && bitint_extended == -1)
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
*************** expand_expr_real_1 (tree exp, rtx target
*** 11755,11761 ****
  
      case INTEGER_CST:
        {
! 	if (TREE_CODE (type) == BITINT_TYPE)
  	  {
  	    unsigned int prec = TYPE_PRECISION (type);
  	    struct bitint_info info;
--- 11755,11761 ----
  
      case INTEGER_CST:
        {
! 	if (BITINT_TYPE_P (type))
  	  {
  	    unsigned int prec = TYPE_PRECISION (type);
  	    struct bitint_info info;
*************** maybe_optimize_sub_cmp_0 (enum tree_code
*** 13713,13724 ****
    if (!TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (treeop0)))
      return;
  
-   if (issue_strict_overflow_warning (WARN_STRICT_OVERFLOW_COMPARISON))
-     warning_at (gimple_location (stmt), OPT_Wstrict_overflow,
- 		"assuming signed overflow does not occur when "
- 		"simplifying %<X - Y %s 0%> to %<X %s Y%>",
- 		op_symbol_code (code), op_symbol_code (code));
- 
    *arg0 = treeop0;
    *arg1 = treeop1;
  }
--- 13713,13718 ----
diff -Nrcpad gcc-17-20260524/gcc/ext-dce.cc gcc-17-20260531/gcc/ext-dce.cc
*** gcc-17-20260524/gcc/ext-dce.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ext-dce.cc	Sun May 31 22:32:06 2026
*************** ext_dce_try_optimize_extension (rtx_insn
*** 487,492 ****
--- 487,538 ----
    rtx src = SET_SRC (set);
    rtx inner = XEXP (src, 0);
  
+   /* For sign-extending loads from memory, try to replace with a
+      zero-extending load when the upper bits are dead.  E.g. on RISC-V
+      this turns lh+zext.h into just lhu.  */
+   if (MEM_P (inner) && GET_CODE (src) == SIGN_EXTEND)
+     {
+       if (dump_file)
+ 	{
+ 	  fprintf (dump_file, "Processing insn:\n");
+ 	  dump_insn_slim (dump_file, insn);
+ 	  fprintf (dump_file, "Trying to narrow sign_extend to zero_extend:\n");
+ 	  print_rtl_single (dump_file, SET_SRC (set));
+ 	}
+ 
+       if (!dbg_cnt (::ext_dce))
+ 	{
+ 	  if (dump_file)
+ 	    fprintf (dump_file, "Rejected due to debug counter.\n");
+ 	  return;
+ 	}
+ 
+       rtx new_pattern = gen_rtx_ZERO_EXTEND (GET_MODE (src), inner);
+       int ok = validate_change (insn, &SET_SRC (set), new_pattern, false);
+ 
+       rtx x = SET_DEST (set);
+       while (SUBREG_P (x) || GET_CODE (x) == ZERO_EXTRACT)
+ 	x = XEXP (x, 0);
+ 
+       gcc_assert (REG_P (x));
+       if (ok)
+ 	{
+ 	  bitmap_set_bit (changed_pseudos, REGNO (x));
+ 	  remove_reg_equal_equiv_notes (insn, false);
+ 	}
+ 
+       if (dump_file)
+ 	{
+ 	  if (ok)
+ 	    fprintf (dump_file, "Successfully transformed to:\n");
+ 	  else
+ 	    fprintf (dump_file, "Failed transformation to:\n");
+ 	  print_rtl_single (dump_file, new_pattern);
+ 	  fprintf (dump_file, "\n");
+ 	}
+       return;
+     }
+ 
    /* Avoid (subreg (mem)) and other constructs which may be valid RTL, but
       not useful for this optimization.  */
    if (!(REG_P (inner) || (SUBREG_P (inner) && REG_P (SUBREG_REG (inner)))))
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 1166,1172 ****
  		  && GET_MODE_BITSIZE (outer_mode) <= HOST_BITS_PER_WIDE_INT)
  		{
  		  /* So we have a right shift that could correspond to
! 		     the second in a pair impementing QI, HI or SI -> DI
  		     extension.  See if we can find the left shift.  For
  		     now, just look one real instruction back.  */
  		  rtx_insn *prev_insn = prev_nonnote_nondebug_insn_bb (insn);
--- 1212,1218 ----
  		  && GET_MODE_BITSIZE (outer_mode) <= HOST_BITS_PER_WIDE_INT)
  		{
  		  /* So we have a right shift that could correspond to
! 		     the second in a pair implementing QI, HI or SI -> DI
  		     extension.  See if we can find the left shift.  For
  		     now, just look one real instruction back.  */
  		  rtx_insn *prev_insn = prev_nonnote_nondebug_insn_bb (insn);
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 1353,1359 ****
  	    bitmap_set_bit (livenow, rn + 1);
  	  if (size > 16)
  	    bitmap_set_bit (livenow, rn + 2);
! 	  if (size >= 32)
  	    bitmap_set_bit (livenow, rn + 3);
  	  iter.skip_subrtxes ();
  	}
--- 1399,1405 ----
  	    bitmap_set_bit (livenow, rn + 1);
  	  if (size > 16)
  	    bitmap_set_bit (livenow, rn + 2);
! 	  if (size > 32)
  	    bitmap_set_bit (livenow, rn + 3);
  	  iter.skip_subrtxes ();
  	}
*************** ext_dce_process_bb (basic_block bb)
*** 1412,1418 ****
  	  if (!FAKE_CALL_P (insn))
  	    bitmap_set_range (livenow, STACK_POINTER_REGNUM * 4, 4);
  
! 	  /* If this is not a call to a const fucntion, then assume it
  	     can read any global register.  */
  	  if (!RTL_CONST_CALL_P (insn))
  	    for (unsigned i = 0; i < FIRST_PSEUDO_REGISTER; i++)
--- 1458,1464 ----
  	  if (!FAKE_CALL_P (insn))
  	    bitmap_set_range (livenow, STACK_POINTER_REGNUM * 4, 4);
  
! 	  /* If this is not a call to a const function, then assume it
  	     can read any global register.  */
  	  if (!RTL_CONST_CALL_P (insn))
  	    for (unsigned i = 0; i < FIRST_PSEUDO_REGISTER; i++)
*************** ext_dce_rd_transfer_n (int bb_index)
*** 1677,1683 ****
  /* Dummy function for the df_simple_dataflow API.  */
  static bool ext_dce_rd_confluence_n (edge) { return true; }
  
! /* Use lifetime analyis to identify extensions that set bits that
     are never read.  Turn such extensions into SUBREGs instead which
     can often be propagated away.  */
  
--- 1723,1729 ----
  /* Dummy function for the df_simple_dataflow API.  */
  static bool ext_dce_rd_confluence_n (edge) { return true; }
  
! /* Use lifetime analysis to identify extensions that set bits that
     are never read.  Turn such extensions into SUBREGs instead which
     can often be propagated away.  */
  
diff -Nrcpad gcc-17-20260524/gcc/fibonacci_heap.h gcc-17-20260531/gcc/fibonacci_heap.h
*** gcc-17-20260524/gcc/fibonacci_heap.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fibonacci_heap.h	Sun May 31 22:32:06 2026
*************** private:
*** 258,264 ****
    /* Remove NODE from PARENT's child list.  */
    void cut (fibonacci_node_t *node, fibonacci_node_t *parent);
  
!   /* Process cut of node Y and do it recursivelly.  */
    void cascading_cut (fibonacci_node_t *y);
  
    /* Extract minimum node from the heap.  */
--- 258,264 ----
    /* Remove NODE from PARENT's child list.  */
    void cut (fibonacci_node_t *node, fibonacci_node_t *parent);
  
!   /* Process cut of node Y and do it recursively.  */
    void cascading_cut (fibonacci_node_t *y);
  
    /* Extract minimum node from the heap.  */
*************** private:
*** 281,287 ****
  
    /* Allocator used to hold nodes.  */
    pool_allocator *m_allocator;
!   /* True if alocator is owned by the current heap only.  */
    bool m_own_allocator;
  };
  
--- 281,287 ----
  
    /* Allocator used to hold nodes.  */
    pool_allocator *m_allocator;
!   /* True if allocator is owned by the current heap only.  */
    bool m_own_allocator;
  };
  
*************** fibonacci_heap<K,V>::cut (fibonacci_node
*** 569,575 ****
    node->m_mark = 0;
  }
  
! /* Process cut of node Y and do it recursivelly.  */
  
  template<class K, class V>
  void
--- 569,575 ----
    node->m_mark = 0;
  }
  
! /* Process cut of node Y and do it recursively.  */
  
  template<class K, class V>
  void
diff -Nrcpad gcc-17-20260524/gcc/flags.h gcc-17-20260531/gcc/flags.h
*** gcc-17-20260524/gcc/flags.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/flags.h	Sun May 31 22:32:06 2026
*************** extern class target_flag_state *this_tar
*** 113,121 ****
  #define abi_version_at_least(N) \
    (flag_abi_version == 0 || flag_abi_version >= (N))
  
- /* Whether to emit an overflow warning whose code is C.  */
- #define issue_strict_overflow_warning(c) (warn_strict_overflow >= (int) (c))
- 
  #endif /* ! in target library */
  
  #endif /* ! GCC_FLAGS_H */
--- 113,118 ----
diff -Nrcpad gcc-17-20260524/gcc/fold-const-call.cc gcc-17-20260531/gcc/fold-const-call.cc
*** gcc-17-20260524/gcc/fold-const-call.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fold-const-call.cc	Sun May 31 22:32:06 2026
*************** fold_const_call_ss (wide_int *result, co
*** 1055,1061 ****
  	int tmp;
  	if (wi::ne_p (arg, 0))
  	  tmp = wi::clz (arg);
! 	else if (TREE_CODE (arg_type) == BITINT_TYPE)
  	  tmp = TYPE_PRECISION (arg_type);
  	else if (!CLZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (arg_type),
  					     tmp))
--- 1055,1061 ----
  	int tmp;
  	if (wi::ne_p (arg, 0))
  	  tmp = wi::clz (arg);
! 	else if (BITINT_TYPE_P (arg_type))
  	  tmp = TYPE_PRECISION (arg_type);
  	else if (!CLZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (arg_type),
  					     tmp))
*************** fold_const_call_ss (wide_int *result, co
*** 1070,1076 ****
  	int tmp;
  	if (wi::ne_p (arg, 0))
  	  tmp = wi::ctz (arg);
! 	else if (TREE_CODE (arg_type) == BITINT_TYPE)
  	  tmp = TYPE_PRECISION (arg_type);
  	else if (!CTZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (arg_type),
  					     tmp))
--- 1070,1076 ----
  	int tmp;
  	if (wi::ne_p (arg, 0))
  	  tmp = wi::ctz (arg);
! 	else if (BITINT_TYPE_P (arg_type))
  	  tmp = TYPE_PRECISION (arg_type);
  	else if (!CTZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (arg_type),
  					     tmp))
diff -Nrcpad gcc-17-20260524/gcc/fold-const.cc gcc-17-20260531/gcc/fold-const.cc
*** gcc-17-20260524/gcc/fold-const.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fold-const.cc	Sun May 31 22:32:06 2026
*************** protected_set_expr_location_unshare (tre
*** 264,368 ****
      }
    return x;
  }
- 
- /* This is nonzero if we should defer warnings about undefined
-    overflow.  This facility exists because these warnings are a
-    special case.  The code to estimate loop iterations does not want
-    to issue any warnings, since it works with expressions which do not
-    occur in user code.  Various bits of cleanup code call fold(), but
-    only use the result if it has certain characteristics (e.g., is a
-    constant); that code only wants to issue a warning if the result is
-    used.  */
- 
- static int fold_deferring_overflow_warnings;
- 
- /* If a warning about undefined overflow is deferred, this is the
-    warning.  Note that this may cause us to turn two warnings into
-    one, but that is fine since it is sufficient to only give one
-    warning per expression.  */
- 
- static const char* fold_deferred_overflow_warning;
- 
- /* If a warning about undefined overflow is deferred, this is the
-    level at which the warning should be emitted.  */
- 
- static enum warn_strict_overflow_code fold_deferred_overflow_code;
- 
- /* Start deferring overflow warnings.  We could use a stack here to
-    permit nested calls, but at present it is not necessary.  */
- 
- void
- fold_defer_overflow_warnings (void)
- {
-   ++fold_deferring_overflow_warnings;
- }
- 
- /* Stop deferring overflow warnings.  If there is a pending warning,
-    and ISSUE is true, then issue the warning if appropriate.  STMT is
-    the statement with which the warning should be associated (used for
-    location information); STMT may be NULL.  CODE is the level of the
-    warning--a warn_strict_overflow_code value.  This function will use
-    the smaller of CODE and the deferred code when deciding whether to
-    issue the warning.  CODE may be zero to mean to always use the
-    deferred code.  */
- 
- void
- fold_undefer_overflow_warnings (bool issue, const gimple *stmt, int code)
- {
-   const char *warnmsg;
-   location_t locus;
- 
-   gcc_assert (fold_deferring_overflow_warnings > 0);
-   --fold_deferring_overflow_warnings;
-   if (fold_deferring_overflow_warnings > 0)
-     {
-       if (fold_deferred_overflow_warning != NULL
- 	  && code != 0
- 	  && code < (int) fold_deferred_overflow_code)
- 	fold_deferred_overflow_code = (enum warn_strict_overflow_code) code;
-       return;
-     }
- 
-   warnmsg = fold_deferred_overflow_warning;
-   fold_deferred_overflow_warning = NULL;
- 
-   if (!issue || warnmsg == NULL)
-     return;
- 
-   if (warning_suppressed_p (stmt, OPT_Wstrict_overflow))
-     return;
- 
-   /* Use the smallest code level when deciding to issue the
-      warning.  */
-   if (code == 0 || code > (int) fold_deferred_overflow_code)
-     code = fold_deferred_overflow_code;
- 
-   if (!issue_strict_overflow_warning (code))
-     return;
- 
-   if (stmt == NULL)
-     locus = input_location;
-   else
-     locus = gimple_location (stmt);
-   warning_at (locus, OPT_Wstrict_overflow, "%s", warnmsg);
- }
- 
- /* Stop deferring overflow warnings, ignoring any deferred
-    warnings.  */
- 
- void
- fold_undefer_and_ignore_overflow_warnings (void)
- {
-   fold_undefer_overflow_warnings (false, NULL, 0);
- }
- 
- /* Whether we are deferring overflow warnings.  */
- 
- bool
- fold_deferring_overflow_warnings_p (void)
- {
-   return fold_deferring_overflow_warnings > 0;
- }
  
  /* Return true if the built-in mathematical function specified by CODE
     is odd, i.e. -f(x) == f(-x).  */
--- 264,269 ----
*************** combine_comparisons (location_t loc,
*** 3173,3179 ****
     compares equal.
  
     Unless OEP_MATCH_SIDE_EFFECTS is set, the function returns false on
!    any operand with side effect.  This is unnecesarily conservative in the
     case we know that arg0 and arg1 are in disjoint code paths (such as in
     ?: operator).  In addition OEP_MATCH_SIDE_EFFECTS is used when comparing
     addresses with TREE_CONSTANT flag set so we know that &var == &var
--- 3074,3080 ----
     compares equal.
  
     Unless OEP_MATCH_SIDE_EFFECTS is set, the function returns false on
!    any operand with side effect.  This is unnecessarily conservative in the
     case we know that arg0 and arg1 are in disjoint code paths (such as in
     ?: operator).  In addition OEP_MATCH_SIDE_EFFECTS is used when comparing
     addresses with TREE_CONSTANT flag set so we know that &var == &var
*************** operand_compare::operand_equal_p (tree t
*** 3356,3362 ****
  	return false;
      }
  
!   /* When not checking adddresses, this is needed for conversions and for
       COMPONENT_REF.  Might as well play it safe and always test this.  */
    if (TREE_CODE (type0) == ERROR_MARK
        || TREE_CODE (type1) == ERROR_MARK
--- 3257,3263 ----
  	return false;
      }
  
!   /* When not checking addresses, this is needed for conversions and for
       COMPONENT_REF.  Might as well play it safe and always test this.  */
    if (TREE_CODE (type0) == ERROR_MARK
        || TREE_CODE (type1) == ERROR_MARK
*************** operand_compare::operand_equal_p (tree t
*** 3723,3729 ****
  	case WIDEN_MULT_MINUS_EXPR:
  	  if (!OP_SAME (2))
  	    return false;
! 	  /* The multiplcation operands are commutative.  */
  	  /* FALLTHRU */
  
  	case TRUTH_AND_EXPR:
--- 3624,3630 ----
  	case WIDEN_MULT_MINUS_EXPR:
  	  if (!OP_SAME (2))
  	    return false;
! 	  /* The multiplication operands are commutative.  */
  	  /* FALLTHRU */
  
  	case TRUTH_AND_EXPR:
*************** operand_compare::operand_equal_p (tree t
*** 3745,3751 ****
  	  return OP_SAME (0);
  
  	case BIT_INSERT_EXPR:
! 	  /* BIT_INSERT_EXPR has an implict operand as the type precision
  	     of op1.  Need to check to make sure they are the same.  */
  	  if (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
  	      && TREE_CODE (TREE_OPERAND (arg1, 1)) == INTEGER_CST
--- 3646,3652 ----
  	  return OP_SAME (0);
  
  	case BIT_INSERT_EXPR:
! 	  /* BIT_INSERT_EXPR has an implicit operand as the type precision
  	     of op1.  Need to check to make sure they are the same.  */
  	  if (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
  	      && TREE_CODE (TREE_OPERAND (arg1, 1)) == INTEGER_CST
*************** make_range_step (location_t loc, enum tr
*** 5426,5432 ****
  	    equiv_type
  	      = lang_hooks.types.type_for_mode (TYPE_MODE (arg0_type),
  						TYPE_SATURATING (arg0_type));
! 	  else if (TREE_CODE (arg0_type) == BITINT_TYPE)
  	    equiv_type = arg0_type;
  	  else
  	    equiv_type
--- 5327,5333 ----
  	    equiv_type
  	      = lang_hooks.types.type_for_mode (TYPE_MODE (arg0_type),
  						TYPE_SATURATING (arg0_type));
! 	  else if (BITINT_TYPE_P (arg0_type))
  	    equiv_type = arg0_type;
  	  else
  	    equiv_type
*************** range_check_type (tree etype)
*** 5616,5622 ****
  {
    /* First make sure that arithmetics in this type is valid, then make sure
       that it wraps around.  */
!   if (TREE_CODE (etype) == ENUMERAL_TYPE || TREE_CODE (etype) == BOOLEAN_TYPE)
      etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype), 1);
  
    if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_UNSIGNED (etype))
--- 5517,5525 ----
  {
    /* First make sure that arithmetics in this type is valid, then make sure
       that it wraps around.  */
!   if (TREE_CODE (etype) == ENUMERAL_TYPE && BITINT_TYPE_P (etype))
!     etype = TREE_TYPE (etype);
!   else if (TREE_CODE (etype) == ENUMERAL_TYPE || TREE_CODE (etype) == BOOLEAN_TYPE)
      etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype), 1);
  
    if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_UNSIGNED (etype))
*************** extract_muldiv_1 (tree t, tree c, enum t
*** 6572,6579 ****
    tree ctype = type;
    if (wide_type)
      {
!       if (TREE_CODE (type) == BITINT_TYPE
! 	  || TREE_CODE (wide_type) == BITINT_TYPE)
  	{
  	  if (TYPE_PRECISION (wide_type) > TYPE_PRECISION (type))
  	    ctype = wide_type;
--- 6475,6481 ----
    tree ctype = type;
    if (wide_type)
      {
!       if (BITINT_TYPE_P (type) || BITINT_TYPE_P (wide_type))
  	{
  	  if (TYPE_PRECISION (wide_type) > TYPE_PRECISION (type))
  	    ctype = wide_type;
*************** native_encode_wide_int (tree type, const
*** 7455,7461 ****
  			unsigned char *ptr, int len, int off)
  {
    int total_bytes;
!   if (TREE_CODE (type) == BITINT_TYPE)
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
--- 7357,7363 ----
  			unsigned char *ptr, int len, int off)
  {
    int total_bytes;
!   if (BITINT_TYPE_P (type))
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
*************** static tree
*** 8479,8485 ****
  native_interpret_int (tree type, const unsigned char *ptr, int len)
  {
    int total_bytes;
!   if (TREE_CODE (type) == BITINT_TYPE)
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
--- 8381,8387 ----
  native_interpret_int (tree type, const unsigned char *ptr, int len)
  {
    int total_bytes;
!   if (BITINT_TYPE_P (type))
      {
        struct bitint_info info;
        bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
*************** fold_view_convert_vector_encoding (tree
*** 9044,9050 ****
        != (int) buffer_bytes)
      return NULL_TREE;
  
!   /* Reencode the bytes as TYPE.  */
    unsigned int type_npatterns = type_sequence_bits / type_elt_bits;
    return native_interpret_vector_part (type, &buffer[0], buffer.length (),
  				       type_npatterns, nelts_per_pattern);
--- 8946,8952 ----
        != (int) buffer_bytes)
      return NULL_TREE;
  
!   /* Re-encode the bytes as TYPE.  */
    unsigned int type_npatterns = type_sequence_bits / type_elt_bits;
    return native_interpret_vector_part (type, &buffer[0], buffer.length (),
  				       type_npatterns, nelts_per_pattern);
*************** fold_truth_andor (location_t loc, enum t
*** 9698,9704 ****
  	}
        /* Transform (A AND-IF B) into (A AND B), or (A OR-IF B)
  	 into (A OR B).
! 	 For sequence point consistancy, we need to check for trapping,
  	 and side-effects.  */
        else if (code == icode && simple_condition_p (arg0)
  	       && simple_condition_p (arg1))
--- 9600,9606 ----
  	}
        /* Transform (A AND-IF B) into (A AND B), or (A OR-IF B)
  	 into (A OR B).
! 	 For sequence point consistency, we need to check for trapping,
  	 and side-effects.  */
        else if (code == icode && simple_condition_p (arg0)
  	       && simple_condition_p (arg1))
diff -Nrcpad gcc-17-20260524/gcc/fold-const.h gcc-17-20260531/gcc/fold-const.h
*** gcc-17-20260524/gcc/fold-const.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fold-const.h	Sun May 31 22:32:06 2026
*************** extern tree fold_convert_loc (location_t
*** 99,108 ****
  extern tree fold_ignored_result (tree);
  extern tree fold_abs_const (tree, tree);
  extern tree fold_indirect_ref_1 (location_t, tree, tree);
- extern void fold_defer_overflow_warnings (void);
- extern void fold_undefer_overflow_warnings (bool, const gimple *, int);
- extern void fold_undefer_and_ignore_overflow_warnings (void);
- extern bool fold_deferring_overflow_warnings_p (void);
  extern enum tree_code fold_div_compare (enum tree_code, tree, tree,
  					tree *, tree *, bool *);
  extern bool operand_equal_p (const_tree, const_tree, unsigned int flags = 0);
--- 99,104 ----
*************** public:
*** 286,292 ****
  protected:
    /* Verify that when arguments (ARG0 and ARG1) are equal, then they have
       an equal hash value.  When the function knowns comparison return,
!      true is returned.  Then RET is set to corresponding comparsion result.  */
    bool verify_hash_value (const_tree arg0, const_tree arg1, unsigned int flags,
  			  bool *ret);
  
--- 282,288 ----
  protected:
    /* Verify that when arguments (ARG0 and ARG1) are equal, then they have
       an equal hash value.  When the function knowns comparison return,
!      true is returned.  Then RET is set to corresponding comparison result.  */
    bool verify_hash_value (const_tree arg0, const_tree arg1, unsigned int flags,
  			  bool *ret);
  
diff -Nrcpad gcc-17-20260524/gcc/fortran/ChangeLog gcc-17-20260531/gcc/fortran/ChangeLog
*** gcc-17-20260524/gcc/fortran/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,117 ----
+ 2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/105582
+ 	* trans-decl.cc (get_proc_pointer_decl): Add FL_LABEL check to
+ 	route BLOCK-construct procedure pointers to gfc_add_decl_to_function
+ 	rather than gfc_add_decl_to_parent_function.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* gfortran.texi: Reflow long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* check.cc (oct2bin): Fix typos.
+ 	(gfc_check_move_alloc): Likewise.
+ 	* class.cc (gfc_intrinsic_hash_value): Likewise.
+ 	* decl.cc (copy_prefix): Likewise.
+ 	* dependency.cc (gfc_dep_compare_expr): Likewise.
+ 	* expr.cc (gfc_check_assign_symbol): Likewise.
+ 	* frontend-passes.cc (combine_array_constructor): Likewise.
+ 	(doloop_code): Likewise.
+ 	(doloop_warn): Likewise.
+ 	(matmul_lhs_realloc): Likewise.
+ 	* gfortran.h: Likewise.
+ 	* gfortran.texi: Likewise.
+ 	* interface.cc (compare_parameter): Likewise.
+ 	* intrinsic.cc (add_functions): Likewise.
+ 	(add_subroutines): Likewise.
+ 	* invoke.texi: Likewise.
+ 	* lang.opt: Likewise.
+ 	* module.cc (mio_full_f2k_derived): Likewise.
+ 	* openmp.cc (gfc_match_omp_variable_list): Likewise.
+ 	* resolve.cc (resolve_global_procedure): Likewise.
+ 	(gfc_fixup_inferred_type_refs): Likewise.
+ 	(gfc_verify_binding_labels): Likewise.
+ 	(resolve_fl_parameter): Likewise.
+ 	* trans-array.cc (gfc_set_loop_bounds_from_array_spec): Likewise.
+ 	(gfc_trans_array_constructor_value): Likewise.
+ 	(maybe_substitute_expr): Likewise.
+ 	(duplicate_allocatable_coarray): Likewise.
+ 	* trans-decl.cc (gfc_trans_deferred_vars): Likewise.
+ 	* trans-expr.cc (gfc_vptr_size_get): Likewise.
+ 	(gfc_trans_subcomponent_assign): Likewise.
+ 	(gfc_conv_expr): Likewise.
+ 	(fcncall_realloc_result): Likewise.
+ 	(alloc_scalar_allocatable_for_assignment): Likewise.
+ 	(gfc_trans_assignment_1): Likewise.
+ 	* trans-openmp.cc (gfc_omp_deep_mapping_cnt): Likewise.
+ 	* trans-stmt.cc (trans_associate_var): Likewise.
+ 	(gfc_trans_allocate): Likewise.
+ 	* trans.cc (gfc_finalize_tree_expr): Likewise.
+ 
+ 2026-05-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/125393
+ 	* interface.cc (get_expr_storage_size): Additionally return
+ 	character length.
+ 	(gfc_compare_actual_formal): When the formal is a scalar character
+ 	variable, use character lengths, not array storage size for check.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* openmp.cc (gfc_resolve_omp_allocate): Reject
+ 	omp_{cgroup,pteam,thread}_mem_alloc also for local static
+ 	variables.
+ 
+ 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* intrinsic.texi (F_C_STRING): New section.
+ 	* trans-intrinsic.cc (conv_trim): Delete.
+ 	(conv_isocbinding_function): Rewrite the F_C_STRING case.
+ 
+ 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* check.cc (gfc_check_c_f_strpointer): New.
+ 	* f95-lang.cc (gfc_init_builtin_functions): Add BUILT_IN_STRNLEN.
+ 	* gfortran.h (enum gfc_isym_id): Add GFC_ISYM_C_F_STRPOINTER.
+ 	* gfortran.texi (Interoperable Subroutines and Functions): Mention
+ 	f_c_string and c_f_strpointer.
+ 	* intrinsic.cc (add_subroutines): Add c_f_strpointer.  Fix nearby
+ 	whitespace errors.
+ 	(sort_actual): Handle first argument to c_f_strpointer specially.
+ 	* intrinsic.h (gfc_check_c_f_strpointer): Declare.
+ 	* intrinsic.texi (C_F_STRPOINTER): New section.  Add entry to menu
+ 	and cross-references from similar functions.
+ 	* iso-c-binding.def: Add c_f_strpointer.
+ 	* trans-intrinsic.cc (conv_isocbinding_subroutine_strpointer): New.
+ 	(gfc_conv_intrinsic_subroutine): Call it.
+ 
+ 2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125430
+ 	* trans-decl.cc (build_function_decl): Set TREE_PUBLIC for all
+ 	module-contained procedures so submodules compiled as separate
+ 	translation units can reach them via host association.  Also set
+ 	DECL_VISIBILITY to VISIBILITY_HIDDEN for PRIVATE procedures,
+ 	matching the existing treatment of module variables.
+ 
+ 2026-05-26  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* dump-parse-tree.cc (debug): Add debug functions for gfc_omp_namelist
+ 	and gfc_omp_clauses.
+ 
+ 2026-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* io.cc (enum format_token): Add FMT_EX, FMT_LPS, FMT_LPZ, FMT_LZ
+ 	enums to identify specific tokens.
+ 	(format_lex): Add parsing and checking of the EXw.d and EXw.dEe edit
+ 	specifiers.
+ 
  2026-05-23  Paul Thomas  <pault@gcc.gnu.org>
  
  	PR fortran/125263
diff -Nrcpad gcc-17-20260524/gcc/fortran/check.cc gcc-17-20260531/gcc/fortran/check.cc
*** gcc-17-20260524/gcc/fortran/check.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/check.cc	Sun May 31 22:32:06 2026
*************** oct2bin(int nbits, char *oct)
*** 166,173 ****
  }
  
  
! /* Convert a hexidecimal string into a binary string.  This is used in the
!    fallback conversion of a hexidecimal string to a REAL.  */
  
  static char *
  hex2bin(int nbits, char *hex)
--- 166,173 ----
  }
  
  
! /* Convert a hexadecimal string into a binary string.  This is used in the
!    fallback conversion of a hexadecimal string to a REAL.  */
  
  static char *
  hex2bin(int nbits, char *hex)
*************** gfc_check_move_alloc (gfc_expr *from, gf
*** 4820,4826 ****
        return false;
      }
  
!   /*  This is based losely on F2003 12.4.1.7. It is intended to prevent
        the likes of to = sym->cmp1->cmp2 and from = sym->cmp1, where cmp1
        and cmp2 are allocatable.  After the allocation is transferred,
        the 'to' chain is broken by the nullification of the 'from'. A bit
--- 4820,4826 ----
        return false;
      }
  
!   /*  This is based loosely on F2003 12.4.1.7. It is intended to prevent
        the likes of to = sym->cmp1->cmp2 and from = sym->cmp1, where cmp1
        and cmp2 are allocatable.  After the allocation is transferred,
        the 'to' chain is broken by the nullification of the 'from'. A bit
*************** gfc_check_c_f_procpointer (gfc_expr *cpt
*** 6306,6311 ****
--- 6306,6453 ----
  }
  
  
+ /* Handle both forms of this intrinsic, differentiated by whether
+    the first argument is a scalar or array.  */
+ 
+ bool
+ gfc_check_c_f_strpointer (gfc_expr *arg0, gfc_expr *fstrptr,
+ 			  gfc_expr *nchars)
+ {
+   bool arg0_is_scalar = false;
+   const char *arg0name = "cstrarray";
+ 
+   if (arg0->rank == 0)
+     {
+       arg0_is_scalar = true;
+       arg0name = "cstrptr";
+ 
+       /* cstrptr is a scalar of type c_ptr.  It is an intent in argument
+ 	 holding the C address of a contiguous array s of nchars characters.
+ 	 Its value must not be the C address of a Fortran variable without
+ 	 the target attribute.  */
+       if (arg0->ts.type != BT_DERIVED
+ 	  || arg0->ts.u.derived->from_intmod != INTMOD_ISO_C_BINDING
+ 	  || arg0->ts.u.derived->intmod_sym_id != ISOCBINDING_PTR)
+ 	{
+ 	  gfc_error ("%qs argument of %qs intrinsic at %L shall be "
+ 		     "a scalar of type C_PTR",
+ 		     arg0name, gfc_current_intrinsic, &arg0->where);
+ 	  return false;
+ 	}
+ 
+       if (!nchars)
+ 	{
+ 	  gfc_error ("%qs argument of %qs intrinsic shall be present "
+ 		     "when the %qs argument at %L is a C_PTR",
+ 		     gfc_current_intrinsic_arg[2]->name,
+ 		     gfc_current_intrinsic, arg0name, &arg0->where);
+ 	  return false;
+ 	}
+     }
+   else
+     {
+       /* arg0 is a rank-one character array of kind c_char and character
+ 	 length one.  It is an intent in argument.  Its actual argument
+ 	 must be simply contiguous and have the target attribute.  */
+       if (arg0->rank != 1
+ 	  || arg0->ts.type != BT_CHARACTER
+ 	  || arg0->ts.kind != gfc_default_character_kind
+ 	  || get_ul_from_cst_cl (arg0->ts.u.cl) != 1)
+ 	{
+ 	  gfc_error ("%qs argument of %qs intrinsic at %L shall be "
+ 		     "a rank-one character array of kind C_CHAR and "
+ 		     "character length one",
+ 		     arg0name, gfc_current_intrinsic, &arg0->where);
+ 	  return false;
+ 	}
+       if (!gfc_is_simply_contiguous (arg0, true, false))
+ 	{
+ 	  gfc_error ("%qs argument of %qs intrinsic at %L shall be "
+ 		     "simply contiguous",
+ 		     arg0name, gfc_current_intrinsic, &arg0->where);
+ 	  return false;
+ 	}
+       if (!gfc_expr_attr (arg0).target)
+ 	{
+ 	  gfc_error ("%qs argument of %qs intrinsic at %L shall have "
+ 		     "the TARGET attribute",
+ 		     arg0name, gfc_current_intrinsic, &arg0->where);
+ 	  return false;
+ 	}
+ 
+       /* If cstrarray is assumed-size, nchars must be present.  */
+       if (!nchars)
+ 	{
+ 	  gfc_array_ref *ar = gfc_find_array_ref (arg0);
+ 	  if (ar->as && ar->as->type == AS_ASSUMED_SIZE
+ 	      && (ar->type == AR_FULL || ar->end[0] == nullptr))
+ 	    {
+ 	      gfc_error ("%qs argument of %qs intrinsic shall be present "
+ 			 "when the %qs argument at %L is assumed-size",
+ 			 gfc_current_intrinsic_arg[2]->name,
+ 			 gfc_current_intrinsic, arg0name, &arg0->where);
+ 	      return false;
+ 	    }
+ 	}
+     }
+ 
+   /* fstrptr is a scalar deferred-length character pointer of kind c_char.
+      It is an intent out argument [...]  */
+   if (fstrptr->rank != 0
+       || fstrptr->ts.type != BT_CHARACTER
+       || fstrptr->ts.kind != gfc_default_character_kind
+       || !fstrptr->ts.deferred
+       || !gfc_expr_attr (fstrptr).pointer)
+     {
+       gfc_error ("%qs argument of %qs intrinsic at %L shall be "
+ 		 "a scalar deferred-length character pointer of kind C_CHAR",
+ 		 gfc_current_intrinsic_arg[1]->name, gfc_current_intrinsic,
+ 		 &fstrptr->where);
+       return false;
+     }
+   if (gfc_expr_attr (fstrptr).intent == INTENT_IN)
+     {
+       gfc_error ("%qs argument of %qs intrinsic at %L cannot be INTENT(IN)",
+ 		 gfc_current_intrinsic_arg[1]->name, gfc_current_intrinsic,
+ 		 &fstrptr->where);
+       return false;
+     }
+ 
+   /* For the array form: nchars is an optional integer scalar with intent in.
+      If nchars is present, its value must be nonnegative and not greater
+      than the size of cstrarray.
+      For the scalar form: nchars is an integer scalar with intent in.  Its
+      value must be nonnegative.  */
+   if (!nchars)
+     return true;
+   if (nchars->rank != 0 || nchars->ts.type != BT_INTEGER)
+     {
+       gfc_error ("%qs argument of %qs intrinsic at %L shall be "
+ 		 "a scalar integer",
+ 		 gfc_current_intrinsic_arg[2]->name, gfc_current_intrinsic,
+ 		 &nchars->where);
+       return false;
+     }
+   if (nchars->expr_type != EXPR_CONSTANT)
+     return true;
+   if (!nonnegative_check (gfc_current_intrinsic_arg[2]->name, nchars))
+     return false;
+   if (!arg0_is_scalar)
+     {
+       mpz_t asize;
+       if (gfc_array_size (arg0, &asize)
+ 	  && mpz_cmp (nchars->value.integer, asize) > 0)
+ 	{
+ 	  gfc_error ("%qs at %L must not be greater than the size of %qs",
+ 		     gfc_current_intrinsic_arg[2]->name, &nchars->where,
+ 		     arg0name);
+ 	  return false;
+ 	}
+     }
+ 
+   return true;
+ }
+ 
  bool
  gfc_check_c_funloc (gfc_expr *x)
  {
diff -Nrcpad gcc-17-20260524/gcc/fortran/class.cc gcc-17-20260531/gcc/fortran/class.cc
*** gcc-17-20260524/gcc/fortran/class.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/class.cc	Sun May 31 22:32:06 2026
*************** gfc_intrinsic_hash_value (gfc_typespec *
*** 590,596 ****
  
  /* Get the _len component from a class/derived object storing a string.
     For unlimited polymorphic entities a ref to the _data component is available
!    while a ref to the _len component is needed.  This routine traverese the
     ref-chain and strips the last ref to a _data from it replacing it with a
     ref to the _len component.  */
  
--- 590,596 ----
  
  /* Get the _len component from a class/derived object storing a string.
     For unlimited polymorphic entities a ref to the _data component is available
!    while a ref to the _len component is needed.  This routine traverses the
     ref-chain and strips the last ref to a _data from it replacing it with a
     ref to the _len component.  */
  
diff -Nrcpad gcc-17-20260524/gcc/fortran/decl.cc gcc-17-20260531/gcc/fortran/decl.cc
*** gcc-17-20260524/gcc/fortran/decl.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/decl.cc	Sun May 31 22:32:06 2026
*************** copy_prefix (symbol_attribute *dest, loc
*** 7271,7277 ****
  	dest->recursive = 1;
  
        /* Module procedures are unusual in that the 'dest' is copied from
! 	 the interface declaration. However, this is an oportunity to
  	 check that the submodule declaration is compliant with the
  	 interface.  */
        if (dest->elemental && !current_attr.elemental)
--- 7271,7277 ----
  	dest->recursive = 1;
  
        /* Module procedures are unusual in that the 'dest' is copied from
! 	 the interface declaration. However, this is an opportunity to
  	 check that the submodule declaration is compliant with the
  	 interface.  */
        if (dest->elemental && !current_attr.elemental)
diff -Nrcpad gcc-17-20260524/gcc/fortran/dependency.cc gcc-17-20260531/gcc/fortran/dependency.cc
*** gcc-17-20260524/gcc/fortran/dependency.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/dependency.cc	Sun May 31 22:32:06 2026
*************** gfc_dep_compare_expr (gfc_expr *e1, gfc_
*** 456,462 ****
  	    s = e1->value.compcall.tbp->u.specific->n.sym;
  
  	  /* Check if the proc ptr points to an interface declaration and the
! 	     names are the same; ie. the overriden proc. of an abstract type.
  	     The checking of the arguments will already have been done.  */
  	  for (; ref && s; ref = ref->next)
  	    if (!ref->next && ref->type == REF_COMPONENT
--- 456,462 ----
  	    s = e1->value.compcall.tbp->u.specific->n.sym;
  
  	  /* Check if the proc ptr points to an interface declaration and the
! 	     names are the same; ie. the overridden proc. of an abstract type.
  	     The checking of the arguments will already have been done.  */
  	  for (; ref && s; ref = ref->next)
  	    if (!ref->next && ref->type == REF_COMPONENT
diff -Nrcpad gcc-17-20260524/gcc/fortran/dump-parse-tree.cc gcc-17-20260531/gcc/fortran/dump-parse-tree.cc
*** gcc-17-20260524/gcc/fortran/dump-parse-tree.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/dump-parse-tree.cc	Sun May 31 22:32:06 2026
*************** debug (gfc_array_ref *ar)
*** 4722,4724 ****
--- 4722,4746 ----
    fputc ('\n', dumpfile);
    dumpfile = tmp;
  }
+ 
+ /* Dump OpenMP data structures.  */
+ 
+ DEBUG_FUNCTION void
+ debug (gfc_omp_namelist *n)
+ {
+   FILE *tmp = dumpfile;
+   dumpfile = stderr;
+   show_omp_namelist (OMP_LIST_MAP, n);
+   fputc ('\n', dumpfile);
+   dumpfile = tmp;
+ }
+ 
+ DEBUG_FUNCTION void
+ debug (gfc_omp_clauses *clauses)
+ {
+   FILE *tmp = dumpfile;
+   dumpfile = stderr;
+   show_omp_clauses (clauses);
+   fputc ('\n', dumpfile);
+   dumpfile = tmp;
+ }
diff -Nrcpad gcc-17-20260524/gcc/fortran/expr.cc gcc-17-20260531/gcc/fortran/expr.cc
*** gcc-17-20260524/gcc/fortran/expr.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/expr.cc	Sun May 31 22:32:06 2026
*************** gfc_check_assign_symbol (gfc_symbol *sym
*** 4988,4994 ****
        if (flag)
  	{
  	  gfc_error ("The component %qs at %L of derived type %qs has "
! 		     "paramterized type or array length parameters, which is "
  		     "not compatible with a default initializer",
  		      comp->name, &comp->initializer->where, sym->name);
  	  return false;
--- 4988,4994 ----
        if (flag)
  	{
  	  gfc_error ("The component %qs at %L of derived type %qs has "
! 		     "parameterized type or array length parameters, which is "
  		     "not compatible with a default initializer",
  		      comp->name, &comp->initializer->where, sym->name);
  	  return false;
diff -Nrcpad gcc-17-20260524/gcc/fortran/f95-lang.cc gcc-17-20260531/gcc/fortran/f95-lang.cc
*** gcc-17-20260524/gcc/fortran/f95-lang.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/f95-lang.cc	Sun May 31 22:32:06 2026
*************** gfc_init_builtin_functions (void)
*** 1036,1041 ****
--- 1036,1046 ----
    gfc_define_builtin ("__builtin_realloc", ftype, BUILT_IN_REALLOC,
  		      "realloc", ATTR_NOTHROW_LEAF_LIST);
  
+   ftype = build_function_type_list (size_type_node, pchar_type_node,
+ 				    size_type_node, NULL_TREE);
+   gfc_define_builtin ("__builtin_strnlen", ftype, BUILT_IN_STRNLEN,
+ 		      "strnlen", ATTR_PURE_NOTHROW_LEAF_LIST);
+ 
    /* Type-generic floating-point classification built-ins.  */
  
    ftype = build_function_type (integer_type_node, NULL_TREE);
diff -Nrcpad gcc-17-20260524/gcc/fortran/frontend-passes.cc gcc-17-20260531/gcc/fortran/frontend-passes.cc
*** gcc-17-20260524/gcc/fortran/frontend-passes.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/frontend-passes.cc	Sun May 31 22:32:06 2026
*************** combine_array_constructor (gfc_expr *e)
*** 1809,1815 ****
    /* This might be an expanded constructor with very many constant values. If
       we perform the operation here, we might end up with a long compile time
       and actually longer execution time, so a length bound is in order here.
!      If the constructor constains something which is not a constant, it did
       not come from an expansion, so leave it alone.  */
  
  #define CONSTR_LEN_MAX 4
--- 1809,1815 ----
    /* This might be an expanded constructor with very many constant values. If
       we perform the operation here, we might end up with a long compile time
       and actually longer execution time, so a length bound is in order here.
!      If the constructor contains something which is not a constant, it did
       not come from an expansion, so leave it alone.  */
  
  #define CONSTR_LEN_MAX 4
*************** doloop_code (gfc_code **c, int *walk_sub
*** 2598,2604 ****
  
        f = gfc_sym_get_dummy_args (co->resolved_sym);
  
!       /* Withot a formal arglist, there is only unknown INTENT,
  	 which we don't check for.  */
        if (f == NULL)
  	break;
--- 2598,2604 ----
  
        f = gfc_sym_get_dummy_args (co->resolved_sym);
  
!       /* Without a formal arglist, there is only unknown INTENT,
  	 which we don't check for.  */
        if (f == NULL)
  	break;
*************** doloop_warn (gfc_namespace *ns)
*** 3116,3122 ****
      }
  }
  
! /* This selction deals with inlining calls to MATMUL.  */
  
  /* Replace calls to matmul outside of straight assignments with a temporary
     variable so that later inlining will work.  */
--- 3116,3122 ----
      }
  }
  
! /* This section deals with inlining calls to MATMUL.  */
  
  /* Replace calls to matmul outside of straight assignments with a temporary
     variable so that later inlining will work.  */
*************** matmul_lhs_realloc (gfc_expr *c, gfc_exp
*** 3516,3522 ****
  
    /* c comes in as a full ref.  Change it into a copy and make it into an
       element ref so it has the right form for ALLOCATE.  In the same
!      switch statement, also generate the size comparison for the secod IF
       statement.  */
  
    ar->type = AR_ELEMENT;
--- 3516,3522 ----
  
    /* c comes in as a full ref.  Change it into a copy and make it into an
       element ref so it has the right form for ALLOCATE.  In the same
!      switch statement, also generate the size comparison for the second IF
       statement.  */
  
    ar->type = AR_ELEMENT;
diff -Nrcpad gcc-17-20260524/gcc/fortran/gfortran.h gcc-17-20260531/gcc/fortran/gfortran.h
*** gcc-17-20260524/gcc/fortran/gfortran.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/gfortran.h	Sun May 31 22:32:06 2026
*************** enum gfc_isym_id
*** 501,506 ****
--- 501,507 ----
    GFC_ISYM_C_ASSOCIATED,
    GFC_ISYM_C_F_POINTER,
    GFC_ISYM_C_F_PROCPOINTER,
+   GFC_ISYM_C_F_STRPOINTER,
    GFC_ISYM_C_FUNLOC,
    GFC_ISYM_C_LOC,
    GFC_ISYM_C_SIZEOF,
*************** typedef struct
*** 996,1002 ****
    unsigned always_explicit:1;
  
    /* Set if the symbol is generated and, hence, standard violations
!      shouldn't be flaged.  */
    unsigned artificial:1;
  
    /* Set if the symbol has been referenced in an expression.  No further
--- 997,1003 ----
    unsigned always_explicit:1;
  
    /* Set if the symbol is generated and, hence, standard violations
!      shouldn't be flagged.  */
    unsigned artificial:1;
  
    /* Set if the symbol has been referenced in an expression.  No further
*************** typedef struct gfc_symbol
*** 2065,2071 ****
       function).
       gen_mark is used to check duplicate mappings for OpenMP
       use_device_ptr/use_device_addr/private/shared clauses (see generic_head in
!      above functon).
       reduc_mark is used to check duplicate mappings for OpenMP reduction
       clauses.  */
    struct gfc_symbol *old_symbol;
--- 2066,2072 ----
       function).
       gen_mark is used to check duplicate mappings for OpenMP
       use_device_ptr/use_device_addr/private/shared clauses (see generic_head in
!      above function).
       reduc_mark is used to check duplicate mappings for OpenMP reduction
       clauses.  */
    struct gfc_symbol *old_symbol;
diff -Nrcpad gcc-17-20260524/gcc/fortran/gfortran.texi gcc-17-20260531/gcc/fortran/gfortran.texi
*** gcc-17-20260524/gcc/fortran/gfortran.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/gfortran.texi	Sun May 31 22:32:06 2026
*************** example, we ignore the return value:
*** 3117,3122 ****
--- 3117,3129 ----
    end
  @end smallexample
  
+ Fortran 2023 added two new intrinsic functions for converting between
+ C and Fortran string representations: @code{f_c_string} transforms a
+ Fortran string into a C string by appending a null character, and
+ @code{c_f_strpointer} allows access to a null-terminated C string or
+ simply contiguous array of @code{c_char} as a Fortran deferred-length
+ character pointer.
+ 
  The intrinsic procedures are described in @ref{Intrinsic Procedures}.
  
  @node Working with C Pointers
*************** typedef struct caf_reference_t @{
*** 4134,4140 ****
      @} c;
      struct @{
        /* The mode of the array ref.  See CAF_ARR_REF_*.  */
!       /* caf_array_ref_t, replaced by unsigend char to allow specification in
           fortran FE.  */
       unsigned char mode[GFC_MAX_DIMENSIONS];
        /* The type of a static array.  Unset for array's with descriptors.  */
--- 4141,4147 ----
      @} c;
      struct @{
        /* The mode of the array ref.  See CAF_ARR_REF_*.  */
!       /* caf_array_ref_t, replaced by unsigned char to allow specification in
           fortran FE.  */
       unsigned char mode[GFC_MAX_DIMENSIONS];
        /* The type of a static array.  Unset for array's with descriptors.  */
*************** team is returned.
*** 4336,4342 ****
  @item @emph{Notes}:
  When both argument are given, then it is caf-library dependent which argument
  is examined first.  Current implementations prioritize the @var{team} argument,
! because it is easier to retrive the number of images from it.
  
  Fortran 2008 or later, with no arguments; Fortran 2018 or later with two
  arguments.
--- 4343,4349 ----
  @item @emph{Notes}:
  When both argument are given, then it is caf-library dependent which argument
  is examined first.  Current implementations prioritize the @var{team} argument,
! because it is easier to retrieve the number of images from it.
  
  Fortran 2008 or later, with no arguments; Fortran 2018 or later with two
  arguments.
*************** from the remote image.  If the data type
*** 4679,4689 ****
  then this needs to be set to the byte size of each character, i.e. @code{4} for
  a @code{CHARACTER (KIND=4)} string.  The length of the string is then returned
  in @code{opt_dst_charlen} (also for string arrays).
! @item @var{dst_data} @tab intent(inout) A pointer to the adress the data is
! stored.  To prevent copying of data into an output buffer the adress to the live
! data is returned here.  When a descriptor is provided also its data-member is
! set to that adress.  When @var{may_realloc_dst} is set, then the memory may be
! reallocated by the remote function, which needs to be replicated by this
  function.
  @item @var{opt_dst_charlen} @tab intent(inout)  When a char array is returned,
  this parameter is set to the length where applicable.  The value can also be
--- 4686,4696 ----
  then this needs to be set to the byte size of each character, i.e. @code{4} for
  a @code{CHARACTER (KIND=4)} string.  The length of the string is then returned
  in @code{opt_dst_charlen} (also for string arrays).
! @item @var{dst_data} @tab intent(inout) A pointer to the address the data is
! stored.  To prevent copying of data into an output buffer the address to the
! live data is returned here.  When a descriptor is provided also its data-member
! is set to that address.  When @var{may_realloc_dst} is set, then the memory may
! be reallocated by the remote function, which needs to be replicated by this
  function.
  @item @var{opt_dst_charlen} @tab intent(inout)  When a char array is returned,
  this parameter is set to the length where applicable.  The value can also be
*************** size_t errmsg_len)}
*** 5717,5723 ****
  @item @emph{Description}:
  Actives the team given by @var{team}, which must be formed but not active
  yet.  This routine starts a new epoch on the coarray memory pool.  All
! coarrays registered from now on, will be freeed once the team is terminated.
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
--- 5724,5730 ----
  @item @emph{Description}:
  Actives the team given by @var{team}, which must be formed but not active
  yet.  This routine starts a new epoch on the coarray memory pool.  All
! coarrays registered from now on, will be freed once the team is terminated.
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
*************** block.
*** 5748,5754 ****
  @item @emph{Description}:
  Terminates the last team changed to.  The coarray memory epoch is
  terminated and all coarrays allocated since the execution of @code{CHANGE TEAM}
! are freeed.
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
--- 5755,5761 ----
  @item @emph{Description}:
  Terminates the last team changed to.  The coarray memory epoch is
  terminated and all coarrays allocated since the execution of @code{CHANGE TEAM}
! are freed.
  
  @item @emph{Arguments}:
  @multitable @columnfractions .15 .70
diff -Nrcpad gcc-17-20260524/gcc/fortran/interface.cc gcc-17-20260531/gcc/fortran/interface.cc
*** gcc-17-20260524/gcc/fortran/interface.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/interface.cc	Sun May 31 22:32:06 2026
*************** compare_parameter (gfc_symbol *formal, g
*** 2600,2606 ****
  		      else
  			{
  			  /* The global symbol is a function.  Set the formal
! 			     argument acordingly.  */
  			  formal->attr.function = 1;
  			  formal->ts = global_asym->ts;
  			}
--- 2600,2606 ----
  		      else
  			{
  			  /* The global symbol is a function.  Set the formal
! 			     argument accordingly.  */
  			  formal->attr.function = 1;
  			  formal->ts = global_asym->ts;
  			}
*************** get_sym_storage_size (gfc_symbol *sym, b
*** 3085,3091 ****
     units of the actual argument up to the end of the array.  */
  
  static unsigned long
! get_expr_storage_size (gfc_expr *e, bool *size_known)
  {
    int i;
    long int strlen, elements;
--- 3085,3091 ----
     units of the actual argument up to the end of the array.  */
  
  static unsigned long
! get_expr_storage_size (gfc_expr *e, bool *size_known, long int *charlen)
  {
    int i;
    long int strlen, elements;
*************** get_expr_storage_size (gfc_expr *e, bool
*** 3094,3099 ****
--- 3094,3100 ----
    gfc_ref *ref;
  
    *size_known = false;
+   *charlen = -1;
  
    if (e == NULL)
      return 0;
*************** get_expr_storage_size (gfc_expr *e, bool
*** 3109,3114 ****
--- 3110,3116 ----
  	strlen = e->value.character.length;
        else
  	return 0;
+       *charlen = strlen;
      }
    else
      strlen = 1; /* Length per element.  */
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3365,3370 ****
--- 3367,3373 ----
    gfc_formal_arglist *f;
    int i, n, na;
    unsigned long actual_size, formal_size;
+   long int charlen;
    bool full_array = false;
    gfc_array_ref *actual_arr_ref;
    gfc_array_spec *fas, *aas;
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3681,3689 ****
        if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN)
  	goto skip_size_check;
  
!       actual_size = get_expr_storage_size (a->expr, &actual_size_known);
        formal_size = get_sym_storage_size (f->sym, &formal_size_known);
  
        if (actual_size_known && formal_size_known
  	  && actual_size != formal_size
  	  && a->expr->ts.type == BT_CHARACTER
--- 3684,3700 ----
        if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN)
  	goto skip_size_check;
  
!       actual_size = get_expr_storage_size (a->expr, &actual_size_known, &charlen);
        formal_size = get_sym_storage_size (f->sym, &formal_size_known);
  
+       /* If the formal is a scalar character variable, use the charlen of the
+ 	 actual.  */
+       if (actual_size_known && formal_size_known && charlen >= 0
+ 	  && a->expr->ts.type == BT_CHARACTER
+ 	  && f->sym->attr.flavor != FL_PROCEDURE
+ 	  && !f->sym->attr.dimension)
+ 	actual_size = charlen;
+ 
        if (actual_size_known && formal_size_known
  	  && actual_size != formal_size
  	  && a->expr->ts.type == BT_CHARACTER
diff -Nrcpad gcc-17-20260524/gcc/fortran/intrinsic.cc gcc-17-20260531/gcc/fortran/intrinsic.cc
*** gcc-17-20260524/gcc/fortran/intrinsic.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/intrinsic.cc	Sun May 31 22:32:06 2026
*************** add_functions (void)
*** 3585,3591 ****
  	     gfc_check_fn_d, gfc_simplify_tand, gfc_resolve_trig,
  	     x, BT_REAL, dd, REQUIRED);
  
!   /* The following function is internally used for coarray libray functions.
       "make_from_module" makes it inaccessible for external users.  */
    add_sym_1 (GFC_PREFIX ("caf_get"), GFC_ISYM_CAF_GET, CLASS_IMPURE, ACTUAL_NO,
  	     BT_REAL, dr, GFC_STD_GNU, NULL, NULL, NULL,
--- 3585,3591 ----
  	     gfc_check_fn_d, gfc_simplify_tand, gfc_resolve_trig,
  	     x, BT_REAL, dd, REQUIRED);
  
!   /* The following function is internally used for coarray library functions.
       "make_from_module" makes it inaccessible for external users.  */
    add_sym_1 (GFC_PREFIX ("caf_get"), GFC_ISYM_CAF_GET, CLASS_IMPURE, ACTUAL_NO,
  	     BT_REAL, dr, GFC_STD_GNU, NULL, NULL, NULL,
*************** add_subroutines (void)
*** 3957,3970 ****
  	      "fptr", BT_UNKNOWN, 0, REQUIRED, INTENT_OUT,
  	      "shape", BT_INTEGER, di, OPTIONAL, INTENT_IN,
  	      "lower", BT_INTEGER, di, OPTIONAL, INTENT_IN);
!   make_from_module();
  
    add_sym_2s ("c_f_procpointer", GFC_ISYM_C_F_PROCPOINTER, CLASS_IMPURE,
  	      BT_UNKNOWN, 0, GFC_STD_F2003, gfc_check_c_f_procpointer,
  	      NULL, NULL,
  	      "cptr", BT_VOID, 0, REQUIRED, INTENT_IN,
  	      "fptr", BT_UNKNOWN, 0, REQUIRED, INTENT_OUT);
!   make_from_module();
  
    /* Internal subroutine for emitting a runtime error.  */
  
--- 3957,3983 ----
  	      "fptr", BT_UNKNOWN, 0, REQUIRED, INTENT_OUT,
  	      "shape", BT_INTEGER, di, OPTIONAL, INTENT_IN,
  	      "lower", BT_INTEGER, di, OPTIONAL, INTENT_IN);
!   make_from_module ();
  
    add_sym_2s ("c_f_procpointer", GFC_ISYM_C_F_PROCPOINTER, CLASS_IMPURE,
  	      BT_UNKNOWN, 0, GFC_STD_F2003, gfc_check_c_f_procpointer,
  	      NULL, NULL,
  	      "cptr", BT_VOID, 0, REQUIRED, INTENT_IN,
  	      "fptr", BT_UNKNOWN, 0, REQUIRED, INTENT_OUT);
!   make_from_module ();
! 
!   /* This represents both forms of the intrinsic; the one with the
!      signature given here, and the one that accepts a scalar for the
!      first argument with name "cstrptr" instead of "cstrarray".
!      This is handled by special-casing in sort_actual as well as
!      in the check function.  */
!   add_sym_3s ("c_f_strpointer", GFC_ISYM_C_F_STRPOINTER, CLASS_IMPURE,
! 	      BT_UNKNOWN, 0, GFC_STD_F2023, gfc_check_c_f_strpointer,
! 	      NULL, NULL,
! 	      "cstrarray", BT_VOID, dc, REQUIRED, INTENT_IN,
! 	      "fstrptr", BT_UNKNOWN, dc, REQUIRED, INTENT_OUT,
! 	      "nchars", BT_INTEGER, di, OPTIONAL, INTENT_IN);
!   make_from_module ();
  
    /* Internal subroutine for emitting a runtime error.  */
  
*************** add_subroutines (void)
*** 4020,4026 ****
  	      errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_INOUT);
  
  
!   /* The following subroutine is internally used for coarray libray functions.
       "make_from_module" makes it inaccessible for external users.  */
    add_sym_2s (GFC_PREFIX ("caf_send"), GFC_ISYM_CAF_SEND, CLASS_IMPURE,
  	      BT_UNKNOWN, 0, GFC_STD_GNU, NULL, NULL, NULL,
--- 4033,4039 ----
  	      errmsg, BT_CHARACTER, dc, OPTIONAL, INTENT_INOUT);
  
  
!   /* The following subroutine is internally used for coarray library functions.
       "make_from_module" makes it inaccessible for external users.  */
    add_sym_2s (GFC_PREFIX ("caf_send"), GFC_ISYM_CAF_SEND, CLASS_IMPURE,
  	      BT_UNKNOWN, 0, GFC_STD_GNU, NULL, NULL, NULL,
*************** sort_actual (const char *name, gfc_actua
*** 4516,4521 ****
--- 4529,4535 ----
  {
    gfc_actual_arglist *actual, *a;
    gfc_intrinsic_arg *f;
+   bool is_c_f_strpointer = false;
  
    remove_nullargs (ap);
    actual = *ap;
*************** sort_actual (const char *name, gfc_actua
*** 4536,4542 ****
      return true;
  
    /* ALLOCATED has two mutually exclusive keywords, but only one
!      can be present at time and neither is optional. */
    if (strcmp (name, "allocated") == 0)
      {
        if (!a)
--- 4550,4558 ----
      return true;
  
    /* ALLOCATED has two mutually exclusive keywords, but only one
!      can be present at time and neither is optional.  Likewise
!      C_F_STRPOINTER, but since that subroutine has multiple arguments
!      it has to be handled in the keywords loop below.  */
    if (strcmp (name, "allocated") == 0)
      {
        if (!a)
*************** whoops:
*** 4605,4613 ****
--- 4621,4652 ----
  keywords:
    /* Associate the remaining actual arguments, all of which have
       to be keyword arguments.  */
+   is_c_f_strpointer = strcmp (name, "c_f_strpointer") == 0;
    for (; a; a = a->next)
      {
        int idx;
+ 
+       /* Special case C_F_STRPOINTER.  The first argument can either
+ 	 be an array named "cstrarray" or a scalar named "cstrptr".  */
+       if (is_c_f_strpointer)
+ 	{
+ 	  idx = 0;
+ 	  if (strcmp (a->name, "cstrarray") == 0)
+ 	    {
+ 	      if (a->expr->rank != 0)
+ 		goto got_keyword;
+ 	      gfc_error ("Array entity required at %L", &a->expr->where);
+ 	      return false;
+ 	    }
+ 	  else if (strcmp (a->name, "cstrptr") == 0)
+ 	    {
+ 	      if (a->expr->rank == 0)
+ 		goto got_keyword;
+ 	      gfc_error ("Scalar entity required at %L", &a->expr->where);
+ 	      return false;
+ 	    }
+ 	}
+ 
        FOR_EACH_VEC_ELT (dummy_args, idx, f)
  	if (strcmp (a->name, f->name) == 0)
  	  break;
*************** keywords:
*** 4623,4632 ****
  	  return false;
  	}
  
        if (ordered_actual_args[idx] != NULL)
  	{
  	  gfc_error ("Argument %qs appears twice in call to %qs at %L",
! 		     f->name, name, where);
  	  return false;
  	}
        ordered_actual_args[idx] = a;
--- 4662,4672 ----
  	  return false;
  	}
  
+     got_keyword:
        if (ordered_actual_args[idx] != NULL)
  	{
  	  gfc_error ("Argument %qs appears twice in call to %qs at %L",
! 		     a->name, name, where);
  	  return false;
  	}
        ordered_actual_args[idx] = a;
diff -Nrcpad gcc-17-20260524/gcc/fortran/intrinsic.h gcc-17-20260531/gcc/fortran/intrinsic.h
*** gcc-17-20260524/gcc/fortran/intrinsic.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/intrinsic.h	Sun May 31 22:32:06 2026
*************** bool gfc_check_sizeof (gfc_expr *);
*** 168,173 ****
--- 168,174 ----
  bool gfc_check_c_associated (gfc_expr *, gfc_expr *);
  bool gfc_check_c_f_pointer (gfc_expr *, gfc_expr *, gfc_expr *, gfc_expr *);
  bool gfc_check_c_f_procpointer (gfc_expr *, gfc_expr *);
+ bool gfc_check_c_f_strpointer (gfc_expr *, gfc_expr *, gfc_expr *);
  bool gfc_check_c_funloc (gfc_expr *);
  bool gfc_check_c_loc (gfc_expr *);
  bool gfc_check_c_sizeof (gfc_expr *);
diff -Nrcpad gcc-17-20260524/gcc/fortran/intrinsic.texi gcc-17-20260531/gcc/fortran/intrinsic.texi
*** gcc-17-20260524/gcc/fortran/intrinsic.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/intrinsic.texi	Sun May 31 22:32:06 2026
*************** Some basic guidelines for editing this d
*** 106,111 ****
--- 106,112 ----
  * @code{C_ASSOCIATED}:  C_ASSOCIATED, Status of a C pointer
  * @code{C_F_POINTER}:   C_F_POINTER, Convert C into Fortran pointer
  * @code{C_F_PROCPOINTER}: C_F_PROCPOINTER, Convert C into Fortran procedure pointer
+ * @code{C_F_STRPOINTER}: C_F_STRPOINTER, Convert C string to Fortran string pointer
  * @code{C_FUNLOC}:      C_FUNLOC,  Obtain the C address of a procedure
  * @code{C_LOC}:         C_LOC,     Obtain the C address of an object
  * @code{C_SIZEOF}:      C_SIZEOF,  Size in bytes of an expression
*************** Some basic guidelines for editing this d
*** 158,163 ****
--- 159,165 ----
  * @code{EXP}:           EXP,       Exponential function
  * @code{EXPONENT}:      EXPONENT,  Exponent function
  * @code{EXTENDS_TYPE_OF}: EXTENDS_TYPE_OF,  Query dynamic type for extension
+ * @code{F_C_STRING}:    F_C_STRING,  Convert character scalar to C string
  * @code{FDATE}:         FDATE,     Subroutine (or function) to get the current time as a string
  * @code{FGET}:          FGET,      Read a single character in stream mode from stdin
  * @code{FGETC}:         FGETC,     Read a single character in stream mode
*************** Fortran 2003 and later, with @var{LOWER}
*** 3417,3423 ****
  
  @item @emph{See also}:
  @ref{C_LOC}, @*
! @ref{C_F_PROCPOINTER}
  @end table
  
  
--- 3419,3426 ----
  
  @item @emph{See also}:
  @ref{C_LOC}, @*
! @ref{C_F_PROCPOINTER}, @*
! @ref{C_F_STRPOINTER}
  @end table
  
  
*************** Fortran 2003 and later
*** 3475,3481 ****
  
  @item @emph{See also}:
  @ref{C_LOC}, @*
! @ref{C_F_POINTER}
  @end table
  
  
--- 3478,3565 ----
  
  @item @emph{See also}:
  @ref{C_LOC}, @*
! @ref{C_F_POINTER}, @*
! @ref{C_F_STRPOINTER}
! @end table
! 
! 
! @node C_F_STRPOINTER
! @section @code{C_F_STRPOINTER} --- Convert C string into Fortran string pointer
! @fnindex C_F_STRPOINTER
! @cindex string, convert C to Fortran
! 
! @table @asis
! @item @emph{Synopsis}:
! @multitable @columnfractions .80
! @item @code{CALL C_F_STRPOINTER(CSTRARRAY, FSTRPTR[, NCHARS])}
! @item @code{CALL C_F_STRPOINTER(CSTRPTR, FSTRPTR, NCHARS)}
! @end multitable
! 
! @item @emph{Description}:
! @code{C_F_STRPOINTER(CSTRARRAY, FSTRPTR[, NCHARS])}
! pointer-associates the deferred-length character pointer
! @code{FSTRPTR} with the initial substring of the simply contiguous
! Fortran character array @code{STRARRAY}, up to the first null character,
! the length @code{NCHARS} if specified, or the actual size of @code{CSTRARRAY}.
! 
! @code{CALL C_F_STRPOINTER(CSTRPTR, FSTRPTR, NCHARS)}
! pointer-associates the deferred-length array pointer @code{FSTRPTR} with the
! initial substring of the continguous array of characters pointed to by
! the C pointer @code{CSTRPTR}, up to the first null character or
! length @code{NCHARS}.
! 
! @item @emph{Class}:
! Subroutine
! 
! @item @emph{Arguments}:
! @multitable @columnfractions .15 .70
! @item @var{CSTRARRAY}  @tab Rank-one character array of kind @code{C_CHAR}
! and character length one, which must be simply contiguous and have the
! @code{TARGET} attribute. It is @code{INTENT(IN)}.
! @item @var{CSTRPTR}  @tab Scalar of the type @code{C_PTR}. It is
! @code{INTENT(IN)}.
! @item @var{FSTRPTR}  @tab Scalar deferred-length character pointer of kind
! @code{C_CHAR}.  It is @code{INTENT(OUT)}.
! @item @var{NCHARS} @tab (Optional) Integer scalar.  It is @code{INTENT(IN)}.
! This argument can only be omitted for the @code{CSTRARRAY} form of the
! intrinsic, and only if @code{STRARRAY} is not assumed-size.
! @end multitable
! 
! @item @emph{Example}:
! @smallexample
! program main
! 
!   use iso_c_binding
!   implicit none
! 
!   character (kind=c_char, len=1), dimension(15), target :: a
!   type(c_ptr) :: p
!   character (len=:, kind=c_char), pointer :: fp1, fp2
! 
!   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
!                      'w', 'o', 'r', 'l', 'd', '!', &
!                      ' ', ' ', ' ']
!   ! give array a terminating null so its C string length is 12.
!   a(13) = C_NULL_CHAR
! 
!   ! p is a C pointer to the the first character in the array
!   p = C_LOC (a(1))
! 
!   ! Make both fp1 and fp2 point to a with Fortran string length 12.
!   call c_f_strpointer (p, fp1, 15)
!   call c_f_strpointer (a, fp2)
! end program main
! 
! @end smallexample
! 
! @item @emph{Standard}:
! Fortran 2023 and later.
! 
! @item @emph{See also}:
! @ref{C_LOC}, @*
! @ref{C_F_POINTER}, @*
! @ref{C_F_PROCPOINTER}, @*
! @ref{F_C_STRING}
  @end table
  
  
*************** Fortran 2003 and later
*** 6312,6317 ****
--- 6396,6456 ----
  
  
  
+ @node F_C_STRING
+ @section @code{F_C_STRING} --- Convert Fortran character scalar to C string
+ @fnindex F_C_STRING
+ @cindex string, convert Fortran to C
+ 
+ @table @asis
+ @item @emph{Synopsis}:
+ @code{RESULT = F_C_STRING(STRING[, ASIS])}
+ 
+ @item @emph{Description}:
+ The @code{F_C_STRING} intrinsic is equivalent to @code{STRING//C_NULL_CHAR}
+ if the @code{ASIS} argument is present and true, and to
+ @code{TRIM(STRING)//C_NULL_CHAR} otherwise.
+ 
+ @item @emph{Class}:
+ Transformational function
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{STRING}  @tab A character scalar of kind @code{C_CHAR}.
+ @item @var{ASIS}    @tab An optional logical scalar.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The result is a null-terminated character scalar of the same type and kind
+ as @code{STRING}, suitable for passing to a C function that accepts a
+ @code{char *} argument.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program main
+   use iso_c_binding, only: f_c_string, c_char
+   implicit none (external, type)
+   character(:, c_char), allocatable :: s1, s2, s3
+ 
+   ! s1 is null-terminated "hello, world!   "
+   s1 = f_c_string ("hello, world!   ", .true.)
+ 
+   ! s2 is null-terminated "hello, world!"
+   s2 = f_c_string ("hello, world!   ", .false.)
+ 
+   ! s3 is null-terminated "hello, world!" (same as s2 example)
+   s3 = f_c_string ("hello, world!   ")
+ end program main
+ 
+ @end smallexample
+ 
+ @item @emph{Standard}:
+ Fortran 2023 and later.
+ 
+ @item @emph{See also}:
+ @ref{C_F_STRPOINTER}
+ @end table
+ 
+ 
  @node FDATE
  @section @code{FDATE} --- Get the current time as a string
  @fnindex FDATE
diff -Nrcpad gcc-17-20260524/gcc/fortran/invoke.texi gcc-17-20260531/gcc/fortran/invoke.texi
*** gcc-17-20260524/gcc/fortran/invoke.texi	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/invoke.texi	Sun May 31 22:32:06 2026
*************** shared by @command{gfortran}, @command{g
*** 2242,2248 ****
  @table @gcctabopt
  
  @opindex fc-prototypes
! @cindex Generating C prototypes from Fortran BIND(C) enteties
  @item -fc-prototypes
  This option generates C prototypes from @code{BIND(C)} variable
  declarations, types and procedure interfaces and writes them to
--- 2242,2248 ----
  @table @gcctabopt
  
  @opindex fc-prototypes
! @cindex Generating C prototypes from Fortran BIND(C) entities
  @item -fc-prototypes
  This option generates C prototypes from @code{BIND(C)} variable
  declarations, types and procedure interfaces and writes them to
diff -Nrcpad gcc-17-20260524/gcc/fortran/iso-c-binding.def gcc-17-20260531/gcc/fortran/iso-c-binding.def
*** gcc-17-20260524/gcc/fortran/iso-c-binding.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/iso-c-binding.def	Sun May 31 22:32:06 2026
*************** NAMED_SUBROUTINE (ISOCBINDING_F_POINTER,
*** 190,195 ****
--- 190,197 ----
                    GFC_ISYM_C_F_POINTER, GFC_STD_F2003)
  NAMED_SUBROUTINE (ISOCBINDING_F_PROCPOINTER, "c_f_procpointer",
                    GFC_ISYM_C_F_PROCPOINTER, GFC_STD_F2003)
+ NAMED_SUBROUTINE (ISOCBINDING_F_STRPOINTER, "c_f_strpointer",
+                   GFC_ISYM_C_F_STRPOINTER, GFC_STD_F2023)
  
  NAMED_FUNCTION (ISOCBINDING_ASSOCIATED, "c_associated",
  		GFC_ISYM_C_ASSOCIATED, GFC_STD_F2003)
diff -Nrcpad gcc-17-20260524/gcc/fortran/lang.opt gcc-17-20260531/gcc/fortran/lang.opt
*** gcc-17-20260524/gcc/fortran/lang.opt	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/lang.opt	Sun May 31 22:32:06 2026
*************** Fortran Joined Var(flag_inline_intrinsic
*** 699,705 ****
  Enable generation of inline code instead of calls to functions from the library to implement intrinsics.
  
  Enum
! Name(gfc_inlineable_intrinsics) Type(int) UnknownError(%qs is not an inline-controlable intrinsic)
  
  ; This is not part of any set
  ; EnumValue
--- 699,705 ----
  Enable generation of inline code instead of calls to functions from the library to implement intrinsics.
  
  Enum
! Name(gfc_inlineable_intrinsics) Type(int) UnknownError(%qs is not an inline-controllable intrinsic)
  
  ; This is not part of any set
  ; EnumValue
diff -Nrcpad gcc-17-20260524/gcc/fortran/module.cc gcc-17-20260531/gcc/fortran/module.cc
*** gcc-17-20260524/gcc/fortran/module.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/module.cc	Sun May 31 22:32:06 2026
*************** mio_full_f2k_derived (gfc_symbol *sym)
*** 4372,4378 ****
  	  /* PDT templates make use of the mechanisms for formal args
  	     and so the parameter symbols are stored in the formal
  	     namespace.  Transfer the sym_root to f2k_derived and then
! 	     free the formal namespace since it is uneeded.  */
  	  if (sym->attr.pdt_template && sym->formal && sym->formal->sym)
  	    {
  	      ns = sym->formal->sym->ns;
--- 4372,4378 ----
  	  /* PDT templates make use of the mechanisms for formal args
  	     and so the parameter symbols are stored in the formal
  	     namespace.  Transfer the sym_root to f2k_derived and then
! 	     free the formal namespace since it is unneeded.  */
  	  if (sym->attr.pdt_template && sym->formal && sym->formal->sym)
  	    {
  	      ns = sym->formal->sym->ns;
diff -Nrcpad gcc-17-20260524/gcc/fortran/openmp.cc gcc-17-20260531/gcc/fortran/openmp.cc
*** gcc-17-20260524/gcc/fortran/openmp.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/openmp.cc	Sun May 31 22:32:06 2026
*************** gfc_match_omp_variable_list (const char
*** 553,559 ****
  	    {
  	      gcc_assert (allow_common);
  	      gfc_error ("%qs at %L is part of the common block %</%s/%> and "
! 			 "may only be specificed implicitly via the named "
  			 "common block", sym->name, &cur_loc,
  			 sym->common_head->name);
  	      goto cleanup;
--- 553,559 ----
  	    {
  	      gcc_assert (allow_common);
  	      gfc_error ("%qs at %L is part of the common block %</%s/%> and "
! 			 "may only be specified implicitly via the named "
  			 "common block", sym->name, &cur_loc,
  			 sym->common_head->name);
  	      goto cleanup;
*************** gfc_resolve_omp_allocate (gfc_namespace
*** 9063,9086 ****
  		       &n->u2.allocator->where, com ? "/" : "",
  		       com ? n->sym->common_head->name : n->sym->name,
  		       com ? "/" : "", &n->where);
! 	  /* Only local static variables might use omp_cgroup_mem_alloc (6),
  	     omp_pteam_mem_alloc (7), or omp_thread_mem_alloc (8).  */
! 	  else if ((!ns->proc_name
! 		    || ns->proc_name->attr.flavor == FL_PROGRAM
! 		    || ns->proc_name->attr.flavor == FL_BLOCK_DATA
! 		    || ns->proc_name->attr.flavor == FL_MODULE
! 		    || com)
! 		   && mpz_cmp_si (n->u2.allocator->value.integer,
  				  6 /* cgroup */) >= 0
  		   && mpz_cmp_si (n->u2.allocator->value.integer,
  				  8 /* thread */) <= 0)
  	    {
  	      const char *alloc_name[] = {"omp_cgroup_mem_alloc",
  					  "omp_pteam_mem_alloc",
  					  "omp_thread_mem_alloc" };
  	      gfc_error ("Predefined allocator %qs in ALLOCATOR clause at %L, "
! 			 "used for list item %<%s%s%s%> at %L, may only be used"
! 			 " for local static variables",
  			 alloc_name[mpz_get_ui (n->u2.allocator->value.integer)
  				    - 6 /* cgroup */], &n->u2.allocator->where,
  			 com ? "/" : "",
--- 9063,9084 ----
  		       &n->u2.allocator->where, com ? "/" : "",
  		       com ? n->sym->common_head->name : n->sym->name,
  		       com ? "/" : "", &n->where);
! 	  /* Static variables may not use omp_cgroup_mem_alloc (6),
  	     omp_pteam_mem_alloc (7), or omp_thread_mem_alloc (8).  */
! 	  else if (mpz_cmp_si (n->u2.allocator->value.integer,
  				  6 /* cgroup */) >= 0
  		   && mpz_cmp_si (n->u2.allocator->value.integer,
  				  8 /* thread */) <= 0)
  	    {
+ 	      STATIC_ASSERT (GOMP_OMP_PREDEF_ALLOC_CGROUP == 6);
+ 	      STATIC_ASSERT (GOMP_OMP_PREDEF_ALLOC_PTEAM == 7);
+ 	      STATIC_ASSERT (GOMP_OMP_PREDEF_ALLOC_THREAD == 8);
  	      const char *alloc_name[] = {"omp_cgroup_mem_alloc",
  					  "omp_pteam_mem_alloc",
  					  "omp_thread_mem_alloc" };
  	      gfc_error ("Predefined allocator %qs in ALLOCATOR clause at %L, "
! 			 "used for list item %<%s%s%s%> at %L, may not be used"
! 			 " for static variables",
  			 alloc_name[mpz_get_ui (n->u2.allocator->value.integer)
  				    - 6 /* cgroup */], &n->u2.allocator->where,
  			 com ? "/" : "",
diff -Nrcpad gcc-17-20260524/gcc/fortran/resolve.cc gcc-17-20260531/gcc/fortran/resolve.cc
*** gcc-17-20260524/gcc/fortran/resolve.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/resolve.cc	Sun May 31 22:32:06 2026
*************** resolve_global_procedure (gfc_symbol *sy
*** 2826,2832 ****
  				   reason, sizeof(reason), NULL, NULL,
  				   &bad_result_characteristics))
  	{
! 	  /* Turn erros into warnings with -std=gnu and -std=legacy,
  	     unless a function returns a wrong type, which can lead
  	     to all kinds of ICEs and wrong code.  */
  
--- 2826,2832 ----
  				   reason, sizeof(reason), NULL, NULL,
  				   &bad_result_characteristics))
  	{
! 	  /* Turn errors into warnings with -std=gnu and -std=legacy,
  	     unless a function returns a wrong type, which can lead
  	     to all kinds of ICEs and wrong code.  */
  
*************** gfc_fixup_inferred_type_refs (gfc_expr *
*** 7024,7030 ****
  	break;
        }
  
!   /* Verify that the type inferrence mechanism has not introduced a spurious
       array reference.  This can happen with an associate name, whose selector
       is an element of another inferred type.  */
    target = e->symtree->n.sym->assoc->target;
--- 7024,7030 ----
  	break;
        }
  
!   /* Verify that the type inference mechanism has not introduced a spurious
       array reference.  This can happen with an associate name, whose selector
       is an element of another inferred type.  */
    target = e->symtree->n.sym->assoc->target;
*************** gfc_verify_binding_labels (gfc_symbol *s
*** 15057,15063 ****
    /* According to the Fortran standard, global identifiers are case
       insensitive, which also holds for C identifiers.  This was probably done
       for systems which had case-insensitive linkers.  Such systems could not
!      accomodate the C standards referenced, so this restriction makes little
       sense for modern systems. Therefore, check case-sensitive labels unless
       -pedantic is in force.  */
  
--- 15057,15063 ----
    /* According to the Fortran standard, global identifiers are case
       insensitive, which also holds for C identifiers.  This was probably done
       for systems which had case-insensitive linkers.  Such systems could not
!      accommodate the C standards referenced, so this restriction makes little
       sense for modern systems. Therefore, check case-sensitive labels unless
       -pedantic is in force.  */
  
*************** resolve_fl_parameter (gfc_symbol *sym)
*** 18319,18325 ****
        && !gfc_is_constant_expr (sym->value))
      {
        /* PR fortran/117070 argues a nonconstant proc pointer can appear in
! 	 the array constructor of a paramater.  This seems inconsistant with
  	 the concept of a parameter. TODO: Needs an interpretation.  */
        if (sym->value->ts.type == BT_DERIVED
  	  && sym->value->ts.u.derived
--- 18319,18325 ----
        && !gfc_is_constant_expr (sym->value))
      {
        /* PR fortran/117070 argues a nonconstant proc pointer can appear in
! 	 the array constructor of a parameter.  This seems inconsistent with
  	 the concept of a parameter. TODO: Needs an interpretation.  */
        if (sym->value->ts.type == BT_DERIVED
  	  && sym->value->ts.u.derived
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-array.cc gcc-17-20260531/gcc/fortran/trans-array.cc
*** gcc-17-20260524/gcc/fortran/trans-array.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-array.cc	Sun May 31 22:32:06 2026
*************** gfc_set_loop_bounds_from_array_spec (gfc
*** 1121,1127 ****
     free the array afterwards.
  
     If INITIAL is not NULL, it is packed using internal_pack and the result used
!    as data instead of allocating a fresh, unitialized area of memory.
  
     Initialization code is added to PRE and finalization code to POST.
     DYNAMIC is true if the caller may want to extend the array later
--- 1121,1127 ----
     free the array afterwards.
  
     If INITIAL is not NULL, it is packed using internal_pack and the result used
!    as data instead of allocating a fresh, uninitialized area of memory.
  
     Initialization code is added to PRE and finalization code to POST.
     DYNAMIC is true if the caller may want to extend the array later
*************** gfc_trans_array_constructor_value (stmtb
*** 2434,2440 ****
    /* F2008 4.5.6.3 para 5: If an executable construct references a structure
       constructor or array constructor, the entity created by the constructor is
       finalized after execution of the innermost executable construct containing
!      the reference. This, in fact, was later deleted by the Combined Techical
       Corrigenda 1 TO 4 for fortran 2008 (f08/0011).
  
       Transmit finalization of this constructor through 'finalblock'. */
--- 2434,2440 ----
    /* F2008 4.5.6.3 para 5: If an executable construct references a structure
       constructor or array constructor, the entity created by the constructor is
       finalized after execution of the innermost executable construct containing
!      the reference. This, in fact, was later deleted by the Combined Technical
       Corrigenda 1 TO 4 for fortran 2008 (f08/0011).
  
       Transmit finalization of this constructor through 'finalblock'. */
*************** maybe_substitute_expr (tree *tp, int *wa
*** 3484,3490 ****
  }
  
  
! /* Substitute in EXPR any occurence of TARGET with REPLACEMENT.  */
  
  static void
  substitute_subexpr_in_expr (tree target, tree replacement, tree expr)
--- 3484,3490 ----
  }
  
  
! /* Substitute in EXPR any occurrence of TARGET with REPLACEMENT.  */
  
  static void
  substitute_subexpr_in_expr (tree target, tree replacement, tree expr)
*************** duplicate_allocatable_coarray (tree dest
*** 10058,10064 ****
      }
    else
      {
!       /* Set the rank or unitialized memory access may be reported.  */
        tmp = gfc_conv_descriptor_rank (dest);
        gfc_add_modify (&globalblock, tmp, build_int_cst (TREE_TYPE (tmp), rank));
  
--- 10058,10064 ----
      }
    else
      {
!       /* Set the rank or uninitialized memory access may be reported.  */
        tmp = gfc_conv_descriptor_rank (dest);
        gfc_add_modify (&globalblock, tmp, build_int_cst (TREE_TYPE (tmp), rank));
  
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-decl.cc gcc-17-20260531/gcc/fortran/trans-decl.cc
*** gcc-17-20260524/gcc/fortran/trans-decl.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-decl.cc	Sun May 31 22:32:06 2026
*************** get_proc_pointer_decl (gfc_symbol *sym)
*** 2212,2218 ****
  
    if ((sym->ns->proc_name
        && sym->ns->proc_name->backend_decl == current_function_decl)
!       || sym->attr.contained)
      gfc_add_decl_to_function (decl);
    else if (sym->ns->proc_name->attr.flavor != FL_MODULE)
      gfc_add_decl_to_parent_function (decl);
--- 2212,2223 ----
  
    if ((sym->ns->proc_name
        && sym->ns->proc_name->backend_decl == current_function_decl)
!       || sym->attr.contained
!       || (sym->ns->proc_name
! 	  && sym->ns->proc_name->attr.flavor == FL_LABEL))
!     /* The last condition handles BLOCK constructs: the proc_name has
!        FL_LABEL flavor and its backend_decl is not set, but the proc pointer
!        belongs to the enclosing function (current_function_decl).  */
      gfc_add_decl_to_function (decl);
    else if (sym->ns->proc_name->attr.flavor != FL_MODULE)
      gfc_add_decl_to_parent_function (decl);
*************** build_function_decl (gfc_symbol * sym, b
*** 2575,2585 ****
  	      && flag_module_private)))
      sym->attr.access = ACCESS_PRIVATE;
  
    if (!current_function_decl
        && !sym->attr.entry_master && !sym->attr.is_main_program
        && (sym->attr.access != ACCESS_PRIVATE || sym->binding_label
! 	  || sym->attr.public_used))
!     TREE_PUBLIC (fndecl) = 1;
  
    if (sym->attr.referenced || sym->attr.entry_master)
      TREE_USED (fndecl) = 1;
--- 2580,2606 ----
  	      && flag_module_private)))
      sym->attr.access = ACCESS_PRIVATE;
  
+   bool in_module_contains = sym->module && sym->ns->proc_name
+ 			     && sym->ns->proc_name->attr.flavor == FL_MODULE;
+ 
    if (!current_function_decl
        && !sym->attr.entry_master && !sym->attr.is_main_program
        && (sym->attr.access != ACCESS_PRIVATE || sym->binding_label
! 	  || sym->attr.public_used || in_module_contains))
!     {
!       TREE_PUBLIC (fndecl) = 1;
! 
!       /* 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;
! 	}
!     }
  
    if (sym->attr.referenced || sym->attr.entry_master)
      TREE_USED (fndecl) = 1;
*************** gfc_trans_deferred_vars (gfc_symbol * pr
*** 5522,5528 ****
  	      input_location = gfc_get_location (&n->u2.allocator->where);
  	      gfc_conv_expr (&se, n->u2.allocator);
  	    }
! 	  /* We need to evalulate non-constants - also to find the location
  	     after which the GOMP_alloc has to be added to - also as BLOCK
  	     does not yield a new BIND_EXPR_BODY.  */
  	  if (n->u2.allocator
--- 5543,5549 ----
  	      input_location = gfc_get_location (&n->u2.allocator->where);
  	      gfc_conv_expr (&se, n->u2.allocator);
  	    }
! 	  /* We need to evaluate non-constants - also to find the location
  	     after which the GOMP_alloc has to be added to - also as BLOCK
  	     does not yield a new BIND_EXPR_BODY.  */
  	  if (n->u2.allocator
*************** done:
*** 7887,7893 ****
    gfc_init_block (&block);
  
    /* For bind(C), Fortran does not permit mixing 'pointer' with 'contiguous' (or
!      len=*). Thus, when copy out is needed, the bounds ofthe descriptor remain
       unchanged.  */
    if (do_copy_inout)
      {
--- 7908,7914 ----
    gfc_init_block (&block);
  
    /* For bind(C), Fortran does not permit mixing 'pointer' with 'contiguous' (or
!      len=*). Thus, when copy out is needed, the bounds of the descriptor remain
       unchanged.  */
    if (do_copy_inout)
      {
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-expr.cc gcc-17-20260531/gcc/fortran/trans-expr.cc
*** gcc-17-20260524/gcc/fortran/trans-expr.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-expr.cc	Sun May 31 22:32:06 2026
*************** gfc_vptr_size_get (tree vptr)
*** 451,457 ****
  
  /* IF ts is null (default), search for the last _class ref in the chain
     of references of the expression and cut the chain there.  Although
!    this routine is similiar to class.cc:gfc_add_component_ref (), there
     is a significant difference: gfc_add_component_ref () concentrates
     on an array ref that is the last ref in the chain and is oblivious
     to the kind of refs following.
--- 451,457 ----
  
  /* IF ts is null (default), search for the last _class ref in the chain
     of references of the expression and cut the chain there.  Although
!    this routine is similar to class.cc:gfc_add_component_ref (), there
     is a significant difference: gfc_add_component_ref () concentrates
     on an array ref that is the last ref in the chain and is oblivious
     to the kind of refs following.
*************** gfc_trans_subcomponent_assign (tree dest
*** 10224,10230 ****
            c = gfc_constructor_next (c);
          }
        /* The following constructor expression, if any, represents a specific
!          map intializer, as given by the user.  */
        if (c != NULL && c->expr != NULL)
          {
            gcc_assert (expr->expr_type == EXPR_STRUCTURE);
--- 10224,10230 ----
            c = gfc_constructor_next (c);
          }
        /* The following constructor expression, if any, represents a specific
!          map initializer, as given by the user.  */
        if (c != NULL && c->expr != NULL)
          {
            gcc_assert (expr->expr_type == EXPR_STRUCTURE);
*************** gfc_conv_expr (gfc_se * se, gfc_expr * e
*** 10694,10700 ****
  	 structure constructor or array constructor, the entity created by
  	 the constructor is finalized after execution of the innermost
  	 executable construct containing the reference. This, in fact,
! 	 was later deleted by the Combined Techical Corrigenda 1 TO 4 for
  	 fortran 2008 (f08/0011).  */
        if ((gfc_option.allow_std & (GFC_STD_F2008 | GFC_STD_F2003))
  	  && !(gfc_option.allow_std & GFC_STD_GNU)
--- 10694,10700 ----
  	 structure constructor or array constructor, the entity created by
  	 the constructor is finalized after execution of the innermost
  	 executable construct containing the reference. This, in fact,
! 	 was later deleted by the Combined Technical Corrigenda 1 TO 4 for
  	 fortran 2008 (f08/0011).  */
        if ((gfc_option.allow_std & (GFC_STD_F2008 | GFC_STD_F2003))
  	  && !(gfc_option.allow_std & GFC_STD_GNU)
*************** fcncall_realloc_result (gfc_se *se, int
*** 12182,12188 ****
  
    /* Check that the shapes are the same between lhs and expression.
       The evaluation of the shape is done in 'shape_block' to avoid
!      unitialized warnings from the lhs bounds. */
    not_same_shape = boolean_false_node;
    gfc_start_block (&shape_block);
    for (n = 0 ; n < rank; n++)
--- 12182,12188 ----
  
    /* Check that the shapes are the same between lhs and expression.
       The evaluation of the shape is done in 'shape_block' to avoid
!      uninitialized warnings from the lhs bounds. */
    not_same_shape = boolean_false_node;
    gfc_start_block (&shape_block);
    for (n = 0 ; n < rank; n++)
*************** alloc_scalar_allocatable_for_assignment
*** 12863,12869 ****
  
     a = a + 4
  
!    to make sure we do not check for reallocation unneccessarily.  */
  
  
  /* Strip parentheses from an expression to get the underlying variable.
--- 12863,12869 ----
  
     a = a + 4
  
!    to make sure we do not check for reallocation unnecessarily.  */
  
  
  /* Strip parentheses from an expression to get the underlying variable.
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 13248,13254 ****
  	 structure constructor or array constructor, the entity created by
  	 the constructor is finalized after execution of the innermost
  	 executable construct containing the reference.
! 	 These finalizations were later deleted by the Combined Techical
  	 Corrigenda 1 TO 4 for fortran 2008 (f08/0011).  */
        else if (gfc_notification_std (GFC_STD_F2018_DEL)
  	  && (expr2->expr_type == EXPR_STRUCTURE
--- 13248,13254 ----
  	 structure constructor or array constructor, the entity created by
  	 the constructor is finalized after execution of the innermost
  	 executable construct containing the reference.
! 	 These finalizations were later deleted by the Combined Technical
  	 Corrigenda 1 TO 4 for fortran 2008 (f08/0011).  */
        else if (gfc_notification_std (GFC_STD_F2018_DEL)
  	  && (expr2->expr_type == EXPR_STRUCTURE
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-intrinsic.cc gcc-17-20260531/gcc/fortran/trans-intrinsic.cc
*** gcc-17-20260524/gcc/fortran/trans-intrinsic.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-intrinsic.cc	Sun May 31 22:32:06 2026
*************** gfc_conv_intrinsic_loc (gfc_se * se, gfc
*** 9840,9876 ****
    se->expr = temp_var;
  }
  
- 
- /* Specialized trim for f_c_string.  */
- 
- static void
- conv_trim (gfc_se *tse, gfc_se *str)
- {
-   tree cond, plen, pvar, tlen, ttmp, tvar;
- 
-   tlen = gfc_create_var (gfc_charlen_type_node, "tlen");
-   plen = gfc_build_addr_expr (NULL_TREE, tlen);
- 
-   tvar = gfc_create_var (pchar_type_node, "tstr");
-   pvar = gfc_build_addr_expr (ppvoid_type_node, tvar);
- 
-   ttmp = build_call_expr_loc (input_location, gfor_fndecl_string_trim, 4,
- 			      plen, pvar, str->string_length, str->expr);
- 
-   gfc_add_expr_to_block (&tse->pre, ttmp);
- 
-   /* Free the temporary afterwards, if necessary.  */
-   cond = fold_build2_loc (input_location, GT_EXPR, logical_type_node,
- 			  tlen, build_int_cst (TREE_TYPE (tlen), 0));
-   ttmp = gfc_call_free (tvar);
-   ttmp = build3_v (COND_EXPR, cond, ttmp, build_empty_stmt (input_location));
-   gfc_add_expr_to_block (&tse->post, ttmp);
- 
-   tse->expr = tvar;
-   tse->string_length = tlen;
- }
- 
- 
  /* The following routine generates code for the intrinsic functions from
     the ISO_C_BINDING module: C_LOC, C_FUNLOC, C_ASSOCIATED, and
     F_C_STRING.  */
--- 9840,9845 ----
*************** conv_isocbinding_function (gfc_se *se, g
*** 9965,10105 ****
  	 f_c_string(string, .false.) -> trim(string) // c_null_char
  	 f_c_string(string, .true.)  -> string       // c_null_char  */
  
-       gfc_se lse, rse, tse;
-       tree len, tmp, var;
        gfc_expr *string = arg->expr;
        gfc_expr *asis = arg->next->expr;
!       gfc_expr *cnc;
! 
!       /* Convert string. */
!       gfc_init_se (&lse, se);
!       gfc_conv_expr (&lse, string);
!       gfc_conv_string_parameter (&lse);
! 
!       /* Create a string for C_NULL_CHAR and convert it.  */
!       cnc = gfc_get_character_expr (gfc_default_character_kind,
! 				    &string->where, "\0", 1);
!       gfc_init_se (&rse, se);
!       gfc_conv_expr (&rse, cnc);
!       gfc_conv_string_parameter (&rse);
!       gfc_free_expr (cnc);
  
! #ifdef cnode
! #undef cnode
! #endif
! #define cnode gfc_charlen_type_node
!       if (asis)
  	{
! 	  stmtblock_t block;
! 	  gfc_se asis_se, vse;
! 	  tree elen, evar, tlen, tvar;
! 	  tree else_branch, then_branch;
! 
! 	  elen = evar = tlen = tvar = NULL_TREE;
! 
! 	  /* f_c_string(string, .true.) -> string // c_null_char  */
! 
! 	  gfc_init_block (&block);
! 
! 	  gfc_add_block_to_block (&block, &lse.pre);
! 	  gfc_add_block_to_block (&block, &rse.pre);
! 
! 	  tlen = fold_build2_loc (input_location, PLUS_EXPR, cnode,
! 				  fold_convert (cnode, lse.string_length),
! 				  fold_convert (cnode, rse.string_length));
! 
! 	  gfc_init_se (&vse, se);
! 	  tvar = gfc_conv_string_tmp (&vse, pchar_type_node, tlen);
! 	  gfc_add_block_to_block (&block, &vse.pre);
! 
! 	  tmp = build_call_expr_loc (input_location, gfor_fndecl_concat_string,
! 				     6, tlen, tvar,
! 				     lse.string_length, lse.expr,
! 				     rse.string_length, rse.expr);
! 	  gfc_add_expr_to_block (&block, tmp);
! 
! 	  then_branch = gfc_finish_block (&block);
! 
! 	  /* f_c_string(string, .false.) = trim(string) // c_null_char  */
! 
! 	  gfc_init_block (&block);
! 
! 	  gfc_init_se (&tse, se);
! 	  conv_trim (&tse, &lse);
! 	  gfc_add_block_to_block (&block, &tse.pre);
! 	  gfc_add_block_to_block (&block, &rse.pre);
! 
! 	  elen = fold_build2_loc (input_location, PLUS_EXPR, cnode,
! 				  fold_convert (cnode, tse.string_length),
! 				  fold_convert (cnode, rse.string_length));
! 
! 	  gfc_init_se (&vse, se);
! 	  evar = gfc_conv_string_tmp (&vse, pchar_type_node, elen);
! 	  gfc_add_block_to_block (&block, &vse.pre);
! 
! 	  tmp = build_call_expr_loc (input_location, gfor_fndecl_concat_string,
! 				     6, elen, evar,
! 				     tse.string_length, tse.expr,
! 				     rse.string_length, rse.expr);
! 	  gfc_add_expr_to_block (&block, tmp);
! 
! 	  else_branch = gfc_finish_block (&block);
! 
  	  gfc_init_se (&asis_se, se);
  	  gfc_conv_expr (&asis_se, asis);
  	  if (asis->expr_type == EXPR_VARIABLE
! 	    && asis->symtree->n.sym->attr.dummy
! 	    && asis->symtree->n.sym->attr.optional)
  	    {
  	      tree present = gfc_conv_expr_present (asis->symtree->n.sym);
! 	      asis_se.expr = build3_loc (input_location, COND_EXPR,
! 					 logical_type_node, present,
! 					 asis_se.expr,
! 					 build_int_cst (logical_type_node, 0));
  	    }
! 	  gfc_add_block_to_block (&se->pre, &asis_se.pre);
! 	  tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node,
! 				 asis_se.expr, then_branch, else_branch);
  
! 	  gfc_add_expr_to_block (&se->pre, tmp);
  
! 	  var = fold_build3_loc (input_location, COND_EXPR, pchar_type_node,
! 				 asis_se.expr, tvar, evar);
! 	  gfc_add_expr_to_block (&se->pre, var);
  
! 	  len = fold_build3_loc (input_location, COND_EXPR, cnode,
! 				 asis_se.expr, tlen, elen);
! 	  gfc_add_expr_to_block (&se->pre, len);
  	}
        else
  	{
! 	  /* f_c_string(string) = trim(string) // c_null_char  */
! 
! 	  gfc_add_block_to_block (&se->pre, &lse.pre);
! 	  gfc_add_block_to_block (&se->pre, &rse.pre);
  
! 	  gfc_init_se (&tse, se);
! 	  conv_trim (&tse, &lse);
! 	  gfc_add_block_to_block (&se->pre, &tse.pre);
! 	  gfc_add_block_to_block (&se->post, &tse.post);
  
! 	  len = fold_build2_loc (input_location, PLUS_EXPR, cnode,
! 				 fold_convert (cnode, tse.string_length),
! 				 fold_convert (cnode, rse.string_length));
  
! 	  var = gfc_conv_string_tmp (se, pchar_type_node, len);
  
! 	  tmp = build_call_expr_loc (input_location, gfor_fndecl_concat_string,
! 				     6, len, var,
! 				     tse.string_length, tse.expr,
! 				     rse.string_length, rse.expr);
  	  gfc_add_expr_to_block (&se->pre, tmp);
! 	}
  
!       se->expr = var;
!       se->string_length = len;
  
! #undef cnode
      }
    else
      gcc_unreachable ();
--- 9934,10121 ----
  	 f_c_string(string, .false.) -> trim(string) // c_null_char
  	 f_c_string(string, .true.)  -> string       // c_null_char  */
  
        gfc_expr *string = arg->expr;
        gfc_expr *asis = arg->next->expr;
!       bool need_asis = false, need_trim = false;
!       gfc_se asis_se;
  
!       if (!asis)
  	{
! 	  need_trim = true;
! 	  need_asis = false;
! 	}
!       else if (asis->expr_type == EXPR_CONSTANT)
! 	{
! 	  need_asis = asis->value.logical;
! 	  need_trim = !need_asis;
! 	}
!       else
! 	{
! 	  /* A conditional expression is needed.  */
! 	  need_asis = true;
! 	  need_trim = true;
  	  gfc_init_se (&asis_se, se);
  	  gfc_conv_expr (&asis_se, asis);
  	  if (asis->expr_type == EXPR_VARIABLE
! 	      && asis->symtree->n.sym->attr.dummy
! 	      && asis->symtree->n.sym->attr.optional)
  	    {
  	      tree present = gfc_conv_expr_present (asis->symtree->n.sym);
! 	      asis_se.expr
! 		= build3_loc (input_location, COND_EXPR,
! 			      logical_type_node, present,
! 			      asis_se.expr, logical_false_node);
  	    }
! 	  gfc_make_safe_expr (&asis_se);
! 	}
  
!       /* Handle the case of a constant string argument first.  */
!       if (string->expr_type == EXPR_CONSTANT)
! 	{
! 	  /* Output for the asis "then" case goes tlen/tstr, and the
! 	     trimmed case in elen/estr.  */
! 	  tree elen, estr, tlen, tstr;
! 	  elen = estr = tlen = tstr = NULL_TREE;
  
! 	  gfc_char_t *orig_string = string->value.character.string;
! 	  gfc_charlen_t orig_len = string->value.character.length;
! 	  gfc_charlen_t n;
! 	  gfc_char_t *buf
! 	    = (gfc_char_t *) alloca ((orig_len + 1) * sizeof (gfc_char_t));
! 	  memcpy (buf, orig_string, orig_len * sizeof (gfc_char_t));
! 	  buf[orig_len] = '\0';
! 	  int kind = gfc_default_character_kind;
! 	  gcc_assert (string->ts.kind == kind);
  
! 	  /* Build the new string constant(s).  */
! 	  if (need_asis)
! 	    {
! 	      tstr = gfc_build_wide_string_const (kind, orig_len + 1, buf);
! 	      tlen = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (tstr)));
! 	      if (!need_trim)
! 		{
! 		  se->expr = tstr;
! 		  se->string_length = tlen;
! 		  return;
! 		}
! 	    }
! 	  if (need_trim)
! 	    {
! 	      for (n = orig_len; n; n--)
! 		if (buf[n - 1] != ' ')
! 		  break;
! 	      buf[n] = '\0';
! 	      if (need_asis && n == orig_len)
! 		{
! 		  /* Special case; trimming is a no-op.  Add side-effects
! 		     from the condition and then just return the string
! 		     without a conditional.  */
! 		  gfc_add_block_to_block (&se->pre, &asis_se.pre);
! 		  se->expr = tstr;
! 		  se->string_length = tlen;
! 		  return;
! 		}
! 	      else
! 		{
! 		  estr = gfc_build_wide_string_const (kind, n + 1, buf);
! 		  elen = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (estr)));
! 		}
! 	      if (!need_asis)
! 		{
! 		  se->expr = estr;
! 		  se->string_length = elen;
! 		  return;
! 		}
! 	    }
! 	  gcc_assert (need_asis && need_trim);
! 	  gfc_add_block_to_block (&se->pre, &asis_se.pre);
! 	  se->expr
! 	    = fold_build3_loc (input_location, COND_EXPR,
! 			       pchar_type_node, asis_se.expr,
! 			       tstr, estr);
! 	  se->string_length
! 	    = fold_build3_loc (input_location, COND_EXPR,
! 			       gfc_charlen_type_node, asis_se.expr,
! 			       tlen, elen);
! 	  return;
  	}
        else
+ 	/* We have to generate code to do the string transformation(s) at
+ 	   runtime.  */
  	{
! 	  tree tmp;
  
! 	  /* Convert input string. */
! 	  gfc_se sse;
! 	  gfc_init_se (&sse, se);
! 	  gfc_conv_expr (&sse, string);
! 	  gfc_conv_string_parameter (&sse);
! 	  gfc_make_safe_expr (&sse);
! 	  gfc_add_block_to_block (&se->pre, &sse.pre);
  
! 	  /* Use a temporary for the (possibly trimmed) string length.  */
! 	  tree lenvar = gfc_create_var (gfc_charlen_type_node, NULL);
! 	  gfc_add_modify (&se->pre, lenvar, sse.string_length);
  
! 	  /* Build the expression for a call to LEN_TRIM if we may need
! 	     to trim the string.  If it's conditional, handle that too.  */
! 	  if (need_trim)
! 	    {
! 	      tree trimlen
! 		= build_call_expr_loc (input_location,
! 				       gfor_fndecl_string_len_trim, 2,
! 				       lenvar, sse.expr);
! 	      if (need_asis)
! 		{
! 		  gfc_add_block_to_block (&se->pre, &asis_se.pre);
! 		  tmp = fold_build3_loc (input_location, COND_EXPR,
! 					 gfc_charlen_type_node, asis_se.expr,
! 					 lenvar, trimlen);
! 		  gfc_add_modify (&se->pre, lenvar, tmp);
! 		}
! 	      else
! 		gfc_add_modify (&se->pre, lenvar, trimlen);
! 	    }
  
! 	  /* Allocate a new string newvar that is lenvar+1 bytes long.
! 	     memcpy the first lenvar bytes from the input string, and
! 	     add a null character.  Note that lenvar, the length of
! 	     the (trimmed) original string, has type gfc_charlen_type_node,
! 	     but newlen is size_type_node.  */
! 	  tree string_type_node = build_pointer_type (char_type_node);
! 	  tree newvar = gfc_create_var (string_type_node, NULL);
! 	  tree newlen = fold_build2_loc (input_location, PLUS_EXPR,
! 					 size_type_node,
! 					 fold_convert (size_type_node,
! 						       lenvar),
! 					 size_one_node);
! 	  gfc_add_modify (&se->pre, newvar,
! 			  gfc_call_malloc (&se->pre, string_type_node,
! 					   newlen));
! 	  tmp = build_call_expr_loc (input_location,
! 				     builtin_decl_explicit (BUILT_IN_MEMCPY),
! 				     3,
! 				     fold_convert (pvoid_type_node, newvar),
! 				     fold_convert (pvoid_type_node, sse.expr),
! 				     fold_convert (size_type_node, lenvar));
  	  gfc_add_expr_to_block (&se->pre, tmp);
! 	  tmp = fold_build2_loc (input_location, POINTER_PLUS_EXPR,
! 				 string_type_node, newvar,
! 				 fold_convert (size_type_node, lenvar));
! 	  tmp = fold_build1_loc (input_location, INDIRECT_REF,
! 				 char_type_node, tmp);
! 	  gfc_add_modify (&se->pre, tmp,
! 			  fold_convert (char_type_node, integer_zero_node));
  
! 	  /* Remember to free the string later.  */
! 	  tmp = gfc_call_free (newvar);
! 	  gfc_add_expr_to_block (&se->post, tmp);
  
! 	  /* Return the result.  */
! 	  se->expr = newvar;
! 	  se->string_length = fold_convert (gfc_charlen_type_node, newlen);
! 	  return;
! 	}
      }
    else
      gcc_unreachable ();
*************** conv_isocbinding_subroutine (gfc_code *c
*** 10267,10272 ****
--- 10283,10404 ----
  }
  
  
+ /* The following routine generates code for both forms of the intrinsic
+    subroutine C_F_STRPOINTER from the ISO_C_BINDING module.  */
+ static tree
+ conv_isocbinding_subroutine_strpointer (gfc_code *code)
+ {
+   gfc_actual_arglist *arg = code->ext.actual;
+   gfc_expr *arg0 = arg->expr;
+   gfc_expr *fstrptr = arg->next->expr;
+   gfc_expr *nchars = arg->next->next->expr;
+   tree ptr;
+   tree size = NULL_TREE;
+   tree nc = NULL_TREE;
+   tree fstrptr_ptr, fstrptr_len;
+   stmtblock_t block;
+   gfc_init_block (&block);
+   gfc_se se0, se1, se2;
+   gfc_init_se (&se0, NULL);
+   gfc_init_se (&se1, NULL);
+   gfc_init_se (&se2, NULL);
+ 
+   /* arg0 can either be a simply contiguous rank-one character array,
+      or a scalar of type c_ptr that points to a contiguous array.
+      In the first case nchars may be omitted and defaults to the size
+      of the array.  */
+   if (arg0->rank == 1)
+     {
+       gfc_array_ref *ar = gfc_find_array_ref (arg0);
+       if (ar->as && ar->as->type == AS_ASSUMED_SIZE
+ 	  && (ar->type == AR_FULL || ar->end[0] == nullptr))
+ 	/* No size available.  */
+ 	gfc_conv_array_parameter (&se0, arg0, true, NULL, NULL, NULL);
+       else
+ 	{
+ 	  gfc_conv_array_parameter (&se0, arg0, true, NULL, NULL, &size);
+ 	  gcc_assert (size);
+ 	}
+       ptr = se0.expr;
+     }
+   else if (arg0->rank == 0)
+     {
+       /* Scalar case.  arg0 is a C pointer to the string, and the
+ 	 nchars argument is required.  */
+       gfc_conv_expr (&se0, arg0);
+       ptr = se0.expr;
+       /* We already issued a diagnostic for this in parsing.  */
+       gcc_assert (nchars);
+     }
+   else
+     gcc_unreachable ();
+ 
+   /* Translate the fortran array pointer argument.  AFAICT the
+      representation here is that this returns the pointer location in
+      se1.expr and there is a separate decl for the length.
+      Of course none of this is properly documented....  :-(  */
+   gfc_conv_expr (&se1, fstrptr);
+   fstrptr_ptr = se1.expr;
+   gcc_assert (fstrptr->ts.u.cl && fstrptr->ts.u.cl->backend_decl);
+   fstrptr_len = fstrptr->ts.u.cl->backend_decl;
+ 
+   /* Translate nchars, if provided.  If we have both the array size
+      and nchars, take the minimum value.  NC is the tree expr to hold
+      the value.  */
+   if (nchars)
+     {
+       gfc_conv_expr (&se2, nchars);
+       nc = se2.expr;
+       if (size)
+ 	nc = fold_build2_loc (input_location, MIN_EXPR,
+ 			      TREE_TYPE (nc), nc, size);
+       /* Check for the case where an optional dummy parameter is
+ 	 passed as the optional nchars argument.  It's not supposed to
+ 	 be omitted if we don't also have an array size; rather than
+ 	 produce a run-time error, assume size 0.  */
+       if (nchars->expr_type == EXPR_VARIABLE
+ 	  && nchars->symtree->n.sym->attr.dummy
+ 	  && nchars->symtree->n.sym->attr.optional)
+ 	{
+ 	  tree present = gfc_conv_expr_present (nchars->symtree->n.sym);
+ 	  nc = build3_loc (input_location, COND_EXPR,
+ 			   TREE_TYPE (nc), present, nc,
+ 			   size ? size : build_int_cst (TREE_TYPE (nc), 0));
+ 	}
+     }
+   else
+     {
+       gcc_assert (size);
+       nc = size;
+     }
+ 
+   /* Collect argument side-effect statements.  */
+   gfc_add_block_to_block (&block, &se0.pre);
+   gfc_add_block_to_block (&block, &se1.pre);
+   gfc_add_block_to_block (&block, &se2.pre);
+ 
+   /* Generate a call to builtin_strnlen to get the C string length
+      for the output fstrptr.  */
+   ptr = gfc_evaluate_now (ptr, &block);
+   size = build_call_expr_loc (input_location,
+ 			      builtin_decl_explicit (BUILT_IN_STRNLEN), 2,
+ 			      fold_convert (const_ptr_type_node, ptr),
+ 			      fold_convert (size_type_node, nc));
+ 
+   /* Stuff the raw C char pointer PTR and actual length SIZE into fstrptr.  */
+   gfc_add_modify (&block, fstrptr_ptr,
+ 		  fold_convert (TREE_TYPE (fstrptr_ptr), ptr));
+   gfc_add_modify (&block, fstrptr_len,
+ 		  fold_convert (gfc_charlen_type_node, size));
+ 
+   /* Collect argument cleanups.  */
+   gfc_add_block_to_block (&block, &se2.post);
+   gfc_add_block_to_block (&block, &se1.post);
+   gfc_add_block_to_block (&block, &se0.post);
+ 
+   return gfc_finish_block (&block);
+ }
+ 
  /* Save and restore floating-point state.  */
  
  tree
*************** gfc_conv_intrinsic_subroutine (gfc_code
*** 13534,13539 ****
--- 13666,13675 ----
        res = conv_isocbinding_subroutine (code);
        break;
  
+     case GFC_ISYM_C_F_STRPOINTER:
+       res = conv_isocbinding_subroutine_strpointer (code);
+       break;
+ 
      case GFC_ISYM_CAF_SEND:
        res = conv_caf_send_to_remote (code);
        break;
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-openmp.cc gcc-17-20260531/gcc/fortran/trans-openmp.cc
*** gcc-17-20260524/gcc/fortran/trans-openmp.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-openmp.cc	Sun May 31 22:32:06 2026
*************** gfc_omp_deep_mapping_cnt (const gimple *
*** 2646,2652 ****
     TKIND is the map-type/kind to be used. The generated code is added to
     SEQ – and the actual struct-field address used for mapping, the map size,
     and kind value to the arrays DATA, SIZES, and KINDS, respectively.
!    OFFSET_DATA and OFFSET are size-type variables; the map operatations are
     added at array index OFFSET_DATA for DATA and at array index OFFSET for
     SIZES/KINDS, incrementing the offsets after each assignment.  */
  
--- 2646,2652 ----
     TKIND is the map-type/kind to be used. The generated code is added to
     SEQ – and the actual struct-field address used for mapping, the map size,
     and kind value to the arrays DATA, SIZES, and KINDS, respectively.
!    OFFSET_DATA and OFFSET are size-type variables; the map operations are
     added at array index OFFSET_DATA for DATA and at array index OFFSET for
     SIZES/KINDS, incrementing the offsets after each assignment.  */
  
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans-stmt.cc gcc-17-20260531/gcc/fortran/trans-stmt.cc
*** gcc-17-20260524/gcc/fortran/trans-stmt.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans-stmt.cc	Sun May 31 22:32:06 2026
*************** trans_associate_var (gfc_symbol *sym, gf
*** 2325,2331 ****
  	      /* Add the assign to the beginning of the block...  */
  	      gfc_add_modify (&se.pre, charlen,
  			      fold_convert (TREE_TYPE (charlen), tmp));
! 	      /* and the oposite way at the end of the block, to hand changes
  		 on the string length back.  */
  	      gfc_add_modify (&se.post, tmp,
  			      fold_convert (TREE_TYPE (tmp), charlen));
--- 2325,2331 ----
  	      /* Add the assign to the beginning of the block...  */
  	      gfc_add_modify (&se.pre, charlen,
  			      fold_convert (TREE_TYPE (charlen), tmp));
! 	      /* and the opposite way at the end of the block, to hand changes
  		 on the string length back.  */
  	      gfc_add_modify (&se.post, tmp,
  			      fold_convert (TREE_TYPE (tmp), charlen));
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7085,7091 ****
  	  && DECL_P (expr3) && DECL_ARTIFICIAL (expr3))
  	{
  	  /* Build a temporary symtree and symbol.  Do not add it to the current
! 	     namespace to prevent accidentaly modifying a colliding
  	     symbol's as.  */
  	  /* The name of the symtree should be unique, because gfc_create_var ()
  	     took care about generating the identifier.  */
--- 7085,7091 ----
  	  && DECL_P (expr3) && DECL_ARTIFICIAL (expr3))
  	{
  	  /* Build a temporary symtree and symbol.  Do not add it to the current
! 	     namespace to prevent accidentally modifying a colliding
  	     symbol's as.  */
  	  /* The name of the symtree should be unique, because gfc_create_var ()
  	     took care about generating the identifier.  */
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7736,7742 ****
  	  tmp= gfc_trans_init_assign (ini);
  	  flag_realloc_lhs = realloc_lhs;
  	  gfc_free_statements (ini);
! 	  /* Init_expr is freeed by above free_statements, just need to null
  	     it here.  */
  	  init_expr = NULL;
  	  gfc_add_expr_to_block (&block, tmp);
--- 7736,7742 ----
  	  tmp= gfc_trans_init_assign (ini);
  	  flag_realloc_lhs = realloc_lhs;
  	  gfc_free_statements (ini);
! 	  /* Init_expr is freed by above free_statements, just need to null
  	     it here.  */
  	  init_expr = NULL;
  	  gfc_add_expr_to_block (&block, tmp);
diff -Nrcpad gcc-17-20260524/gcc/fortran/trans.cc gcc-17-20260531/gcc/fortran/trans.cc
*** gcc-17-20260524/gcc/fortran/trans.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/fortran/trans.cc	Sun May 31 22:32:06 2026
*************** gfc_finalize_tree_expr (gfc_se *se, gfc_
*** 1624,1630 ****
      return;
  
    /* Derived type function results with components that have defined
!      assignements are handled in resolve.cc(generate_component_assignments),
       unless the assignment was replaced by a subroutine call to the
       subroutine associated with the assignment operator. */
    if ( ! is_assign_call
--- 1624,1630 ----
      return;
  
    /* Derived type function results with components that have defined
!      assignments are handled in resolve.cc(generate_component_assignments),
       unless the assignment was replaced by a subroutine call to the
       subroutine associated with the assignment operator. */
    if ( ! is_assign_call
diff -Nrcpad gcc-17-20260524/gcc/function.cc gcc-17-20260531/gcc/function.cc
*** gcc-17-20260524/gcc/function.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/function.cc	Sun May 31 22:32:06 2026
*************** static bool contains (const rtx_insn *,
*** 155,160 ****
--- 155,162 ----
  static void prepare_function_start (void);
  static void do_clobber_return_reg (rtx, void *);
  static void do_use_return_reg (rtx, void *);
+ static rtx assign_stack_local_aligned (machine_mode, poly_int64,
+               unsigned int);
  
  
  /* Stack of nested functions.  */
*************** assign_stack_local (machine_mode mode, p
*** 551,556 ****
--- 553,588 ----
    return assign_stack_local_1 (mode, size, align, ASLK_RECORD_PAD);
  }
  
+ /* Like assign_stack_local, but preserve requested over-alignment by
+    overallocating a BLKmode slot and aligning an address within it.  */
+ 
+ static rtx
+ assign_stack_local_aligned (machine_mode mode, poly_int64 size,
+ 			    unsigned int align)
+ {
+   if (targetm.calls.overaligned_stack_slot_required ()
+       && align > MAX_SUPPORTED_STACK_ALIGNMENT)
+     {
+       if (!size.is_constant ())
+ 	return assign_stack_local (mode, size, MAX_SUPPORTED_STACK_ALIGNMENT);
+ 
+       rtx allocsize = gen_int_mode (size, Pmode);
+       get_dynamic_stack_size (&allocsize, 0, align, NULL);
+ 
+       if (!CONST_INT_P (allocsize))
+ 	return assign_stack_local (mode, size, MAX_SUPPORTED_STACK_ALIGNMENT);
+ 
+       rtx slot = assign_stack_local (BLKmode, UINTVAL (allocsize),
+ 				     MAX_SUPPORTED_STACK_ALIGNMENT);
+       rtx addr = align_dynamic_address (XEXP (slot, 0), align);
+       mark_reg_pointer (addr, align);
+       slot = gen_rtx_MEM (mode, addr);
+       MEM_NOTRAP_P (slot) = 1;
+       return slot;
+     }
+   return assign_stack_local (mode, size, align);
+ }
+ 
  /* In order to evaluate some expressions, such as function calls returning
     structures in memory, we need to temporarily allocate stack locations.
     We record each allocated temporary in the following structure.
*************** temp_address_hasher::equal (temp_slot_ad
*** 708,714 ****
    return exp_equiv_p (t1->address, t2->address, 0, true);
  }
  
! /* Add ADDRESS as an alias of TEMP_SLOT to the addess -> temp slot mapping.  */
  static void
  insert_temp_slot_address (rtx address, class temp_slot *temp_slot)
  {
--- 740,746 ----
    return exp_equiv_p (t1->address, t2->address, 0, true);
  }
  
! /* Add ADDRESS as an alias of TEMP_SLOT to the address -> temp slot mapping.  */
  static void
  insert_temp_slot_address (rtx address, class temp_slot *temp_slot)
  {
*************** assign_parm_setup_block (struct assign_p
*** 2948,2968 ****
  	   ? MAX (DECL_ALIGN (parm), BITS_PER_WORD) : DECL_ALIGN (parm));
  
        SET_DECL_ALIGN (parm, parm_align);
!       if (DECL_ALIGN (parm) > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	{
! 	  rtx allocsize = gen_int_mode (size_stored, Pmode);
! 	  get_dynamic_stack_size (&allocsize, 0, DECL_ALIGN (parm), NULL);
! 	  stack_parm = assign_stack_local (BLKmode, UINTVAL (allocsize),
! 					   MAX_SUPPORTED_STACK_ALIGNMENT);
! 	  rtx addr = align_dynamic_address (XEXP (stack_parm, 0),
! 					    DECL_ALIGN (parm));
! 	  mark_reg_pointer (addr, DECL_ALIGN (parm));
! 	  stack_parm = gen_rtx_MEM (GET_MODE (stack_parm), addr);
! 	  MEM_NOTRAP_P (stack_parm) = 1;
! 	}
!       else
! 	stack_parm = assign_stack_local (BLKmode, size_stored,
! 					 DECL_ALIGN (parm));
        if (known_eq (GET_MODE_SIZE (GET_MODE (entry_parm)), size))
  	PUT_MODE (stack_parm, GET_MODE (entry_parm));
        set_mem_attributes (stack_parm, parm, 1);
--- 2980,2987 ----
  	   ? MAX (DECL_ALIGN (parm), BITS_PER_WORD) : DECL_ALIGN (parm));
  
        SET_DECL_ALIGN (parm, parm_align);
!       stack_parm
! 	= assign_stack_local_aligned (BLKmode, size_stored, DECL_ALIGN (parm));
        if (known_eq (GET_MODE_SIZE (GET_MODE (entry_parm)), size))
  	PUT_MODE (stack_parm, GET_MODE (entry_parm));
        set_mem_attributes (stack_parm, parm, 1);
*************** assign_parm_setup_reg (struct assign_par
*** 3366,3375 ****
  	  int align = STACK_SLOT_ALIGNMENT (TREE_TYPE (parm),
  					    TYPE_MODE (TREE_TYPE (parm)),
  					    TYPE_ALIGN (TREE_TYPE (parm)));
! 	  parmreg
! 	    = assign_stack_local (TYPE_MODE (TREE_TYPE (parm)),
! 				  GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (parm))),
! 				  align);
  	  set_mem_attributes (parmreg, parm, 1);
  	}
  
--- 3385,3394 ----
  	  int align = STACK_SLOT_ALIGNMENT (TREE_TYPE (parm),
  					    TYPE_MODE (TREE_TYPE (parm)),
  					    TYPE_ALIGN (TREE_TYPE (parm)));
! 	  parmreg = assign_stack_local_aligned (TYPE_MODE (TREE_TYPE (parm)),
! 						GET_MODE_SIZE (
! 						  TYPE_MODE (TREE_TYPE (parm))),
! 						align);
  	  set_mem_attributes (parmreg, parm, 1);
  	}
  
*************** gen_call_used_regs_seq (rtx_insn *ret, u
*** 5932,5938 ****
  	    1. it is a call-used register;
  	and 2. it is not a fixed register;
  	and 3. it is not live at the return of the routine;
! 	and 4. it is general registor if only_gpr is true;
  	and 5. it is used in the routine if only_used is true;
  	and 6. it is a register that passes parameter if only_arg is true.  */
  
--- 5951,5957 ----
  	    1. it is a call-used register;
  	and 2. it is not a fixed register;
  	and 3. it is not live at the return of the routine;
! 	and 4. it is general register if only_gpr is true;
  	and 5. it is used in the routine if only_used is true;
  	and 6. it is a register that passes parameter if only_arg is true.  */
  
diff -Nrcpad gcc-17-20260524/gcc/gcc-diagnostic-spec.cc gcc-17-20260531/gcc/gcc-diagnostic-spec.cc
*** gcc-17-20260524/gcc/gcc-diagnostic-spec.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gcc-diagnostic-spec.cc	Sun May 31 22:32:06 2026
*************** nowarn_spec_t::nowarn_spec_t (opt_code o
*** 121,127 ****
  GTY(()) nowarn_map_t *nowarn_map;
  
  /* Return the no-warning disposition for location LOC and option OPT
!    or for all/any otions by default.  */
  
  bool
  warning_suppressed_at (location_t loc, opt_code opt /* = all_warnings */)
--- 121,127 ----
  GTY(()) nowarn_map_t *nowarn_map;
  
  /* Return the no-warning disposition for location LOC and option OPT
!    or for all/any options by default.  */
  
  bool
  warning_suppressed_at (location_t loc, opt_code opt /* = all_warnings */)
*************** warning_suppressed_at (location_t loc, o
*** 140,146 ****
    return false;
  }
  
!  /* Change the supression of warnings for location LOC.
      OPT controls which warnings are affected.
      The wildcard OPT of -1 controls all warnings.
      If SUPP is true (the default), enable the suppression of the warnings.
--- 140,146 ----
    return false;
  }
  
!  /* Change the suppression of warnings for location LOC.
      OPT controls which warnings are affected.
      The wildcard OPT of -1 controls all warnings.
      If SUPP is true (the default), enable the suppression of the warnings.
diff -Nrcpad gcc-17-20260524/gcc/gcc.cc gcc-17-20260531/gcc/gcc.cc
*** gcc-17-20260524/gcc/gcc.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gcc.cc	Sun May 31 22:32:06 2026
*************** compilation is specified by a string cal
*** 63,69 ****
  
  /* Manage the manipulation of env vars.
  
!    We poison "getenv" and "putenv", so that all enviroment-handling is
     done through this class.  Note that poisoning happens in the
     preprocessor at the identifier level, and doesn't distinguish between
       env.getenv ();
--- 63,69 ----
  
  /* Manage the manipulation of env vars.
  
!    We poison "getenv" and "putenv", so that all environment-handling is
     done through this class.  Note that poisoning happens in the
     preprocessor at the identifier level, and doesn't distinguish between
       env.getenv ();
*************** or with constant text in a single argume
*** 607,613 ****
   %2	process CC1PLUS_SPEC as a spec.
   %*	substitute the variable part of a matched option.  (See below.)
  	Note that each comma in the substituted string is replaced by
! 	a single space.  A space is appended after the last substition
  	unless there is more text in current sequence.
   %<S    remove all occurrences of -S from the command line.
          Note - this command is position dependent.  % commands in the
--- 607,613 ----
   %2	process CC1PLUS_SPEC as a spec.
   %*	substitute the variable part of a matched option.  (See below.)
  	Note that each comma in the substituted string is replaced by
! 	a single space.  A space is appended after the last substitution
  	unless there is more text in current sequence.
   %<S    remove all occurrences of -S from the command line.
          Note - this command is position dependent.  % commands in the
*************** or with constant text in a single argume
*** 643,649 ****
            if %* appears somewhere in X, then X will be substituted
            once for each matching switch, with the %* replaced by the
            part of that switch that matched the '*'.  A space will be
! 	  appended after the last substition unless there is more
  	  text in current sequence.
   %{.S:X}  substitutes X, if processing a file with suffix S.
   %{!.S:X} substitutes X, if NOT processing a file with suffix S.
--- 643,649 ----
            if %* appears somewhere in X, then X will be substituted
            once for each matching switch, with the %* replaced by the
            part of that switch that matched the '*'.  A space will be
! 	  appended after the last substitution unless there is more
  	  text in current sequence.
   %{.S:X}  substitutes X, if processing a file with suffix S.
   %{!.S:X} substitutes X, if NOT processing a file with suffix S.
*************** proper position among the other output f
*** 1094,1100 ****
  /* Conditional to test whether the LTO plugin is used or not.
     FIXME: For slim LTO we will need to enable plugin unconditionally.  This
     still cause problems with PLUGIN_LD != LD and when plugin is built but
!    not useable.  For GCC 4.6 we don't support slim LTO and thus we can enable
     plugin only when LTO is enabled.  We still honor explicit
     -fuse-linker-plugin if the linker used understands -plugin.  */
  
--- 1094,1100 ----
  /* Conditional to test whether the LTO plugin is used or not.
     FIXME: For slim LTO we will need to enable plugin unconditionally.  This
     still cause problems with PLUGIN_LD != LD and when plugin is built but
!    not usable.  For GCC 4.6 we don't support slim LTO and thus we can enable
     plugin only when LTO is enabled.  We still honor explicit
     -fuse-linker-plugin if the linker used understands -plugin.  */
  
*************** driver::maybe_run_linker (const char *ar
*** 9339,9345 ****
  	  warning (0, "%s: linker input file unused because linking not done",
  		   outfiles[i]);
  	  if (access (outfiles[i], F_OK) < 0)
! 	    /* This is can be an indication the user specifed an errorneous
  	       separated option value, (or used the wrong prefix for an
  	       option).  */
  	    error ("%s: linker input file not found: %m", outfiles[i]);
--- 9339,9345 ----
  	  warning (0, "%s: linker input file unused because linking not done",
  		   outfiles[i]);
  	  if (access (outfiles[i], F_OK) < 0)
! 	    /* This is can be an indication the user specified an erroneous
  	       separated option value, (or used the wrong prefix for an
  	       option).  */
  	    error ("%s: linker input file not found: %m", outfiles[i]);
diff -Nrcpad gcc-17-20260524/gcc/gcov.cc gcc-17-20260531/gcc/gcov.cc
*** gcc-17-20260524/gcc/gcov.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gcov.cc	Sun May 31 22:32:06 2026
*************** static int flag_long_names = 0;
*** 694,700 ****
  
  static int flag_hash_filenames = 0;
  
! /* Print verbose informations.  */
  
  static int flag_verbose = 0;
  
--- 694,700 ----
  
  static int flag_hash_filenames = 0;
  
! /* Print verbose information.  */
  
  static int flag_verbose = 0;
  
*************** print_usage (int error_p)
*** 1134,1140 ****
    fnotice (file, "  -t, --stdout                    Output to stdout instead of a file\n");
    fnotice (file, "  -u, --unconditional-branches    Show unconditional branch counts too\n");
    fnotice (file, "  -v, --version                   Print version number, then exit\n");
!   fnotice (file, "  -w, --verbose                   Print verbose informations\n");
    fnotice (file, "  -x, --hash-filenames            Hash long pathnames\n");
    fnotice (file, "\nObsolete options:\n");
    fnotice (file, "  -i, --json-format               Replaced with -j, --json-format\n");
--- 1134,1140 ----
    fnotice (file, "  -t, --stdout                    Output to stdout instead of a file\n");
    fnotice (file, "  -u, --unconditional-branches    Show unconditional branch counts too\n");
    fnotice (file, "  -v, --version                   Print version number, then exit\n");
!   fnotice (file, "  -w, --verbose                   Print verbose information\n");
    fnotice (file, "  -x, --hash-filenames            Hash long pathnames\n");
    fnotice (file, "\nObsolete options:\n");
    fnotice (file, "  -i, --json-format               Replaced with -j, --json-format\n");
*************** strip_extention (string str)
*** 1459,1465 ****
    return str;
  }
  
! /* Calcualte md5sum for INPUT string and return it in hex string format.  */
  
  static string
  get_md5sum (const char *input)
--- 1459,1465 ----
    return str;
  }
  
! /* Calculate md5sum for INPUT string and return it in hex string format.  */
  
  static string
  get_md5sum (const char *input)
diff -Nrcpad gcc-17-20260524/gcc/gdbhooks.py gcc-17-20260531/gcc/gdbhooks.py
*** gcc-17-20260524/gcc/gdbhooks.py	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gdbhooks.py	Sun May 31 22:32:06 2026
*************** class Tree:
*** 200,206 ****
  
      def IDENTIFIER_POINTER(self):
          """
!         Get str correspoinding to result of IDENTIFIER_NODE (self)
          """
          return self.gdbval['identifier']['id']['str'].string()
  
--- 200,206 ----
  
      def IDENTIFIER_POINTER(self):
          """
!         Get str corresponding to result of IDENTIFIER_NODE (self)
          """
          return self.gdbval['identifier']['id']['str'].string()
  
*************** class DumpFn(gdb.Command):
*** 816,822 ****
          else:
              flags = 0
  
!         # Get tempory file, if necessary
          if editor_mode:
              f = tempfile.NamedTemporaryFile(delete=False, suffix=".txt")
              filename = f.name
--- 816,822 ----
          else:
              flags = 0
  
!         # Get temporary file, if necessary
          if editor_mode:
              f = tempfile.NamedTemporaryFile(delete=False, suffix=".txt")
              filename = f.name
diff -Nrcpad gcc-17-20260524/gcc/genattrtab.cc gcc-17-20260531/gcc/genattrtab.cc
*** gcc-17-20260524/gcc/genattrtab.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genattrtab.cc	Sun May 31 22:32:06 2026
*************** static rtx min_fn		   (rtx);
*** 305,311 ****
     functions and tables.  This made insn-attrtab.cc _the_ bottle-neck in
     a parallel build, and even made it impossible to build GCC on machines
     with relatively small RAM space (PR other/29442).  Therefore, the
!    atrribute functions/tables are now written out to three separate
     files: all "*insn_default_latency" functions go to LATENCY_FILE_NAME,
     all "*internal_dfa_insn_code" functions go to DFA_FILE_NAME, and the
     rest goes to ATTR_FILE_NAME.  */
--- 305,311 ----
     functions and tables.  This made insn-attrtab.cc _the_ bottle-neck in
     a parallel build, and even made it impossible to build GCC on machines
     with relatively small RAM space (PR other/29442).  Therefore, the
!    attribute functions/tables are now written out to three separate
     files: all "*insn_default_latency" functions go to LATENCY_FILE_NAME,
     all "*internal_dfa_insn_code" functions go to DFA_FILE_NAME, and the
     rest goes to ATTR_FILE_NAME.  */
*************** get_attr_order (class attr_desc ***ret)
*** 2852,2858 ****
  		}
  	    if (k == num)
  	      {
! 		/* Nothing in I depended on anything intersting, so
  		   it's done.  */
  		handled[i] = 1;
  		sorted[j++] = all[i];
--- 2852,2858 ----
  		}
  	    if (k == num)
  	      {
! 		/* Nothing in I depended on anything interesting, so
  		   it's done.  */
  		handled[i] = 1;
  		sorted[j++] = all[i];
*************** optimize_attrs (int num_insn_codes)
*** 2918,2924 ****
  
    iv = ivbuf = XNEWVEC (struct attr_value_list, num_insn_ents);
  
!   /* Create the chain of insn*attr values such that we see dependend
       attributes after their dependencies.  As we use a stack via the
       next pointers start from the end of the topological order.  */
    topnum = get_attr_order (&topsort);
--- 2918,2924 ----
  
    iv = ivbuf = XNEWVEC (struct attr_value_list, num_insn_ents);
  
!   /* Create the chain of insn*attr values such that we see dependent
       attributes after their dependencies.  As we use a stack via the
       next pointers start from the end of the topological order.  */
    topnum = get_attr_order (&topsort);
diff -Nrcpad gcc-17-20260524/gcc/genautomata.cc gcc-17-20260531/gcc/genautomata.cc
*** gcc-17-20260524/gcc/genautomata.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genautomata.cc	Sun May 31 22:32:06 2026
*************** struct unit_usage
*** 5029,5035 ****
  {
    unit_decl_t unit_decl;
    /* The following forms a list of units used on the same cycle in the
!      same alternative.  The list is ordered by the correspdoning unit
       declarations and there is no unit declaration duplication in the
       list.  */
    struct unit_usage *next;
--- 5029,5035 ----
  {
    unit_decl_t unit_decl;
    /* The following forms a list of units used on the same cycle in the
!      same alternative.  The list is ordered by the corresponding unit
       declarations and there is no unit declaration duplication in the
       list.  */
    struct unit_usage *next;
diff -Nrcpad gcc-17-20260524/gcc/gengtype-state.cc gcc-17-20260531/gcc/gengtype-state.cc
*** gcc-17-20260524/gcc/gengtype-state.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gengtype-state.cc	Sun May 31 22:32:06 2026
*************** s_expr_writer::write_any_indent (int lea
*** 240,246 ****
    m_had_recent_newline = 0;
  }
  
! /* Write the beginning of a new s-expresion e.g. "(!foo "
     The writer automatically adds whitespace to show the hierarchical
     structure of the expressions, so each one starts on a new line,
     and any within it will be at an increased indentation level.  */
--- 240,246 ----
    m_had_recent_newline = 0;
  }
  
! /* Write the beginning of a new s-expression e.g. "(!foo "
     The writer automatically adds whitespace to show the hierarchical
     structure of the expressions, so each one starts on a new line,
     and any within it will be at an increased indentation level.  */
*************** write_state (const char *state_path)
*** 1368,1374 ****
    fprintf (state_file,
  	   ";;; The format of this file is tied to a particular version of GCC.\n");
    fprintf (state_file,
! 	   ";;; Don't parse this file wihout knowing GCC gengtype internals.\n");
    fprintf (state_file,
  	   ";;; This file should be parsed by the same %s which wrote it.\n",
  	   progname);
--- 1368,1374 ----
    fprintf (state_file,
  	   ";;; The format of this file is tied to a particular version of GCC.\n");
    fprintf (state_file,
! 	   ";;; Don't parse this file without knowing GCC gengtype internals.\n");
    fprintf (state_file,
  	   ";;; This file should be parsed by the same %s which wrote it.\n",
  	   progname);
diff -Nrcpad gcc-17-20260524/gcc/gengtype.cc gcc-17-20260531/gcc/gengtype.cc
*** gcc-17-20260524/gcc/gengtype.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gengtype.cc	Sun May 31 22:32:06 2026
*************** struct file_rule_st {
*** 1912,1918 ****
  				 * the output_name, with $1 ... $9 for
  				 * subpatterns and $0 for the whole
  				 * matched filename.  */
!   const char* frul_tr_for;	/* Tranformation string for making the
  				   for_name.  */
    frul_actionrout_t* frul_action; /* The action, if non null, is
  				   * called once the rule matches, on
--- 1912,1918 ----
  				 * the output_name, with $1 ... $9 for
  				 * subpatterns and $0 for the whole
  				 * matched filename.  */
!   const char* frul_tr_for;	/* Transformation string for making the
  				   for_name.  */
    frul_actionrout_t* frul_action; /* The action, if non null, is
  				   * called once the rule matches, on
*************** walk_type (type_p t, struct walk_type_da
*** 2974,2980 ****
  	       This organization requires the base class to have a case in
  	       the switch statement, and hence a tag value is mandatory
  	       for the base class.   This restriction could be removed, but
! 	       it would require some restructing of this code.  */
  	    if (!type_tag)
  	      {
  		error_at_line (d->line,
--- 2974,2980 ----
  	       This organization requires the base class to have a case in
  	       the switch statement, and hence a tag value is mandatory
  	       for the base class.   This restriction could be removed, but
! 	       it would require some restructuring of this code.  */
  	    if (!type_tag)
  	      {
  		error_at_line (d->line,
*************** write_roots (pair_p variables, bool emit
*** 4728,4734 ****
  		     "gt_pch_scalar_rtab");
  }
  
! /* Prints not-as-ugly version of a typename of T to OF.  Trades the uniquness
     guarantee for somewhat increased readability.  If name conflicts do happen,
     this function will have to be adjusted to be more like
     output_mangled_typename.  */
--- 4728,4734 ----
  		     "gt_pch_scalar_rtab");
  }
  
! /* Prints not-as-ugly version of a typename of T to OF.  Trades the uniqueness
     guarantee for somewhat increased readability.  If name conflicts do happen,
     this function will have to be adjusted to be more like
     output_mangled_typename.  */
diff -Nrcpad gcc-17-20260524/gcc/genmatch.cc gcc-17-20260531/gcc/genmatch.cc
*** gcc-17-20260524/gcc/genmatch.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genmatch.cc	Sun May 31 22:32:06 2026
*************** capture_info::walk_c_expr (c_expr *e)
*** 3185,3191 ****
     code generation.  */
  static char *fail_label;
  
! /* Code generation off the decision tree and the refered AST nodes.  */
  
  bool
  is_conversion (id_base *op)
--- 3185,3191 ----
     code generation.  */
  static char *fail_label;
  
! /* Code generation off the decision tree and the referred AST nodes.  */
  
  bool
  is_conversion (id_base *op)
*************** expr::gen_transform (FILE *f, int indent
*** 3418,3424 ****
  	      indent += 4;
  	    }
  	  /* ???  Building a stmt can fail for various reasons here, seq being
! 	     NULL or the stmt referencing SSA names occuring in abnormal PHIs.
  	     So if we fail here we should continue matching other patterns.  */
  	  fprintf_indent (f, indent, "gimple_match_op tem_op "
  			  "(res_op->cond.any_else (), %s, %s", opr_name, type);
--- 3418,3424 ----
  	      indent += 4;
  	    }
  	  /* ???  Building a stmt can fail for various reasons here, seq being
! 	     NULL or the stmt referencing SSA names occurring in abnormal PHIs.
  	     So if we fail here we should continue matching other patterns.  */
  	  fprintf_indent (f, indent, "gimple_match_op tem_op "
  			  "(res_op->cond.any_else (), %s, %s", opr_name, type);
*************** usage ()
*** 6275,6281 ****
    fprintf (stderr, usage, progname, progname);
  }
  
! /* Write out the correct include to the match-head fle containing the helper
     files.  */
  
  static void
--- 6275,6281 ----
    fprintf (stderr, usage, progname, progname);
  }
  
! /* Write out the correct include to the match-head file containing the helper
     files.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/genopinit.cc gcc-17-20260531/gcc/genopinit.cc
*** gcc-17-20260524/gcc/genopinit.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genopinit.cc	Sun May 31 22:32:06 2026
*************** open_outfile (const char *file_name)
*** 105,111 ****
  }
  
  /* Declare the maybe_code_for_* function for ONAME, and provide
!    an inline definition of the assserting code_for_* wrapper.  */
  
  static void
  handle_overloaded_code_for (FILE *file, overloaded_name *oname)
--- 105,111 ----
  }
  
  /* Declare the maybe_code_for_* function for ONAME, and provide
!    an inline definition of the asserting code_for_* wrapper.  */
  
  static void
  handle_overloaded_code_for (FILE *file, overloaded_name *oname)
*************** handle_overloaded_code_for (FILE *file,
*** 129,135 ****
  }
  
  /* Declare the maybe_gen_* function for ONAME, and provide
!    an inline definition of the assserting gen_* wrapper.  */
  
  static void
  handle_overloaded_gen (FILE *file, overloaded_name *oname)
--- 129,135 ----
  }
  
  /* Declare the maybe_gen_* function for ONAME, and provide
!    an inline definition of the asserting gen_* wrapper.  */
  
  static void
  handle_overloaded_gen (FILE *file, overloaded_name *oname)
*************** main (int argc, const char **argv)
*** 487,493 ****
  	   "}\n\n");
  
    /* C++ (even G++) does not support (non-trivial) designated initializers.
!      To work around that, generate these arrays programatically rather than
       by our traditional multiple inclusion of def files.  */
  
    fprintf (s_file,
--- 487,493 ----
  	   "}\n\n");
  
    /* C++ (even G++) does not support (non-trivial) designated initializers.
!      To work around that, generate these arrays programmatically rather than
       by our traditional multiple inclusion of def files.  */
  
    fprintf (s_file,
diff -Nrcpad gcc-17-20260524/gcc/genoutput.cc gcc-17-20260531/gcc/genoutput.cc
*** gcc-17-20260524/gcc/genoutput.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genoutput.cc	Sun May 31 22:32:06 2026
*************** public:
*** 168,174 ****
  static class data *idata;
  
  /* This variable points to the end of the insn chain.  This is where
!    everything relevant from the machien description is appended to.  */
  static class data **idata_end;
  
  
--- 168,174 ----
  static class data *idata;
  
  /* This variable points to the end of the insn chain.  This is where
!    everything relevant from the machine description is appended to.  */
  static class data **idata_end;
  
  
*************** operand_data_hasher::equal (const operan
*** 609,615 ****
    return compare_operands (op_info1, op_info2);
  }
  
! /* Hashtable of konwn pattern operands.  */
  static hash_table<operand_data_hasher> *operand_datas;
  
  /* Scan the list of operands we've already committed to output and either
--- 609,615 ----
    return compare_operands (op_info1, op_info2);
  }
  
! /* Hashtable of known pattern operands.  */
  static hash_table<operand_data_hasher> *operand_datas;
  
  /* Scan the list of operands we've already committed to output and either
diff -Nrcpad gcc-17-20260524/gcc/genpreds.cc gcc-17-20260531/gcc/genpreds.cc
*** gcc-17-20260524/gcc/genpreds.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genpreds.cc	Sun May 31 22:32:06 2026
*************** static class constraint_data **last_cons
*** 703,709 ****
  #define FOR_ALL_CONSTRAINTS(iter_) \
    for (iter_ = first_constraint; iter_; iter_ = iter_->next_textual)
  
! /* Contraint letters that have a special meaning and that cannot be used
     in define*_constraints.  */
  static const char generic_constraint_letters[] = "g";
  
--- 703,709 ----
  #define FOR_ALL_CONSTRAINTS(iter_) \
    for (iter_ = first_constraint; iter_; iter_ = iter_->next_textual)
  
! /* Constraint letters that have a special meaning and that cannot be used
     in define*_constraints.  */
  static const char generic_constraint_letters[] = "g";
  
diff -Nrcpad gcc-17-20260524/gcc/genrecog.cc gcc-17-20260531/gcc/genrecog.cc
*** gcc-17-20260524/gcc/genrecog.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/genrecog.cc	Sun May 31 22:32:06 2026
*************** public:
*** 1784,1790 ****
    /* Index N says whether operands[N] has been set.  */
    auto_vec <bool> set_operands;
  
!   /* A guranteed lower bound on the value of peep2_current_count.  */
    int peep2_count;
  };
  
--- 1784,1790 ----
    /* Index N says whether operands[N] has been set.  */
    auto_vec <bool> set_operands;
  
!   /* A guaranteed lower bound on the value of peep2_current_count.  */
    int peep2_count;
  };
  
*************** prune_invalid_results (merge_state_info
*** 2454,2460 ****
      }
  }
  
! /* Return true if PAT represents the biggest posssible match for SINFO;
     that is, if the next action of SINFO's state on return from PAT will
     be something that cannot be merged with any other state.  */
  
--- 2454,2460 ----
      }
  }
  
! /* Return true if PAT represents the biggest possible match for SINFO;
     that is, if the next action of SINFO's state on return from PAT will
     be something that cannot be merged with any other state.  */
  
*************** split_out_patterns (vec <merge_state_inf
*** 3175,3181 ****
       The non-leaf patterns that we try are as deep as possible
       and are an extension of the state's previous best candidate match (PB).
       We need only consider states whose current potential match is also PB;
!      any states that don't match as much as PB cannnot match the new pattern,
       while any states that already match more than PB must be different from
       the new pattern.  */
    for (unsigned int i2 = states.length (); i2-- > 0; )
--- 3175,3181 ----
       The non-leaf patterns that we try are as deep as possible
       and are an extension of the state's previous best candidate match (PB).
       We need only consider states whose current potential match is also PB;
!      any states that don't match as much as PB cannot match the new pattern,
       while any states that already match more than PB must be different from
       the new pattern.  */
    for (unsigned int i2 = states.length (); i2-- > 0; )
diff -Nrcpad gcc-17-20260524/gcc/gensupport.cc gcc-17-20260531/gcc/gensupport.cc
*** gcc-17-20260524/gcc/gensupport.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gensupport.cc	Sun May 31 22:32:06 2026
*************** parse_section (const char **templ, unsig
*** 888,894 ****
    list[i].add (',');
  }
  
! /* The compact syntax has more convience syntaxes.  As such we post process
     the lines to get them back to something the normal syntax understands.  */
  
  static void
--- 888,894 ----
    list[i].add (',');
  }
  
! /* The compact syntax has more convenience syntaxes.  As such we post process
     the lines to get them back to something the normal syntax understands.  */
  
  static void
*************** convert_syntax (rtx x, file_location loc
*** 946,952 ****
    skip_spaces (&templ);
  
    if (!expect_char (&templ, '['))
!     fatal_at (loc, "expecing `[' to begin section list");
  
    skip_spaces (&templ);
  
--- 946,952 ----
    skip_spaces (&templ);
  
    if (!expect_char (&templ, '['))
!     fatal_at (loc, "expecting `[' to begin section list");
  
    skip_spaces (&templ);
  
*************** mark_operands_from_match_dup (rtx patter
*** 2566,2572 ****
  /* This is a subroutine of adjust_operands_numbers.
     It goes through all expressions in PATTERN and when MATCH_DUP is
     met, all MATCH_OPERANDs inside it is marked as occupied.  The
!    process of marking is done by routin mark_operands_from_match_dup.  */
  static void
  mark_operands_used_in_match_dup (rtx pattern)
  {
--- 2566,2572 ----
  /* This is a subroutine of adjust_operands_numbers.
     It goes through all expressions in PATTERN and when MATCH_DUP is
     met, all MATCH_OPERANDs inside it is marked as occupied.  The
!    process of marking is done by routine mark_operands_from_match_dup.  */
  static void
  mark_operands_used_in_match_dup (rtx pattern)
  {
diff -Nrcpad gcc-17-20260524/gcc/gimple-array-bounds.cc gcc-17-20260531/gcc/gimple-array-bounds.cc
*** gcc-17-20260524/gcc/gimple-array-bounds.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-array-bounds.cc	Sun May 31 22:32:06 2026
*************** trailing_array (tree arg, tree *pref)
*** 167,173 ****
  
  /* Acquire the upper bound and upper bound plus one for the array
     reference REF and record them into UP_BOUND and UP_BOUND_P1.
!    Set *DECL to the decl or expresssion REF refers to.  */
  
  static void
  get_up_bounds_for_array_ref (tree ref, tree *decl,
--- 167,173 ----
  
  /* Acquire the upper bound and upper bound plus one for the array
     reference REF and record them into UP_BOUND and UP_BOUND_P1.
!    Set *DECL to the decl or expression REF refers to.  */
  
  static void
  get_up_bounds_for_array_ref (tree ref, tree *decl,
diff -Nrcpad gcc-17-20260524/gcc/gimple-crc-optimization.cc gcc-17-20260531/gcc/gimple-crc-optimization.cc
*** gcc-17-20260524/gcc/gimple-crc-optimization.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-crc-optimization.cc	Sun May 31 22:32:06 2026
*************** crc_optimization::set_defs (tree name, a
*** 665,671 ****
        return true;
      }
  
!   /* Return false for other than assigment and phi statement.  */
    return false;
  }
  
--- 665,671 ----
        return true;
      }
  
!   /* Return false for other than assignment and phi statement.  */
    return false;
  }
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-expr.cc gcc-17-20260531/gcc/gimple-expr.cc
*** gcc-17-20260524/gcc/gimple-expr.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-expr.cc	Sun May 31 22:32:06 2026
*************** useless_type_conversion_p (tree outer_ty
*** 116,123 ****
  	 body, we need to prevent changing BITINT_TYPE to INTEGER_TYPE
  	 of the same precision or vice versa when passed to functions,
  	 especially for varargs.  */
!       if ((TREE_CODE (inner_type) == BITINT_TYPE)
! 	  != (TREE_CODE (outer_type) == BITINT_TYPE))
  	return false;
  
        /* We don't need to preserve changes in the types minimum or
--- 116,122 ----
  	 body, we need to prevent changing BITINT_TYPE to INTEGER_TYPE
  	 of the same precision or vice versa when passed to functions,
  	 especially for varargs.  */
!       if (BITINT_TYPE_P (inner_type) != BITINT_TYPE_P (outer_type))
  	return false;
  
        /* We don't need to preserve changes in the types minimum or
diff -Nrcpad gcc-17-20260524/gcc/gimple-fold.cc gcc-17-20260531/gcc/gimple-fold.cc
*** gcc-17-20260524/gcc/gimple-fold.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-fold.cc	Sun May 31 22:32:06 2026
*************** get_range_strlen (tree, bitmap, strlen_r
*** 101,107 ****
  	in other units.  Those methods have both STATIC and EXTERNAL
  	set.
       2) In WHOPR mode devirtualization might lead to reference
! 	to method that was partitioned elsehwere.
  	In this case we have static VAR_DECL or FUNCTION_DECL
  	that has no corresponding callgraph/varpool node
  	declaring the body.
--- 101,107 ----
  	in other units.  Those methods have both STATIC and EXTERNAL
  	set.
       2) In WHOPR mode devirtualization might lead to reference
! 	to method that was partitioned elsewhere.
  	In this case we have static VAR_DECL or FUNCTION_DECL
  	that has no corresponding callgraph/varpool node
  	declaring the body.
*************** can_refer_decl_in_current_unit_p (tree d
*** 155,161 ****
  	  && (vnode = varpool_node::get (from_decl)) != NULL
  	  && vnode->in_other_partition))
      return true;
!   /* We are folding reference from external vtable.  The vtable may reffer
       to a symbol keyed to other compilation unit.  The other compilation
       unit may be in separate DSO and the symbol may be hidden.  */
    if (DECL_VISIBILITY_SPECIFIED (decl)
--- 155,161 ----
  	  && (vnode = varpool_node::get (from_decl)) != NULL
  	  && vnode->in_other_partition))
      return true;
!   /* We are folding reference from external vtable.  The vtable may refer
       to a symbol keyed to other compilation unit.  The other compilation
       unit may be in separate DSO and the symbol may be hidden.  */
    if (DECL_VISIBILITY_SPECIFIED (decl)
*************** can_refer_decl_in_current_unit_p (tree d
*** 165,171 ****
      return false;
    /* When function is public, we always can introduce new reference.
       Exception are the COMDAT functions where introducing a direct
!      reference imply need to include function body in the curren tunit.  */
    if (TREE_PUBLIC (decl) && !DECL_COMDAT (decl))
      return true;
    /* We have COMDAT.  We are going to check if we still have definition
--- 165,171 ----
      return false;
    /* When function is public, we always can introduce new reference.
       Exception are the COMDAT functions where introducing a direct
!      reference imply need to include function body in the current unit.  */
    if (TREE_PUBLIC (decl) && !DECL_COMDAT (decl))
      return true;
    /* We have COMDAT.  We are going to check if we still have definition
*************** gimple_fold_builtin_bcopy (gimple_stmt_i
*** 1399,1405 ****
      return false;
  
    /* bcopy has been removed from POSIX in Issue 7 but Issue 6 specifies
!      it's quivalent to memmove (not memcpy).  Transform bcopy (src, dest,
       len) into memmove (dest, src, len).  */
  
    gimple *stmt = gsi_stmt (*gsi);
--- 1399,1405 ----
      return false;
  
    /* bcopy has been removed from POSIX in Issue 7 but Issue 6 specifies
!      it's equivalent to memmove (not memcpy).  Transform bcopy (src, dest,
       len) into memmove (dest, src, len).  */
  
    gimple *stmt = gsi_stmt (*gsi);
*************** gimple_fold_builtin_memset (gimple_stmt_
*** 1485,1491 ****
  
    if ((!INTEGRAL_TYPE_P (etype)
         && !POINTER_TYPE_P (etype))
!       || TREE_CODE (etype) == BITINT_TYPE)
      return false;
  
    if (! var_decl_component_p (var))
--- 1485,1491 ----
  
    if ((!INTEGRAL_TYPE_P (etype)
         && !POINTER_TYPE_P (etype))
!       || BITINT_TYPE_P (etype))
      return false;
  
    if (! var_decl_component_p (var))
*************** get_range_strlen_tree (tree arg, bitmap
*** 1848,1854 ****
  }
  
  /* For an ARG referencing one or more strings, try to obtain the range
!    of their lengths, or the size of the largest array ARG referes to if
     the range of lengths cannot be determined, and store all in *PDATA.
     For an integer ARG (when RKIND == SRK_INT_VALUE), try to determine
     the maximum constant value.
--- 1848,1854 ----
  }
  
  /* For an ARG referencing one or more strings, try to obtain the range
!    of their lengths, or the size of the largest array ARG refers to if
     the range of lengths cannot be determined, and store all in *PDATA.
     For an integer ARG (when RKIND == SRK_INT_VALUE), try to determine
     the maximum constant value.
*************** get_range_strlen_tree (tree arg, bitmap
*** 1860,1866 ****
     strlen_range_kind).
     Set PDATA->DECL if ARG refers to an unterminated constant array.
     On input, set ELTSIZE to 1 for normal single byte character strings,
!    and either 2 or 4 for wide characer strings (the size of wchar_t).
     Return true if *PDATA was successfully populated and false otherwise.  */
  
  static bool
--- 1860,1866 ----
     strlen_range_kind).
     Set PDATA->DECL if ARG refers to an unterminated constant array.
     On input, set ELTSIZE to 1 for normal single byte character strings,
!    and either 2 or 4 for wide character strings (the size of wchar_t).
     Return true if *PDATA was successfully populated and false otherwise.  */
  
  static bool
*************** gimple_fold_builtin_stpcpy (gimple_stmt_
*** 3288,3294 ****
  
    /* Set to non-null if ARG refers to an unterminated array.  */
    c_strlen_data data = { };
!   /* The size of the unterminated array if SRC referes to one.  */
    tree size;
    /* True if the size is exact/constant, false if it's the lower bound
       of a range.  */
--- 3288,3294 ----
  
    /* Set to non-null if ARG refers to an unterminated array.  */
    c_strlen_data data = { };
!   /* The size of the unterminated array if SRC refers to one.  */
    tree size;
    /* True if the size is exact/constant, false if it's the lower bound
       of a range.  */
*************** clear_padding_type_may_have_padding_p (t
*** 4749,4754 ****
--- 4749,4758 ----
        return clear_padding_type_may_have_padding_p (TREE_TYPE (type));
      case REAL_TYPE:
        return clear_padding_real_needs_padding_p (type);
+     case ENUMERAL_TYPE:
+       if (BITINT_TYPE_P (type))
+ 	return clear_padding_bitint_needs_padding_p (type);
+       return false;
      case BITINT_TYPE:
        return clear_padding_bitint_needs_padding_p (type);
      default:
*************** type_has_padding_at_level_p (tree type)
*** 4809,4814 ****
--- 4813,4822 ----
        return false;
      case REAL_TYPE:
        return clear_padding_real_needs_padding_p (type);
+     case ENUMERAL_TYPE:
+       if (BITINT_TYPE_P (type))
+ 	return clear_padding_bitint_needs_padding_p (type);
+       return false;
      case BITINT_TYPE:
        return clear_padding_bitint_needs_padding_p (type);
      default:
*************** clear_padding_type (clear_padding_struct
*** 5057,5062 ****
--- 5065,5071 ----
        buf->size += sz;
        break;
      case BITINT_TYPE:
+     do_bitint:
        {
  	struct bitint_info info;
  	bool ok = targetm.c.bitint_type_info (TYPE_PRECISION (type), &info);
*************** clear_padding_type (clear_padding_struct
*** 5109,5114 ****
--- 5118,5127 ----
  	  }
  	break;
        }
+     case ENUMERAL_TYPE:
+       if (BITINT_TYPE_P (type))
+ 	goto do_bitint;
+       /* FALLTHRU */
      default:
        gcc_assert ((size_t) sz <= clear_padding_unit);
        if ((unsigned HOST_WIDE_INT) sz + buf->size > clear_padding_buf_size)
*************** fold_stmt_1 (gimple_stmt_iterator *gsi,
*** 6723,6731 ****
  {
    bool changed = false;
    gimple *stmt = gsi_stmt (*gsi);
-   bool nowarning = warning_suppressed_p (stmt, OPT_Wstrict_overflow);
    unsigned i;
-   fold_defer_overflow_warnings ();
  
    /* First do required canonicalization of [TARGET_]MEM_REF addresses
       after propagation.
--- 6736,6742 ----
*************** fold_stmt_1 (gimple_stmt_iterator *gsi,
*** 6930,6936 ****
  		if (is_logical_not == false)
  		  gimple_assign_set_rhs_with_ops (gsi, TREE_CODE (op1), op1);
  		/* Only for one-bit precision typed X the transformation
! 		   !X -> ~X is valied.  */
  		else if (TYPE_PRECISION (type) == 1)
  		  gimple_assign_set_rhs_with_ops (gsi, BIT_NOT_EXPR, op1);
  		/* Otherwise we use !X -> X ^ 1.  */
--- 6941,6947 ----
  		if (is_logical_not == false)
  		  gimple_assign_set_rhs_with_ops (gsi, TREE_CODE (op1), op1);
  		/* Only for one-bit precision typed X the transformation
! 		   !X -> ~X is valid.  */
  		else if (TYPE_PRECISION (type) == 1)
  		  gimple_assign_set_rhs_with_ops (gsi, BIT_NOT_EXPR, op1);
  		/* Otherwise we use !X -> X ^ 1.  */
*************** fold_stmt_1 (gimple_stmt_iterator *gsi,
*** 7000,7008 ****
      default:;
      }
  
-   stmt = gsi_stmt (*gsi);
- 
-   fold_undefer_overflow_warnings (changed && !nowarning, stmt, 0);
    return changed;
  }
  
--- 7011,7016 ----
*************** fold_truth_andor_for_ifcombine (enum tre
*** 8472,8478 ****
    /* If the mask encompassed extensions of the sign bit before
       clipping, try to include the sign bit in the test.  If we're not
       comparing with zero, don't even try to deal with it (for now?).
!      If we've already commited to a sign test, the extended (before
       clipping) mask could already be messing with it.  */
    if (ll_signbit)
      {
--- 8480,8486 ----
    /* If the mask encompassed extensions of the sign bit before
       clipping, try to include the sign bit in the test.  If we're not
       comparing with zero, don't even try to deal with it (for now?).
!      If we've already committed to a sign test, the extended (before
       clipping) mask could already be messing with it.  */
    if (ll_signbit)
      {
*************** gimple_fold_stmt_to_constant (gimple *st
*** 9847,9853 ****
     their constant initializers.  */
  
  /* See if we can find constructor defining value of BASE.
!    When we know the consructor with constant offset (such as
     base is array[40] and we do know constructor of array), then
     BIT_OFFSET is adjusted accordingly.
  
--- 9855,9861 ----
     their constant initializers.  */
  
  /* See if we can find constructor defining value of BASE.
!    When we know the constructor with constant offset (such as
     base is array[40] and we do know constructor of array), then
     BIT_OFFSET is adjusted accordingly.
  
*************** fold_const_aggregate_ref (tree t)
*** 10523,10529 ****
  /* Lookup virtual method with index TOKEN in a virtual table V
     at OFFSET.
     Set CAN_REFER if non-NULL to false if method
!    is not referable or if the virtual table is ill-formed (such as rewriten
     by non-C++ produced symbol). Otherwise just return NULL in that calse.  */
  
  tree
--- 10531,10537 ----
  /* Lookup virtual method with index TOKEN in a virtual table V
     at OFFSET.
     Set CAN_REFER if non-NULL to false if method
!    is not referable or if the virtual table is ill-formed (such as rewritten
     by non-C++ produced symbol). Otherwise just return NULL in that calse.  */
  
  tree
*************** gimple_get_virt_method_for_vtable (HOST_
*** 10552,10558 ****
    init = ctor_for_folding (v);
  
    /* The virtual tables should always be born with constructors
!      and we always should assume that they are avaialble for
       folding.  At the moment we do not stream them in all cases,
       but it should never happen that ctor seem unreachable.  */
    gcc_assert (init);
--- 10560,10566 ----
    init = ctor_for_folding (v);
  
    /* The virtual tables should always be born with constructors
!      and we always should assume that they are available for
       folding.  At the moment we do not stream them in all cases,
       but it should never happen that ctor seem unreachable.  */
    gcc_assert (init);
*************** gimple_get_virt_method_for_vtable (HOST_
*** 10584,10590 ****
    gcc_checking_assert (offset % (elt_size * BITS_PER_UNIT) == 0);
  
    /* This code makes an assumption that there are no
!      indexed fileds produced by C++ FE, so we can directly index the array.  */
    if (access_index < CONSTRUCTOR_NELTS (init))
      {
        fn = CONSTRUCTOR_ELT (init, access_index)->value;
--- 10592,10598 ----
    gcc_checking_assert (offset % (elt_size * BITS_PER_UNIT) == 0);
  
    /* This code makes an assumption that there are no
!      indexed fields produced by C++ FE, so we can directly index the array.  */
    if (access_index < CONSTRUCTOR_NELTS (init))
      {
        fn = CONSTRUCTOR_ELT (init, access_index)->value;
*************** gimple_get_virt_method_for_vtable (HOST_
*** 10634,10640 ****
     KNOWN_BINFO carries the binfo describing the true type of
     OBJ_TYPE_REF_OBJECT(REF).
     Set CAN_REFER if non-NULL to false if method
!    is not referable or if the virtual table is ill-formed (such as rewriten
     by non-C++ produced symbol). Otherwise just return NULL in that calse.  */
  
  tree
--- 10642,10648 ----
     KNOWN_BINFO carries the binfo describing the true type of
     OBJ_TYPE_REF_OBJECT(REF).
     Set CAN_REFER if non-NULL to false if method
!    is not referable or if the virtual table is ill-formed (such as rewritten
     by non-C++ produced symbol). Otherwise just return NULL in that calse.  */
  
  tree
*************** rewrite_to_defined_unconditional (gimple
*** 10867,10873 ****
    gcc_assert (gimple_needing_rewrite_undefined (stmt));
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
!       fprintf (dump_file, "rewriting stmt for being uncondtional defined");
        print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
      }
    gimple_seq stmts = NULL;
--- 10875,10881 ----
    gcc_assert (gimple_needing_rewrite_undefined (stmt));
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
!       fprintf (dump_file, "rewriting stmt for being unconditional defined");
        print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
      }
    gimple_seq stmts = NULL;
*************** gimple_build (gimple_stmt_iterator *gsi,
*** 11311,11317 ****
  }
  
  /* Build the conversion (TYPE) OP with a result of type TYPE
!    with location LOC if such conversion is neccesary in GIMPLE,
     simplifying it first.
     Returns the built expression inserting any new statements
     at GSI honoring BEFORE and UPDATE.  */
--- 11319,11325 ----
  }
  
  /* Build the conversion (TYPE) OP with a result of type TYPE
!    with location LOC if such conversion is necessary in GIMPLE,
     simplifying it first.
     Returns the built expression inserting any new statements
     at GSI honoring BEFORE and UPDATE.  */
*************** gimple_convert (gimple_stmt_iterator *gs
*** 11328,11334 ****
  
  /* Build the conversion (ptrofftype) OP with a result of a type
     compatible with ptrofftype with location LOC if such conversion
!    is neccesary in GIMPLE, simplifying it first.
     Returns the built expression value inserting any new statements
     at GSI honoring BEFORE and UPDATE.  */
  
--- 11336,11342 ----
  
  /* Build the conversion (ptrofftype) OP with a result of a type
     compatible with ptrofftype with location LOC if such conversion
!    is necessary in GIMPLE, simplifying it first.
     Returns the built expression value inserting any new statements
     at GSI honoring BEFORE and UPDATE.  */
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-harden-control-flow.cc gcc-17-20260531/gcc/gimple-harden-control-flow.cc
*** gcc-17-20260524/gcc/gimple-harden-control-flow.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-harden-control-flow.cc	Sun May 31 22:32:06 2026
*************** pass_harden_control_flow_redundancy::exe
*** 1527,1533 ****
    FOR_EACH_VEC_ELT (chk_edges, i, e)
      if (!bitmap_set_bit (combined_blocks, (*e)->src->index))
        /* There may be multiple chk_edges with the same src block;
! 	 guard againt overlaps with chkcall_blocks only.  */
        gcc_assert (!bitmap_bit_p (chkcall_blocks, (*e)->src->index));
  
    /* Visit blocks in index order, because building rtcfg depends on
--- 1527,1533 ----
    FOR_EACH_VEC_ELT (chk_edges, i, e)
      if (!bitmap_set_bit (combined_blocks, (*e)->src->index))
        /* There may be multiple chk_edges with the same src block;
! 	 guard against overlaps with chkcall_blocks only.  */
        gcc_assert (!bitmap_bit_p (chkcall_blocks, (*e)->src->index));
  
    /* Visit blocks in index order, because building rtcfg depends on
diff -Nrcpad gcc-17-20260524/gcc/gimple-loop-interchange.cc gcc-17-20260531/gcc/gimple-loop-interchange.cc
*** gcc-17-20260524/gcc/gimple-loop-interchange.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-loop-interchange.cc	Sun May 31 22:32:06 2026
*************** loop_cand::can_interchange_p (loop_cand
*** 394,400 ****
  
       for (int i = 0; i < N; i++)
         {
! 	 // producer.  Note sum can be intitialized to a constant.
  	 int sum = a[i];
  	 for (int j = 0; j < N; j++)
  	   {
--- 394,400 ----
  
       for (int i = 0; i < N; i++)
         {
! 	 // producer.  Note sum can be initialized to a constant.
  	 int sum = a[i];
  	 for (int j = 0; j < N; j++)
  	   {
*************** loop_cand::analyze_lcssa_phis (void)
*** 783,789 ****
  }
  
  /* CONSUMER is a stmt in BB storing reduction result into memory object.
!    When the reduction is intialized from constant value, we need to add
     a stmt loading from the memory object to target basic block in inner
     loop during undoing the reduction.  Problem is that memory reference
     may use ssa variables not dominating the target basic block.  This
--- 783,789 ----
  }
  
  /* CONSUMER is a stmt in BB storing reduction result into memory object.
!    When the reduction is initialized from constant value, we need to add
     a stmt loading from the memory object to target basic block in inner
     loop during undoing the reduction.  Problem is that memory reference
     may use ssa variables not dominating the target basic block.  This
*************** should_interchange_loops (unsigned i_idx
*** 1556,1564 ****
        fprintf (dump_file, "All consecutive stride: before(%s), after(%s)\n",
  	       all_seq_dr_before_p ? "true" : "false",
  	       all_seq_dr_after_p ? "true" : "false");
!       fprintf (dump_file, "OK to interchage with variable strides: %d\n",
  	       num_resolved_ok_drs);
!       fprintf (dump_file, "Not OK to interchage with variable strides: %d\n",
  	       num_resolved_not_ok_drs);
        fprintf (dump_file, "Variable strides we cannot decide: %d\n",
  	       num_unresolved_drs);
--- 1556,1564 ----
        fprintf (dump_file, "All consecutive stride: before(%s), after(%s)\n",
  	       all_seq_dr_before_p ? "true" : "false",
  	       all_seq_dr_after_p ? "true" : "false");
!       fprintf (dump_file, "OK to interchange with variable strides: %d\n",
  	       num_resolved_ok_drs);
!       fprintf (dump_file, "Not OK to interchange with variable strides: %d\n",
  	       num_resolved_not_ok_drs);
        fprintf (dump_file, "Variable strides we cannot decide: %d\n",
  	       num_unresolved_drs);
diff -Nrcpad gcc-17-20260524/gcc/gimple-loop-jam.cc gcc-17-20260531/gcc/gimple-loop-jam.cc
*** gcc-17-20260524/gcc/gimple-loop-jam.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-loop-jam.cc	Sun May 31 22:32:06 2026
*************** tree_loop_unroll_and_jam (void)
*** 552,558 ****
  	{
  	  struct data_reference *dra, *drb;
  
! 	  /* If the refs are independend there's nothing to do.  */
  	  if (DDR_ARE_DEPENDENT (ddr) == chrec_known)
  	    continue;
  
--- 552,558 ----
  	{
  	  struct data_reference *dra, *drb;
  
! 	  /* If the refs are independent there's nothing to do.  */
  	  if (DDR_ARE_DEPENDENT (ddr) == chrec_known)
  	    continue;
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-low.cc gcc-17-20260531/gcc/gimple-low.cc
*** gcc-17-20260524/gcc/gimple-low.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-low.cc	Sun May 31 22:32:06 2026
*************** find_assumption_locals_r (gimple_stmt_it
*** 402,408 ****
    return NULL_TREE;
  }
  
! /* Create a new PARM_DECL that is indentical in all respect to DECL except that
     DECL can be either a VAR_DECL, a PARM_DECL or RESULT_DECL.  The original
     DECL must come from ID->src_fn and the copy will be part of ID->dst_fn.  */
  
--- 402,408 ----
    return NULL_TREE;
  }
  
! /* Create a new PARM_DECL that is identical in all respect to DECL except that
     DECL can be either a VAR_DECL, a PARM_DECL or RESULT_DECL.  The original
     DECL must come from ID->src_fn and the copy will be part of ID->dst_fn.  */
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-lower-bitint.cc gcc-17-20260531/gcc/gimple-lower-bitint.cc
*** gcc-17-20260524/gcc/gimple-lower-bitint.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-lower-bitint.cc	Sun May 31 22:32:06 2026
*************** tree
*** 185,191 ****
  maybe_cast_middle_bitint (gimple_stmt_iterator *gsi, tree op, tree &type)
  {
    if (op == NULL_TREE
!       || TREE_CODE (TREE_TYPE (op)) != BITINT_TYPE
        || bitint_precision_kind (TREE_TYPE (op)) != bitint_prec_middle)
      return op;
  
--- 185,191 ----
  maybe_cast_middle_bitint (gimple_stmt_iterator *gsi, tree op, tree &type)
  {
    if (op == NULL_TREE
!       || !BITINT_TYPE_P (TREE_TYPE (op))
        || bitint_precision_kind (TREE_TYPE (op)) != bitint_prec_middle)
      return op;
  
*************** mergeable_op (gimple *stmt)
*** 244,251 ****
  	tree lhs_type = TREE_TYPE (gimple_assign_lhs (stmt));
  	tree rhs_type = TREE_TYPE (gimple_assign_rhs1 (stmt));
  	if (TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME
! 	    && TREE_CODE (lhs_type) == BITINT_TYPE
! 	    && TREE_CODE (rhs_type) == BITINT_TYPE
  	    && bitint_precision_kind (lhs_type) >= bitint_prec_large
  	    && bitint_precision_kind (rhs_type) >= bitint_prec_large
  	    && (CEIL (TYPE_PRECISION (lhs_type), limb_prec)
--- 244,251 ----
  	tree lhs_type = TREE_TYPE (gimple_assign_lhs (stmt));
  	tree rhs_type = TREE_TYPE (gimple_assign_rhs1 (stmt));
  	if (TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME
! 	    && BITINT_TYPE_P (lhs_type)
! 	    && BITINT_TYPE_P (rhs_type)
  	    && bitint_precision_kind (lhs_type) >= bitint_prec_large
  	    && bitint_precision_kind (rhs_type) >= bitint_prec_large
  	    && (CEIL (TYPE_PRECISION (lhs_type), limb_prec)
*************** optimizable_arith_overflow (gimple *stmt
*** 302,308 ****
    if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
      return 0;
    tree type = is_ubsan ? TREE_TYPE (lhs) : TREE_TYPE (TREE_TYPE (lhs));
!   if (TREE_CODE (type) != BITINT_TYPE
        || bitint_precision_kind (type) < bitint_prec_large)
      return 0;
  
--- 302,308 ----
    if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
      return 0;
    tree type = is_ubsan ? TREE_TYPE (lhs) : TREE_TYPE (TREE_TYPE (lhs));
!   if (!BITINT_TYPE_P (type)
        || bitint_precision_kind (type) < bitint_prec_large)
      return 0;
  
*************** optimizable_arith_overflow (gimple *stmt
*** 356,362 ****
  
  	  lhs2 = gimple_assign_lhs (use_stmt);
  	  if (!INTEGRAL_TYPE_P (TREE_TYPE (lhs2))
! 	      || TREE_CODE (TREE_TYPE (lhs2)) == BITINT_TYPE)
  	    return 0;
  	  cast = use_stmt;
  	}
--- 356,362 ----
  
  	  lhs2 = gimple_assign_lhs (use_stmt);
  	  if (!INTEGRAL_TYPE_P (TREE_TYPE (lhs2))
! 	      || BITINT_TYPE_P (TREE_TYPE (lhs2)))
  	    return 0;
  	  cast = use_stmt;
  	}
*************** comparison_op (gimple *stmt, tree *pop1,
*** 415,421 ****
    if (TREE_CODE_CLASS (code) != tcc_comparison)
      return ERROR_MARK;
    tree type = TREE_TYPE (op1);
!   if (TREE_CODE (type) != BITINT_TYPE
        || bitint_precision_kind (type) < bitint_prec_large)
      return ERROR_MARK;
    if (pop1)
--- 415,421 ----
    if (TREE_CODE_CLASS (code) != tcc_comparison)
      return ERROR_MARK;
    tree type = TREE_TYPE (op1);
!   if (!BITINT_TYPE_P (type)
        || bitint_precision_kind (type) < bitint_prec_large)
      return ERROR_MARK;
    if (pop1)
*************** bitint_large_huge::handle_cast (tree lhs
*** 1369,1376 ****
    tree rhs_type = TREE_TYPE (rhs1);
    gimple *g;
    if ((TREE_CODE (rhs1) == SSA_NAME || TREE_CODE (rhs1) == INTEGER_CST)
!       && TREE_CODE (lhs_type) == BITINT_TYPE
!       && TREE_CODE (rhs_type) == BITINT_TYPE
        && bitint_precision_kind (lhs_type) >= bitint_prec_large
        && bitint_precision_kind (rhs_type) >= bitint_prec_large)
      {
--- 1369,1376 ----
    tree rhs_type = TREE_TYPE (rhs1);
    gimple *g;
    if ((TREE_CODE (rhs1) == SSA_NAME || TREE_CODE (rhs1) == INTEGER_CST)
!       && BITINT_TYPE_P (lhs_type)
!       && BITINT_TYPE_P (rhs_type)
        && bitint_precision_kind (lhs_type) >= bitint_prec_large
        && bitint_precision_kind (rhs_type) >= bitint_prec_large)
      {
*************** bitint_large_huge::handle_cast (tree lhs
*** 1737,1743 ****
  	  return t;
  	}
      }
!   else if (TREE_CODE (lhs_type) == BITINT_TYPE
  	   && bitint_precision_kind (lhs_type) >= bitint_prec_large
  	   && INTEGRAL_TYPE_P (rhs_type))
      {
--- 1737,1743 ----
  	  return t;
  	}
      }
!   else if (BITINT_TYPE_P (lhs_type)
  	   && bitint_precision_kind (lhs_type) >= bitint_prec_large
  	   && INTEGRAL_TYPE_P (rhs_type))
      {
*************** bitint_large_huge::handle_cast (tree lhs
*** 1755,1761 ****
  	    m_gsi = gsi_after_labels (gsi_bb (m_gsi));
  	  else
  	    gsi_next (&m_gsi);
! 	  if (TREE_CODE (rhs_type) == BITINT_TYPE
  	      && bitint_precision_kind (rhs_type) == bitint_prec_middle)
  	    {
  	      tree type = NULL_TREE;
--- 1755,1761 ----
  	    m_gsi = gsi_after_labels (gsi_bb (m_gsi));
  	  else
  	    gsi_next (&m_gsi);
! 	  if (BITINT_TYPE_P (rhs_type)
  	      && bitint_precision_kind (rhs_type) == bitint_prec_middle)
  	    {
  	      tree type = NULL_TREE;
*************** bitint_large_huge::handle_operand_addr (
*** 2424,2430 ****
    location_t loc_save = m_loc;
    tree ret = NULL_TREE;
    int precs = 0;
!   if ((TREE_CODE (TREE_TYPE (op)) != BITINT_TYPE
         || bitint_precision_kind (TREE_TYPE (op)) < bitint_prec_large)
        && TREE_CODE (op) != INTEGER_CST)
      {
--- 2424,2430 ----
    location_t loc_save = m_loc;
    tree ret = NULL_TREE;
    int precs = 0;
!   if ((!BITINT_TYPE_P (TREE_TYPE (op))
         || bitint_precision_kind (TREE_TYPE (op)) < bitint_prec_large)
        && TREE_CODE (op) != INTEGER_CST)
      {
*************** bitint_large_huge::handle_operand_addr (
*** 2432,2438 ****
        *prec = range_to_prec (op, stmt);
        bitint_prec_kind kind = bitint_prec_small;
        gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (op)));
!       if (TREE_CODE (TREE_TYPE (op)) == BITINT_TYPE)
  	kind = bitint_precision_kind (TREE_TYPE (op));
        if (kind == bitint_prec_middle)
  	{
--- 2432,2438 ----
        *prec = range_to_prec (op, stmt);
        bitint_prec_kind kind = bitint_prec_small;
        gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (op)));
!       if (BITINT_TYPE_P (TREE_TYPE (op)))
  	kind = bitint_precision_kind (TREE_TYPE (op));
        if (kind == bitint_prec_middle)
  	{
*************** bitint_large_huge::handle_operand_addr (
*** 2542,2548 ****
  	      if (TREE_CODE (rhs1) == VIEW_CONVERT_EXPR)
  		rhs1 = TREE_OPERAND (rhs1, 0);
  	      gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (rhs1)));
! 	      if (TREE_CODE (TREE_TYPE (rhs1)) == BITINT_TYPE)
  		kind = bitint_precision_kind (TREE_TYPE (rhs1));
  	      if (kind >= bitint_prec_large)
  		{
--- 2542,2548 ----
  	      if (TREE_CODE (rhs1) == VIEW_CONVERT_EXPR)
  		rhs1 = TREE_OPERAND (rhs1, 0);
  	      gcc_assert (INTEGRAL_TYPE_P (TREE_TYPE (rhs1)));
! 	      if (BITINT_TYPE_P (TREE_TYPE (rhs1)))
  		kind = bitint_precision_kind (TREE_TYPE (rhs1));
  	      if (kind >= bitint_prec_large)
  		{
*************** bitint_large_huge::handle_operand_addr (
*** 2625,2636 ****
        if (mp == 0)
  	mp = 1;
        if (mp >= (unsigned) TYPE_PRECISION (TREE_TYPE (op))
! 	  && (TREE_CODE (TREE_TYPE (op)) == BITINT_TYPE
  	      || TYPE_PRECISION (TREE_TYPE (op)) <= limb_prec))
  	type = TREE_TYPE (op);
        else
  	type = build_bitint_type (mp, 1);
!       if (TREE_CODE (type) != BITINT_TYPE
  	  || bitint_precision_kind (type) == bitint_prec_small)
  	{
  	  if (TYPE_PRECISION (type) <= limb_prec)
--- 2625,2636 ----
        if (mp == 0)
  	mp = 1;
        if (mp >= (unsigned) TYPE_PRECISION (TREE_TYPE (op))
! 	  && (BITINT_TYPE_P (TREE_TYPE (op))
  	      || TYPE_PRECISION (TREE_TYPE (op)) <= limb_prec))
  	type = TREE_TYPE (op);
        else
  	type = build_bitint_type (mp, 1);
!       if (!BITINT_TYPE_P (type)
  	  || bitint_precision_kind (type) == bitint_prec_small)
  	{
  	  if (TYPE_PRECISION (type) <= limb_prec)
*************** bitint_large_huge::lower_mergeable_stmt
*** 2730,2736 ****
      type = TREE_TYPE (cmp_op1);
    else
      type = TREE_TYPE (gimple_assign_lhs (stmt));
!   gcc_assert (TREE_CODE (type) == BITINT_TYPE);
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    gimple *g;
--- 2730,2736 ----
      type = TREE_TYPE (cmp_op1);
    else
      type = TREE_TYPE (gimple_assign_lhs (stmt));
!   gcc_assert (BITINT_TYPE_P (type));
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    gimple *g;
*************** bitint_large_huge::lower_mergeable_stmt
*** 2738,2744 ****
    tree rhs1, lhs_type = lhs ? TREE_TYPE (lhs) : NULL_TREE;
    if (lhs
        && TREE_CODE (lhs) == SSA_NAME
!       && TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
        && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large)
      {
        int p = var_to_partition (m_map, lhs);
--- 2738,2744 ----
    tree rhs1, lhs_type = lhs ? TREE_TYPE (lhs) : NULL_TREE;
    if (lhs
        && TREE_CODE (lhs) == SSA_NAME
!       && BITINT_TYPE_P (TREE_TYPE (lhs))
        && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large)
      {
        int p = var_to_partition (m_map, lhs);
*************** bitint_large_huge::lower_mergeable_stmt
*** 2836,2842 ****
        if (TREE_CODE (rhs1) == SSA_NAME
  	  && (m_names == NULL
  	      || !bitmap_bit_p (m_names, SSA_NAME_VERSION (rhs1)))
! 	  && TREE_CODE (TREE_TYPE (rhs1)) == BITINT_TYPE
  	  && bitint_precision_kind (TREE_TYPE (rhs1)) >= bitint_prec_large
  	  && (CEIL ((unsigned) TYPE_PRECISION (TREE_TYPE (rhs1)),
  		    limb_prec) < CEIL (prec, limb_prec)
--- 2836,2842 ----
        if (TREE_CODE (rhs1) == SSA_NAME
  	  && (m_names == NULL
  	      || !bitmap_bit_p (m_names, SSA_NAME_VERSION (rhs1)))
! 	  && BITINT_TYPE_P (TREE_TYPE (rhs1))
  	  && bitint_precision_kind (TREE_TYPE (rhs1)) >= bitint_prec_large
  	  && (CEIL ((unsigned) TYPE_PRECISION (TREE_TYPE (rhs1)),
  		    limb_prec) < CEIL (prec, limb_prec)
*************** bitint_large_huge::lower_comparison_stmt
*** 3372,3378 ****
  					  tree cmp_op1, tree cmp_op2)
  {
    tree type = TREE_TYPE (cmp_op1);
!   gcc_assert (TREE_CODE (type) == BITINT_TYPE);
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    gimple *g;
--- 3372,3378 ----
  					  tree cmp_op1, tree cmp_op2)
  {
    tree type = TREE_TYPE (cmp_op1);
!   gcc_assert (BITINT_TYPE_P (type));
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    gimple *g;
*************** bitint_large_huge::lower_shift_stmt (tre
*** 3506,3512 ****
    tree_code rhs_code = gimple_assign_rhs_code (stmt);
    tree type = TREE_TYPE (rhs1);
    gimple *final_stmt = gsi_stmt (m_gsi);
!   gcc_assert (TREE_CODE (type) == BITINT_TYPE
  	      && bitint_precision_kind (type) >= bitint_prec_large);
    int prec = TYPE_PRECISION (type);
    tree n = gimple_assign_rhs2 (stmt), n1, n2, n3, n4;
--- 3506,3512 ----
    tree_code rhs_code = gimple_assign_rhs_code (stmt);
    tree type = TREE_TYPE (rhs1);
    gimple *final_stmt = gsi_stmt (m_gsi);
!   gcc_assert (BITINT_TYPE_P (type)
  	      && bitint_precision_kind (type) >= bitint_prec_large);
    int prec = TYPE_PRECISION (type);
    tree n = gimple_assign_rhs2 (stmt), n1, n2, n3, n4;
*************** bitint_large_huge::lower_muldiv_stmt (tr
*** 4082,4088 ****
    tree lhs = gimple_assign_lhs (stmt);
    tree_code rhs_code = gimple_assign_rhs_code (stmt);
    tree type = TREE_TYPE (rhs1);
!   gcc_assert (TREE_CODE (type) == BITINT_TYPE
  	      && bitint_precision_kind (type) >= bitint_prec_large);
    int prec = TYPE_PRECISION (type), prec1, prec2;
    bool ext_ms_limb = false;
--- 4082,4088 ----
    tree lhs = gimple_assign_lhs (stmt);
    tree_code rhs_code = gimple_assign_rhs_code (stmt);
    tree type = TREE_TYPE (rhs1);
!   gcc_assert (BITINT_TYPE_P (type)
  	      && bitint_precision_kind (type) >= bitint_prec_large);
    int prec = TYPE_PRECISION (type), prec1, prec2;
    bool ext_ms_limb = false;
*************** bitint_large_huge::finish_arith_overflow
*** 4426,4432 ****
    gimple *g;
  
    if (obj == NULL_TREE
!       && (TREE_CODE (type) != BITINT_TYPE
  	  || bitint_precision_kind (type) < bitint_prec_large))
      {
        /* Add support for 3 or more limbs filled in from normal integral
--- 4426,4432 ----
    gimple *g;
  
    if (obj == NULL_TREE
!       && (!BITINT_TYPE_P (type)
  	  || bitint_precision_kind (type) < bitint_prec_large))
      {
        /* Add support for 3 or more limbs filled in from normal integral
*************** bitint_large_huge::finish_arith_overflow
*** 4435,4441 ****
  	 be needed.  */
        gcc_assert (TYPE_PRECISION (type) <= 2 * limb_prec);
        tree lhs_type = type;
!       if (TREE_CODE (type) == BITINT_TYPE
  	  && bitint_precision_kind (type) == bitint_prec_middle)
  	lhs_type = build_nonstandard_integer_type (TYPE_PRECISION (type),
  						   TYPE_UNSIGNED (type));
--- 4435,4441 ----
  	 be needed.  */
        gcc_assert (TYPE_PRECISION (type) <= 2 * limb_prec);
        tree lhs_type = type;
!       if (BITINT_TYPE_P (type)
  	  && bitint_precision_kind (type) == bitint_prec_middle)
  	lhs_type = build_nonstandard_integer_type (TYPE_PRECISION (type),
  						   TYPE_UNSIGNED (type));
*************** bitint_large_huge::lower_addsub_overflow
*** 4781,4787 ****
    tree var = NULL_TREE;
    tree orig_obj = obj;
    if (obj == NULL_TREE
!       && TREE_CODE (type) == BITINT_TYPE
        && bitint_precision_kind (type) >= bitint_prec_large
        && m_names
        && bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
--- 4781,4787 ----
    tree var = NULL_TREE;
    tree orig_obj = obj;
    if (obj == NULL_TREE
!       && BITINT_TYPE_P (type)
        && bitint_precision_kind (type) >= bitint_prec_large
        && m_names
        && bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
*************** bitint_large_huge::lower_addsub_overflow
*** 4792,4798 ****
        if (TREE_TYPE (lhs) == type)
  	orig_obj = obj;
      }
!   if (TREE_CODE (type) != BITINT_TYPE
        || bitint_precision_kind (type) < bitint_prec_large)
      {
        unsigned HOST_WIDE_INT nelts = CEIL (prec, limb_prec);
--- 4792,4798 ----
        if (TREE_TYPE (lhs) == type)
  	orig_obj = obj;
      }
!   if (!BITINT_TYPE_P (type)
        || bitint_precision_kind (type) < bitint_prec_large)
      {
        unsigned HOST_WIDE_INT nelts = CEIL (prec, limb_prec);
*************** bitint_large_huge::lower_mul_overflow (t
*** 5289,5295 ****
    tree orig_obj = obj;
    bool force_var = false;
    if (obj == NULL_TREE
!       && TREE_CODE (type) == BITINT_TYPE
        && bitint_precision_kind (type) >= bitint_prec_large
        && m_names
        && bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
--- 5289,5295 ----
    tree orig_obj = obj;
    bool force_var = false;
    if (obj == NULL_TREE
!       && BITINT_TYPE_P (type)
        && bitint_precision_kind (type) >= bitint_prec_large
        && m_names
        && bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
*************** bitint_large_huge::lower_mul_overflow (t
*** 5316,5322 ****
      }
    if (obj == NULL_TREE
        || force_var
!       || TREE_CODE (type) != BITINT_TYPE
        || bitint_precision_kind (type) < bitint_prec_large
        || prec2 > (CEIL (prec, limb_prec) * limb_prec * (orig_obj ? 1 : 2)))
      {
--- 5316,5322 ----
      }
    if (obj == NULL_TREE
        || force_var
!       || !BITINT_TYPE_P (type)
        || bitint_precision_kind (type) < bitint_prec_large
        || prec2 > (CEIL (prec, limb_prec) * limb_prec * (orig_obj ? 1 : 2)))
      {
*************** bitint_large_huge::lower_bit_query (gimp
*** 5592,5598 ****
        return;
      }
    tree type = TREE_TYPE (arg0);
!   gcc_assert (TREE_CODE (type) == BITINT_TYPE);
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    enum internal_fn ifn = gimple_call_internal_fn (stmt);
--- 5592,5598 ----
        return;
      }
    tree type = TREE_TYPE (arg0);
!   gcc_assert (BITINT_TYPE_P (type));
    bitint_prec_kind kind = bitint_precision_kind (type);
    gcc_assert (kind >= bitint_prec_large);
    enum internal_fn ifn = gimple_call_internal_fn (stmt);
*************** bitint_large_huge::lower_call (tree obj,
*** 6143,6149 ****
      {
        tree arg = gimple_call_arg (stmt, i);
        if (TREE_CODE (arg) != SSA_NAME
! 	  || TREE_CODE (TREE_TYPE (arg)) != BITINT_TYPE
  	  || bitint_precision_kind (TREE_TYPE (arg)) <= bitint_prec_middle)
  	continue;
        if (SSA_NAME_IS_DEFAULT_DEF (arg)
--- 6143,6149 ----
      {
        tree arg = gimple_call_arg (stmt, i);
        if (TREE_CODE (arg) != SSA_NAME
! 	  || !BITINT_TYPE_P (TREE_TYPE (arg))
  	  || bitint_precision_kind (TREE_TYPE (arg)) <= bitint_prec_middle)
  	continue;
        if (SSA_NAME_IS_DEFAULT_DEF (arg)
*************** bitint_large_huge::lower_call (tree obj,
*** 6176,6182 ****
    tree lhs = gimple_call_lhs (stmt);
    if (lhs
        && TREE_CODE (lhs) == SSA_NAME
!       && TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
        && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large)
      {
        int p = var_to_partition (m_map, lhs);
--- 6176,6182 ----
    tree lhs = gimple_call_lhs (stmt);
    if (lhs
        && TREE_CODE (lhs) == SSA_NAME
!       && BITINT_TYPE_P (TREE_TYPE (lhs))
        && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large)
      {
        int p = var_to_partition (m_map, lhs);
*************** bitint_large_huge::lower_asm (gimple *st
*** 6204,6210 ****
        tree t = gimple_asm_output_op (g, i);
        tree s = TREE_VALUE (t);
        if (TREE_CODE (s) == SSA_NAME
! 	  && TREE_CODE (TREE_TYPE (s)) == BITINT_TYPE
  	  && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	{
  	  int part = var_to_partition (m_map, s);
--- 6204,6210 ----
        tree t = gimple_asm_output_op (g, i);
        tree s = TREE_VALUE (t);
        if (TREE_CODE (s) == SSA_NAME
! 	  && BITINT_TYPE_P (TREE_TYPE (s))
  	  && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	{
  	  int part = var_to_partition (m_map, s);
*************** bitint_large_huge::lower_asm (gimple *st
*** 6217,6223 ****
        tree t = gimple_asm_input_op (g, i);
        tree s = TREE_VALUE (t);
        if (TREE_CODE (s) == SSA_NAME
! 	  && TREE_CODE (TREE_TYPE (s)) == BITINT_TYPE
  	  && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	{
  	  if (SSA_NAME_IS_DEFAULT_DEF (s)
--- 6217,6223 ----
        tree t = gimple_asm_input_op (g, i);
        tree s = TREE_VALUE (t);
        if (TREE_CODE (s) == SSA_NAME
! 	  && BITINT_TYPE_P (TREE_TYPE (s))
  	  && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	{
  	  if (SSA_NAME_IS_DEFAULT_DEF (s)
*************** bitint_large_huge::lower_stmt (gimple *s
*** 6280,6290 ****
        tree rhs1 = gimple_assign_rhs1 (stmt);
        if (TREE_CODE (rhs1) == VIEW_CONVERT_EXPR)
  	rhs1 = TREE_OPERAND (rhs1, 0);
!       if (TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
  	  && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	  && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)))
  	mergeable_cast_p = true;
!       else if (TREE_CODE (TREE_TYPE (rhs1)) == BITINT_TYPE
  	       && bitint_precision_kind (TREE_TYPE (rhs1)) >= bitint_prec_large
  	       && (INTEGRAL_TYPE_P (TREE_TYPE (lhs))
  		   || POINTER_TYPE_P (TREE_TYPE (lhs))
--- 6280,6290 ----
        tree rhs1 = gimple_assign_rhs1 (stmt);
        if (TREE_CODE (rhs1) == VIEW_CONVERT_EXPR)
  	rhs1 = TREE_OPERAND (rhs1, 0);
!       if (BITINT_TYPE_P (TREE_TYPE (lhs))
  	  && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	  && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)))
  	mergeable_cast_p = true;
!       else if (BITINT_TYPE_P (TREE_TYPE (rhs1))
  	       && bitint_precision_kind (TREE_TYPE (rhs1)) >= bitint_prec_large
  	       && (INTEGRAL_TYPE_P (TREE_TYPE (lhs))
  		   || POINTER_TYPE_P (TREE_TYPE (lhs))
*************** bitint_large_huge::lower_stmt (gimple *s
*** 6368,6374 ****
  		}
  	    }
  	}
!       else if (TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
  	       && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	       && !INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
  	       && !POINTER_TYPE_P (TREE_TYPE (rhs1))
--- 6368,6374 ----
  		}
  	    }
  	}
!       else if (BITINT_TYPE_P (TREE_TYPE (lhs))
  	       && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	       && !INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
  	       && !POINTER_TYPE_P (TREE_TYPE (rhs1))
*************** bitint_large_huge::lower_stmt (gimple *s
*** 6480,6486 ****
  			      boolean_false_node);
  	  gimple_assign_set_rhs1 (stmt, cond);
  	  lhs = gimple_assign_lhs (stmt);
! 	  gcc_assert (TREE_CODE (TREE_TYPE (lhs)) != BITINT_TYPE
  		      || (bitint_precision_kind (TREE_TYPE (lhs))
  			  <= bitint_prec_middle));
  	  update_stmt (stmt);
--- 6480,6486 ----
  			      boolean_false_node);
  	  gimple_assign_set_rhs1 (stmt, cond);
  	  lhs = gimple_assign_lhs (stmt);
! 	  gcc_assert (!BITINT_TYPE_P (TREE_TYPE (lhs))
  		      || (bitint_precision_kind (TREE_TYPE (lhs))
  			  <= bitint_prec_middle));
  	  update_stmt (stmt);
*************** bitint_large_huge::lower_stmt (gimple *s
*** 6501,6507 ****
  	 be needed.  */
        gcc_assert (TYPE_PRECISION (lhs_type) <= 2 * limb_prec);
        gimple *g;
!       if ((TREE_CODE (lhs_type) == BITINT_TYPE
  	   && bitint_precision_kind (lhs_type) == bitint_prec_middle)
  	  || POINTER_TYPE_P (lhs_type))
  	lhs_type = build_nonstandard_integer_type (TYPE_PRECISION (lhs_type),
--- 6501,6507 ----
  	 be needed.  */
        gcc_assert (TYPE_PRECISION (lhs_type) <= 2 * limb_prec);
        gimple *g;
!       if ((BITINT_TYPE_P (lhs_type)
  	   && bitint_precision_kind (lhs_type) == bitint_prec_middle)
  	  || POINTER_TYPE_P (lhs_type))
  	lhs_type = build_nonstandard_integer_type (TYPE_PRECISION (lhs_type),
*************** bitint_dom_walker::before_dom_children (
*** 6651,6657 ****
        tree lhs = gimple_get_lhs (stmt);
        if (lhs
  	  && TREE_CODE (lhs) == SSA_NAME
! 	  && TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
  	  && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	  && !bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
  	/* If lhs of stmt is large/huge _BitInt SSA_NAME not in m_names,
--- 6651,6657 ----
        tree lhs = gimple_get_lhs (stmt);
        if (lhs
  	  && TREE_CODE (lhs) == SSA_NAME
! 	  && BITINT_TYPE_P (TREE_TYPE (lhs))
  	  && bitint_precision_kind (TREE_TYPE (lhs)) >= bitint_prec_large
  	  && !bitmap_bit_p (m_names, SSA_NAME_VERSION (lhs)))
  	/* If lhs of stmt is large/huge _BitInt SSA_NAME not in m_names,
*************** bitint_dom_walker::before_dom_children (
*** 6666,6672 ****
        FOR_EACH_SSA_USE_OPERAND (use_p, stmt, oi, SSA_OP_USE)
  	{
  	  tree s = USE_FROM_PTR (use_p);
! 	  if (TREE_CODE (TREE_TYPE (s)) == BITINT_TYPE
  	      && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	    worklist.safe_push (s);
  	}
--- 6666,6672 ----
        FOR_EACH_SSA_USE_OPERAND (use_p, stmt, oi, SSA_OP_USE)
  	{
  	  tree s = USE_FROM_PTR (use_p);
! 	  if (BITINT_TYPE_P (TREE_TYPE (s))
  	      && bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
  	    worklist.safe_push (s);
  	}
*************** bitint_dom_walker::before_dom_children (
*** 6683,6689 ****
  	      FOR_EACH_SSA_USE_OPERAND (use_p, g, oi, SSA_OP_USE)
  		{
  		  tree s2 = USE_FROM_PTR (use_p);
! 		  if (TREE_CODE (TREE_TYPE (s2)) == BITINT_TYPE
  		      && (bitint_precision_kind (TREE_TYPE (s2))
  			  >= bitint_prec_large))
  		    worklist.safe_push (s2);
--- 6683,6689 ----
  	      FOR_EACH_SSA_USE_OPERAND (use_p, g, oi, SSA_OP_USE)
  		{
  		  tree s2 = USE_FROM_PTR (use_p);
! 		  if (BITINT_TYPE_P (TREE_TYPE (s2))
  		      && (bitint_precision_kind (TREE_TYPE (s2))
  			  >= bitint_prec_large))
  		    worklist.safe_push (s2);
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6778,6784 ****
  	  tree type = TREE_TYPE (lhs);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (TREE_CODE (type) == BITINT_TYPE
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (!bitmap_bit_p (names, SSA_NAME_VERSION (lhs)))
--- 6778,6784 ----
  	  tree type = TREE_TYPE (lhs);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (BITINT_TYPE_P (type)
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (!bitmap_bit_p (names, SSA_NAME_VERSION (lhs)))
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6856,6862 ****
        if (TREE_CODE (ltype) == COMPLEX_TYPE)
  	muldiv_p = true;
        else if (TREE_CODE (lhs) == SSA_NAME
! 	       && TREE_CODE (ltype) == BITINT_TYPE
  	       && bitint_precision_kind (ltype) >= bitint_prec_large)
  	{
  	  unsigned lnelts = CEIL (TYPE_PRECISION (ltype), limb_prec);
--- 6856,6862 ----
        if (TREE_CODE (ltype) == COMPLEX_TYPE)
  	muldiv_p = true;
        else if (TREE_CODE (lhs) == SSA_NAME
! 	       && BITINT_TYPE_P (ltype)
  	       && bitint_precision_kind (ltype) >= bitint_prec_large)
  	{
  	  unsigned lnelts = CEIL (TYPE_PRECISION (ltype), limb_prec);
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6865,6871 ****
  	      tree type = TREE_TYPE (var);
  	      if (TREE_CODE (type) == COMPLEX_TYPE)
  		type = TREE_TYPE (type);
! 	      if (TREE_CODE (type) == BITINT_TYPE
  		  && bitint_precision_kind (type) >= bitint_prec_large)
  		{
  		  if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
--- 6865,6871 ----
  	      tree type = TREE_TYPE (var);
  	      if (TREE_CODE (type) == COMPLEX_TYPE)
  		type = TREE_TYPE (type);
! 	      if (BITINT_TYPE_P (type)
  		  && bitint_precision_kind (type) >= bitint_prec_large)
  		{
  		  if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6892,6898 ****
  		  tree type = TREE_TYPE (var);
  		  if (TREE_CODE (type) == COMPLEX_TYPE)
  		    type = TREE_TYPE (type);
! 		  if (TREE_CODE (type) == BITINT_TYPE
  		      && bitint_precision_kind (type) >= bitint_prec_large)
  		    {
  		      if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
--- 6892,6898 ----
  		  tree type = TREE_TYPE (var);
  		  if (TREE_CODE (type) == COMPLEX_TYPE)
  		    type = TREE_TYPE (type);
! 		  if (BITINT_TYPE_P (type)
  		      && bitint_precision_kind (type) >= bitint_prec_large)
  		    {
  		      if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6943,6949 ****
        tree type = TREE_TYPE (var);
        if (TREE_CODE (type) == COMPLEX_TYPE)
  	type = TREE_TYPE (type);
!       if (TREE_CODE (type) == BITINT_TYPE
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
--- 6943,6949 ----
        tree type = TREE_TYPE (var);
        if (TREE_CODE (type) == COMPLEX_TYPE)
  	type = TREE_TYPE (type);
!       if (BITINT_TYPE_P (type)
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6961,6967 ****
  	  tree type = TREE_TYPE (var);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (TREE_CODE (type) == BITINT_TYPE
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
--- 6961,6967 ----
  	  tree type = TREE_TYPE (var);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (BITINT_TYPE_P (type)
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (bitmap_bit_p (names, SSA_NAME_VERSION (var)))
*************** arith_overflow_arg_kind (gimple *stmt)
*** 6994,7000 ****
  	  {
  	    tree a = gimple_call_arg (stmt, i);
  	    if (TREE_CODE (a) == INTEGER_CST
! 		&& TREE_CODE (TREE_TYPE (a)) == BITINT_TYPE)
  	      {
  		bitint_prec_kind kind = bitint_precision_kind (TREE_TYPE (a));
  		ret = MAX (ret, kind);
--- 6994,7000 ----
  	  {
  	    tree a = gimple_call_arg (stmt, i);
  	    if (TREE_CODE (a) == INTEGER_CST
! 		&& BITINT_TYPE_P (TREE_TYPE (a)))
  	      {
  		bitint_prec_kind kind = bitint_precision_kind (TREE_TYPE (a));
  		ret = MAX (ret, kind);
*************** gimple_lower_bitint (void)
*** 7030,7036 ****
  	    break;
  	  type = TREE_TYPE (type);
  	}
!       if (TREE_CODE (type) == BITINT_TYPE
  	  && bitint_precision_kind (type) != bitint_prec_small)
  	break;
        /* We need to also rewrite stores of large/huge _BitInt INTEGER_CSTs
--- 7030,7036 ----
  	    break;
  	  type = TREE_TYPE (type);
  	}
!       if (BITINT_TYPE_P (type)
  	  && bitint_precision_kind (type) != bitint_prec_small)
  	break;
        /* We need to also rewrite stores of large/huge _BitInt INTEGER_CSTs
*************** gimple_lower_bitint (void)
*** 7041,7047 ****
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		break;
--- 7041,7047 ----
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (BITINT_TYPE_P (TREE_TYPE (t))
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		break;
*************** gimple_lower_bitint (void)
*** 7056,7062 ****
  	    {
  	      tree t = gimple_assign_rhs1 (g);
  	      if (TREE_CODE (t) == INTEGER_CST
! 		  && TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      != bitint_prec_small))
  		break;
--- 7056,7062 ----
  	    {
  	      tree t = gimple_assign_rhs1 (g);
  	      if (TREE_CODE (t) == INTEGER_CST
! 		  && BITINT_TYPE_P (TREE_TYPE (t))
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      != bitint_prec_small))
  		break;
*************** gimple_lower_bitint (void)
*** 7073,7079 ****
        if (gswitch *swtch = safe_dyn_cast <gswitch *> (*gsi_last_bb (bb)))
  	{
  	  tree idx = gimple_switch_index (swtch);
! 	  if (TREE_CODE (TREE_TYPE (idx)) != BITINT_TYPE
  	      || bitint_precision_kind (TREE_TYPE (idx)) < bitint_prec_large)
  	    continue;
  
--- 7073,7079 ----
        if (gswitch *swtch = safe_dyn_cast <gswitch *> (*gsi_last_bb (bb)))
  	{
  	  tree idx = gimple_switch_index (swtch);
! 	  if (!BITINT_TYPE_P (TREE_TYPE (idx))
  	      || bitint_precision_kind (TREE_TYPE (idx)) < bitint_prec_large)
  	    continue;
  
*************** gimple_lower_bitint (void)
*** 7130,7136 ****
  	    has_large_huge = true;
  	  type = TREE_TYPE (type);
  	}
!       if (TREE_CODE (type) == BITINT_TYPE
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  if (first_large_huge == ~0U)
--- 7130,7136 ----
  	    has_large_huge = true;
  	  type = TREE_TYPE (type);
  	}
!       if (BITINT_TYPE_P (type)
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  if (first_large_huge == ~0U)
*************** gimple_lower_bitint (void)
*** 7339,7345 ****
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		has_large_huge = true;
--- 7339,7345 ----
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (BITINT_TYPE_P (TREE_TYPE (t))
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		has_large_huge = true;
*************** gimple_lower_bitint (void)
*** 7354,7360 ****
  	    {
  	      tree t = gimple_assign_rhs1 (g);
  	      if (TREE_CODE (t) == INTEGER_CST
! 		  && TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		has_large_huge = true;
--- 7354,7360 ----
  	    {
  	      tree t = gimple_assign_rhs1 (g);
  	      if (TREE_CODE (t) == INTEGER_CST
! 		  && BITINT_TYPE_P (TREE_TYPE (t))
  		  && (bitint_precision_kind (TREE_TYPE (t))
  		      >= bitint_prec_large))
  		has_large_huge = true;
*************** gimple_lower_bitint (void)
*** 7369,7375 ****
        tree type = TREE_TYPE (s);
        if (TREE_CODE (type) == COMPLEX_TYPE)
  	type = TREE_TYPE (type);
!       if (TREE_CODE (type) == BITINT_TYPE
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  use_operand_p use_p;
--- 7369,7375 ----
        tree type = TREE_TYPE (s);
        if (TREE_CODE (type) == COMPLEX_TYPE)
  	type = TREE_TYPE (type);
!       if (BITINT_TYPE_P (type)
  	  && bitint_precision_kind (type) >= bitint_prec_large)
  	{
  	  use_operand_p use_p;
*************** gimple_lower_bitint (void)
*** 7452,7458 ****
  			      goto force_name;
  			    /* FALLTHRU */
  			  case MULT_EXPR:
! 			    if (TREE_CODE (TREE_TYPE (rhs1)) != BITINT_TYPE
  				|| (bitint_precision_kind (TREE_TYPE (rhs1))
  				    < bitint_prec_large))
  			      continue;
--- 7452,7458 ----
  			      goto force_name;
  			    /* FALLTHRU */
  			  case MULT_EXPR:
! 			    if (!BITINT_TYPE_P (TREE_TYPE (rhs1))
  				|| (bitint_precision_kind (TREE_TYPE (rhs1))
  				    < bitint_prec_large))
  			      continue;
*************** gimple_lower_bitint (void)
*** 7485,7491 ****
  			  default:
  			    break;
  			}
! 		      if (TREE_CODE (TREE_TYPE (rhs1)) != BITINT_TYPE
  			  || (bitint_precision_kind (TREE_TYPE (rhs1))
  			      < bitint_prec_large))
  			continue;
--- 7485,7491 ----
  			  default:
  			    break;
  			}
! 		      if (!BITINT_TYPE_P (TREE_TYPE (rhs1))
  			  || (bitint_precision_kind (TREE_TYPE (rhs1))
  			      < bitint_prec_large))
  			continue;
*************** gimple_lower_bitint (void)
*** 7519,7525 ****
  			     not mergeable.  */
  			  tree rhs2
  			    = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (rhs1));
! 			  if (TREE_CODE (TREE_TYPE (rhs2)) == BITINT_TYPE
  			      && (TYPE_PRECISION (TREE_TYPE (rhs1))
  				  == TYPE_PRECISION (TREE_TYPE (rhs2))))
  			    {
--- 7519,7525 ----
  			     not mergeable.  */
  			  tree rhs2
  			    = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (rhs1));
! 			  if (BITINT_TYPE_P (TREE_TYPE (rhs2))
  			      && (TYPE_PRECISION (TREE_TYPE (rhs1))
  				  == TYPE_PRECISION (TREE_TYPE (rhs2))))
  			    {
*************** gimple_lower_bitint (void)
*** 7718,7724 ****
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && bitint_precision_kind (TREE_TYPE (t)) >= bitint_prec_large)
  		has_large_huge = true;
  	    }
--- 7718,7724 ----
  	  if (is_gimple_assign (g) && gimple_store_p (g))
  	    {
  	      tree t = gimple_assign_rhs1 (g);
! 	      if (BITINT_TYPE_P (TREE_TYPE (t))
  		  && bitint_precision_kind (TREE_TYPE (t)) >= bitint_prec_large)
  		has_large_huge = true;
  	    }
*************** gimple_lower_bitint (void)
*** 7822,7828 ****
  	  bitint_prec_kind kind = bitint_prec_small;
  	  tree t;
  	  FOR_EACH_SSA_TREE_OPERAND (t, stmt, iter, SSA_OP_ALL_OPERANDS)
! 	    if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE)
  	      {
  		bitint_prec_kind this_kind
  		  = bitint_precision_kind (TREE_TYPE (t));
--- 7822,7828 ----
  	  bitint_prec_kind kind = bitint_prec_small;
  	  tree t;
  	  FOR_EACH_SSA_TREE_OPERAND (t, stmt, iter, SSA_OP_ALL_OPERANDS)
! 	    if (BITINT_TYPE_P (TREE_TYPE (t)))
  	      {
  		bitint_prec_kind this_kind
  		  = bitint_precision_kind (TREE_TYPE (t));
*************** gimple_lower_bitint (void)
*** 7831,7837 ****
  	  if (is_gimple_assign (stmt) && gimple_store_p (stmt))
  	    {
  	      t = gimple_assign_rhs1 (stmt);
! 	      if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE)
  		{
  		  bitint_prec_kind this_kind
  		    = bitint_precision_kind (TREE_TYPE (t));
--- 7831,7837 ----
  	  if (is_gimple_assign (stmt) && gimple_store_p (stmt))
  	    {
  	      t = gimple_assign_rhs1 (stmt);
! 	      if (BITINT_TYPE_P (TREE_TYPE (t)))
  		{
  		  bitint_prec_kind this_kind
  		    = bitint_precision_kind (TREE_TYPE (t));
*************** gimple_lower_bitint (void)
*** 7842,7848 ****
  	      && gimple_assign_rhs_code (stmt) == FLOAT_EXPR)
  	    {
  	      t = gimple_assign_rhs1 (stmt);
! 	      if (TREE_CODE (TREE_TYPE (t)) == BITINT_TYPE
  		  && TREE_CODE (t) == INTEGER_CST)
  		{
  		  bitint_prec_kind this_kind
--- 7842,7848 ----
  	      && gimple_assign_rhs_code (stmt) == FLOAT_EXPR)
  	    {
  	      t = gimple_assign_rhs1 (stmt);
! 	      if (BITINT_TYPE_P (TREE_TYPE (t))
  		  && TREE_CODE (t) == INTEGER_CST)
  		{
  		  bitint_prec_kind this_kind
*************** gimple_lower_bitint (void)
*** 7857,7863 ****
  		{
  		  bitint_prec_kind this_kind = arith_overflow_arg_kind (stmt);
  		  kind = MAX (kind, this_kind);
! 		  if (TREE_CODE (TREE_TYPE (TREE_TYPE (t))) == BITINT_TYPE)
  		    {
  		      this_kind
  			= bitint_precision_kind (TREE_TYPE (TREE_TYPE (t)));
--- 7857,7863 ----
  		{
  		  bitint_prec_kind this_kind = arith_overflow_arg_kind (stmt);
  		  kind = MAX (kind, this_kind);
! 		  if (BITINT_TYPE_P (TREE_TYPE (TREE_TYPE (t))))
  		    {
  		      this_kind
  			= bitint_precision_kind (TREE_TYPE (TREE_TYPE (t)));
*************** gimple_lower_bitint (void)
*** 7940,7946 ****
  		      }
  		  }
  	      if (tree lhs = gimple_get_lhs (stmt))
! 		if (TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
  		    && (bitint_precision_kind (TREE_TYPE (lhs))
  			== bitint_prec_middle))
  		  {
--- 7940,7946 ----
  		      }
  		  }
  	      if (tree lhs = gimple_get_lhs (stmt))
! 		if (BITINT_TYPE_P (TREE_TYPE (lhs))
  		    && (bitint_precision_kind (TREE_TYPE (lhs))
  			== bitint_prec_middle))
  		  {
*************** gimple_lower_bitint (void)
*** 7969,7975 ****
  		tree type = TREE_TYPE (lhs);
  		if (TREE_CODE (type) == COMPLEX_TYPE)
  		  type = TREE_TYPE (type);
! 		if (TREE_CODE (type) == BITINT_TYPE
  		    && bitint_precision_kind (type) >= bitint_prec_large
  		    && (large_huge.m_names == NULL
  			|| !bitmap_bit_p (large_huge.m_names,
--- 7969,7975 ----
  		tree type = TREE_TYPE (lhs);
  		if (TREE_CODE (type) == COMPLEX_TYPE)
  		  type = TREE_TYPE (type);
! 		if (BITINT_TYPE_P (type)
  		    && bitint_precision_kind (type) >= bitint_prec_large
  		    && (large_huge.m_names == NULL
  			|| !bitmap_bit_p (large_huge.m_names,
*************** gimple_lower_bitint (void)
*** 7986,7992 ****
  	{
  	  gphi *phi = gsi.phi ();
  	  tree lhs = gimple_phi_result (phi);
! 	  if (TREE_CODE (TREE_TYPE (lhs)) != BITINT_TYPE
  	      || bitint_precision_kind (TREE_TYPE (lhs)) < bitint_prec_large)
  	    continue;
  	  int p1 = var_to_partition (large_huge.m_map, lhs);
--- 7986,7992 ----
  	{
  	  gphi *phi = gsi.phi ();
  	  tree lhs = gimple_phi_result (phi);
! 	  if (!BITINT_TYPE_P (TREE_TYPE (lhs))
  	      || bitint_precision_kind (TREE_TYPE (lhs)) < bitint_prec_large)
  	    continue;
  	  int p1 = var_to_partition (large_huge.m_map, lhs);
*************** gimple_lower_bitint (void)
*** 8216,8222 ****
  	  tree type = TREE_TYPE (s);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (TREE_CODE (type) == BITINT_TYPE
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (large_huge.m_preserved
--- 8216,8222 ----
  	  tree type = TREE_TYPE (s);
  	  if (TREE_CODE (type) == COMPLEX_TYPE)
  	    type = TREE_TYPE (type);
! 	  if (BITINT_TYPE_P (type)
  	      && bitint_precision_kind (type) >= bitint_prec_large)
  	    {
  	      if (large_huge.m_preserved
diff -Nrcpad gcc-17-20260524/gcc/gimple-match-exports.cc gcc-17-20260531/gcc/gimple-match-exports.cc
*** gcc-17-20260524/gcc/gimple-match-exports.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-match-exports.cc	Sun May 31 22:32:06 2026
*************** build_call_internal (internal_fn fn, gim
*** 269,275 ****
  	      /* For these 6 builtins large/huge _BitInt operand is ok
  		 before bitint lowering pass.  */
  	      if (res_op->num_ops >= 1
! 		  && TREE_CODE (TREE_TYPE (res_op->ops[0])) == BITINT_TYPE
  		  && (TYPE_PRECISION (TREE_TYPE (res_op->ops[0]))
  		      > MAX_FIXED_MODE_SIZE)
  		  && cfun
--- 269,275 ----
  	      /* For these 6 builtins large/huge _BitInt operand is ok
  		 before bitint lowering pass.  */
  	      if (res_op->num_ops >= 1
! 		  && BITINT_TYPE_P (TREE_TYPE (res_op->ops[0]))
  		  && (TYPE_PRECISION (TREE_TYPE (res_op->ops[0]))
  		      > MAX_FIXED_MODE_SIZE)
  		  && cfun
*************** try_conditional_simplification (internal
*** 415,421 ****
  
    unsigned int num_ops = res_op->num_ops;
    /* num_cond_ops = 2 for COND_ADD (MASK and ELSE)
!      wheras num_cond_ops = 4 for COND_LEN_ADD (MASK, ELSE, LEN and BIAS).  */
    unsigned int num_cond_ops = len_index < 0 ? 2 : 4;
    tree else_value
      = len_index < 0 ? res_op->ops[num_ops - 1] : res_op->ops[num_ops - 3];
--- 415,421 ----
  
    unsigned int num_ops = res_op->num_ops;
    /* num_cond_ops = 2 for COND_ADD (MASK and ELSE)
!      whereas num_cond_ops = 4 for COND_LEN_ADD (MASK, ELSE, LEN and BIAS).  */
    unsigned int num_cond_ops = len_index < 0 ? 2 : 4;
    tree else_value
      = len_index < 0 ? res_op->ops[num_ops - 1] : res_op->ops[num_ops - 3];
diff -Nrcpad gcc-17-20260524/gcc/gimple-predicate-analysis.cc gcc-17-20260531/gcc/gimple-predicate-analysis.cc
*** gcc-17-20260524/gcc/gimple-predicate-analysis.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-predicate-analysis.cc	Sun May 31 22:32:06 2026
*************** static bool
*** 209,215 ****
  find_matching_predicate_in_rest_chains (const pred_info &pred,
  					const pred_chain_union &preds)
  {
!   /* Trival case.  */
    if (preds.length () == 1)
      return true;
  
--- 209,215 ----
  find_matching_predicate_in_rest_chains (const pred_info &pred,
  					const pred_chain_union &preds)
  {
!   /* Trivial case.  */
    if (preds.length () == 1)
      return true;
  
*************** find_matching_predicate_in_rest_chains (
*** 243,249 ****
     is no predicate of the "FLAG_VAR CMP CONST" form, try to find one
     of that's the form "FLAG_VAR CMP FLAG_VAR" with value range info.
     PHI is the phi node whose incoming (interesting) paths need to be
!    examined.  On success, return the comparison code, set defintion
     gimple of FLAG_DEF and BOUNDARY_CST.  Otherwise return ERROR_MARK.
     I is the running iterator so the function can be called repeatedly
     to gather all candidates.  */
--- 243,249 ----
     is no predicate of the "FLAG_VAR CMP CONST" form, try to find one
     of that's the form "FLAG_VAR CMP FLAG_VAR" with value range info.
     PHI is the phi node whose incoming (interesting) paths need to be
!    examined.  On success, return the comparison code, set definition
     gimple of FLAG_DEF and BOUNDARY_CST.  Otherwise return ERROR_MARK.
     I is the running iterator so the function can be called repeatedly
     to gather all candidates.  */
*************** uninit_analysis::func_t::phi_arg_set (gp
*** 550,556 ****
  }
  
  /* Determine if the predicate set of the use does not overlap with that
!    of the interesting paths.  The most common senario of guarded use is
     in Example 1:
       Example 1:
  	   if (some_cond)
--- 550,556 ----
  }
  
  /* Determine if the predicate set of the use does not overlap with that
!    of the interesting paths.  The most common scenario of guarded use is
     in Example 1:
       Example 1:
  	   if (some_cond)
*************** predicate::dump (FILE *f, gimple *stmt,
*** 1980,1986 ****
  }
  
  /* Initialize USE_PREDS with the predicates of the control dependence chains
!    between the basic block DEF_BB that defines a variable of interst and
     USE_BB that uses the variable, respectively.  */
  
  bool
--- 1980,1986 ----
  }
  
  /* Initialize USE_PREDS with the predicates of the control dependence chains
!    between the basic block DEF_BB that defines a variable of interest and
     USE_BB that uses the variable, respectively.  */
  
  bool
diff -Nrcpad gcc-17-20260524/gcc/gimple-predicate-analysis.h gcc-17-20260531/gcc/gimple-predicate-analysis.h
*** gcc-17-20260524/gcc/gimple-predicate-analysis.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-predicate-analysis.h	Sun May 31 22:32:06 2026
*************** class uninit_analysis
*** 125,131 ****
  
      /* Return a bitset of PHI arguments of interest.  By default returns
         bitset with a bit set for each argument.  Should be called in
!        the overriden function first and, if nonzero, the result then
         refined as appropriate.  */
      virtual phi_arg_set_t phi_arg_set (gphi *);
  
--- 125,131 ----
  
      /* Return a bitset of PHI arguments of interest.  By default returns
         bitset with a bit set for each argument.  Should be called in
!        the overridden function first and, if nonzero, the result then
         refined as appropriate.  */
      virtual phi_arg_set_t phi_arg_set (gphi *);
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-cache.cc gcc-17-20260531/gcc/gimple-range-cache.cc
*** gcc-17-20260524/gcc/gimple-range-cache.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-cache.cc	Sun May 31 22:32:06 2026
*************** sbr_vector::bb_range_p (const_basic_bloc
*** 185,191 ****
    return false;
  }
  
! // Like an sbr_vector, except it uses a bitmap to manage whetehr  vale is set
  // or not rather than cleared memory.
  
  class sbr_lazy_vector : public sbr_vector
--- 185,191 ----
    return false;
  }
  
! // Like an sbr_vector, except it uses a bitmap to manage whether value is set
  // or not rather than cleared memory.
  
  class sbr_lazy_vector : public sbr_vector
*************** block_range_cache::set_bb_range (tree na
*** 404,410 ****
  	}
        else if (last_basic_block_for_fn (cfun) < param_vrp_vector_threshold)
  	{
! 	  // For small CFGs use the basic vector implemntation.
  	  void *r = m_range_allocator->alloc (sizeof (sbr_vector));
  	  m_ssa_ranges[v] = new (r) sbr_vector (TREE_TYPE (name),
  						m_range_allocator);
--- 404,410 ----
  	}
        else if (last_basic_block_for_fn (cfun) < param_vrp_vector_threshold)
  	{
! 	  // For small CFGs use the basic vector implementation.
  	  void *r = m_range_allocator->alloc (sizeof (sbr_vector));
  	  m_ssa_ranges[v] = new (r) sbr_vector (TREE_TYPE (name),
  						m_range_allocator);
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-fold.cc gcc-17-20260531/gcc/gimple-range-fold.cc
*** gcc-17-20260524/gcc/gimple-range-fold.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-fold.cc	Sun May 31 22:32:06 2026
*************** fold_using_range::fold_stmt (vrange &r,
*** 684,695 ****
    else if (is_a<gassign *> (s) && gimple_assign_rhs_code (s) == COND_EXPR)
      res = range_of_cond_expr (r, as_a<gassign *> (s), src);
  
!   // If the result is varying, check for basic nonnegativeness.
!   // Specifically this helps for now with strict enum in cases like
!   // g++.dg/warn/pr33738.C.
!   if (res && r.varying_p () && INTEGRAL_TYPE_P (r.type ())
!       && gimple_stmt_nonnegative_p (s))
!     r.set_nonnegative (r.type ());
  
    if (!res)
      {
--- 684,705 ----
    else if (is_a<gassign *> (s) && gimple_assign_rhs_code (s) == COND_EXPR)
      res = range_of_cond_expr (r, as_a<gassign *> (s), src);
  
!   // If the result is varying, use the type's min/max if either is not
!   // the same as the full precision min/max. This helps with strict enum
!   // e.g. `g++.dg/warn/pr33738.C`.
!   if (res && r.varying_p () && INTEGRAL_TYPE_P (r.type ()))
!     {
!       irange &ir = as_a <irange> (r);
!       tree type = r.type ();
!       auto typemax = wi::to_wide (TYPE_MAX_VALUE (type));
!       auto typemin = wi::to_wide (TYPE_MIN_VALUE (type));
!       auto precisionmax = wi::max_value (TYPE_PRECISION (type),
! 					 TYPE_SIGN (type));
!       auto precisionmin = wi::min_value (TYPE_PRECISION (type),
! 					 TYPE_SIGN (type));
!       if (typemax != precisionmax || typemin != precisionmin)
! 	ir.set (type, typemin, typemax);
!     }
  
    if (!res)
      {
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-gori.cc gcc-17-20260531/gcc/gimple-range-gori.cc
*** gcc-17-20260524/gcc/gimple-range-gori.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-gori.cc	Sun May 31 22:32:06 2026
*************** gori_compute::compute_operand_range (vra
*** 657,663 ****
    tree op1 = gimple_range_ssa_p (handler.operand1 ());
    tree op2 = gimple_range_ssa_p (handler.operand2 ());
  
!   // If there is a relation betwen op1 and op2, use it instead as it is
    // likely to be more applicable.
    if (op1 && op2)
      {
--- 657,663 ----
    tree op1 = gimple_range_ssa_p (handler.operand1 ());
    tree op2 = gimple_range_ssa_p (handler.operand2 ());
  
!   // If there is a relation between op1 and op2, use it instead as it is
    // likely to be more applicable.
    if (op1 && op2)
      {
*************** gori_stmt_info::gori_stmt_info (vrange &
*** 1596,1602 ****
        src.get_operand (op1_range, op1);
      }
  
!   // And satisfy the second operand for single op satements.
    if (op2)
      {
        op2_range.set_range_class (TREE_TYPE (op2));
--- 1596,1602 ----
        src.get_operand (op1_range, op1);
      }
  
!   // And satisfy the second operand for single op statements.
    if (op2)
      {
        op2_range.set_range_class (TREE_TYPE (op2));
*************** gori_calc_operands (vrange &lhs, gimple
*** 1632,1638 ****
  	{
  	  r.set_range (si.ssa1, si.op1_range);
  	  gimple *src = SSA_NAME_DEF_STMT (si.ssa1);
! 	  // If defintion is in the same basic lock, evaluate it.
  	  if (src && gimple_bb (src) == gimple_bb (stmt))
  	    gori_calc_operands (si.op1_range, src, r, q);
  	}
--- 1632,1638 ----
  	{
  	  r.set_range (si.ssa1, si.op1_range);
  	  gimple *src = SSA_NAME_DEF_STMT (si.ssa1);
! 	  // If definition is in the same basic block, evaluate it.
  	  if (src && gimple_bb (src) == gimple_bb (stmt))
  	    gori_calc_operands (si.op1_range, src, r, q);
  	}
*************** gori_calc_operands (vrange &lhs, gimple
*** 1654,1660 ****
  }
  
  // Use ssa_cache R as a repository for all outgoing ranges on edge E that
! // can be calculated.  Use Q to establish starting edge ranges anbd to resolve
  // operand values.  If Q is NULL use the current range
  // query available to the system.
  
--- 1654,1660 ----
  }
  
  // Use ssa_cache R as a repository for all outgoing ranges on edge E that
! // can be calculated.  Use Q to establish starting edge ranges and to resolve
  // operand values.  If Q is NULL use the current range
  // query available to the system.
  
*************** gori_on_edge (ssa_cache &r, edge e, rang
*** 1676,1682 ****
  
  // Helper for GORI_NAME_ON_EDGE which uses query Q to determine if STMT
  // provides a range for NAME, and returns it in R if so. If it does not,
! // continue processing feeding statments until we run out of statements
  // or fine a range for NAME.
  
  bool
--- 1676,1682 ----
  
  // Helper for GORI_NAME_ON_EDGE which uses query Q to determine if STMT
  // provides a range for NAME, and returns it in R if so. If it does not,
! // continue processing feeding statements until we run out of statements
  // or fine a range for NAME.
  
  bool
*************** gori_name_helper (vrange &r, tree name,
*** 1701,1707 ****
        if (si.calc_op1 (tmp, lhs, si.op2_range))
  	si.op1_range.intersect (tmp);
        gimple *src = SSA_NAME_DEF_STMT (si.ssa1);
!       // If defintion is in the same basic lock, evaluate it.
        if (src && gimple_bb (src) == gimple_bb (stmt))
  	if (gori_name_helper (r, name, si.op1_range, src, q))
  	  return true;
--- 1701,1707 ----
        if (si.calc_op1 (tmp, lhs, si.op2_range))
  	si.op1_range.intersect (tmp);
        gimple *src = SSA_NAME_DEF_STMT (si.ssa1);
!       // If definition is in the same basic block, evaluate it.
        if (src && gimple_bb (src) == gimple_bb (stmt))
  	if (gori_name_helper (r, name, si.op1_range, src, q))
  	  return true;
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-infer.h gcc-17-20260531/gcc/gimple-range-infer.h
*** gcc-17-20260524/gcc/gimple-range-infer.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-infer.h	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 38,44 ****
  //      read-only query and prevents any additional lookup.
  //   USE_RANGEOPS is a boolean flag which defaults to false.  if TRUE,
  //      range-ops is invoked to see if any additional side effects are seen
! //      based on the stmt.  ie .x = y * 2 will reigster a side effect for Y
  //      which is [-INF/2 , +INF/2].  It is not on by default because it
  //      is a relatively expensive operation to do on every statement, and
  //      ranger will already incorporate that range for Y via GORI most of the
--- 38,44 ----
  //      read-only query and prevents any additional lookup.
  //   USE_RANGEOPS is a boolean flag which defaults to false.  if TRUE,
  //      range-ops is invoked to see if any additional side effects are seen
! //      based on the stmt.  ie .x = y * 2 will register a side effect for Y
  //      which is [-INF/2 , +INF/2].  It is not on by default because it
  //      is a relatively expensive operation to do on every statement, and
  //      ranger will already incorporate that range for Y via GORI most of the
*************** private:
*** 78,84 ****
    friend class non_null_wrapper;
  };
  
! // This is the basic infer oracle API.  Default functionaility does nothing.
  
  class infer_range_oracle
  {
--- 78,84 ----
    friend class non_null_wrapper;
  };
  
! // This is the basic infer oracle API.  Default functionality does nothing.
  
  class infer_range_oracle
  {
*************** public:
*** 101,107 ****
  // will want to use. Ranger invokes it with the cache's internal query which
  // can provide better ranges during a DOM walk.
  //
! // add_ranges is used to add inferred range IR assocaited with stmt S.
  // has_range_p is used to check if NAME has an inferred range in block BB.
  // maybe_adjust_range will adjust the range R to incorporate any inferred
  //   range NAME may have in block BB.  If there are on inferred ranges in
--- 101,107 ----
  // will want to use. Ranger invokes it with the cache's internal query which
  // can provide better ranges during a DOM walk.
  //
! // add_ranges is used to add inferred range IR associated with stmt S.
  // has_range_p is used to check if NAME has an inferred range in block BB.
  // maybe_adjust_range will adjust the range R to incorporate any inferred
  //   range NAME may have in block BB.  If there are on inferred ranges in
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-phi.cc gcc-17-20260531/gcc/gimple-range-phi.cc
*** gcc-17-20260524/gcc/gimple-range-phi.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-phi.cc	Sun May 31 22:32:06 2026
*************** phi_group::phi_group (const phi_group &g
*** 64,70 ****
  phi_group::phi_group (bitmap bm, irange &init_range, gimple *mod,
  		      range_query *q)
  {
!   // we dont expect a modifer and no inital value, so trap to have a look.
    // perhaps they are dead cycles and we can just used UNDEFINED.
    gcc_checking_assert (!init_range.undefined_p ());
    gcc_checking_assert (!init_range.varying_p ());
--- 64,70 ----
  phi_group::phi_group (bitmap bm, irange &init_range, gimple *mod,
  		      range_query *q)
  {
!   // We don't expect a modifier and no initial value, so trap to have a look.
    // perhaps they are dead cycles and we can just used UNDEFINED.
    gcc_checking_assert (!init_range.undefined_p ());
    gcc_checking_assert (!init_range.varying_p ());
*************** phi_group::calculate_using_modifier (ran
*** 132,138 ****
      return true;
  
    // Examine modifier and run iteration evaluations  to see if it convergences.
!   // The constructor initilaized m_vr to the initial value already.
    int_range_max nv;
    int_range_max iter_value = m_vr;
    int_range_max iter_reach;
--- 132,138 ----
      return true;
  
    // Examine modifier and run iteration evaluations  to see if it convergences.
!   // The constructor initialized m_vr to the initial value already.
    int_range_max nv;
    int_range_max iter_value = m_vr;
    int_range_max iter_reach;
*************** phi_analyzer::operator[] (tree name)
*** 352,358 ****
  }
  
  // Process phi node PHI to see if it is part of a group.  Use QUERY
! // to deteremine ranges.
  
  void
  phi_analyzer::process_phi (gphi *phi, range_query &query)
--- 352,358 ----
  }
  
  // Process phi node PHI to see if it is part of a group.  Use QUERY
! // to determine ranges.
  
  void
  phi_analyzer::process_phi (gphi *phi, range_query &query)
diff -Nrcpad gcc-17-20260524/gcc/gimple-range-phi.h gcc-17-20260531/gcc/gimple-range-phi.h
*** gcc-17-20260524/gcc/gimple-range-phi.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range-phi.h	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 24,30 ****
  // -------------------------------------------------------------------------
  
  // A PHI_GROUP consists of a set of SSA_NAMES which are all PHI_DEFS, and
! // their arguemnts contain nothing but other PHI defintions, with at most
  // 2 exceptions:
  //  1 - An initial value.  This is either a constant, or another non-phi name
  //      with a single incoming edge to the cycle group
--- 24,30 ----
  // -------------------------------------------------------------------------
  
  // A PHI_GROUP consists of a set of SSA_NAMES which are all PHI_DEFS, and
! // their arguments contain nothing but other PHI definitions, with at most
  // 2 exceptions:
  //  1 - An initial value.  This is either a constant, or another non-phi name
  //      with a single incoming edge to the cycle group
*************** along with GCC; see the file COPYING3.
*** 33,39 ****
  //  to determine the other bound.
  //  All members of the PHI cycle will be given the same range.
  //
! // For example, given the follwoing sequences:
  // qa_20 = qa_10 + 1;
  // qa_9 = PHI <qa_10(3), qa_20(4)>
  // qa_10 = PHI <0(2), qa_9(5)>
--- 33,39 ----
  //  to determine the other bound.
  //  All members of the PHI cycle will be given the same range.
  //
! // For example, given the following sequences:
  // qa_20 = qa_10 + 1;
  // qa_9 = PHI <qa_10(3), qa_20(4)>
  // qa_10 = PHI <0(2), qa_9(5)>
*************** protected:
*** 68,75 ****
    friend class phi_analyzer;
  };
  
! // The phi anlyzer will return the group that name belongs to.
! // If inforamtion is not known about a name yet, analysis is conducted by
  // looking at the arguments to PHIS and following them to their defs to
  // determine whether the conditions are met to form a new group.
  
--- 68,75 ----
    friend class phi_analyzer;
  };
  
! // The phi analyzer will return the group that name belongs to.
! // If information is not known about a name yet, analysis is conducted by
  // looking at the arguments to PHIS and following them to their defs to
  // determine whether the conditions are met to form a new group.
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-range.cc gcc-17-20260531/gcc/gimple-range.cc
*** gcc-17-20260524/gcc/gimple-range.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-range.cc	Sun May 31 22:32:06 2026
*************** dom_ranger::range_of_stmt (vrange &r, gi
*** 893,899 ****
  // Preprocess block BB.  If there is a single predecessor, start with any
  // contextual ranges on the incoming edge, otherwise the initial list
  // of ranges i empty for this block.  Then Merge in any contextual ranges
! // from the dominator block.  Tihs will become the contextual ranges
  // that apply to this block.
  
  void
--- 893,899 ----
  // Preprocess block BB.  If there is a single predecessor, start with any
  // contextual ranges on the incoming edge, otherwise the initial list
  // of ranges i empty for this block.  Then Merge in any contextual ranges
! // from the dominator block.  This will become the contextual ranges
  // that apply to this block.
  
  void
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-isolate-paths.cc gcc-17-20260531/gcc/gimple-ssa-isolate-paths.cc
*** gcc-17-20260524/gcc/gimple-ssa-isolate-paths.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-isolate-paths.cc	Sun May 31 22:32:06 2026
*************** is_addr_local (gimple *return_stmt, tree
*** 595,601 ****
     and argument ARG and PHI edge E in basic block BB.  Add an entry for
     each use to LOCMAP, setting its NARGS member to the NARGS argument
     (the number of PHI operands) plus the number of arguments in binary
!    expressions refereced by ARG.  Call isolate_path for each returned
     address and set *ISOLATED to true if called.
     Return either DUPLICATE or the most recent result of isolate_path.  */
  
--- 595,601 ----
     and argument ARG and PHI edge E in basic block BB.  Add an entry for
     each use to LOCMAP, setting its NARGS member to the NARGS argument
     (the number of PHI operands) plus the number of arguments in binary
!    expressions referenced by ARG.  Call isolate_path for each returned
     address and set *ISOLATED to true if called.
     Return either DUPLICATE or the most recent result of isolate_path.  */
  
*************** warn_return_addr_local (basic_block bb,
*** 859,865 ****
  
    /* Bail if the statement isn't certain to return the address
       of a local (e.g., if it involves a conditional expression
!      that wasn't trasnformed into a PHI or if it involves
       a MAX_EXPR or MIN_EXPR only one of whose operands is a local
       (even though such an expression isn't valid in C or has
       defined semantics in C++).  */
--- 859,865 ----
  
    /* Bail if the statement isn't certain to return the address
       of a local (e.g., if it involves a conditional expression
!      that wasn't transformed into a PHI or if it involves
       a MAX_EXPR or MIN_EXPR only one of whose operands is a local
       (even though such an expression isn't valid in C or has
       defined semantics in C++).  */
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-pta-constraints.cc gcc-17-20260531/gcc/gimple-ssa-pta-constraints.cc
*** gcc-17-20260524/gcc/gimple-ssa-pta-constraints.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-pta-constraints.cc	Sun May 31 22:32:06 2026
*************** get_constraint_for_ssa_var (tree t, vec<
*** 287,293 ****
    cexpr.offset = 0;
  
    /* If we are not taking the address of the constraint expr, add all
!      sub-fiels of the variable as well.  */
    if (!address_p
        && !vi->is_full_var)
      {
--- 287,293 ----
    cexpr.offset = 0;
  
    /* If we are not taking the address of the constraint expr, add all
!      sub-fields of the variable as well.  */
    if (!address_p
        && !vi->is_full_var)
      {
*************** find_func_clobbers (struct function *fn,
*** 2500,2506 ****
  	}
      }
  
!   /* Account for uses in assigments and returns.  */
    if (gimple_assign_single_p (t)
        || (gimple_code (t) == GIMPLE_RETURN
  	  && gimple_return_retval (as_a <greturn *> (t)) != NULL_TREE))
--- 2500,2506 ----
  	}
      }
  
!   /* Account for uses in assignments and returns.  */
    if (gimple_assign_single_p (t)
        || (gimple_code (t) == GIMPLE_RETURN
  	  && gimple_return_retval (as_a <greturn *> (t)) != NULL_TREE))
*************** static unsigned int
*** 3487,3493 ****
  create_variable_info_for (tree decl, const char *name, bool add_id)
  {
    /* First see if we are dealing with an ifunc resolver call and
!      assiociate that with a call to the resolver function result.  */
    cgraph_node *node;
    if (in_ipa_mode
        && TREE_CODE (decl) == FUNCTION_DECL
--- 3487,3493 ----
  create_variable_info_for (tree decl, const char *name, bool add_id)
  {
    /* First see if we are dealing with an ifunc resolver call and
!      associate that with a call to the resolver function result.  */
    cgraph_node *node;
    if (in_ipa_mode
        && TREE_CODE (decl) == FUNCTION_DECL
*************** associate_varinfo_to_alias (struct cgrap
*** 3856,3862 ****
    return false;
  }
  
! /* Compute whether node is refered to non-locally.  Worker for
     cgraph_for_symbol_thunks_and_aliases.  */
  static bool
  refered_from_nonlocal_fn (struct cgraph_node *node, void *data)
--- 3856,3862 ----
    return false;
  }
  
! /* Compute whether node is referred to non-locally.  Worker for
     cgraph_for_symbol_thunks_and_aliases.  */
  static bool
  refered_from_nonlocal_fn (struct cgraph_node *node, void *data)
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-sccopy.cc gcc-17-20260531/gcc/gimple-ssa-sccopy.cc
*** gcc-17-20260524/gcc/gimple-ssa-sccopy.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-sccopy.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 70,80 ****
     and replace references to the statement with the value -- we propagate the
     copy.
  
!    _3 = _2; // Replace all occurences of _3 by _2
  
     _8 = PHI <_9, _10>;
     _9 = PHI <_8, _10>;
!    _10 = PHI <_8, _9, _1>; // Replace all occurences of _8, _9 and _10 by _1
  
     To find all three types of copy statements we use an algorithm based on
     strongly-connected components (SCCs) in dataflow graph.  The algorithm was
--- 70,80 ----
     and replace references to the statement with the value -- we propagate the
     copy.
  
!    _3 = _2; // Replace all occurrences of _3 by _2
  
     _8 = PHI <_9, _10>;
     _9 = PHI <_8, _10>;
!    _10 = PHI <_8, _9, _1>; // Replace all occurrences of _8, _9 and _10 by _1
  
     To find all three types of copy statements we use an algorithm based on
     strongly-connected components (SCCs) in dataflow graph.  The algorithm was
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-split-paths.cc gcc-17-20260531/gcc/gimple-ssa-split-paths.cc
*** gcc-17-20260524/gcc/gimple-ssa-split-paths.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-split-paths.cc	Sun May 31 22:32:06 2026
*************** count_stmts_in_block (basic_block bb)
*** 130,136 ****
  }
  
  /* Return TRUE if CODE represents a tree code that is not likely to
!    be easily if-convertable because it likely expands into multiple
     insns, FALSE otherwise.  */
  static bool
  poor_ifcvt_candidate_code (enum tree_code code)
--- 130,136 ----
  }
  
  /* Return TRUE if CODE represents a tree code that is not likely to
!    be easily if-convertible because it likely expands into multiple
     insns, FALSE otherwise.  */
  static bool
  poor_ifcvt_candidate_code (enum tree_code code)
*************** poor_ifcvt_pred (basic_block pred, basic
*** 191,197 ****
       jump rather than CSE/DCE opportunities.  So favor duplicating
       small latches.  A latch with just a conditional branch is ideal.
  
!      CSE/DCE opportunties crop up when statements from the predecessors
       feed statements in the latch and allow statements in the latch to
       simplify.  */
  
--- 191,197 ----
       jump rather than CSE/DCE opportunities.  So favor duplicating
       small latches.  A latch with just a conditional branch is ideal.
  
!      CSE/DCE opportunities crop up when statements from the predecessors
       feed statements in the latch and allow statements in the latch to
       simplify.  */
  
*************** is_feasible_trace (basic_block bb)
*** 213,219 ****
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Duplicating block %d would duplicate "
! 		 "too many statments: %d >= %d\n",
  		 bb->index, num_stmts_in_join,
  		 param_max_jump_thread_duplication_stmts);
        return false;
--- 213,219 ----
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Duplicating block %d would duplicate "
! 		 "too many statements: %d >= %d\n",
  		 bb->index, num_stmts_in_join,
  		 param_max_jump_thread_duplication_stmts);
        return false;
*************** is_feasible_trace (basic_block bb)
*** 241,247 ****
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    fprintf (dump_file,
  		     "Block %d appears to be a join point for "
! 		     "if-convertable bbs.\n",
  		     bb->index);
  	  return false;
  	}
--- 241,247 ----
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    fprintf (dump_file,
  		     "Block %d appears to be a join point for "
! 		     "if-convertible bbs.\n",
  		     bb->index);
  	  return false;
  	}
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-sprintf.cc gcc-17-20260531/gcc/gimple-ssa-sprintf.cc
*** gcc-17-20260524/gcc/gimple-ssa-sprintf.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-sprintf.cc	Sun May 31 22:32:06 2026
*************** get_int_range (tree arg, gimple *stmt,
*** 1128,1134 ****
  	    *pmin = *pmax = -*pmin;
  	  else
  	    {
! 	      /* Make sure signed overlow is avoided.  */
  	      gcc_assert (*pmin != HOST_WIDE_INT_MIN);
  
  	      HOST_WIDE_INT tmp = -*pmin;
--- 1128,1134 ----
  	    *pmin = *pmax = -*pmin;
  	  else
  	    {
! 	      /* Make sure signed overflow is avoided.  */
  	      gcc_assert (*pmin != HOST_WIDE_INT_MIN);
  
  	      HOST_WIDE_INT tmp = -*pmin;
*************** handle_printf_call (gimple_stmt_iterator
*** 4401,4407 ****
    /* Object size argument number (snprintf_chk and vsnprintf_chk).  */
    unsigned idx_objsize = UINT_MAX;
  
!   /* Destinaton argument number (valid for sprintf functions only).  */
    unsigned idx_dstptr = 0;
  
    switch (info.fncode)
--- 4401,4407 ----
    /* Object size argument number (snprintf_chk and vsnprintf_chk).  */
    unsigned idx_objsize = UINT_MAX;
  
!   /* Destination argument number (valid for sprintf functions only).  */
    unsigned idx_dstptr = 0;
  
    switch (info.fncode)
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-store-merging.cc gcc-17-20260531/gcc/gimple-ssa-store-merging.cc
*** gcc-17-20260524/gcc/gimple-ssa-store-merging.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-store-merging.cc	Sun May 31 22:32:06 2026
***************
*** 22,28 ****
     of constant values, values loaded from memory, bitwise operations on those,
     or bit-field values, to consecutive locations, into fewer wider stores.
  
!    For example, if we have a sequence peforming four byte stores to
     consecutive memory locations:
     [p     ] := imm1;
     [p + 1B] := imm2;
--- 22,28 ----
     of constant values, values loaded from memory, bitwise operations on those,
     or bit-field values, to consecutive locations, into fewer wider stores.
  
!    For example, if we have a sequence performing four byte stores to
     consecutive memory locations:
     [p     ] := imm1;
     [p + 1B] := imm2;
*************** get_location_for_stmts (vec<gimple *> &s
*** 3624,3630 ****
    return UNKNOWN_LOCATION;
  }
  
! /* Used to decribe a store resulting from splitting a wide store in smaller
     regularly-sized stores in split_group.  */
  
  class split_store
--- 3624,3630 ----
    return UNKNOWN_LOCATION;
  }
  
! /* Used to describe a store resulting from splitting a wide store in smaller
     regularly-sized stores in split_group.  */
  
  class split_store
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-strength-reduction.cc gcc-17-20260531/gcc/gimple-ssa-strength-reduction.cc
*** gcc-17-20260524/gcc/gimple-ssa-strength-reduction.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-strength-reduction.cc	Sun May 31 22:32:06 2026
*************** static hash_map<tree, name_expansion *>
*** 453,459 ****
  /* Pointer map embodying a mapping from bases to alternative bases.  */
  static hash_map<tree, tree> *alt_base_map;
  
! /* Given BASE, use the tree affine combiniation facilities to
     find the underlying tree expression for BASE, with any
     immediate offset excluded.
  
--- 453,459 ----
  /* Pointer map embodying a mapping from bases to alternative bases.  */
  static hash_map<tree, tree> *alt_base_map;
  
! /* Given BASE, use the tree affine combination facilities to
     find the underlying tree expression for BASE, with any
     immediate offset excluded.
  
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-warn-access.cc gcc-17-20260531/gcc/gimple-ssa-warn-access.cc
*** gcc-17-20260524/gcc/gimple-ssa-warn-access.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-warn-access.cc	Sun May 31 22:32:06 2026
*************** call_arg (tree expr, unsigned argno)
*** 133,139 ****
     with an argument that is a character array with no terminating
     NUL.  SIZE is the EXACT size of the array, and BNDRNG the number
     of characters in which the NUL is expected.  Either EXPR or FNAME
!    may be null but noth both.  SIZE may be null when BNDRNG is null.  */
  
  template <class GimpleOrTree>
  static void
--- 133,139 ----
     with an argument that is a character array with no terminating
     NUL.  SIZE is the EXACT size of the array, and BNDRNG the number
     of characters in which the NUL is expected.  Either EXPR or FNAME
!    may be null but not both.  SIZE may be null when BNDRNG is null.  */
  
  template <class GimpleOrTree>
  static void
diff -Nrcpad gcc-17-20260524/gcc/gimple-ssa-warn-restrict.cc gcc-17-20260531/gcc/gimple-ssa-warn-restrict.cc
*** gcc-17-20260524/gcc/gimple-ssa-warn-restrict.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple-ssa-warn-restrict.cc	Sun May 31 22:32:06 2026
*************** builtin_memref::offset_out_of_bounds (in
*** 696,702 ****
  }
  
  /* Create an association between the memory references DST and SRC
!    for access by a call EXPR to a memory or string built-in funtion.  */
  
  builtin_access::builtin_access (pointer_query &ptrqry, gimple *call,
  				builtin_memref &dst,
--- 696,702 ----
  }
  
  /* Create an association between the memory references DST and SRC
!    for access by a call EXPR to a memory or string built-in function.  */
  
  builtin_access::builtin_access (pointer_query &ptrqry, gimple *call,
  				builtin_memref &dst,
*************** builtin_access::overlap_size (const offs
*** 977,983 ****
    return q[1] - p[0];
  }
  
! /* Return true if the bounded mempry (memcpy amd similar) or string function
     access (strncpy and similar) ACS overlaps.  */
  
  bool
--- 977,983 ----
    return q[1] - p[0];
  }
  
! /* Return true if the bounded memory (memcpy amd similar) or string function
     access (strncpy and similar) ACS overlaps.  */
  
  bool
*************** maybe_diag_access_bounds (gimple *call,
*** 1817,1823 ****
    else if (oobref == ref.base)
      {
        /* True when the offset formed by an access to the reference
! 	 is out of bounds, rather than the initial offset wich is
  	 in bounds.  This implies access past the end.  */
        bool form = ooboff[0] != ref.offrange[0];
  
--- 1817,1823 ----
    else if (oobref == ref.base)
      {
        /* True when the offset formed by an access to the reference
! 	 is out of bounds, rather than the initial offset which is
  	 in bounds.  This implies access past the end.  */
        bool form = ooboff[0] != ref.offrange[0];
  
diff -Nrcpad gcc-17-20260524/gcc/gimple.def gcc-17-20260531/gcc/gimple.def
*** gcc-17-20260524/gcc/gimple.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple.def	Sun May 31 22:32:06 2026
*************** DEFGSCODE(GIMPLE_PHI, "gimple_phi", GSS_
*** 192,198 ****
     EVAL is the sequence of statements to execute on entry to GIMPLE_TRY.
  
     CLEANUP is the sequence of statements to execute according to
!    TRY_KIND.  If TRY_KIND is GIMPLE_TRY_CATCH, CLEANUP is only exected
     if an exception is thrown during execution of EVAL.  If TRY_KIND is
     GIMPLE_TRY_FINALLY, CLEANUP is always executed after executing EVAL
     (regardless of whether EVAL finished normally, or jumped out or an
--- 192,198 ----
     EVAL is the sequence of statements to execute on entry to GIMPLE_TRY.
  
     CLEANUP is the sequence of statements to execute according to
!    TRY_KIND.  If TRY_KIND is GIMPLE_TRY_CATCH, CLEANUP is only executed
     if an exception is thrown during execution of EVAL.  If TRY_KIND is
     GIMPLE_TRY_FINALLY, CLEANUP is always executed after executing EVAL
     (regardless of whether EVAL finished normally, or jumped out or an
diff -Nrcpad gcc-17-20260524/gcc/gimple.h gcc-17-20260531/gcc/gimple.h
*** gcc-17-20260524/gcc/gimple.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimple.h	Sun May 31 22:32:06 2026
*************** gimple_goto_dest (const gimple *gs)
*** 4009,4015 ****
  }
  
  
! /* Set DEST to be the destination of the unconditonal jump GS.  */
  
  inline void
  gimple_goto_set_dest (ggoto *gs, tree dest)
--- 4009,4015 ----
  }
  
  
! /* Set DEST to be the destination of the unconditional jump GS.  */
  
  inline void
  gimple_goto_set_dest (ggoto *gs, tree dest)
diff -Nrcpad gcc-17-20260524/gcc/gimplify.cc gcc-17-20260531/gcc/gimplify.cc
*** gcc-17-20260524/gcc/gimplify.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/gimplify.cc	Sun May 31 22:32:06 2026
*************** gimplify_decl_expr (tree *stmt_p, gimple
*** 2061,2067 ****
  	    walk_tree (&init, force_labels_r, NULL, NULL);
  	}
        /* When there is no explicit initializer, if the user requested,
! 	 We should insert an artifical initializer for this automatic
  	 variable.  */
        else if (var_needs_auto_init_p (decl)
  	       && !decl_had_value_expr_p)
--- 2061,2067 ----
  	    walk_tree (&init, force_labels_r, NULL, NULL);
  	}
        /* When there is no explicit initializer, if the user requested,
! 	 We should insert an artificial initializer for this automatic
  	 variable.  */
        else if (var_needs_auto_init_p (decl)
  	       && !decl_had_value_expr_p)
*************** gimplify_modify_expr (tree *expr_p, gimp
*** 7323,7329 ****
  	return ret;
      }
  
!   /* In case of va_arg internal fn wrappped in a WITH_SIZE_EXPR, add the type
       size as argument to the call.  */
    if (TREE_CODE (*from_p) == WITH_SIZE_EXPR)
      {
--- 7323,7329 ----
  	return ret;
      }
  
!   /* In case of va_arg internal fn wrapped in a WITH_SIZE_EXPR, add the type
       size as argument to the call.  */
    if (TREE_CODE (*from_p) == WITH_SIZE_EXPR)
      {
*************** oacc_default_clause (struct gimplify_omp
*** 9041,9047 ****
  
    /* For Fortran COMMON blocks, only used variables in those blocks are
       transferred and remapped.  The block itself will have a private clause to
!      avoid transfering the data twice.
       The hook evaluates to false by default.  For a variable in Fortran's COMMON
       or EQUIVALENCE block, returns 'true' (as we have shared=false) - as only
       the variables in such a COMMON/EQUIVALENCE block shall be privatized not
--- 9041,9047 ----
  
    /* For Fortran COMMON blocks, only used variables in those blocks are
       transferred and remapped.  The block itself will have a private clause to
!      avoid transferring the data twice.
       The hook evaluates to false by default.  For a variable in Fortran's COMMON
       or EQUIVALENCE block, returns 'true' (as we have shared=false) - as only
       the variables in such a COMMON/EQUIVALENCE block shall be privatized not
*************** omp_notice_variable (struct gimplify_omp
*** 9161,9167 ****
        if (DECL_HAS_VALUE_EXPR_P (decl))
  	{
  	  if (ctx->region_type & ORT_ACC)
! 	    /* For OpenACC, defer expansion of value to avoid transfering
  	       privatized common block data instead of im-/explicitly
  	       transferred variables which are in common blocks.  */
  	    ;
--- 9161,9167 ----
        if (DECL_HAS_VALUE_EXPR_P (decl))
  	{
  	  if (ctx->region_type & ORT_ACC)
! 	    /* For OpenACC, defer expansion of value to avoid transferring
  	       privatized common block data instead of im-/explicitly
  	       transferred variables which are in common blocks.  */
  	    ;
*************** gimplify_scan_omp_clauses (tree *list_p,
*** 14938,14944 ****
  	  decl = OMP_CLAUSE_ALLOCATE_ALLOCATOR (c);
  	  if (decl
  	      && TREE_CODE (decl) == INTEGER_CST
! 	      && wi::eq_p (wi::to_widest (decl), GOMP_OMP_PREDEF_ALLOC_THREADS)
  	      && (code == OMP_TARGET || code == OMP_TASK || code == OMP_TASKLOOP))
  	    warning_at (OMP_CLAUSE_LOCATION (c), OPT_Wopenmp,
  			"allocator with access trait set to %<thread%> "
--- 14938,14944 ----
  	  decl = OMP_CLAUSE_ALLOCATE_ALLOCATOR (c);
  	  if (decl
  	      && TREE_CODE (decl) == INTEGER_CST
! 	      && wi::eq_p (wi::to_widest (decl), GOMP_OMP_PREDEF_ALLOC_THREAD)
  	      && (code == OMP_TARGET || code == OMP_TASK || code == OMP_TASKLOOP))
  	    warning_at (OMP_CLAUSE_LOCATION (c), OPT_Wopenmp,
  			"allocator with access trait set to %<thread%> "
diff -Nrcpad gcc-17-20260524/gcc/graph.cc gcc-17-20260531/gcc/graph.cc
*** gcc-17-20260524/gcc/graph.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/graph.cc	Sun May 31 22:32:06 2026
*************** draw_cfg_nodes (pretty_printer *pp, stru
*** 255,261 ****
      draw_cfg_nodes_no_loops (pp, fun);
  }
  
! /* Draw all edges in the CFG.  Retreating edges are drawin as not
     constraining, this makes the layout of the graph better.  */
  
  static void
--- 255,261 ----
      draw_cfg_nodes_no_loops (pp, fun);
  }
  
! /* Draw all edges in the CFG.  Retreating edges are drawn as not
     constraining, this makes the layout of the graph better.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/graphite-dependences.cc gcc-17-20260531/gcc/graphite-dependences.cc
*** gcc-17-20260524/gcc/graphite-dependences.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/graphite-dependences.cc	Sun May 31 22:32:06 2026
*************** scop_get_reads_and_writes (scop_p scop,
*** 82,88 ****
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding read to depedence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
--- 82,88 ----
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding read to dependence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
*************** scop_get_reads_and_writes (scop_p scop,
*** 90,96 ****
  	    reads = isl_union_map_union (reads, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Reads depedence graph: ");
  		print_isl_union_map (dump_file, reads);
  	      }
  	  }
--- 90,96 ----
  	    reads = isl_union_map_union (reads, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Reads dependence graph: ");
  		print_isl_union_map (dump_file, reads);
  	      }
  	  }
*************** scop_get_reads_and_writes (scop_p scop,
*** 98,104 ****
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding must write to depedence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
--- 98,104 ----
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding must write to dependence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
*************** scop_get_reads_and_writes (scop_p scop,
*** 106,112 ****
  	    must_writes = isl_union_map_union (must_writes, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Must writes depedence graph: ");
  		print_isl_union_map (dump_file, must_writes);
  	      }
  	  }
--- 106,112 ----
  	    must_writes = isl_union_map_union (must_writes, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Must writes dependence graph: ");
  		print_isl_union_map (dump_file, must_writes);
  	      }
  	  }
*************** scop_get_reads_and_writes (scop_p scop,
*** 114,120 ****
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding may write to depedence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
--- 114,120 ----
  	  {
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "Adding may write to dependence graph: ");
  		print_pdr (dump_file, pdr);
  	      }
  	    isl_union_map *um
*************** scop_get_reads_and_writes (scop_p scop,
*** 122,128 ****
  	    may_writes = isl_union_map_union (may_writes, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "May writes depedence graph: ");
  		print_isl_union_map (dump_file, may_writes);
  	      }
  	  }
--- 122,128 ----
  	    may_writes = isl_union_map_union (may_writes, um);
  	    if (dump_file)
  	      {
! 		fprintf (dump_file, "May writes dependence graph: ");
  		print_isl_union_map (dump_file, may_writes);
  	      }
  	  }
diff -Nrcpad gcc-17-20260524/gcc/graphite-isl-ast-to-gimple.cc gcc-17-20260531/gcc/graphite-isl-ast-to-gimple.cc
*** gcc-17-20260524/gcc/graphite-isl-ast-to-gimple.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/graphite-isl-ast-to-gimple.cc	Sun May 31 22:32:06 2026
*************** void translate_isl_ast_to_gimple::
*** 1147,1153 ****
  graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
  				vec<tree> iv_map)
  {
!   /* Iterator poining to the place where new statement (s) will be inserted.  */
    gimple_stmt_iterator gsi_tgt = gsi_last_bb (new_bb);
  
    for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
--- 1147,1154 ----
  graphite_copy_stmts_from_block (basic_block bb, basic_block new_bb,
  				vec<tree> iv_map)
  {
!   /* Iterator pointing to the place where new statement (s) will be
!      inserted.  */
    gimple_stmt_iterator gsi_tgt = gsi_last_bb (new_bb);
  
    for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
diff -Nrcpad gcc-17-20260524/gcc/haifa-sched.cc gcc-17-20260531/gcc/haifa-sched.cc
*** gcc-17-20260524/gcc/haifa-sched.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/haifa-sched.cc	Sun May 31 22:32:06 2026
*************** model_set_excess_costs (rtx_insn **insns
*** 2545,2551 ****
    if (!param_cycle_accurate_model)
      return;
  
!   /* Use MAX (baseECC, 0) and baseP to calculcate ECC for each
       instruction.  */
    for (i = 0; i < count; i++)
      {
--- 2545,2551 ----
    if (!param_cycle_accurate_model)
      return;
  
!   /* Use MAX (baseECC, 0) and baseP to calculate ECC for each
       instruction.  */
    for (i = 0; i < count; i++)
      {
*************** analyze_set_insn_for_autopref (rtx pat,
*** 5608,5614 ****
  /* Functions to model cache auto-prefetcher.
  
     Some of the CPUs have cache auto-prefetcher, which /seems/ to initiate
!    memory prefetches if it sees instructions with consequitive memory accesses
     in the instruction stream.  Details of such hardware units are not published,
     so we can only guess what exactly is going on there.
     In the scheduler, we model abstract auto-prefetcher.  If there are memory
--- 5608,5614 ----
  /* Functions to model cache auto-prefetcher.
  
     Some of the CPUs have cache auto-prefetcher, which /seems/ to initiate
!    memory prefetches if it sees instructions with consecutive memory accesses
     in the instruction stream.  Details of such hardware units are not published,
     so we can only guess what exactly is going on there.
     In the scheduler, we model abstract auto-prefetcher.  If there are memory
*************** autopref_multipass_dfa_lookahead_guard (
*** 5805,5811 ****
  
        if (ready_index == 0
  	  && data1->status == AUTOPREF_MULTIPASS_DATA_DONT_DELAY)
! 	/* We allow only a single delay on priviledged instructions.
  	   Doing otherwise would cause infinite loop.  */
  	{
  	  if (sched_verbose >= 2)
--- 5805,5811 ----
  
        if (ready_index == 0
  	  && data1->status == AUTOPREF_MULTIPASS_DATA_DONT_DELAY)
! 	/* We allow only a single delay on privileged instructions.
  	   Doing otherwise would cause infinite loop.  */
  	{
  	  if (sched_verbose >= 2)
diff -Nrcpad gcc-17-20260524/gcc/hash-map-traits.h gcc-17-20260531/gcc/hash-map-traits.h
*** gcc-17-20260524/gcc/hash-map-traits.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/hash-map-traits.h	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  #ifndef HASH_MAP_TRAITS_H
  #define HASH_MAP_TRAITS_H
  
! /* Bacause mem-stats.h uses default hashmap traits, we have to
     put the class to this separate header file.  */
  
  #include "hash-traits.h"
--- 20,26 ----
  #ifndef HASH_MAP_TRAITS_H
  #define HASH_MAP_TRAITS_H
  
! /* Because mem-stats.h uses default hashmap traits, we have to
     put the class to this separate header file.  */
  
  #include "hash-traits.h"
diff -Nrcpad gcc-17-20260524/gcc/hosthooks.h gcc-17-20260531/gcc/hosthooks.h
*** gcc-17-20260524/gcc/hosthooks.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/hosthooks.h	Sun May 31 22:32:06 2026
*************** struct host_hooks
*** 30,36 ****
    void * (*gt_pch_get_address) (size_t size, int fd);
  
    /* ADDR is an address returned by gt_pch_get_address.  Attempt to allocate
!      SIZE bytes at the same address (preferrably) or some other address
       and load it with the data from FD at OFFSET.  Return -1 if we couldn't
       allocate memory, otherwise update ADDR to the actual address where it got
       allocated, return 0 if the memory is allocated but the data not loaded,
--- 30,36 ----
    void * (*gt_pch_get_address) (size_t size, int fd);
  
    /* ADDR is an address returned by gt_pch_get_address.  Attempt to allocate
!      SIZE bytes at the same address (preferably) or some other address
       and load it with the data from FD at OFFSET.  Return -1 if we couldn't
       allocate memory, otherwise update ADDR to the actual address where it got
       allocated, return 0 if the memory is allocated but the data not loaded,
diff -Nrcpad gcc-17-20260524/gcc/ifcvt.cc gcc-17-20260531/gcc/ifcvt.cc
*** gcc-17-20260524/gcc/ifcvt.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ifcvt.cc	Sun May 31 22:32:06 2026
*************** noce_try_sign_bit_splat (struct noce_if_
*** 1287,1293 ****
  	    goto fail;
  	}
  
!       /* Since we know the value is currenly -1 or 0, some constants may
  	 be more easily handled by shifting the value again.  A right
  	 logical shift constructs 2^n-1 constants a left shift constructs
  	 ~(2^n-1) constants.  Given some targets don't have efficient
--- 1287,1293 ----
  	    goto fail;
  	}
  
!       /* Since we know the value is currently -1 or 0, some constants may
  	 be more easily handled by shifting the value again.  A right
  	 logical shift constructs 2^n-1 constants a left shift constructs
  	 ~(2^n-1) constants.  Given some targets don't have efficient
*************** noce_try_sign_bit_splat (struct noce_if_
*** 1339,1345 ****
  	    goto fail;
  	}
  
!       /* Since we know the value is currenly -1 or 0, some constants may
  	 be more easily handled by shifting the value again.  A right
  	 logical shift constructs 2^n-1 constants a left shift constructs
  	 ~(2^n-1) constants.  Given some targets don't have efficient
--- 1339,1345 ----
  	    goto fail;
  	}
  
!       /* Since we know the value is currently -1 or 0, some constants may
  	 be more easily handled by shifting the value again.  A right
  	 logical shift constructs 2^n-1 constants a left shift constructs
  	 ~(2^n-1) constants.  Given some targets don't have efficient
diff -Nrcpad gcc-17-20260524/gcc/input.cc gcc-17-20260531/gcc/input.cc
*** gcc-17-20260524/gcc/input.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/input.cc	Sun May 31 22:32:06 2026
*************** line_table_test::line_table_test ()
*** 1276,1282 ****
  }
  
  /* Constructor.  Store the old value of line_table, and create a new
!    one, using the sitation described in CASE_.  */
  
  line_table_test::line_table_test (const line_table_case &case_)
  {
--- 1276,1282 ----
  }
  
  /* Constructor.  Store the old value of line_table, and create a new
!    one, using the situation described in CASE_.  */
  
  line_table_test::line_table_test (const line_table_case &case_)
  {
diff -Nrcpad gcc-17-20260524/gcc/internal-fn.cc gcc-17-20260531/gcc/internal-fn.cc
*** gcc-17-20260524/gcc/internal-fn.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/internal-fn.cc	Sun May 31 22:32:06 2026
*************** static void
*** 1131,1137 ****
  expand_ubsan_result_store (tree lhs, rtx target, scalar_int_mode mode,
  			   rtx res, rtx_code_label *do_error)
  {
!   if (TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
        && TYPE_PRECISION (TREE_TYPE (lhs)) < GET_MODE_PRECISION (mode))
      {
        int uns = TYPE_UNSIGNED (TREE_TYPE (lhs));
--- 1131,1137 ----
  expand_ubsan_result_store (tree lhs, rtx target, scalar_int_mode mode,
  			   rtx res, rtx_code_label *do_error)
  {
!   if (BITINT_TYPE_P (TREE_TYPE (lhs))
        && TYPE_PRECISION (TREE_TYPE (lhs)) < GET_MODE_PRECISION (mode))
      {
        int uns = TYPE_UNSIGNED (TREE_TYPE (lhs));
diff -Nrcpad gcc-17-20260524/gcc/internal-fn.def gcc-17-20260531/gcc/internal-fn.def
*** gcc-17-20260524/gcc/internal-fn.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/internal-fn.def	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 129,135 ****
     - The other is COND_LEN_* operations that are predicated by mask and len
       both. Such operations only make sense for vectors.
  
!    DEF_INTERNAL_SIGNED_COND_FN is like DEF_INTERNAL_COND_FN but defines intenal
     functions with DEF_INTERNAL_SIGNED_OPTAB_FN.
  
     Each entry must have a corresponding expander of the form:
--- 129,135 ----
     - The other is COND_LEN_* operations that are predicated by mask and len
       both. Such operations only make sense for vectors.
  
!    DEF_INTERNAL_SIGNED_COND_FN is like DEF_INTERNAL_COND_FN but defines internal
     functions with DEF_INTERNAL_SIGNED_OPTAB_FN.
  
     Each entry must have a corresponding expander of the form:
*************** DEF_INTERNAL_FN (RAWMEMCHR, ECF_PURE | E
*** 534,540 ****
  DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
  DEF_INTERNAL_FN (PHI, 0, NULL)
  
! /* A function to represent an artifical initialization to an uninitialized
     automatic variable.  */
  DEF_INTERNAL_FN (DEFERRED_INIT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
--- 534,540 ----
  DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
  DEF_INTERNAL_FN (PHI, 0, NULL)
  
! /* A function to represent an artificial initialization to an uninitialized
     automatic variable.  */
  DEF_INTERNAL_FN (DEFERRED_INIT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
diff -Nrcpad gcc-17-20260524/gcc/internal-fn.h gcc-17-20260531/gcc/internal-fn.h
*** gcc-17-20260524/gcc/internal-fn.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/internal-fn.h	Sun May 31 22:32:06 2026
*************** enum ifn_goacc_loop_kind {
*** 88,94 ****
     LEVEL corresponds to the GOMP_DIM of the reduction
     OP is the tree code of the reduction operation
     OFFSET may be used as an offset into a reduction array for the
!           reductions occuring at this level.
     In general the return value is LOCAL_VAR, which creates a data
     dependency between calls operating on the same reduction.  */
  
--- 88,94 ----
     LEVEL corresponds to the GOMP_DIM of the reduction
     OP is the tree code of the reduction operation
     OFFSET may be used as an offset into a reduction array for the
!           reductions occurring at this level.
     In general the return value is LOCAL_VAR, which creates a data
     dependency between calls operating on the same reduction.  */
  
diff -Nrcpad gcc-17-20260524/gcc/ipa-comdats.cc gcc-17-20260531/gcc/ipa-comdats.cc
*** gcc-17-20260524/gcc/ipa-comdats.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-comdats.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  /* This is very simple pass that looks for static symbols that are used
     exclusively by symbol within one comdat group.  In this case it makes
     sense to bring the symbol itself into the group to avoid dead code
!    that would arrise when the comdat group from current unit is replaced
     by a different copy.  Consider for example:
  
      static int q(void)
--- 20,26 ----
  /* This is very simple pass that looks for static symbols that are used
     exclusively by symbol within one comdat group.  In this case it makes
     sense to bring the symbol itself into the group to avoid dead code
!    that would arise when the comdat group from current unit is replaced
     by a different copy.  Consider for example:
  
      static int q(void)
diff -Nrcpad gcc-17-20260524/gcc/ipa-cp.cc gcc-17-20260531/gcc/ipa-cp.cc
*** gcc-17-20260524/gcc/ipa-cp.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-cp.cc	Sun May 31 22:32:06 2026
*************** good_cloning_opportunity_p (struct cgrap
*** 3495,3501 ****
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    fprintf (dump_file, "     not cloning: time saved is not hot\n");
  	}
!       /* Evaulation approximately corresponds to time saved per instruction
  	 introduced.  This is likely almost always going to be true, since we
  	 already checked that time saved is large enough to be considered
  	 hot.  */
--- 3495,3501 ----
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    fprintf (dump_file, "     not cloning: time saved is not hot\n");
  	}
!       /* Evaluation approximately corresponds to time saved per instruction
  	 introduced.  This is likely almost always going to be true, since we
  	 already checked that time saved is large enough to be considered
  	 hot.  */
*************** dump_profile_updates (cgraph_node *node,
*** 4533,4539 ****
  /* With partial train run we do not want to assume that original's count is
     zero whenever we redurect all executed edges to clone.  Simply drop profile
     to local one in this case.  In eany case, return the new value.  ORIG_NODE
!    is the original node and its count has not been updaed yet.  */
  
  profile_count
  lenient_count_portion_handling (profile_count remainder, cgraph_node *orig_node)
--- 4533,4539 ----
  /* With partial train run we do not want to assume that original's count is
     zero whenever we redurect all executed edges to clone.  Simply drop profile
     to local one in this case.  In eany case, return the new value.  ORIG_NODE
!    is the original node and its count has not been updated yet.  */
  
  profile_count
  lenient_count_portion_handling (profile_count remainder, cgraph_node *orig_node)
*************** update_counts_for_self_gen_clones (cgrap
*** 4718,4724 ****
  	}
      }
  
!   /* Edges from the seeds of the valus generated for arithmetic jump-functions
       along self-recursive edges are likely to have fairly low count and so
       edges from them to nodes in the self_gen_clones do not correspond to the
       artificially distributed count of the nodes, the total sum of incoming
--- 4718,4724 ----
  	}
      }
  
!   /* Edges from the seeds of the values generated for arithmetic jump-functions
       along self-recursive edges are likely to have fairly low count and so
       edges from them to nodes in the self_gen_clones do not correspond to the
       artificially distributed count of the nodes, the total sum of incoming
*************** update_profiling_info (struct cgraph_nod
*** 4790,4796 ****
    bool orig_edges_processed = false;
    if (new_sum > orig_node_count)
      {
!       /* Profile has alreay gone astray, keep what we have but lower it
  	 to global0adjusted or to local if we have partial training.  */
        if (opt_for_fn (orig_node->decl, flag_profile_partial_training))
  	orig_node->make_profile_local ();
--- 4790,4796 ----
    bool orig_edges_processed = false;
    if (new_sum > orig_node_count)
      {
!       /* Profile has already gone astray, keep what we have but lower it
  	 to global0adjusted or to local if we have partial training.  */
        if (opt_for_fn (orig_node->decl, flag_profile_partial_training))
  	orig_node->make_profile_local ();
*************** adjust_refs_in_act_callers (struct cgrap
*** 4950,4956 ****
  
  /* At INDEX of a function being called by CS there is an ADDR_EXPR of a
     variable which is only dereferenced and which is represented by SYMBOL.  See
!    if we can remove ADDR reference in callers assosiated witht the call. */
  
  static void
  adjust_references_in_caller (cgraph_edge *cs, symtab_node *symbol, int index)
--- 4950,4956 ----
  
  /* At INDEX of a function being called by CS there is an ADDR_EXPR of a
     variable which is only dereferenced and which is represented by SYMBOL.  See
!    if we can remove ADDR reference in callers associated with the call. */
  
  static void
  adjust_references_in_caller (cgraph_edge *cs, symtab_node *symbol, int index)
*************** struct cloning_opportunity_ranking
*** 6122,6128 ****
    int index;
  };
  
! /* Helper function to qsort a vecotr of cloning opportunities.  */
  
  static int
  compare_cloning_opportunities (const void *a, const void *b)
--- 6122,6128 ----
    int index;
  };
  
! /* Helper function to qsort a vector of cloning opportunities.  */
  
  static int
  compare_cloning_opportunities (const void *a, const void *b)
diff -Nrcpad gcc-17-20260524/gcc/ipa-fnsummary.cc gcc-17-20260531/gcc/ipa-fnsummary.cc
*** gcc-17-20260524/gcc/ipa-fnsummary.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-fnsummary.cc	Sun May 31 22:32:06 2026
*************** evaluate_conditions_for_known_args (stru
*** 566,572 ****
      *ret_nonspec_clause = nonspec_clause;
  }
  
! /* Return true if VRP will be exectued on the function.
     We do not want to anticipate optimizations that will not happen.
  
     FIXME: This can be confused with -fdisable and debug counters and thus
--- 566,572 ----
      *ret_nonspec_clause = nonspec_clause;
  }
  
! /* Return true if VRP will be executed on the function.
     We do not want to anticipate optimizations that will not happen.
  
     FIXME: This can be confused with -fdisable and debug counters and thus
*************** unmodified_parm_or_parm_agg_item (struct
*** 1323,1329 ****
  				 size_p, &aggpos->by_ref);
  }
  
! /* If stmt is simple load or store of value pointed to by a function parmaeter,
     return its index.  */
  
  static int
--- 1323,1329 ----
  				 size_p, &aggpos->by_ref);
  }
  
! /* If stmt is simple load or store of value pointed to by a function parameter,
     return its index.  */
  
  static int
*************** guards_builtin_unreachable (basic_block
*** 2745,2751 ****
  	if (dump_file && (dump_flags & TDF_DETAILS))
  	  fprintf (dump_file,
  		   "BB %i ends with conditional guarding __builtin_unreachable;"
! 		   " conditinal is unnecesary\n", bb->index);
  	return true;
        }
    return false;
--- 2745,2751 ----
  	if (dump_file && (dump_flags & TDF_DETAILS))
  	  fprintf (dump_file,
  		   "BB %i ends with conditional guarding __builtin_unreachable;"
! 		   " conditinal is unnecessary\n", bb->index);
  	return true;
        }
    return false;
*************** analyze_function_body (struct cgraph_nod
*** 3011,3017 ****
  	    {
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "  skipping unnecesary stmt ");
  		  print_gimple_stmt (dump_file, stmt, 0);
  		}
  	      /* TODO: const calls used only to produce values for
--- 3011,3017 ----
  	    {
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "  skipping unnecessary stmt ");
  		  print_gimple_stmt (dump_file, stmt, 0);
  		}
  	      /* TODO: const calls used only to produce values for
*************** estimate_edge_devirt_benefit (struct cgr
*** 3610,3616 ****
  /* Increase SIZE, MIN_SIZE (if non-NULL) and TIME for size and time needed to
     handle edge E with probability PROB.  Set HINTS accordingly if edge may be
     devirtualized.  AVALS, if non-NULL, describes the context of the call site
!    as far as values of parameters are concerened.  */
  
  static inline void
  estimate_edge_size_and_time (struct cgraph_edge *e, int *size, int *min_size,
--- 3610,3616 ----
  /* Increase SIZE, MIN_SIZE (if non-NULL) and TIME for size and time needed to
     handle edge E with probability PROB.  Set HINTS accordingly if edge may be
     devirtualized.  AVALS, if non-NULL, describes the context of the call site
!    as far as values of parameters are concerned.  */
  
  static inline void
  estimate_edge_size_and_time (struct cgraph_edge *e, int *size, int *min_size,
diff -Nrcpad gcc-17-20260524/gcc/ipa-fnsummary.h gcc-17-20260531/gcc/ipa-fnsummary.h
*** gcc-17-20260524/gcc/ipa-fnsummary.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-fnsummary.h	Sun May 31 22:32:06 2026
*************** public:
*** 191,197 ****
    auto_vec<size_time_entry> GTY((skip)) size_time_table;
    /* Unlike size_time_table that is initialized for all summaries
       call_size_time_table is allocated only for functions with
!      many calls.  Use effecient vl_ptr storage.  */
    vec<size_time_entry, va_heap, vl_ptr> GTY((skip)) call_size_time_table;
  
    /* Predicates on when some loops in the function can have known bounds.  */
--- 191,197 ----
    auto_vec<size_time_entry> GTY((skip)) size_time_table;
    /* Unlike size_time_table that is initialized for all summaries
       call_size_time_table is allocated only for functions with
!      many calls.  Use efficient vl_ptr storage.  */
    vec<size_time_entry, va_heap, vl_ptr> GTY((skip)) call_size_time_table;
  
    /* Predicates on when some loops in the function can have known bounds.  */
*************** void ipa_remove_from_growth_caches (stru
*** 440,450 ****
  inline bool
  cross_module_call_p (struct cgraph_edge *edge)
  {
!   /* Here we do not want to walk to alias target becuase ICF may create
       cross-unit aliases.  */
    if (edge->caller->unit_id == edge->callee->unit_id)
      return false;
!   /* If the call is to a (former) comdat function or s symbol with mutiple
       extern inline definitions then treat is as in-module call.  */
    if (edge->callee->merged_extern_inline || edge->callee->merged_comdat
        || DECL_COMDAT (edge->callee->decl))
--- 440,450 ----
  inline bool
  cross_module_call_p (struct cgraph_edge *edge)
  {
!   /* Here we do not want to walk to alias target because ICF may create
       cross-unit aliases.  */
    if (edge->caller->unit_id == edge->callee->unit_id)
      return false;
!   /* If the call is to a (former) comdat function or s symbol with multiple
       extern inline definitions then treat is as in-module call.  */
    if (edge->callee->merged_extern_inline || edge->callee->merged_comdat
        || DECL_COMDAT (edge->callee->decl))
diff -Nrcpad gcc-17-20260524/gcc/ipa-free-lang-data.cc gcc-17-20260531/gcc/ipa-free-lang-data.cc
*** gcc-17-20260524/gcc/ipa-free-lang-data.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-free-lang-data.cc	Sun May 31 22:32:06 2026
*************** fld_simplified_type_name (tree type)
*** 116,122 ****
    return TYPE_NAME (type);
  }
  
! /* Do same comparsion as check_qualified_type skipping lang part of type
     and be more permissive about type names: we only care that names are
     same (for diagnostics) and that ODR names are the same.
     If INNER_TYPE is non-NULL, be sure that TREE_TYPE match it.  */
--- 116,122 ----
    return TYPE_NAME (type);
  }
  
! /* Do same comparison as check_qualified_type skipping lang part of type
     and be more permissive about type names: we only care that names are
     same (for diagnostics) and that ODR names are the same.
     If INNER_TYPE is non-NULL, be sure that TREE_TYPE match it.  */
*************** free_lang_data_in_decl (tree decl, class
*** 569,575 ****
  	 use for middle-end.
  
  	 It would make more sense if frontends set TREE_ADDRESSABLE to 0 only
! 	 for public objects that indeed cannot be adressed, but it is not
  	 the case.  Set the flag to true so we do not get merge failures for
  	 i.e. virtual tables between units that take address of it and
  	 units that don't.  */
--- 569,575 ----
  	 use for middle-end.
  
  	 It would make more sense if frontends set TREE_ADDRESSABLE to 0 only
! 	 for public objects that indeed cannot be addressed, but it is not
  	 the case.  Set the flag to true so we do not get merge failures for
  	 i.e. virtual tables between units that take address of it and
  	 units that don't.  */
*************** free_lang_data_in_decl (tree decl, class
*** 683,689 ****
       these are needed by devirtualization.
       C++ destructors are special because C++ frontends sometimes produces
       virtual destructor as an alias of non-virtual destructor.  In
!      devirutalization code we always walk through aliases and we need
       context to be preserved too.  See PR89335  */
    if (TREE_CODE (decl) != FIELD_DECL
        && ((TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FUNCTION_DECL)
--- 683,689 ----
       these are needed by devirtualization.
       C++ destructors are special because C++ frontends sometimes produces
       virtual destructor as an alias of non-virtual destructor.  In
!      devirtualization code we always walk through aliases and we need
       context to be preserved too.  See PR89335  */
    if (TREE_CODE (decl) != FIELD_DECL
        && ((TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != FUNCTION_DECL)
diff -Nrcpad gcc-17-20260524/gcc/ipa-icf-gimple.cc gcc-17-20260531/gcc/ipa-icf-gimple.cc
*** gcc-17-20260524/gcc/ipa-icf-gimple.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-icf-gimple.cc	Sun May 31 22:32:06 2026
*************** func_checker::compare_decl (const_tree t
*** 166,172 ****
    /* We do not really need to check types of variables, since they are just
       blocks of memory and we verify types of the accesses to them.
       However do compare types of other kinds of decls
!      (parm decls and result decl types may affect ABI convetions).  */
    if (t != VAR_DECL)
      {
        if (!compatible_types_p (TREE_TYPE (t1), TREE_TYPE (t2)))
--- 166,172 ----
    /* We do not really need to check types of variables, since they are just
       blocks of memory and we verify types of the accesses to them.
       However do compare types of other kinds of decls
!      (parm decls and result decl types may affect ABI conventions).  */
    if (t != VAR_DECL)
      {
        if (!compatible_types_p (TREE_TYPE (t1), TREE_TYPE (t2)))
*************** func_checker::compatible_types_p (tree t
*** 238,244 ****
  }
  
  /* Add hash of ARG to HSTATE. FLAGS have same meaning
!    as for operand_equal_p.  Works only if operand acces type is OP_NORMAL.  */
  
  void
  func_checker::hash_operand (const_tree arg, inchash::hash &hstate,
--- 238,244 ----
  }
  
  /* Add hash of ARG to HSTATE. FLAGS have same meaning
!    as for operand_equal_p.  Works only if operand access type is OP_NORMAL.  */
  
  void
  func_checker::hash_operand (const_tree arg, inchash::hash &hstate,
*************** func_checker::compare_gimple_asm (const
*** 1007,1013 ****
    if (gimple_asm_noutputs (g1) != gimple_asm_noutputs (g2))
      return false;
  
!   /* We do not suppport goto ASM statement comparison.  */
    if (gimple_asm_nlabels (g1) || gimple_asm_nlabels (g2))
      return false;
  
--- 1007,1013 ----
    if (gimple_asm_noutputs (g1) != gimple_asm_noutputs (g2))
      return false;
  
!   /* We do not support goto ASM statement comparison.  */
    if (gimple_asm_nlabels (g1) || gimple_asm_nlabels (g2))
      return false;
  
diff -Nrcpad gcc-17-20260524/gcc/ipa-icf.cc gcc-17-20260531/gcc/ipa-icf.cc
*** gcc-17-20260524/gcc/ipa-icf.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-icf.cc	Sun May 31 22:32:06 2026
*************** sem_function::hash_stmt (gimple *stmt, i
*** 1473,1479 ****
  					  (&map, gimple_op (stmt, i));
  	    m_checker->hash_operand (gimple_op (stmt, i), hstate, 0,
  				     access_type);
! 	    /* For memory accesses when hasing for LTO stremaing record
  	       base and ref alias ptr types so we can compare them at WPA
  	       time without having to read actual function body.  */
  	    if (access_type == func_checker::OP_MEMORY
--- 1473,1479 ----
  					  (&map, gimple_op (stmt, i));
  	    m_checker->hash_operand (gimple_op (stmt, i), hstate, 0,
  				     access_type);
! 	    /* For memory accesses when hashing for LTO streaming record
  	       base and ref alias ptr types so we can compare them at WPA
  	       time without having to read actual function body.  */
  	    if (access_type == func_checker::OP_MEMORY
*************** sem_item_optimizer::subdivide_classes_by
*** 2795,2801 ****
  		}
  
  	      // We replace newly created new_vector for the class we've just
! 	      // splitted.
  	      c->members.release ();
  	      c->members.create (new_vector.length ());
  
--- 2795,2801 ----
  		}
  
  	      // We replace newly created new_vector for the class we've just
! 	      // split.
  	      c->members.release ();
  	      c->members.create (new_vector.length ());
  
*************** sem_item_optimizer::traverse_congruence_
*** 2963,2969 ****
    const congruence_class *splitter_cls = pair->cls;
  
    /* If counted bits are greater than zero and less than the number of members
!      a group will be splitted.  */
    unsigned popcount = bitmap_count_bits (b);
  
    if (popcount > 0 && popcount < cls->members.length ())
--- 2963,2969 ----
    const congruence_class *splitter_cls = pair->cls;
  
    /* If counted bits are greater than zero and less than the number of members
!      a group will be split.  */
    unsigned popcount = bitmap_count_bits (b);
  
    if (popcount > 0 && popcount < cls->members.length ())
*************** sem_item_optimizer::traverse_congruence_
*** 3031,3037 ****
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
! 	  fprintf (dump_file, "  congruence class splitted:\n");
  	  cls->dump (dump_file, 4);
  
  	  fprintf (dump_file, "  newly created groups:\n");
--- 3031,3037 ----
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
! 	  fprintf (dump_file, "  congruence class split:\n");
  	  cls->dump (dump_file, 4);
  
  	  fprintf (dump_file, "  newly created groups:\n");
*************** sem_item_optimizer::process_cong_reducti
*** 3234,3240 ****
  	     "new classes.\n", new_classes);
  }
  
! /* Debug function prints all informations about congruence classes.  */
  
  void
  sem_item_optimizer::dump_cong_classes (void)
--- 3234,3240 ----
  	     "new classes.\n", new_classes);
  }
  
! /* Debug function prints all information about congruence classes.  */
  
  void
  sem_item_optimizer::dump_cong_classes (void)
diff -Nrcpad gcc-17-20260524/gcc/ipa-inline-transform.cc gcc-17-20260531/gcc/ipa-inline-transform.cc
*** gcc-17-20260524/gcc/ipa-inline-transform.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-inline-transform.cc	Sun May 31 22:32:06 2026
*************** mark_all_inlined_calls_cdtor (cgraph_nod
*** 310,316 ****
  
  /* Mark edge E as inlined and update callgraph accordingly.  UPDATE_ORIGINAL
     specify whether profile of original function should be updated and whether
!    offline copy should be removed if unnecesary.  If any new
     indirect edges are discovered in the process, add them to NEW_EDGES, unless
     it is NULL. If UPDATE_OVERALL_SUMMARY is false, do not bother to recompute overall
     size of caller after inlining. Caller is required to eventually do it via
--- 310,316 ----
  
  /* Mark edge E as inlined and update callgraph accordingly.  UPDATE_ORIGINAL
     specify whether profile of original function should be updated and whether
!    offline copy should be removed if unnecessary.  If any new
     indirect edges are discovered in the process, add them to NEW_EDGES, unless
     it is NULL. If UPDATE_OVERALL_SUMMARY is false, do not bother to recompute overall
     size of caller after inlining. Caller is required to eventually do it via
*************** preserve_function_body_p (struct cgraph_
*** 771,777 ****
     with param manipulation because IPA param manipulation attaches debug
     statements to PARM_DECLs of called clone.  Materialize them if needed.
  
!    FIXME: This is somehwat broken by design because it does not play well
     with partitioning.  */
  
  static void
--- 771,777 ----
     with param manipulation because IPA param manipulation attaches debug
     statements to PARM_DECLs of called clone.  Materialize them if needed.
  
!    FIXME: This is somewhat broken by design because it does not play well
     with partitioning.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/ipa-inline.cc gcc-17-20260531/gcc/ipa-inline.cc
*** gcc-17-20260524/gcc/ipa-inline.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-inline.cc	Sun May 31 22:32:06 2026
*************** enum can_inline_edge_by_limits_flags
*** 511,517 ****
    /* Ignore size limits.  */
    CAN_INLINE_DISREGARD_LIMITS = 2,
    /* Force size limits (ignore always_inline).  This is used for
!      recrusive inlining where always_inline may lead to inline bombs
       and technically it is non-sential anyway.  */
    CAN_INLINE_FORCE_LIMITS = 4,
    /* Report decision to dump file.  */
--- 511,517 ----
    /* Ignore size limits.  */
    CAN_INLINE_DISREGARD_LIMITS = 2,
    /* Force size limits (ignore always_inline).  This is used for
!      recursive inlining where always_inline may lead to inline bombs
       and technically it is non-sential anyway.  */
    CAN_INLINE_FORCE_LIMITS = 4,
    /* Report decision to dump file.  */
*************** can_early_inline_edge_p (struct cgraph_e
*** 725,731 ****
  	  || !lookup_attribute ("always_inline", DECL_ATTRIBUTES (callee->decl))))
      {
        /* If there are indirect calls, inlining may produce direct call.
! 	 TODO: We may lift this restriction if we avoid errors on formely
  	 indirect calls to always_inline functions.  Taking address
  	 of always_inline function is generally bad idea and should
  	 have been declared as undefined, but sadly we allow this.  */
--- 725,731 ----
  	  || !lookup_attribute ("always_inline", DECL_ATTRIBUTES (callee->decl))))
      {
        /* If there are indirect calls, inlining may produce direct call.
! 	 TODO: We may lift this restriction if we avoid errors on formerly
  	 indirect calls to always_inline functions.  Taking address
  	 of always_inline function is generally bad idea and should
  	 have been declared as undefined, but sadly we allow this.  */
*************** early_inliner (function *fun)
*** 3270,3276 ****
  	     statements that don't have inline parameters computed.  */
  	  for (edge = node->callees; edge; edge = edge->next_callee)
  	    {
! 	      /* We can enounter not-yet-analyzed function during
  		 early inlining on callgraphs with strongly
  		 connected components.  */
  	      ipa_call_summary *es = ipa_call_summaries->get_create (edge);
--- 3270,3276 ----
  	     statements that don't have inline parameters computed.  */
  	  for (edge = node->callees; edge; edge = edge->next_callee)
  	    {
! 	      /* We can encounter not-yet-analyzed function during
  		 early inlining on callgraphs with strongly
  		 connected components.  */
  	      ipa_call_summary *es = ipa_call_summaries->get_create (edge);
diff -Nrcpad gcc-17-20260524/gcc/ipa-locality-cloning.cc gcc-17-20260531/gcc/ipa-locality-cloning.cc
*** gcc-17-20260524/gcc/ipa-locality-cloning.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-locality-cloning.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 44,56 ****
  	 satisfied.
        3. Redirect any new caller to a local clone if one exists.
  
!    Another heuristics can be used in the absense of profile information.  This
     approach uses C++ template instantiation types to group functions together.
     Entry functions are sorted in the beginning by most used template types, and
     callees are sorted as part of partition_callchain (), again by template
     types.
  
!    For bothe schemes, partition size is param controlled to fine tune per
     program behavior.  */
  
  #include "config.h"
--- 44,56 ----
  	 satisfied.
        3. Redirect any new caller to a local clone if one exists.
  
!    Another heuristics can be used in the absence of profile information.  This
     approach uses C++ template instantiation types to group functions together.
     Entry functions are sorted in the beginning by most used template types, and
     callees are sorted as part of partition_callchain (), again by template
     types.
  
!    For both schemes, partition size is param controlled to fine tune per
     program behavior.  */
  
  #include "config.h"
*************** edge_redirectable_p (cgraph_edge *edge,
*** 780,786 ****
  
  /* Create a locality clone of CNODE and redirect all callers present in
     PARTITION.
!    Create a clone dpending on whether CNODE itself is a clone or not.  */
  
  static cgraph_node *
  create_locality_clone (cgraph_node *cnode,
--- 780,786 ----
  
  /* Create a locality clone of CNODE and redirect all callers present in
     PARTITION.
!    Create a clone depending on whether CNODE itself is a clone or not.  */
  
  static cgraph_node *
  create_locality_clone (cgraph_node *cnode,
*************** clone_node_as_needed (cgraph_edge *edge,
*** 1084,1090 ****
    return cloned_node;
  }
  
! /* Determine if EDGE->CALLEE is suitable for cloning.  It is assummed that the
     callee is not an inlined node.  */
  
  static bool
--- 1084,1090 ----
    return cloned_node;
  }
  
! /* Determine if EDGE->CALLEE is suitable for cloning.  It is assumed that the
     callee is not an inlined node.  */
  
  static bool
*************** partition_callchain (cgraph_node *node,
*** 1232,1238 ****
  		     In partition X, edge A->B was transformed to A->B_clone0.
  		     In current partition, A was cloned to A_clone0 and now
  		     B_clone0 is visited via edge A_clone0->B_clone0.  If a
! 		     B_clonei is present, redirect A_clone0 to it, otherise do
  		     nothing.
  		 3.  N is not a locality clone and no clone of N is present in
  		     PARTITION, check for suitability and clone.  */
--- 1232,1238 ----
  		     In partition X, edge A->B was transformed to A->B_clone0.
  		     In current partition, A was cloned to A_clone0 and now
  		     B_clone0 is visited via edge A_clone0->B_clone0.  If a
! 		     B_clonei is present, redirect A_clone0 to it, otherwise do
  		     nothing.
  		 3.  N is not a locality clone and no clone of N is present in
  		     PARTITION, check for suitability and clone.  */
diff -Nrcpad gcc-17-20260524/gcc/ipa-modref.cc gcc-17-20260531/gcc/ipa-modref.cc
*** gcc-17-20260524/gcc/ipa-modref.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-modref.cc	Sun May 31 22:32:06 2026
*************** modref_eaf_analysis::merge_with_ssa_name
*** 2744,2750 ****
        m_lattice[src_index].do_dataflow = true;
        if (dump_file)
  	fprintf (dump_file,
! 		 "%*sWill propgate from ssa_name %i to %i%s\n",
  		 m_depth * 4 + 4,
  		 "", src_index, index, deref ? " (deref)" : "");
      }
--- 2744,2750 ----
        m_lattice[src_index].do_dataflow = true;
        if (dump_file)
  	fprintf (dump_file,
! 		 "%*sWill propagate from ssa_name %i to %i%s\n",
  		 m_depth * 4 + 4,
  		 "", src_index, index, deref ? " (deref)" : "");
      }
diff -Nrcpad gcc-17-20260524/gcc/ipa-param-manipulation.cc gcc-17-20260531/gcc/ipa-param-manipulation.cc
*** gcc-17-20260524/gcc/ipa-param-manipulation.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-param-manipulation.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 52,58 ****
  #include "ipa-prop.h"
  #include "attr-callback.h"
  
! /* Actual prefixes of different newly synthetized parameters.  Keep in sync
     with IPA_PARAM_PREFIX_* defines.  */
  
  static const char *ipa_param_prefixes[IPA_PARAM_PREFIX_COUNT]
--- 52,58 ----
  #include "ipa-prop.h"
  #include "attr-callback.h"
  
! /* Actual prefixes of different newly synthesized parameters.  Keep in sync
     with IPA_PARAM_PREFIX_* defines.  */
  
  static const char *ipa_param_prefixes[IPA_PARAM_PREFIX_COUNT]
*************** ipa_param_adjustments::get_surviving_par
*** 439,445 ****
  }
  
  /* Fill NEW_INDICES with new indices of each surviving parameter or -1 for
!    those which do not survive.  Any parameter outside of lenght of the vector
     does not survive.  There is currently no support for a parameter to be
     copied to two distinct new parameters.  */
  
--- 439,445 ----
  }
  
  /* Fill NEW_INDICES with new indices of each surviving parameter or -1 for
!    those which do not survive.  Any parameter outside of length of the vector
     does not survive.  There is currently no support for a parameter to be
     copied to two distinct new parameters.  */
  
*************** purge_all_uses (tree name, hash_set <tre
*** 646,652 ****
  	{
  	  if (gimple_debug_bind_p (stmt))
  	    {
! 	      /* When runing within tree-inline, we will never end up here but
  		 adding the SSAs to killed_ssas will do the trick in this case
  		 and the respective debug statements will get reset. */
  	      gimple_debug_bind_reset_value (stmt);
--- 646,652 ----
  	{
  	  if (gimple_debug_bind_p (stmt))
  	    {
! 	      /* When running within tree-inline, we will never end up here but
  		 adding the SSAs to killed_ssas will do the trick in this case
  		 and the respective debug statements will get reset. */
  	      gimple_debug_bind_reset_value (stmt);
*************** ipa_param_body_adjustments::mark_dead_st
*** 1185,1191 ****
  {
    /* Current IPA analyses which remove unused parameters never remove a
       non-gimple register ones which have any use except as parameters in other
!      calls, so we can safely leve them as they are.  */
    tree parm_ddef = get_ddef_if_exists_and_is_used (dead_param);
    if (!parm_ddef)
      return;
--- 1185,1191 ----
  {
    /* Current IPA analyses which remove unused parameters never remove a
       non-gimple register ones which have any use except as parameters in other
!      calls, so we can safely leave them as they are.  */
    tree parm_ddef = get_ddef_if_exists_and_is_used (dead_param);
    if (!parm_ddef)
      return;
*************** replace_with_mapped_expr (tree *remap, i
*** 1324,1330 ****
    return 0;
  }
  
! /* Replace all occurances of SSAs in m_dead_ssa_debug_equiv in t with what they
     are mapped to.  */
  
  void
--- 1324,1330 ----
    return 0;
  }
  
! /* Replace all occurrences of SSAs in m_dead_ssa_debug_equiv in t with what they
     are mapped to.  */
  
  void
*************** ipa_param_body_adjustments::get_new_para
*** 1751,1757 ****
  /* Modify the function parameters FNDECL and its type according to the plan in
     ADJUSTMENTS.  This function needs to be called when the decl has not already
     been processed with ipa_param_adjustments::adjust_decl, otherwise just
!    seting DECL_ARGUMENTS to whatever get_new_param_chain will do is enough.  */
  
  void
  ipa_param_body_adjustments::modify_formal_parameters ()
--- 1751,1757 ----
  /* Modify the function parameters FNDECL and its type according to the plan in
     ADJUSTMENTS.  This function needs to be called when the decl has not already
     been processed with ipa_param_adjustments::adjust_decl, otherwise just
!    setting DECL_ARGUMENTS to whatever get_new_param_chain will do is enough.  */
  
  void
  ipa_param_body_adjustments::modify_formal_parameters ()
*************** record_argument_state (copy_body_data *i
*** 2205,2211 ****
     up call_graph edges.
  
     If the method is invoked as a part of IPA clone materialization and if any
!    parameter split is pass-through, i.e. it applies to the functin that is
     being modified and also to the callee of the statement, replace the
     parameter passed to old callee with all of the replacement a callee might
     possibly want and record the performed argument modifications in
--- 2205,2211 ----
     up call_graph edges.
  
     If the method is invoked as a part of IPA clone materialization and if any
!    parameter split is pass-through, i.e. it applies to the function that is
     being modified and also to the callee of the statement, replace the
     parameter passed to old callee with all of the replacement a callee might
     possibly want and record the performed argument modifications in
*************** ipa_param_body_adjustments::perform_cfun
*** 2635,2641 ****
  
  
  /* If there are any initialization statements that need to be emitted into
!    the basic block BB right at ther start of the new function, do so.  */
  void
  ipa_param_body_adjustments::append_init_stmts (basic_block bb)
  {
--- 2635,2641 ----
  
  
  /* If there are any initialization statements that need to be emitted into
!    the basic block BB right at the start of the new function, do so.  */
  void
  ipa_param_body_adjustments::append_init_stmts (basic_block bb)
  {
diff -Nrcpad gcc-17-20260524/gcc/ipa-param-manipulation.h gcc-17-20260531/gcc/ipa-param-manipulation.h
*** gcc-17-20260524/gcc/ipa-param-manipulation.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-param-manipulation.h	Sun May 31 22:32:06 2026
*************** struct ipa_replace_map;
*** 290,296 ****
     part of tree-inine.c's tree_function_versioning machinery to clone functions
     (when M_ID is not NULL) and in s standalone fashion, modifying an existing
     function in place (when M_ID is NULL).  While a lot of stuff handled in a
!    unified way in both modes, there are many aspects of the processs that
     requires distinct paths.  */
  
  class ipa_param_body_adjustments
--- 290,296 ----
     part of tree-inine.c's tree_function_versioning machinery to clone functions
     (when M_ID is not NULL) and in s standalone fashion, modifying an existing
     function in place (when M_ID is NULL).  While a lot of stuff handled in a
!    unified way in both modes, there are many aspects of the process that
     requires distinct paths.  */
  
  class ipa_param_body_adjustments
*************** public:
*** 337,348 ****
  			   gimple *orig_stmt);
    /* Return the new chain of parameters.  */
    tree get_new_param_chain ();
!   /* Replace all occurances of SSAs in m_dead_ssa_debug_equiv in t with what
       they are mapped to.  */
    void remap_with_debug_expressions (tree *t);
  
    /* If there are any initialization statements that need to be emitted into
!      the basic block BB right at ther start of the new function, do so.  */
    void append_init_stmts (basic_block bb);
  
    /* Pointers to data structures defining how the function should be
--- 337,348 ----
  			   gimple *orig_stmt);
    /* Return the new chain of parameters.  */
    tree get_new_param_chain ();
!   /* Replace all occurrences of SSAs in m_dead_ssa_debug_equiv in t with what
       they are mapped to.  */
    void remap_with_debug_expressions (tree *t);
  
    /* If there are any initialization statements that need to be emitted into
!      the basic block BB right at the start of the new function, do so.  */
    void append_init_stmts (basic_block bb);
  
    /* Pointers to data structures defining how the function should be
diff -Nrcpad gcc-17-20260524/gcc/ipa-polymorphic-call.cc gcc-17-20260531/gcc/ipa-polymorphic-call.cc
*** gcc-17-20260524/gcc/ipa-polymorphic-call.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-polymorphic-call.cc	Sun May 31 22:32:06 2026
*************** ipa_polymorphic_call_context::combine_wi
*** 2227,2233 ****
  	}
  
        /* If we do not know how the context is being used, we cannot
! 	 clear MAYBE_IN_CONSTRUCTION because it may be offseted
  	 to other component of OUTER_TYPE later and we know nothing
  	 about it.  */
        if (otr_type && maybe_in_construction
--- 2227,2233 ----
  	}
  
        /* If we do not know how the context is being used, we cannot
! 	 clear MAYBE_IN_CONSTRUCTION because it may be offsetted
  	 to other component of OUTER_TYPE later and we know nothing
  	 about it.  */
        if (otr_type && maybe_in_construction
diff -Nrcpad gcc-17-20260524/gcc/ipa-prop.cc gcc-17-20260531/gcc/ipa-prop.cc
*** gcc-17-20260524/gcc/ipa-prop.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-prop.cc	Sun May 31 22:32:06 2026
*************** struct ipa_vr_ggc_hash_traits : public g
*** 83,89 ****
      {
        // This never get called, except in the verification code, as
        // ipa_get_value_range() calculates the hash itself.  This
!       // function is mostly here for completness' sake.
        value_range vr;
        p->get_vrange (vr);
        inchash::hash hstate;
--- 83,89 ----
      {
        // This never get called, except in the verification code, as
        // ipa_get_value_range() calculates the hash itself.  This
!       // function is mostly here for completeness' sake.
        value_range vr;
        p->get_vrange (vr);
        inchash::hash hstate;
*************** noted_fnptr_hasher::equal (noted_fnptr_s
*** 320,326 ****
  }
  
  
! /* Structore holding the information that all stores to OFFSET of a particular
     record type RECTYPE was storing a pointer to specific function or that there
     were multiple such functions. */
  
--- 320,326 ----
  }
  
  
! /* Structure holding the information that all stores to OFFSET of a particular
     record type RECTYPE was storing a pointer to specific function or that there
     were multiple such functions. */
  
*************** ipa_set_ancestor_jf (struct ipa_jump_fun
*** 806,812 ****
    jfunc->value.ancestor.keep_null = keep_null;
  }
  
! /* Get IPA BB information about the given BB.  FBI is the context of analyzis
     of this function body.  */
  
  static struct ipa_bb_info *
--- 806,812 ----
    jfunc->value.ancestor.keep_null = keep_null;
  }
  
! /* Get IPA BB information about the given BB.  FBI is the context of analysis
     of this function body.  */
  
  static struct ipa_bb_info *
*************** check_stmt_for_type_change (ao_ref *ao A
*** 918,924 ****
  
  /* See if ARG is PARAM_DECl describing instance passed by pointer
     or reference in FUNCTION.  Return false if the dynamic type may change
!    in between beggining of the function until CALL is invoked.
  
     Generally functions are not allowed to change type of such instances,
     but they call destructors.  We assume that methods cannot destroy the THIS
--- 918,924 ----
  
  /* See if ARG is PARAM_DECl describing instance passed by pointer
     or reference in FUNCTION.  Return false if the dynamic type may change
!    in between beginning of the function until CALL is invoked.
  
     Generally functions are not allowed to change type of such instances,
     but they call destructors.  We assume that methods cannot destroy the THIS
*************** param_type_may_change_p (tree function,
*** 932,938 ****
       that require writing to memory.  */
    if (flags_from_decl_or_type (function) & (ECF_PURE | ECF_CONST))
      return false;
!   /* We need to check if we are within inlined consturctor
       or destructor (ideally we would have way to check that the
       inline cdtor is actually working on ARG, but we don't have
       easy tie on this, so punt on all non-pure cdtors.
--- 932,938 ----
       that require writing to memory.  */
    if (flags_from_decl_or_type (function) & (ECF_PURE | ECF_CONST))
      return false;
!   /* We need to check if we are within inlined constructor
       or destructor (ideally we would have way to check that the
       inline cdtor is actually working on ARG, but we don't have
       easy tie on this, so punt on all non-pure cdtors.
*************** param_type_may_change_p (tree function,
*** 977,983 ****
     returned by get_ref_base_and_extent, as is the offset.
  
     This is helper function for detect_type_change and detect_type_change_ssa
!    that does the heavy work which is usually unnecesary.  */
  
  static bool
  detect_type_change_from_memory_writes (ipa_func_body_info *fbi, tree arg,
--- 977,983 ----
     returned by get_ref_base_and_extent, as is the offset.
  
     This is helper function for detect_type_change and detect_type_change_ssa
!    that does the heavy work which is usually unnecessary.  */
  
  static bool
  detect_type_change_from_memory_writes (ipa_func_body_info *fbi, tree arg,
*************** find_dominating_aa_status (struct ipa_fu
*** 1107,1113 ****
  }
  
  /* Get AA status structure for the given BB and parameter with INDEX.  Allocate
!    structures and/or intialize the result with a dominating description as
     necessary.  */
  
  static struct ipa_param_aa_status *
--- 1107,1113 ----
  }
  
  /* Get AA status structure for the given BB and parameter with INDEX.  Allocate
!    structures and/or initialize the result with a dominating description as
     necessary.  */
  
  static struct ipa_param_aa_status *
*************** parm_ref_data_pass_through_p (struct ipa
*** 1247,1254 ****
    bool modified = false;
    ao_ref refd;
  
!   /* It's unnecessary to calculate anything about memory contnets for a const
!      function because it is not goin to use it.  But do not cache the result
       either.  Also, no such calculations for non-pointers.  */
    if (!gimple_vuse (call)
        || !POINTER_TYPE_P (TREE_TYPE (parm)))
--- 1247,1254 ----
    bool modified = false;
    ao_ref refd;
  
!   /* It's unnecessary to calculate anything about memory contents for a const
!      function because it is not going to use it.  But do not cache the result
       either.  Also, no such calculations for non-pointers.  */
    if (!gimple_vuse (call)
        || !POINTER_TYPE_P (TREE_TYPE (parm)))
*************** build_agg_jump_func_from_list (struct ip
*** 1908,1914 ****
  
        if (list->value.pass_through.formal_id >= 0)
  	{
! 	  /* Content value is derived from some formal paramerter.  */
  	  if (list->value.offset >= 0)
  	    item.jftype = IPA_JF_LOAD_AGG;
  	  else
--- 1908,1914 ----
  
        if (list->value.pass_through.formal_id >= 0)
  	{
! 	  /* Content value is derived from some formal parameter.  */
  	  if (list->value.offset >= 0)
  	    item.jftype = IPA_JF_LOAD_AGG;
  	  else
*************** analyze_agg_content_value (struct ipa_fu
*** 2012,2018 ****
  	   __x_MOD_foo (&parm.6, b_31(D));
  
  	 The aggregate function describing parm.6.dim[0].stride is encoded as a
! 	 PASS-THROUGH jump function with ASSERT_EXPR operation whith operand 1
  	 (the constant from the PHI node).  */
  
        if (gimple_phi_num_args (phi) != 2
--- 2012,2018 ----
  	   __x_MOD_foo (&parm.6, b_31(D));
  
  	 The aggregate function describing parm.6.dim[0].stride is encoded as a
! 	 PASS-THROUGH jump function with ASSERT_EXPR operation with operand 1
  	 (the constant from the PHI node).  */
  
        if (gimple_phi_num_args (phi) != 2
*************** ipa_single_noted_fnptr_in_record (tree r
*** 3348,3354 ****
  }
  
  /* Free the hash table storing the information about function pointers stored
!    to a particular position in record typed strucutres.  */
  
  void
  ipa_free_noted_fnptr_calls ()
--- 3348,3354 ----
  }
  
  /* Free the hash table storing the information about function pointers stored
!    to a particular position in record typed structures.  */
  
  void
  ipa_free_noted_fnptr_calls ()
*************** ipa_make_edge_direct_to_target (struct c
*** 4023,4029 ****
  	  /* Member pointer call that goes through a VMT lookup.  */
  	  if ((sii && sii->member_ptr)
  	      /* Or if target is not an invariant expression and we do not
! 		 know if it will evaulate to function at runtime.
  		 This can happen when folding through &VAR, where &VAR
  		 is IP invariant, but VAR itself is not.
  
--- 4023,4029 ----
  	  /* Member pointer call that goes through a VMT lookup.  */
  	  if ((sii && sii->member_ptr)
  	      /* Or if target is not an invariant expression and we do not
! 		 know if it will evaluate to function at runtime.
  		 This can happen when folding through &VAR, where &VAR
  		 is IP invariant, but VAR itself is not.
  
*************** combine_controlled_uses_counters (int c,
*** 4737,4743 ****
      return c + d - 1;
  }
  
! /* Propagate number of controlled users from CS->caleee to the new root of the
     tree of inlined nodes.  */
  
  static void
--- 4737,4743 ----
      return c + d - 1;
  }
  
! /* Propagate number of controlled users from CS->callee to the new root of the
     tree of inlined nodes.  */
  
  static void
*************** ipa_duplicate_jump_function (cgraph_edge
*** 5134,5140 ****
  }
  
  /* Method invoked when an edge is duplicated.  Copy ipa_edge_args and adjust
!    reference count data strucutres accordingly.  */
  
  void
  ipa_edge_args_sum_t::duplicate (cgraph_edge *src, cgraph_edge *dst,
--- 5134,5140 ----
  }
  
  /* Method invoked when an edge is duplicated.  Copy ipa_edge_args and adjust
!    reference count data structures accordingly.  */
  
  void
  ipa_edge_args_sum_t::duplicate (cgraph_edge *src, cgraph_edge *dst,
*************** ipa_write_jump_function (struct output_b
*** 5329,5335 ****
    int i, count;
    int flag = 0;
  
!   /* ADDR_EXPRs are very comon IP invariants; save some streamer data
       as well as WPA memory by handling them specially.  */
    if (jump_func->type == IPA_JF_CONST
        && TREE_CODE (jump_func->value.constant.value) == ADDR_EXPR)
--- 5329,5335 ----
    int i, count;
    int flag = 0;
  
!   /* ADDR_EXPRs are very common IP invariants; save some streamer data
       as well as WPA memory by handling them specially.  */
    if (jump_func->type == IPA_JF_CONST
        && TREE_CODE (jump_func->value.constant.value) == ADDR_EXPR)
*************** useful_ipcp_transformation_info_p (ipcp_
*** 6117,6123 ****
    return false;
  }
  
! /* Write into OB IPA-CP transfromation summary TS describing NODE.  */
  
  void
  write_ipcp_transformation_info (output_block *ob, cgraph_node *node,
--- 6117,6123 ----
    return false;
  }
  
! /* Write into OB IPA-CP transformation summary TS describing NODE.  */
  
  void
  write_ipcp_transformation_info (output_block *ob, cgraph_node *node,
diff -Nrcpad gcc-17-20260524/gcc/ipa-prop.h gcc-17-20260531/gcc/ipa-prop.h
*** gcc-17-20260524/gcc/ipa-prop.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-prop.h	Sun May 31 22:32:06 2026
*************** struct GTY (()) ipa_jump_func
*** 339,345 ****
    struct ipa_agg_jump_function agg;
  
    /* Information about value range, containing valid data only when vr_known is
!      true.  The pointed to structure is shared betweed different jump
       functions.  Use ipa_set_jfunc_vr to set this field.  */
    ipa_vr *m_vr;
  
--- 339,345 ----
    struct ipa_agg_jump_function agg;
  
    /* Information about value range, containing valid data only when vr_known is
!      true.  The pointed to structure is shared between different jump
       functions.  Use ipa_set_jfunc_vr to set this field.  */
    ipa_vr *m_vr;
  
*************** struct GTY (()) ipa_jump_func
*** 356,362 ****
  };
  
  
! /* Return the constant stored in a constant jump functin JFUNC.  */
  
  inline tree
  ipa_get_jf_constant (struct ipa_jump_func *jfunc)
--- 356,362 ----
  };
  
  
! /* Return the constant stored in a constant jump function JFUNC.  */
  
  inline tree
  ipa_get_jf_constant (struct ipa_jump_func *jfunc)
*************** ipa_get_jf_ancestor_keep_null (struct ip
*** 517,523 ****
  class ipa_auto_call_arg_values
  {
  public:
!   /* If m_known_vals (vector of known "scalar" values) is sufficiantly long,
       return its element at INDEX, otherwise return NULL.  */
    tree safe_sval_at (int index)
    {
--- 517,523 ----
  class ipa_auto_call_arg_values
  {
  public:
!   /* If m_known_vals (vector of known "scalar" values) is sufficiently long,
       return its element at INDEX, otherwise return NULL.  */
    tree safe_sval_at (int index)
    {
*************** public:
*** 569,575 ****
        m_known_value_ranges (aavals->m_known_value_ranges.to_vec_legacy ())
    {}
  
!   /* If m_known_vals (vector of known "scalar" values) is sufficiantly long,
       return its element at INDEX, otherwise return NULL.  */
    tree safe_sval_at (int index)
    {
--- 569,575 ----
        m_known_value_ranges (aavals->m_known_value_ranges.to_vec_legacy ())
    {}
  
!   /* If m_known_vals (vector of known "scalar" values) is sufficiently long,
       return its element at INDEX, otherwise return NULL.  */
    tree safe_sval_at (int index)
    {
*************** public:
*** 1092,1098 ****
  		  ipa_node_params *data2) final override;
  };
  
! /* Summary to manange ipa_edge_args structures.  */
  
  class GTY((user)) ipa_edge_args_sum_t : public call_summary <ipa_edge_args *>
  {
--- 1092,1098 ----
  		  ipa_node_params *data2) final override;
  };
  
! /* Summary to manage ipa_edge_args structures.  */
  
  class GTY((user)) ipa_edge_args_sum_t : public call_summary <ipa_edge_args *>
  {
diff -Nrcpad gcc-17-20260524/gcc/ipa-reference.cc gcc-17-20260531/gcc/ipa-reference.cc
*** gcc-17-20260524/gcc/ipa-reference.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-reference.cc	Sun May 31 22:32:06 2026
*************** ipa_reference_var_uid (tree t)
*** 156,162 ****
  }
  
  /* Return ID used by ipa-reference bitmaps.  Create new entry if
!    T is not in map.  Set EXISTED accordinly  */
  int
  ipa_reference_var_get_or_insert_uid (tree t, bool *existed)
  {
--- 156,162 ----
  }
  
  /* Return ID used by ipa-reference bitmaps.  Create new entry if
!    T is not in map.  Set EXISTED accordingly  */
  int
  ipa_reference_var_get_or_insert_uid (tree t, bool *existed)
  {
*************** ipa_reference_get_written_global (struct
*** 249,255 ****
  }
  
  
! /* Hepler for is_proper_for_analysis.  */
  static bool
  is_improper (symtab_node *n, void *v ATTRIBUTE_UNUSED)
  {
--- 249,255 ----
  }
  
  
! /* Helper for is_proper_for_analysis.  */
  static bool
  is_improper (symtab_node *n, void *v ATTRIBUTE_UNUSED)
  {
*************** union_static_var_sets (bitmap &x, bitmap
*** 347,353 ****
  	     In that case, we want to make that visible explicitly.
  	     Even though bitmap_equal_p can be very expensive, it
  	     turns out to be an overall win to check this here for
! 	     an LTO bootstrap of GCC itself.  Liberally extrapoliate
  	     that result to be applicable to all cases.  */
  	  if (bitmap_equal_p (x, all_module_statics))
  	    {
--- 347,353 ----
  	     In that case, we want to make that visible explicitly.
  	     Even though bitmap_equal_p can be very expensive, it
  	     turns out to be an overall win to check this here for
! 	     an LTO bootstrap of GCC itself.  Liberally extrapolate
  	     that result to be applicable to all cases.  */
  	  if (bitmap_equal_p (x, all_module_statics))
  	    {
diff -Nrcpad gcc-17-20260524/gcc/ipa-split.cc gcc-17-20260531/gcc/ipa-split.cc
*** gcc-17-20260524/gcc/ipa-split.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-split.cc	Sun May 31 22:32:06 2026
*************** split_function (basic_block return_bb, c
*** 1390,1396 ****
      }
  
  
!   /* Let's take a time profile for splitted function.  */
    if (cur_node->tp_first_run)
      node->tp_first_run = cur_node->tp_first_run + 1;
  
--- 1390,1396 ----
      }
  
  
!   /* Let's take a time profile for split function.  */
    if (cur_node->tp_first_run)
      node->tp_first_run = cur_node->tp_first_run + 1;
  
diff -Nrcpad gcc-17-20260524/gcc/ipa-sra.cc gcc-17-20260531/gcc/ipa-sra.cc
*** gcc-17-20260524/gcc/ipa-sra.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-sra.cc	Sun May 31 22:32:06 2026
*************** public:
*** 411,417 ****
    /* Set when any of the call arguments are not byte-aligned.  */
    unsigned m_bit_aligned_arg : 1;
  
!   /* Set to true if the call happend before any (other) store to memory in the
       caller.  */
    unsigned m_before_any_store : 1;
  };
--- 411,417 ----
    /* Set when any of the call arguments are not byte-aligned.  */
    unsigned m_bit_aligned_arg : 1;
  
!   /* Set to true if the call happened before any (other) store to memory in the
       caller.  */
    unsigned m_before_any_store : 1;
  };
*************** isra_track_scalar_value_uses (function *
*** 1028,1034 ****
     statement.  If there are no such uses, return true and store the number of
     actual arguments that this parameter eventually feeds to (or zero if there
     is none) to DESC->call_uses and set DESC->remove_only_when_retval_removed if
!    there are any uses in return statemens.  For any such parameter, mark
     PARM_NUM as one of its sources.
  
     This function is similar to ptr_parm_has_nonarg_uses but its results are
--- 1028,1034 ----
     statement.  If there are no such uses, return true and store the number of
     actual arguments that this parameter eventually feeds to (or zero if there
     is none) to DESC->call_uses and set DESC->remove_only_when_retval_removed if
!    there are any uses in return statements.  For any such parameter, mark
     PARM_NUM as one of its sources.
  
     This function is similar to ptr_parm_has_nonarg_uses but its results are
*************** process_scan_results (cgraph_node *node,
*** 2633,2639 ****
  	      }
  
  	    /* Walk basic block and see if its execution can terminate earlier.
! 	       Keep the info for later re-use to avoid quadratic behavoiur here.  */
  	    gimple_stmt_iterator gsi = gsi_for_stmt (call_stmt);
  	    bool safe = true;
  	    int n = 0;
--- 2633,2639 ----
  	      }
  
  	    /* Walk basic block and see if its execution can terminate earlier.
! 	       Keep the info for later re-use to avoid quadratic behaviour here.  */
  	    gimple_stmt_iterator gsi = gsi_for_stmt (call_stmt);
  	    bool safe = true;
  	    int n = 0;
*************** flip_all_hints_pessimistic (isra_param_d
*** 3469,3475 ****
  }
  
  /* Because we have not analyzed or otherwise problematic caller, go over all
!    parameter int flags of IFS describing a call graph node of a calllee and
     turn them pessimistic.  Return true if any hints that need to potentially
     trigger further propagation have changed.  */
  
--- 3469,3475 ----
  }
  
  /* Because we have not analyzed or otherwise problematic caller, go over all
!    parameter int flags of IFS describing a call graph node of a callee and
     turn them pessimistic.  Return true if any hints that need to potentially
     trigger further propagation have changed.  */
  
*************** flip_all_param_hints_pessimistic (isra_f
*** 3488,3494 ****
    return ret;
  }
  
! /* Propagate hints accross edge CS which ultimately leads to a node described
     by TO_IFS.  Return true if any hints of the callee which should potentially
     trigger further propagation have changed.  */
  
--- 3488,3494 ----
    return ret;
  }
  
! /* Propagate hints across edge CS which ultimately leads to a node described
     by TO_IFS.  Return true if any hints of the callee which should potentially
     trigger further propagation have changed.  */
  
diff -Nrcpad gcc-17-20260524/gcc/ipa-strub.cc gcc-17-20260531/gcc/ipa-strub.cc
*** gcc-17-20260524/gcc/ipa-strub.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-strub.cc	Sun May 31 22:32:06 2026
*************** get_strub_mode_attr_parm (enum strub_mod
*** 370,376 ****
      }
  }
  
! /* Return the parmeters (TREE_VALUE) for a strub attribute of MODE.
     We know we use a single parameter, so we bypass the creation of a
     tree list.  */
  
--- 370,376 ----
      }
  }
  
! /* Return the parameters (TREE_VALUE) for a strub attribute of MODE.
     We know we use a single parameter, so we bypass the creation of a
     tree list.  */
  
*************** compute_strub_mode (cgraph_node *node, t
*** 1068,1074 ****
    const bool strub_flag_at_calls = flag_strub == 1;
    /* On top of default, also enable strub implicitly for functions that can
       safely undergo internal strubbing.  At-calls mode will still be used in
!      functions that requiest it explicitly with attribute strub() or strub(1),
       or when the function body requires strubbing and internal strubbing is not
       viable.  */
    const bool strub_flag_internal = flag_strub == 2;
--- 1068,1074 ----
    const bool strub_flag_at_calls = flag_strub == 1;
    /* On top of default, also enable strub implicitly for functions that can
       safely undergo internal strubbing.  At-calls mode will still be used in
!      functions that request it explicitly with attribute strub() or strub(1),
       or when the function body requires strubbing and internal strubbing is not
       viable.  */
    const bool strub_flag_internal = flag_strub == 2;
*************** public:
*** 1747,1753 ****
    virtual bool gate (function *) {
      /* In relaxed (-3) and strict (-4) settings, that only enable strub at a
         function or variable attribute's request, the attribute handler changes
!        flag_strub to -1 or -2, respectively, if any strub-enabling occurence of
         the attribute is found.  Therefore, if it remains at -3 or -4, nothing
         that would enable strub was found, so we can disable it and avoid the
         overhead.  */
--- 1747,1753 ----
    virtual bool gate (function *) {
      /* In relaxed (-3) and strict (-4) settings, that only enable strub at a
         function or variable attribute's request, the attribute handler changes
!        flag_strub to -1 or -2, respectively, if any strub-enabling occurrence of
         the attribute is found.  Therefore, if it remains at -3 or -4, nothing
         that would enable strub was found, so we can disable it and avoid the
         overhead.  */
diff -Nrcpad gcc-17-20260524/gcc/ipa-utils.cc gcc-17-20260531/gcc/ipa-utils.cc
*** gcc-17-20260524/gcc/ipa-utils.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-utils.cc	Sun May 31 22:32:06 2026
*************** ipa_merge_profiles (struct cgraph_node *
*** 760,766 ****
    src->decl = oldsrcdecl;
  }
  
! /* Return true if call to DEST is known to be self-recusive
     call withing FUNC.  */
  
  bool
--- 760,766 ----
    src->decl = oldsrcdecl;
  }
  
! /* Return true if call to DEST is known to be self-recursive
     call withing FUNC.  */
  
  bool
*************** recursive_call_p (tree func, tree dest)
*** 778,784 ****
      return true;
    if (!dest_node->semantically_equivalent_p (cnode))
      return false;
!   /* If there is only one way to call the fuction or we know all of them
       are semantically equivalent, we still can consider call recursive.  */
    FOR_EACH_ALIAS (cnode, alias)
      if (!dest_node->semantically_equivalent_p (alias->referring))
--- 778,784 ----
      return true;
    if (!dest_node->semantically_equivalent_p (cnode))
      return false;
!   /* If there is only one way to call the function or we know all of them
       are semantically equivalent, we still can consider call recursive.  */
    FOR_EACH_ALIAS (cnode, alias)
      if (!dest_node->semantically_equivalent_p (alias->referring))
*************** recursive_call_p (tree func, tree dest)
*** 788,794 ****
  
  /* Return true if stmt may terminate execution of function.
     If assume_return_or_eh we can further assume that the function ends
!    either by retrn statement or EH (no trapping or infinite loops).  */
  
  bool
  stmt_may_terminate_function_p (function *fun, gimple *stmt, bool assume_return_or_eh)
--- 788,794 ----
  
  /* Return true if stmt may terminate execution of function.
     If assume_return_or_eh we can further assume that the function ends
!    either by return statement or EH (no trapping or infinite loops).  */
  
  bool
  stmt_may_terminate_function_p (function *fun, gimple *stmt, bool assume_return_or_eh)
*************** stmt_may_terminate_function_p (function
*** 819,826 ****
     execute on every invocation of the function.
  
     If assume_return_or_eh we can further assume that the function ends
!    either by retrn statement or EH (no trapping or infinite loops).
!    This is useful when sumarizing function in passes like ipa-modref.
  
     Seeing assume_return_or_eh to false is used to prove that given
     statmeent will be executed even if the function gets into infinite
--- 819,826 ----
     execute on every invocation of the function.
  
     If assume_return_or_eh we can further assume that the function ends
!    either by return statement or EH (no trapping or infinite loops).
!    This is useful when summarizing function in passes like ipa-modref.
  
     Seeing assume_return_or_eh to false is used to prove that given
     statmeent will be executed even if the function gets into infinite
*************** find_always_executed_bbs (function *fun,
*** 868,874 ****
  		 TODO: with C++ forced progression we can still walk the
  		 irreducible region and see if it contains any side effects.
  		 Similarly for loops.  -ffinite-loops does not really imply
! 		 this since we allow inlining across -ffinite-loops bondary
  		 and thus it can be used only as a loop flag.  */
  	      if (e->dest->loop_father->header != e->dest
  		  || !dominated_by_p (CDI_DOMINATORS, bb, e->dest))
--- 868,874 ----
  		 TODO: with C++ forced progression we can still walk the
  		 irreducible region and see if it contains any side effects.
  		 Similarly for loops.  -ffinite-loops does not really imply
! 		 this since we allow inlining across -ffinite-loops boundary
  		 and thus it can be used only as a loop flag.  */
  	      if (e->dest->loop_father->header != e->dest
  		  || !dominated_by_p (CDI_DOMINATORS, bb, e->dest))
diff -Nrcpad gcc-17-20260524/gcc/ipa-utils.h gcc-17-20260531/gcc/ipa-utils.h
*** gcc-17-20260524/gcc/ipa-utils.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-utils.h	Sun May 31 22:32:06 2026
*************** type_with_linkage_p (const_tree t)
*** 220,226 ****
    if (!TYPE_NAME (t) || TREE_CODE (TYPE_NAME (t)) != TYPE_DECL)
      return false;
  
!   /* After free_lang_data was run we can recongize
       types with linkage by presence of mangled name.  */
    if (DECL_ASSEMBLER_NAME_SET_P (TYPE_NAME (t)))
      return true;
--- 220,226 ----
    if (!TYPE_NAME (t) || TREE_CODE (TYPE_NAME (t)) != TYPE_DECL)
      return false;
  
!   /* After free_lang_data was run we can recognize
       types with linkage by presence of mangled name.  */
    if (DECL_ASSEMBLER_NAME_SET_P (TYPE_NAME (t)))
      return true;
*************** get_odr_name_for_type (tree type)
*** 295,301 ****
  inline bool
  lto_streaming_expected_p ()
  {
!   /* Compilation before LTO stremaing.  */
    if (flag_lto && !in_lto_p && symtab->state < IPA_SSA_AFTER_INLINING)
      return true;
    /* WPA or incremental link.  */
--- 295,301 ----
  inline bool
  lto_streaming_expected_p ()
  {
!   /* Compilation before LTO streaming.  */
    if (flag_lto && !in_lto_p && symtab->state < IPA_SSA_AFTER_INLINING)
      return true;
    /* WPA or incremental link.  */
diff -Nrcpad gcc-17-20260524/gcc/ipa-visibility.cc gcc-17-20260531/gcc/ipa-visibility.cc
*** gcc-17-20260524/gcc/ipa-visibility.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa-visibility.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 51,64 ****
        Comdat group represent a section that may be replaced by linker by
        a different copy of the same section from other unit.
        If we have resolution information (from linker plugin) and we know that
!       a given comdat gorup is prevailing, we can dismantle it and turn symbols
        into normal symbols.  If the resolution information says that the
        section was previaled by copy from non-LTO code, we can also dismantle
        it and turn all symbols into external.
  
      - Local aliases:
  
!       Some symbols can be interposed by dynamic linker. Refering to these
        symbols is expensive, since it needs to be overwritable by the dynamic
        linker.  In some cases we know that the interposition does not change
        semantic and we can always refer to a local copy (as in the case of
--- 51,64 ----
        Comdat group represent a section that may be replaced by linker by
        a different copy of the same section from other unit.
        If we have resolution information (from linker plugin) and we know that
!       a given comdat group is prevailing, we can dismantle it and turn symbols
        into normal symbols.  If the resolution information says that the
        section was previaled by copy from non-LTO code, we can also dismantle
        it and turn all symbols into external.
  
      - Local aliases:
  
!       Some symbols can be interposed by dynamic linker. Referring to these
        symbols is expensive, since it needs to be overwritable by the dynamic
        linker.  In some cases we know that the interposition does not change
        semantic and we can always refer to a local copy (as in the case of
*************** varpool_node::externally_visible_p (void
*** 310,316 ****
    /* As a special case, the COMDAT virtual tables can be unshared.
       In LTO mode turn vtables into static variables.  The variable is readonly,
       so this does not enable more optimization, but referring static var
!      is faster for dynamic linking.  Also this match logic hidding vtables
       from LTO symbol tables.  */
    if (((in_lto_p || flag_whole_program) && !flag_incremental_link)
        && DECL_COMDAT (decl)
--- 310,316 ----
    /* As a special case, the COMDAT virtual tables can be unshared.
       In LTO mode turn vtables into static variables.  The variable is readonly,
       so this does not enable more optimization, but referring static var
!      is faster for dynamic linking.  Also this match logic hides vtables
       from LTO symbol tables.  */
    if (((in_lto_p || flag_whole_program) && !flag_incremental_link)
        && DECL_COMDAT (decl)
*************** varpool_node::externally_visible_p (void
*** 333,339 ****
       inline definitions.
  
       FIXME: We can do so for readonly vars with no address taken and
!      possibly also for vtables since no direct pointer comparsion is done.
       It might be interesting to do so to reduce linking overhead.  */
    if (DECL_COMDAT (decl) || DECL_WEAK (decl))
      return true;
--- 333,339 ----
       inline definitions.
  
       FIXME: We can do so for readonly vars with no address taken and
!      possibly also for vtables since no direct pointer comparison is done.
       It might be interesting to do so to reduce linking overhead.  */
    if (DECL_COMDAT (decl) || DECL_WEAK (decl))
      return true;
diff -Nrcpad gcc-17-20260524/gcc/ipa.cc gcc-17-20260531/gcc/ipa.cc
*** gcc-17-20260524/gcc/ipa.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ipa.cc	Sun May 31 22:32:06 2026
*************** update_inlined_to_pointer (struct cgraph
*** 84,90 ****
  
     The queue is linked via AUX pointers and terminated by pointer to 1.
     We enqueue nodes at two occasions: when we find them reachable or when we find
!    their bodies needed for further clonning.  In the second case we mark them
     by pointer to 2 after processing so they are re-queue when they become
     reachable.  */
  
--- 84,90 ----
  
     The queue is linked via AUX pointers and terminated by pointer to 1.
     We enqueue nodes at two occasions: when we find them reachable or when we find
!    their bodies needed for further cloning.  In the second case we mark them
     by pointer to 2 after processing so they are re-queue when they become
     reachable.  */
  
*************** enqueue_node (symtab_node *node, symtab_
*** 105,111 ****
  
  /* Return true if NODE may get inlined later.
     This is used to keep DECL_EXTERNAL function bodies around long enough
!    so inliner can proces them.  */
  
  static bool
  possible_inline_candidate_p (symtab_node *node)
--- 105,111 ----
  
  /* Return true if NODE may get inlined later.
     This is used to keep DECL_EXTERNAL function bodies around long enough
!    so inliner can process them.  */
  
  static bool
  possible_inline_candidate_p (symtab_node *node)
*************** process_references (symtab_node *snode,
*** 168,174 ****
     devirtualization happens.  After inlining still keep their declarations
     around, so we can devirtualize to a direct call.
  
!    Also try to make trivial devirutalization when no or only one target is
     possible.  */
  
  static void
--- 168,174 ----
     devirtualization happens.  After inlining still keep their declarations
     around, so we can devirtualize to a direct call.
  
!    Also try to make trivial devirtualization when no or only one target is
     possible.  */
  
  static void
*************** set_readonly_bit (varpool_node *vnode, v
*** 747,753 ****
    return false;
  }
  
! /* Set writeonly bit and clear the initalizer, since it will not be needed.  */
  
  bool
  set_writeonly_bit (varpool_node *vnode, void *data)
--- 747,753 ----
    return false;
  }
  
! /* Set writeonly bit and clear the initializer, since it will not be needed.  */
  
  bool
  set_writeonly_bit (varpool_node *vnode, void *data)
*************** clear_addressable_bit (varpool_node *vno
*** 784,790 ****
     FIXME: This cannot be done in between gimplify and omp_expand since
     readonly flag plays role on what is shared and what is not.  Currently we do
     this transformation as part of whole program visibility and re-do at
!    ipa-reference pass (to take into account clonning), but it would
     make sense to do it before early optimizations.  */
  
  bool
--- 784,790 ----
     FIXME: This cannot be done in between gimplify and omp_expand since
     readonly flag plays role on what is shared and what is not.  Currently we do
     this transformation as part of whole program visibility and re-do at
!    ipa-reference pass (to take into account cloning), but it would
     make sense to do it before early optimizations.  */
  
  bool
*************** make_pass_ipa_cdtor_merge (gcc::context
*** 1387,1393 ****
  #define BOTTOM ((cgraph_node *)(size_t) 2)
  
  /* Meet operation for single user dataflow.
!    Here we want to associate variables with sigle function that may access it.
  
     FUNCTION is current single user of a variable, VAR is variable that uses it.
     Latttice is stored in SINGLE_USER_MAP.
--- 1387,1393 ----
  #define BOTTOM ((cgraph_node *)(size_t) 2)
  
  /* Meet operation for single user dataflow.
!    Here we want to associate variables with single function that may access it.
  
     FUNCTION is current single user of a variable, VAR is variable that uses it.
     Latttice is stored in SINGLE_USER_MAP.
*************** propagate_single_user (varpool_node *vno
*** 1458,1464 ****
  
  /* Pass setting used_by_single_function flag.
     This flag is set on variable when there is only one function that may
!    possibly referr to it.  */
  
  static unsigned int
  ipa_single_use (void)
--- 1458,1464 ----
  
  /* Pass setting used_by_single_function flag.
     This flag is set on variable when there is only one function that may
!    possibly refer to it.  */
  
  static unsigned int
  ipa_single_use (void)
diff -Nrcpad gcc-17-20260524/gcc/ira-build.cc gcc-17-20260531/gcc/ira-build.cc
*** gcc-17-20260524/gcc/ira-build.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ira-build.cc	Sun May 31 22:32:06 2026
*************** create_insn_allocnos (rtx x, rtx outer,
*** 1854,1860 ****
  	    a = ira_create_allocno (regno, false, ira_curr_loop_tree_node);
  
  	  /* This used to only trigger at allocno creation which seems
! 	     wrong.  We care about the WMODE propery across all the uses.  */
  	  if (outer != NULL && GET_CODE (outer) == SUBREG)
  	    {
  	      machine_mode wmode = GET_MODE (outer);
--- 1854,1860 ----
  	    a = ira_create_allocno (regno, false, ira_curr_loop_tree_node);
  
  	  /* This used to only trigger at allocno creation which seems
! 	     wrong.  We care about the WMODE property across all the uses.  */
  	  if (outer != NULL && GET_CODE (outer) == SUBREG)
  	    {
  	      machine_mode wmode = GET_MODE (outer);
diff -Nrcpad gcc-17-20260524/gcc/ira-color.cc gcc-17-20260531/gcc/ira-color.cc
*** gcc-17-20260524/gcc/ira-color.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ira-color.cc	Sun May 31 22:32:06 2026
*************** ira_mark_new_stack_slot (rtx x, int regn
*** 5115,5121 ****
     given IN and OUT for INSN.  Return also number points (through
     EXCESS_PRESSURE_LIVE_LENGTH) where the pseudo-register lives and
     the register pressure is high, number of references of the
!    pseudo-registers (through NREFS), the number of psuedo registers
     whose allocated register wouldn't need saving in the prologue
     (through CALL_USED_COUNT), and the first hard regno occupied by the
     pseudo-registers (through FIRST_HARD_REGNO).  */
--- 5115,5121 ----
     given IN and OUT for INSN.  Return also number points (through
     EXCESS_PRESSURE_LIVE_LENGTH) where the pseudo-register lives and
     the register pressure is high, number of references of the
!    pseudo-registers (through NREFS), the number of pseudo registers
     whose allocated register wouldn't need saving in the prologue
     (through CALL_USED_COUNT), and the first hard regno occupied by the
     pseudo-registers (through FIRST_HARD_REGNO).  */
diff -Nrcpad gcc-17-20260524/gcc/ira-int.h gcc-17-20260531/gcc/ira-int.h
*** gcc-17-20260524/gcc/ira-int.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ira-int.h	Sun May 31 22:32:06 2026
*************** public:
*** 937,943 ****
    /* Flag of that the above array has been initialized.  */
    bool x_ira_prohibited_mode_move_regs_initialized_p;
  
!   /* Number of real occurences of hard regs before IRA.  */
    size_t x_ira_hard_regno_nrefs[FIRST_PSEUDO_REGISTER];
  };
  
--- 937,943 ----
    /* Flag of that the above array has been initialized.  */
    bool x_ira_prohibited_mode_move_regs_initialized_p;
  
!   /* Number of real occurrences of hard regs before IRA.  */
    size_t x_ira_hard_regno_nrefs[FIRST_PSEUDO_REGISTER];
  };
  
diff -Nrcpad gcc-17-20260524/gcc/ira.cc gcc-17-20260531/gcc/ira.cc
*** gcc-17-20260524/gcc/ira.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ira.cc	Sun May 31 22:32:06 2026
*************** struct sloc
*** 5384,5390 ****
  {
    rtx_insn *insn; /* Insn where the scratch was.  */
    int nop;  /* Number of the operand which was a scratch.  */
!   unsigned regno; /* regno gnerated instead of scratch */
    int icode;  /* Original icode from which scratch was removed.  */
  };
  
--- 5384,5390 ----
  {
    rtx_insn *insn; /* Insn where the scratch was.  */
    int nop;  /* Number of the operand which was a scratch.  */
!   unsigned regno; /* regno generated instead of scratch */
    int icode;  /* Original icode from which scratch was removed.  */
  };
  
diff -Nrcpad gcc-17-20260524/gcc/jit/ChangeLog gcc-17-20260531/gcc/jit/ChangeLog
*** gcc-17-20260524/gcc/jit/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,25 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* TODO.rst: Fix typos.
+ 	* docs/cp/intro/tutorial03.rst: Likewise.
+ 	* docs/cp/topics/functions.rst: Likewise.
+ 	* docs/cp/topics/types.rst: Likewise.
+ 	* docs/internals/index.rst: Likewise.
+ 	* docs/intro/tutorial02.rst: Likewise.
+ 	* docs/intro/tutorial03.rst: Likewise.
+ 	* docs/topics/compatibility.rst: Likewise.
+ 	* docs/topics/contexts.rst: Likewise.
+ 	* docs/topics/functions.rst: Likewise.
+ 	* docs/topics/performance.rst: Likewise.
+ 	* docs/topics/types.rst: Likewise.
+ 	* jit-builtins.cc (builtins_manager::make_type): Likewise.
+ 	* jit-playback.cc (make_fake_args): Likewise.
+ 	(get_source_file): Likewise.
+ 	(get_source_line): Likewise.
+ 	* jit-recording.h (types_kinda_same_internal): Likewise.
+ 	* libgccjit.cc (gcc_jit_context_new_struct_constructor): Likewise.
+ 	* libgccjit.h (gcc_jit_case_as_object): Likewise.
+ 
  2026-05-18  David Malcolm  <dmalcolm@redhat.com>
  
  	* docs/topics/contexts.rst
diff -Nrcpad gcc-17-20260524/gcc/jit/TODO.rst gcc-17-20260531/gcc/jit/TODO.rst
*** gcc-17-20260524/gcc/jit/TODO.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/TODO.rst	Sun May 31 22:32:06 2026
*************** API
*** 29,35 ****
  
      gcc_jit_function_as_rvalue ()
  
! * expressing branch probabilies (like __builtin_expect)::
  
      extern gcc_jit_rvalue *
      gcc_jit_rvalue_likely (gcc_jit_rvalue *rvalue,
--- 29,35 ----
  
      gcc_jit_function_as_rvalue ()
  
! * expressing branch probabilities (like __builtin_expect)::
  
      extern gcc_jit_rvalue *
      gcc_jit_rvalue_likely (gcc_jit_rvalue *rvalue,
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/cp/intro/tutorial03.rst gcc-17-20260531/gcc/jit/docs/cp/intro/tutorial03.rst
*** gcc-17-20260524/gcc/jit/docs/cp/intro/tutorial03.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/cp/intro/tutorial03.rst	Sun May 31 22:32:06 2026
*************** an assignment: a value that can be compu
*** 111,117 ****
  *to* a storage area (such as a variable).  It has a specific
  :type:`gccjit::type`.
  
! Anothe important class is :type:`gccjit::lvalue`.
  A :type:`gccjit::lvalue`. is something that can of the *left*-hand
  side of an assignment: a storage area (such as a variable).
  
--- 111,117 ----
  *to* a storage area (such as a variable).  It has a specific
  :type:`gccjit::type`.
  
! Another important class is :type:`gccjit::lvalue`.
  A :type:`gccjit::lvalue`. is something that can of the *left*-hand
  side of an assignment: a storage area (such as a variable).
  
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/cp/topics/functions.rst gcc-17-20260531/gcc/jit/docs/cp/topics/functions.rst
*** gcc-17-20260524/gcc/jit/docs/cp/topics/functions.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/cp/topics/functions.rst	Sun May 31 22:32:06 2026
*************** Statements
*** 272,278 ****
                                                std::vector <gccjit::case_> cases,\
                                                gccjit::location loc)
  
!    Terminate a block by adding evalation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
--- 272,278 ----
                                                std::vector <gccjit::case_> cases,\
                                                gccjit::location loc)
  
!    Terminate a block by adding evaluation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/cp/topics/types.rst gcc-17-20260531/gcc/jit/docs/cp/topics/types.rst
*** gcc-17-20260524/gcc/jit/docs/cp/topics/types.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/cp/topics/types.rst	Sun May 31 22:32:06 2026
*************** Structures and unions
*** 128,134 ****
  
  .. class:: gccjit::struct_
  
! A compound type analagous to a C `struct`.
  
  :class:`gccjit::struct_` is a subclass of :class:`gccjit::type` (and thus
  of :class:`gccjit::object` in turn).
--- 128,134 ----
  
  .. class:: gccjit::struct_
  
! A compound type analogous to a C `struct`.
  
  :class:`gccjit::struct_` is a subclass of :class:`gccjit::type` (and thus
  of :class:`gccjit::object` in turn).
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/internals/index.rst gcc-17-20260531/gcc/jit/docs/internals/index.rst
*** gcc-17-20260524/gcc/jit/docs/internals/index.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/internals/index.rst	Sun May 31 22:32:06 2026
*************** environment variables need to be set up:
*** 229,235 ****
  
  For example, to run a binary that uses the library against a non-installed
  build of the library in LIBGCCJIT_BUILD_DIR you need an invocation of the
! client code like this, to preprend the dir to each of the environment
  variables:
  
  .. code-block:: console
--- 229,235 ----
  
  For example, to run a binary that uses the library against a non-installed
  build of the library in LIBGCCJIT_BUILD_DIR you need an invocation of the
! client code like this, to prepend the dir to each of the environment
  variables:
  
  .. code-block:: console
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/intro/tutorial02.rst gcc-17-20260531/gcc/jit/docs/intro/tutorial02.rst
*** gcc-17-20260524/gcc/jit/docs/intro/tutorial02.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/intro/tutorial02.rst	Sun May 31 22:32:06 2026
*************** away with having a single error-handling
*** 260,266 ****
       }
  
  For more information, see the :ref:`error-handling guide <error-handling>`
! within the Topic eference.
  
  
  Options
--- 260,266 ----
       }
  
  For more information, see the :ref:`error-handling guide <error-handling>`
! within the Topic reference.
  
  
  Options
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/intro/tutorial03.rst gcc-17-20260531/gcc/jit/docs/intro/tutorial03.rst
*** gcc-17-20260524/gcc/jit/docs/intro/tutorial03.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/intro/tutorial03.rst	Sun May 31 22:32:06 2026
*************** an assignment: a value that can be compu
*** 104,110 ****
  *to* a storage area (such as a variable).  It has a specific
  :c:expr:`gcc_jit_type *`.
  
! Anothe important class is :c:expr:`gcc_jit_lvalue *`.
  A :c:expr:`gcc_jit_lvalue *`. is something that can of the *left*-hand
  side of an assignment: a storage area (such as a variable).
  
--- 104,110 ----
  *to* a storage area (such as a variable).  It has a specific
  :c:expr:`gcc_jit_type *`.
  
! Another important class is :c:expr:`gcc_jit_lvalue *`.
  A :c:expr:`gcc_jit_lvalue *`. is something that can of the *left*-hand
  side of an assignment: a storage area (such as a variable).
  
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/topics/compatibility.rst gcc-17-20260531/gcc/jit/docs/topics/compatibility.rst
*** gcc-17-20260524/gcc/jit/docs/topics/compatibility.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/topics/compatibility.rst	Sun May 31 22:32:06 2026
*************** libgccjit.h.
*** 30,36 ****
            locked-down at this time.
  
  API compatibility is achieved by extending the API rather than changing
! it.  For ABI compatiblity, we avoid bumping the SONAME, and instead use
  symbol versioning to tag each symbol, so that a binary linked against
  libgccjit.so is tagged according to the symbols that it uses.
  
--- 30,36 ----
            locked-down at this time.
  
  API compatibility is achieved by extending the API rather than changing
! it.  For ABI compatibility, we avoid bumping the SONAME, and instead use
  symbol versioning to tag each symbol, so that a binary linked against
  libgccjit.so is tagged according to the symbols that it uses.
  
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/topics/contexts.rst gcc-17-20260531/gcc/jit/docs/topics/contexts.rst
*** gcc-17-20260524/gcc/jit/docs/topics/contexts.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/topics/contexts.rst	Sun May 31 22:32:06 2026
*************** Debugging
*** 216,222 ****
  To contrast the above: :c:func:`gcc_jit_context_dump_to_file` dumps the
  current state of a context to the given path, whereas
  :c:func:`gcc_jit_context_set_logfile` enables on-going logging of
! future activies on a context to the given `FILE *`.
  
  
  .. function:: void\
--- 216,222 ----
  To contrast the above: :c:func:`gcc_jit_context_dump_to_file` dumps the
  current state of a context to the given path, whereas
  :c:func:`gcc_jit_context_set_logfile` enables on-going logging of
! future activities on a context to the given `FILE *`.
  
  
  .. function:: void\
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/topics/functions.rst gcc-17-20260531/gcc/jit/docs/topics/functions.rst
*** gcc-17-20260524/gcc/jit/docs/topics/functions.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/topics/functions.rst	Sun May 31 22:32:06 2026
*************** Statements
*** 502,508 ****
                                               int num_cases,\
                                               gcc_jit_case **cases)
  
!    Terminate a block by adding evalation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
--- 502,508 ----
                                               int num_cases,\
                                               gcc_jit_case **cases)
  
!    Terminate a block by adding evaluation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/topics/performance.rst gcc-17-20260531/gcc/jit/docs/topics/performance.rst
*** gcc-17-20260524/gcc/jit/docs/topics/performance.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/topics/performance.rst	Sun May 31 22:32:06 2026
*************** of "timer items": as control flow moves
*** 32,38 ****
  and pop named items relating to your code onto the stack, and the timer
  will account the time spent accordingly.
  
! You can also asssociate a timer with a :c:type:`gcc_jit_context`, in
  which case the time spent inside compilation will be subdivided.
  
  For example, the following code uses a timer, recording client items
--- 32,38 ----
  and pop named items relating to your code onto the stack, and the timer
  will account the time spent accordingly.
  
! You can also associate a timer with a :c:type:`gcc_jit_context`, in
  which case the time spent inside compilation will be subdivided.
  
  For example, the following code uses a timer, recording client items
diff -Nrcpad gcc-17-20260524/gcc/jit/docs/topics/types.rst gcc-17-20260531/gcc/jit/docs/topics/types.rst
*** gcc-17-20260524/gcc/jit/docs/topics/types.rst	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/docs/topics/types.rst	Sun May 31 22:32:06 2026
*************** Structures and unions
*** 257,263 ****
  
  .. c:type:: gcc_jit_struct
  
! A compound type analagous to a C `struct`.
  
  .. c:type:: gcc_jit_field
  
--- 257,263 ----
  
  .. c:type:: gcc_jit_struct
  
! A compound type analogous to a C `struct`.
  
  .. c:type:: gcc_jit_field
  
diff -Nrcpad gcc-17-20260524/gcc/jit/jit-builtins.cc gcc-17-20260531/gcc/jit/jit-builtins.cc
*** gcc-17-20260524/gcc/jit/jit-builtins.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/jit-builtins.cc	Sun May 31 22:32:06 2026
*************** builtins_manager::make_type (enum jit_bu
*** 347,353 ****
         - similarly for DEF_FUNCTION_TYPE_VAR_n, but setting the
  	"is_variadic" argument.
         - DEF_POINTER_TYPE is handled by make_ptr_type.
!      That should handle everything, but just in case we also suppy a
       gcc_unreachable default clause.  */
    switch (type_id)
      {
--- 347,353 ----
         - similarly for DEF_FUNCTION_TYPE_VAR_n, but setting the
  	"is_variadic" argument.
         - DEF_POINTER_TYPE is handled by make_ptr_type.
!      That should handle everything, but just in case we also supply a
       gcc_unreachable default clause.  */
    switch (type_id)
      {
diff -Nrcpad gcc-17-20260524/gcc/jit/jit-playback.cc gcc-17-20260531/gcc/jit/jit-playback.cc
*** gcc-17-20260524/gcc/jit/jit-playback.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/jit-playback.cc	Sun May 31 22:32:06 2026
*************** make_fake_args (vec <char *> *argvec,
*** 3262,3268 ****
       driver to expand ().
  
       For cc1 etc, the driver processes OPTION_DEFAULT_SPECS and,
!      if not overriden, injects the defaults as extra arguments to
       cc1 etc.
       For the jit case, we need to add these arguments here.  The
       input format (using the specs language) means that we have to run
--- 3262,3268 ----
       driver to expand ().
  
       For cc1 etc, the driver processes OPTION_DEFAULT_SPECS and,
!      if not overridden, injects the defaults as extra arguments to
       cc1 etc.
       For the jit case, we need to add these arguments here.  The
       input format (using the specs language) means that we have to run
*************** playback::context::
*** 4024,4030 ****
  get_source_file (const char *filename)
  {
    /* Locate the file.
!      For simplicitly, this is currently a linear search.
       Replace with a hash if this shows up in the profile.  */
    int i;
    source_file *file;
--- 4024,4030 ----
  get_source_file (const char *filename)
  {
    /* Locate the file.
!      For simplicity, this is currently a linear search.
       Replace with a hash if this shows up in the profile.  */
    int i;
    source_file *file;
*************** playback::source_file::
*** 4065,4071 ****
  get_source_line (int line_num)
  {
    /* Locate the line.
!      For simplicitly, this is currently a linear search.
       Replace with a hash if this shows up in the profile.  */
    int i;
    source_line *line;
--- 4065,4071 ----
  get_source_line (int line_num)
  {
    /* Locate the line.
!      For simplicity, this is currently a linear search.
       Replace with a hash if this shows up in the profile.  */
    int i;
    source_line *line;
diff -Nrcpad gcc-17-20260524/gcc/jit/jit-recording.h gcc-17-20260531/gcc/jit/jit-recording.h
*** gcc-17-20260524/gcc/jit/jit-recording.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/jit-recording.h	Sun May 31 22:32:06 2026
*************** types_kinda_same_internal (recording::ty
*** 2972,2978 ****
     if the types and pointer depth are the same, otherwise false.
  
     For array and vector types the number of element also
!    has to match, aswell as the element types themself.  */
  inline bool
  types_kinda_same (recording::type *a, recording::type *b)
  {
--- 2972,2978 ----
     if the types and pointer depth are the same, otherwise false.
  
     For array and vector types the number of element also
!    has to match, as well as the element types themself.  */
  inline bool
  types_kinda_same (recording::type *a, recording::type *b)
  {
diff -Nrcpad gcc-17-20260524/gcc/jit/libgccjit.cc gcc-17-20260531/gcc/jit/libgccjit.cc
*** gcc-17-20260524/gcc/jit/libgccjit.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/libgccjit.cc	Sun May 31 22:32:06 2026
*************** gcc_jit_context_new_struct_constructor (
*** 1502,1508 ****
  			       type->get_debug_string (),
  			       n_fields);
  
!   /* It is OK if fields are null here, indicating definiton order,
       but there has to be a values array.  */
    RETURN_NULL_IF_FAIL (values,
  		       ctxt, loc,
--- 1502,1508 ----
  			       type->get_debug_string (),
  			       n_fields);
  
!   /* It is OK if fields are null here, indicating definition order,
       but there has to be a values array.  */
    RETURN_NULL_IF_FAIL (values,
  		       ctxt, loc,
diff -Nrcpad gcc-17-20260524/gcc/jit/libgccjit.h gcc-17-20260531/gcc/jit/libgccjit.h
*** gcc-17-20260524/gcc/jit/libgccjit.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/jit/libgccjit.h	Sun May 31 22:32:06 2026
*************** gcc_jit_context_new_case (gcc_jit_contex
*** 1637,1643 ****
  extern gcc_jit_object *
  gcc_jit_case_as_object (gcc_jit_case *case_);
  
! /* Terminate a block by adding evalation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
--- 1637,1643 ----
  extern gcc_jit_object *
  gcc_jit_case_as_object (gcc_jit_case *case_);
  
! /* Terminate a block by adding evaluation of an rvalue, then performing
     a multiway branch.
  
     This is roughly equivalent to this C code:
diff -Nrcpad gcc-17-20260524/gcc/json-parsing.cc gcc-17-20260531/gcc/json-parsing.cc
*** gcc-17-20260524/gcc/json-parsing.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/json-parsing.cc	Sun May 31 22:32:06 2026
*************** parser::require_one_of (enum token_id to
*** 1330,1336 ****
    return result<enum token_id, std::unique_ptr<error>> (id);
  }
  
! /* Genarate a parsing error.  */
  
  std::unique_ptr<error>
  parser::error_at (const location_map::range &r, const char *fmt, ...)
--- 1330,1336 ----
    return result<enum token_id, std::unique_ptr<error>> (id);
  }
  
! /* Generate a parsing error.  */
  
  std::unique_ptr<error>
  parser::error_at (const location_map::range &r, const char *fmt, ...)
diff -Nrcpad gcc-17-20260524/gcc/langhooks.h gcc-17-20260531/gcc/langhooks.h
*** gcc-17-20260524/gcc/langhooks.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/langhooks.h	Sun May 31 22:32:06 2026
*************** struct lang_hooks_for_decls
*** 254,260 ****
  
    /* Check whether this DECL belongs to a Fortran optional argument.
       With 'for_present_check' set to false, decls which are optional parameters
!      themselve are returned as tree - or a NULL_TREE otherwise. Those decls are
       always pointers.  With 'for_present_check' set to true, the decl for
       checking whether an argument is present is returned; for arguments with
       value attribute this is the hidden argument and of BOOLEAN_TYPE.  If the
--- 254,260 ----
  
    /* Check whether this DECL belongs to a Fortran optional argument.
       With 'for_present_check' set to false, decls which are optional parameters
!      themselves are returned as tree - or a NULL_TREE otherwise. Those decls are
       always pointers.  With 'for_present_check' set to true, the decl for
       checking whether an argument is present is returned; for arguments with
       value attribute this is the hidden argument and of BOOLEAN_TYPE.  If the
diff -Nrcpad gcc-17-20260524/gcc/libgdiagnostics.cc gcc-17-20260531/gcc/libgdiagnostics.cc
*** gcc-17-20260524/gcc/libgdiagnostics.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/libgdiagnostics.cc	Sun May 31 22:32:06 2026
*************** public:
*** 553,559 ****
      diagnostic_initialize (&m_dc, 0);
      m_dc.remove_all_output_sinks ();
  
!     /* Get defaults from environemt.  These might be
         overridden by individual sinks.  */
      diagnostic_color_init (&m_dc, DIAGNOSTICS_COLOR_AUTO);
      diagnostic_urls_init (&m_dc);
--- 553,559 ----
      diagnostic_initialize (&m_dc, 0);
      m_dc.remove_all_output_sinks ();
  
!     /* Get defaults from environment.  These might be
         overridden by individual sinks.  */
      diagnostic_color_init (&m_dc, DIAGNOSTICS_COLOR_AUTO);
      diagnostic_urls_init (&m_dc);
diff -Nrcpad gcc-17-20260524/gcc/libgdiagnostics.h gcc-17-20260531/gcc/libgdiagnostics.h
*** gcc-17-20260524/gcc/libgdiagnostics.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/libgdiagnostics.h	Sun May 31 22:32:06 2026
*************** diagnostic_manager_write_patch (diagnost
*** 386,392 ****
     If SARIF_SOURCE_LANGUAGE is non-NULL, it specifies a "sourceLanguage"
     value for the file when use when writing SARIF.
     See SARIF v2.1.0 Appendix J for suggested values for various
!    programmming languages.  */
  
  extern diagnostic_file *
  diagnostic_manager_new_file (diagnostic_manager *diag_mgr,
--- 386,392 ----
     If SARIF_SOURCE_LANGUAGE is non-NULL, it specifies a "sourceLanguage"
     value for the file when use when writing SARIF.
     See SARIF v2.1.0 Appendix J for suggested values for various
!    programming languages.  */
  
  extern diagnostic_file *
  diagnostic_manager_new_file (diagnostic_manager *diag_mgr,
diff -Nrcpad gcc-17-20260524/gcc/loop-invariant.cc gcc-17-20260531/gcc/loop-invariant.cc
*** gcc-17-20260524/gcc/loop-invariant.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/loop-invariant.cc	Sun May 31 22:32:06 2026
*************** canonicalize_address_mult (rtx x)
*** 802,808 ****
  
  #define MAX_CANON_ADDR_PARTS (5)
  
! /* Collect sub expressions in address X with PLUS as the seperator.
     Sub expressions are stored in vector ADDR_PARTS.  */
  
  static void
--- 802,808 ----
  
  #define MAX_CANON_ADDR_PARTS (5)
  
! /* Collect sub expressions in address X with PLUS as the separator.
     Sub expressions are stored in vector ADDR_PARTS.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/lra-assigns.cc gcc-17-20260531/gcc/lra-assigns.cc
*** gcc-17-20260524/gcc/lra-assigns.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lra-assigns.cc	Sun May 31 22:32:06 2026
*************** reload_pseudo_compare_func (const void *
*** 224,230 ****
    if ((diff = regno_assign_info[r1].first - regno_assign_info[r2].first) != 0)
      return diff;
    /* Prefer pseudos with longer live ranges.  It sets up better
!      prefered hard registers for the thread pseudos and decreases
       register-register moves between the thread pseudos.  */
    if ((diff = regno_live_length[r2] - regno_live_length[r1]) != 0)
      return diff;
--- 224,230 ----
    if ((diff = regno_assign_info[r1].first - regno_assign_info[r2].first) != 0)
      return diff;
    /* Prefer pseudos with longer live ranges.  It sets up better
!      preferred hard registers for the thread pseudos and decreases
       register-register moves between the thread pseudos.  */
    if ((diff = regno_live_length[r2] - regno_live_length[r1]) != 0)
      return diff;
diff -Nrcpad gcc-17-20260524/gcc/lra-constraints.cc gcc-17-20260531/gcc/lra-constraints.cc
*** gcc-17-20260524/gcc/lra-constraints.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lra-constraints.cc	Sun May 31 22:32:06 2026
*************** match_reload (signed char out, signed ch
*** 1140,1149 ****
  		   4. asm ("" : "=r" (subreg:si(t:di,4)) : "0" (t:di))
  		   5. i:si = subreg:si(t:di,4);
  		 If we assign hard reg of x to t, dead code elimination
! 		 will remove insn #2 and we will use unitialized hard reg.
  		 So exclude the hard reg of x for t.  We could ignore this
  		 problem for non-empty asm using all x value but it is hard to
! 		 check that the asm are expanded into insn realy using x
  		 and setting r.  */
  	      CLEAR_HARD_REG_SET (temp_hard_reg_set);
  	      if (exclude_start_hard_regs != NULL)
--- 1140,1149 ----
  		   4. asm ("" : "=r" (subreg:si(t:di,4)) : "0" (t:di))
  		   5. i:si = subreg:si(t:di,4);
  		 If we assign hard reg of x to t, dead code elimination
! 		 will remove insn #2 and we will use uninitialized hard reg.
  		 So exclude the hard reg of x for t.  We could ignore this
  		 problem for non-empty asm using all x value but it is hard to
! 		 check that the asm are expanded into insn really using x
  		 and setting r.  */
  	      CLEAR_HARD_REG_SET (temp_hard_reg_set);
  	      if (exclude_start_hard_regs != NULL)
*************** process_alt_operands (int only_alternati
*** 2310,2316 ****
  		     ->operand_alternative[nalt * n_operands + nop].reject);
  	  if (lra_dump_file != NULL && inc != 0)
  	    fprintf (lra_dump_file,
! 		     "            Staticly defined alt reject+=%d\n", inc);
  	  static_reject += inc;
  	  matching_early_clobber[nop] = 0;
  	}
--- 2310,2316 ----
  		     ->operand_alternative[nalt * n_operands + nop].reject);
  	  if (lra_dump_file != NULL && inc != 0)
  	    fprintf (lra_dump_file,
! 		     "            Statically defined alt reject+=%d\n", inc);
  	  static_reject += inc;
  	  matching_early_clobber[nop] = 0;
  	}
*************** process_alt_operands (int only_alternati
*** 2820,2826 ****
  		  else
  		    {
  		      /* Prefer won reg to spilled pseudo under other
! 			 equal conditions for possibe inheritance.  */
  		      if (! scratch_p)
  			{
  			  if (lra_dump_file != NULL)
--- 2820,2826 ----
  		  else
  		    {
  		      /* Prefer won reg to spilled pseudo under other
! 			 equal conditions for possible inheritance.  */
  		      if (! scratch_p)
  			{
  			  if (lra_dump_file != NULL)
*************** process_alt_operands (int only_alternati
*** 3148,3154 ****
  		      if (lra_dump_file != NULL)
  			fprintf
  			  (lra_dump_file,
! 			   "            %d Non-prefered reload: reject+=%d\n",
  			   nop, LRA_MAX_REJECT);
  		      reject += LRA_MAX_REJECT;
  		    }
--- 3148,3154 ----
  		      if (lra_dump_file != NULL)
  			fprintf
  			  (lra_dump_file,
! 			   "            %d Non-preferred reload: reject+=%d\n",
  			   nop, LRA_MAX_REJECT);
  		      reject += LRA_MAX_REJECT;
  		    }
*************** process_address_1 (int nop, bool check_o
*** 4147,4153 ****
        Index part of address may become invalid.  For example, we
        changed pseudo on the equivalent memory and a subreg of the
        pseudo onto the memory of different mode for which the scale is
!       prohibitted.  */
        new_reg = index_part_to_reg (&ad, index_cl);
        *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg),
  				       *ad.base_term, new_reg);
--- 4147,4153 ----
        Index part of address may become invalid.  For example, we
        changed pseudo on the equivalent memory and a subreg of the
        pseudo onto the memory of different mode for which the scale is
!       prohibited.  */
        new_reg = index_part_to_reg (&ad, index_cl);
        *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg),
  				       *ad.base_term, new_reg);
*************** lra_constraints (bool first_p)
*** 5581,5587 ****
      check_and_force_assignment_correctness_p = true;
    new_insn_uid_start = get_max_uid ();
    new_regno_start = first_p ? lra_constraint_new_regno_start : max_reg_num ();
!   /* Mark used hard regs for target stack size calulations.  */
    for (i = FIRST_PSEUDO_REGISTER; i < new_regno_start; i++)
      if (lra_reg_info[i].nrefs != 0
  	&& (hard_regno = lra_get_regno_hard_regno (i)) >= 0)
--- 5581,5587 ----
      check_and_force_assignment_correctness_p = true;
    new_insn_uid_start = get_max_uid ();
    new_regno_start = first_p ? lra_constraint_new_regno_start : max_reg_num ();
!   /* Mark used hard regs for target stack size calculations.  */
    for (i = FIRST_PSEUDO_REGISTER; i < new_regno_start; i++)
      if (lra_reg_info[i].nrefs != 0
  	&& (hard_regno = lra_get_regno_hard_regno (i)) >= 0)
*************** inherit_in_ebb (rtx_insn *head, rtx_insn
*** 7479,7485 ****
  	  || BLOCK_FOR_INSN (prev_insn) != curr_bb)
  	{
  	  /* We reached the beginning of the current block -- do
! 	     rest of spliting in the current BB.  */
  	  to_process = df_get_live_in (curr_bb);
  	  if (BLOCK_FOR_INSN (head) != curr_bb)
  	    {
--- 7479,7485 ----
  	  || BLOCK_FOR_INSN (prev_insn) != curr_bb)
  	{
  	  /* We reached the beginning of the current block -- do
! 	     rest of splitting in the current BB.  */
  	  to_process = df_get_live_in (curr_bb);
  	  if (BLOCK_FOR_INSN (head) != curr_bb)
  	    {
diff -Nrcpad gcc-17-20260524/gcc/lra-eliminations.cc gcc-17-20260531/gcc/lra-eliminations.cc
*** gcc-17-20260524/gcc/lra-eliminations.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lra-eliminations.cc	Sun May 31 22:32:06 2026
*************** init_elim_table (void)
*** 1327,1333 ****
  
    /* Build the FROM and TO REG rtx's.  Note that code in gen_rtx_REG
       will cause, e.g., gen_rtx_REG (Pmode, STACK_POINTER_REGNUM) to
!      equal stack_pointer_rtx.  We depend on this. Threfore we switch
       off that we are in LRA temporarily.  */
    lra_in_progress = false;
    for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
--- 1327,1333 ----
  
    /* Build the FROM and TO REG rtx's.  Note that code in gen_rtx_REG
       will cause, e.g., gen_rtx_REG (Pmode, STACK_POINTER_REGNUM) to
!      equal stack_pointer_rtx.  We depend on this. Therefore we switch
       off that we are in LRA temporarily.  */
    lra_in_progress = false;
    for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
diff -Nrcpad gcc-17-20260524/gcc/lra-remat.cc gcc-17-20260531/gcc/lra-remat.cc
*** gcc-17-20260524/gcc/lra-remat.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lra-remat.cc	Sun May 31 22:32:06 2026
*************** typedef struct cand *cand_t;
*** 80,86 ****
  typedef const struct cand *const_cand_t;
  
  /* Insn candidates for rematerialization.  The candidate insn should
!    have the following properies:
     o no any memory (as access to memory is non-profitable) or
       div/mod operations (as they are usually more expensive than loads)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
--- 80,86 ----
  typedef const struct cand *const_cand_t;
  
  /* Insn candidates for rematerialization.  The candidate insn should
!    have the following properties:
     o no any memory (as access to memory is non-profitable) or
       div/mod operations (as they are usually more expensive than loads)
     o no INOUT regs (it means no non-paradoxical subreg of output reg)
*************** public:
*** 131,137 ****
    /* Registers becoming dead in the BB.  */
    bitmap_head dead_regs;
    /* Cands present in the BB whose in/out regs are not changed after
!      the cands occurence and are not dead (except the reload
       regno).  */
    bitmap_head gen_cands;
    bitmap_head livein_cands; /* cands whose inputs live at the BB start.  */
--- 131,137 ----
    /* Registers becoming dead in the BB.  */
    bitmap_head dead_regs;
    /* Cands present in the BB whose in/out regs are not changed after
!      the cands occurrence and are not dead (except the reload
       regno).  */
    bitmap_head gen_cands;
    bitmap_head livein_cands; /* cands whose inputs live at the BB start.  */
diff -Nrcpad gcc-17-20260524/gcc/lto/ChangeLog gcc-17-20260531/gcc/lto/ChangeLog
*** gcc-17-20260524/gcc/lto/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* Make-lang.in: Fix typos.
+ 	* lto-common.cc (read_cgraph_and_symbols): Likewise.
+ 	* lto-lang.cc (lto_post_options): Likewise.
+ 	* lto-partition.cc (add_symbol_to_partition_1): Likewise.
+ 	(partition_over_target_split): Likewise.
+ 	(lto_balanced_map): Likewise.
+ 	(rename_statics): Likewise.
+ 	* lto-symtab.cc (lto_cgraph_replace_node): Likewise.
+ 	(lto_varpool_replace_node): Likewise.
+ 	(lto_symtab_merge_symbols): Likewise.
+ 	* lto.cc (stream_out_partitions): Likewise.
+ 	(do_whole_program_analysis): Likewise.
+ 
  2026-04-22  Sam James  <sam@gentoo.org>
  
  	* lto-symtab.cc (lto_varpool_replace_node): Fix spelling of 'warning'.
diff -Nrcpad gcc-17-20260524/gcc/lto/Make-lang.in gcc-17-20260531/gcc/lto/Make-lang.in
*** gcc-17-20260524/gcc/lto/Make-lang.in	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/Make-lang.in	Sun May 31 22:32:06 2026
***************
*** 23,29 ****
  LTO_EXE = lto1$(exeext)
  LTO_DUMP_EXE = lto-dump$(exeext)
  LTO_DUMP_INSTALL_NAME := $(shell echo lto-dump|sed '$(program_transform_name)')
! # The LTO-specific object files inclued in $(LTO_EXE).
  LTO_OBJS = lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-common.o
  lto_OBJS = $(LTO_OBJS)
  lto_FDAS = lto1.fda
--- 23,29 ----
  LTO_EXE = lto1$(exeext)
  LTO_DUMP_EXE = lto-dump$(exeext)
  LTO_DUMP_INSTALL_NAME := $(shell echo lto-dump|sed '$(program_transform_name)')
! # The LTO-specific object files included in $(LTO_EXE).
  LTO_OBJS = lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-common.o
  lto_OBJS = $(LTO_OBJS)
  lto_FDAS = lto1.fda
diff -Nrcpad gcc-17-20260524/gcc/lto/lto-common.cc gcc-17-20260531/gcc/lto/lto-common.cc
*** gcc-17-20260524/gcc/lto/lto-common.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/lto-common.cc	Sun May 31 22:32:06 2026
*************** unify_scc (class data_in *data_in, unsig
*** 1819,1825 ****
  typedef int_hash<unsigned, 0, UINT_MAX> code_id_hash;
  
  /* Do registering necessary once new tree fully streamed in (including all
!    trees it reffers to).  */
  
  static void
  process_new_tree (tree t, hash_map <code_id_hash, unsigned> *hm,
--- 1819,1825 ----
  typedef int_hash<unsigned, 0, UINT_MAX> code_id_hash;
  
  /* Do registering necessary once new tree fully streamed in (including all
!    trees it refers to).  */
  
  static void
  process_new_tree (tree t, hash_map <code_id_hash, unsigned> *hm,
*************** static lto_file *current_lto_file;
*** 2549,2555 ****
        } \
    } while (0)
  
! /* Ensure that TT isn't a replacable var of function decl.  */
  #define LTO_NO_PREVAIL(tt) \
    gcc_checking_assert (!(tt) || !VAR_OR_FUNCTION_DECL_P (tt))
  
--- 2549,2555 ----
        } \
    } while (0)
  
! /* Ensure that TT isn't a replaceable var of function decl.  */
  #define LTO_NO_PREVAIL(tt) \
    gcc_checking_assert (!(tt) || !VAR_OR_FUNCTION_DECL_P (tt))
  
*************** read_cgraph_and_symbols (unsigned nfiles
*** 2870,2876 ****
    canonical_type_hash_cache = NULL;
  
    /* At this stage we know that majority of GGC memory is reachable.
!      Growing the limits prevents unnecesary invocation of GGC.  */
    ggc_grow ();
    report_heap_memory_use ();
  
--- 2870,2876 ----
    canonical_type_hash_cache = NULL;
  
    /* At this stage we know that majority of GGC memory is reachable.
!      Growing the limits prevents unnecessary invocation of GGC.  */
    ggc_grow ();
    report_heap_memory_use ();
  
*************** read_cgraph_and_symbols (unsigned nfiles
*** 2953,2959 ****
  
    /* During WPA we want to prevent ggc collecting by default.  Grow limits
       until after the IPA summaries are streamed in.  Basically all IPA memory
!      is explcitly managed by ggc_free and ggc collect is not useful.
       Exception are the merged declarations.  */
    ggc_grow ();
    report_heap_memory_use ();
--- 2953,2959 ----
  
    /* During WPA we want to prevent ggc collecting by default.  Grow limits
       until after the IPA summaries are streamed in.  Basically all IPA memory
!      is explicitly managed by ggc_free and ggc collect is not useful.
       Exception are the merged declarations.  */
    ggc_grow ();
    report_heap_memory_use ();
diff -Nrcpad gcc-17-20260524/gcc/lto/lto-lang.cc gcc-17-20260531/gcc/lto/lto-lang.cc
*** gcc-17-20260524/gcc/lto/lto-lang.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/lto-lang.cc	Sun May 31 22:32:06 2026
*************** lto_post_options (const char **pfilename
*** 932,938 ****
        break;
  
      case LTO_LINKER_OUTPUT_DYN: /* .so: PID library */
!       /* On some targets, like i386 it makes sense to build PIC library wihout
  	 -fpic for performance reasons.  So no need to adjust flags.  */
        break;
  
--- 932,938 ----
        break;
  
      case LTO_LINKER_OUTPUT_DYN: /* .so: PID library */
!       /* On some targets, like i386 it makes sense to build PIC library without
  	 -fpic for performance reasons.  So no need to adjust flags.  */
        break;
  
*************** lto_post_options (const char **pfilename
*** 959,965 ****
    if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
      flag_excess_precision = EXCESS_PRECISION_FAST;
  
!   /* When partitioning, we can tear appart STRING_CSTs uses from the same
       TU into multiple partitions.  Without constant merging the constants
       might not be equal at runtime.  See PR50199.  */
    if (!flag_merge_constants)
--- 959,965 ----
    if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
      flag_excess_precision = EXCESS_PRECISION_FAST;
  
!   /* When partitioning, we can tear apart STRING_CSTs uses from the same
       TU into multiple partitions.  Without constant merging the constants
       might not be equal at runtime.  See PR50199.  */
    if (!flag_merge_constants)
diff -Nrcpad gcc-17-20260524/gcc/lto/lto-partition.cc gcc-17-20260531/gcc/lto/lto-partition.cc
*** gcc-17-20260524/gcc/lto/lto-partition.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/lto-partition.cc	Sun May 31 22:32:06 2026
*************** add_symbol_to_partition_1 (ltrans_partit
*** 238,244 ****
  	  }
        }
  
!   /* Ensure that SAME_COMDAT_GROUP lists all allways added in a group.  */
    if (node->same_comdat_group)
      for (node1 = node->same_comdat_group;
  	 node1 != node; node1 = node1->same_comdat_group)
--- 238,244 ----
  	  }
        }
  
!   /* Ensure that SAME_COMDAT_GROUP lists all always added in a group.  */
    if (node->same_comdat_group)
      for (node1 = node->same_comdat_group;
  	 node1 != node; node1 = node1->same_comdat_group)
*************** partition_over_target_split (partition_s
*** 836,842 ****
    if (small.sym_groups.size ())
      {
        /* Handles special case where n_partitions might be smaller than
! 	 all.size ().  Which can happen as result of interger division or with
  	 0 sized partition_sets.  Then also prevents too small symbol group.
  	 This should also be a special case; more common one,
  	 but with no correctness problems.  */
--- 836,842 ----
    if (small.sym_groups.size ())
      {
        /* Handles special case where n_partitions might be smaller than
! 	 all.size ().  Which can happen as result of integer division or with
  	 0 sized partition_sets.  Then also prevents too small symbol group.
  	 This should also be a special case; more common one,
  	 but with no correctness problems.  */
*************** lto_balanced_map (int n_lto_partitions,
*** 1236,1242 ****
    /* Streaming works best when the source units do not cross partition
       boundaries much.  This is because importing function from a source
       unit tends to import a lot of global trees defined there.  We should
!      get better about minimizing the function bounday, but until that
       things works smoother if we order in source order.  */
    order.qsort (tp_first_run_node_cmp);
    noreorder.qsort (node_cmp);
--- 1236,1242 ----
    /* Streaming works best when the source units do not cross partition
       boundaries much.  This is because importing function from a source
       unit tends to import a lot of global trees defined there.  We should
!      get better about minimizing the function boundary, but until that
       things works smoother if we order in source order.  */
    order.qsort (tp_first_run_node_cmp);
    noreorder.qsort (node_cmp);
*************** lto_balanced_map (int n_lto_partitions,
*** 1543,1549 ****
  
    next_nodes.truncate (0);
  
!   /* Varables that are not reachable from the code go into last partition.  */
    FOR_EACH_VARIABLE (vnode)
      if (vnode->get_partitioning_class () == SYMBOL_PARTITION
  	&& !symbol_partitioned_p (vnode))
--- 1543,1549 ----
  
    next_nodes.truncate (0);
  
!   /* Variables that are not reachable from the code go into last partition.  */
    FOR_EACH_VARIABLE (vnode)
      if (vnode->get_partitioning_class () == SYMBOL_PARTITION
  	&& !symbol_partitioned_p (vnode))
*************** rename_statics (lto_symtab_encoder_t enc
*** 1956,1962 ****
  	    || lto_symtab_encoder_lookup (encoder, s) != LCC_NOT_FOUND))
         break;
  
!   /* OK, no confict, so we have nothing to do.  */
    if (!s)
      return;
  
--- 1956,1962 ----
  	    || lto_symtab_encoder_lookup (encoder, s) != LCC_NOT_FOUND))
         break;
  
!   /* OK, no conflict, so we have nothing to do.  */
    if (!s)
      return;
  
diff -Nrcpad gcc-17-20260524/gcc/lto/lto-symtab.cc gcc-17-20260531/gcc/lto/lto-symtab.cc
*** gcc-17-20260524/gcc/lto/lto-symtab.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/lto-symtab.cc	Sun May 31 22:32:06 2026
*************** lto_cgraph_replace_node (struct cgraph_n
*** 99,105 ****
  	  e->call_stmt_cannot_inline_p = 1;
  	}
      }
!   /* Redirect incomming references.  */
    prevailing_node->clone_referring (node);
    lto_free_function_in_decl_state_for_node (node);
  
--- 99,105 ----
  	  e->call_stmt_cannot_inline_p = 1;
  	}
      }
!   /* Redirect incoming references.  */
    prevailing_node->clone_referring (node);
    lto_free_function_in_decl_state_for_node (node);
  
*************** lto_varpool_replace_node (varpool_node *
*** 200,206 ****
     -fno-strict-aliasing which may be tough of as a feature rather than bug
     as it allows to implement dodgy tricks in the language runtimes.
  
!    Naturally this code can be strenghtened significantly if we could track
     down the language of origin.  */
  
  static int
--- 200,206 ----
     -fno-strict-aliasing which may be tough of as a feature rather than bug
     as it allows to implement dodgy tricks in the language runtimes.
  
!    Naturally this code can be strengthened significantly if we could track
     down the language of origin.  */
  
  static int
*************** lto_symtab_merge_symbols (void)
*** 987,993 ****
  
        /* Do the actual merging.
  	 At this point we invalidate hash translating decls into symtab nodes
! 	 because after removing one of duplicate decls the hash is not correcly
  	 updated to the other duplicate.  */
        FOR_EACH_SYMBOL (node)
  	if (lto_symtab_symbol_p (node)
--- 987,993 ----
  
        /* Do the actual merging.
  	 At this point we invalidate hash translating decls into symtab nodes
! 	 because after removing one of duplicate decls the hash is not correctly
  	 updated to the other duplicate.  */
        FOR_EACH_SYMBOL (node)
  	if (lto_symtab_symbol_p (node)
*************** lto_symtab_merge_symbols (void)
*** 1089,1095 ****
     devirtualization.
     For this reason it is important to merge even virtual tables that have no
     associated symbol table entries.  Without doing so we lose optimization
!    oppurtunities by losing track of the vtable constructor.
     FIXME: we probably ought to introduce explicit symbol table entries for
     those before streaming.  */
  
--- 1089,1095 ----
     devirtualization.
     For this reason it is important to merge even virtual tables that have no
     associated symbol table entries.  Without doing so we lose optimization
!    opportunities by losing track of the vtable constructor.
     FIXME: we probably ought to introduce explicit symbol table entries for
     those before streaming.  */
  
diff -Nrcpad gcc-17-20260524/gcc/lto/lto.cc gcc-17-20260531/gcc/lto/lto.cc
*** gcc-17-20260524/gcc/lto/lto.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto/lto.cc	Sun May 31 22:32:06 2026
*************** stream_out_partitions (char *temp_filena
*** 265,271 ****
  	      wait_for_child ();
  	    else
  	      {
! 		/* There are no free tokens, lets do the job outselves.  */
  		stream_out_partitions_1 (temp_filename, blen, min, max);
  		return;
  	      }
--- 265,271 ----
  	      wait_for_child ();
  	    else
  	      {
! 		/* There are no free tokens, lets do the job ourselves.  */
  		stream_out_partitions_1 (temp_filename, blen, min, max);
  		return;
  	      }
*************** do_whole_program_analysis (void)
*** 589,595 ****
  
    /* Collect a last time - in lto_wpa_write_files we may end up forking
       with the idea that this doesn't increase memory usage.  So we
!      absoultely do not want to collect after that.  */
    ggc_collect ();
  
    timevar_start (TV_PHASE_STREAM_OUT);
--- 589,595 ----
  
    /* Collect a last time - in lto_wpa_write_files we may end up forking
       with the idea that this doesn't increase memory usage.  So we
!      absolutely do not want to collect after that.  */
    ggc_collect ();
  
    timevar_start (TV_PHASE_STREAM_OUT);
diff -Nrcpad gcc-17-20260524/gcc/lto-cgraph.cc gcc-17-20260531/gcc/lto-cgraph.cc
*** gcc-17-20260524/gcc/lto-cgraph.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-cgraph.cc	Sun May 31 22:32:06 2026
*************** get_alias_symbol (tree decl)
*** 1318,1324 ****
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwriten.  */
  
  static struct cgraph_node *
  input_node (struct lto_file_decl_data *file_data,
--- 1318,1324 ----
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwritten.  */
  
  static struct cgraph_node *
  input_node (struct lto_file_decl_data *file_data,
*************** input_node (struct lto_file_decl_data *f
*** 1433,1439 ****
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwriten.  */
  
  static varpool_node *
  input_varpool_node (struct lto_file_decl_data *file_data,
--- 1433,1439 ----
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwritten.  */
  
  static varpool_node *
  input_varpool_node (struct lto_file_decl_data *file_data,
*************** input_varpool_node (struct lto_file_decl
*** 1513,1519 ****
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwriten.  */
  
  static void
  input_ref (class lto_input_block *ib,
--- 1513,1519 ----
  }
  
  /* Read a node from input_block IB.  TAG is the node's tag just read.
!    Return the node read or overwritten.  */
  
  static void
  input_ref (class lto_input_block *ib,
diff -Nrcpad gcc-17-20260524/gcc/lto-ltrans-cache.cc gcc-17-20260531/gcc/lto-ltrans-cache.cc
*** gcc-17-20260524/gcc/lto-ltrans-cache.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-ltrans-cache.cc	Sun May 31 22:32:06 2026
*************** fail_mmap:
*** 138,144 ****
    return ret;
  }
  
! /* Contructor of cache item.  */
  ltrans_file_cache::item::item (std::string input, std::string output,
  			       checksum_t input_checksum,
  			       uint32_t last_used):
--- 138,144 ----
    return ret;
  }
  
! /* Constructor of cache item.  */
  ltrans_file_cache::item::item (std::string input, std::string output,
  			       checksum_t input_checksum,
  			       uint32_t last_used):
diff -Nrcpad gcc-17-20260524/gcc/lto-streamer-in.cc gcc-17-20260531/gcc/lto-streamer-in.cc
*** gcc-17-20260524/gcc/lto-streamer-in.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-streamer-in.cc	Sun May 31 22:32:06 2026
*************** lto_location_cache::revert_location_cach
*** 508,514 ****
  /* Read a location bitpack from bit pack BP and either update *LOC directly
     or add it to the location cache.  If IB is non-NULL, stream in a block
     afterwards.
!    It is neccesary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_location_cache::input_location_and_block (location_t *loc,
--- 508,514 ----
  /* Read a location bitpack from bit pack BP and either update *LOC directly
     or add it to the location cache.  If IB is non-NULL, stream in a block
     afterwards.
!    It is necessary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_location_cache::input_location_and_block (location_t *loc,
*************** lto_location_cache::input_location_and_b
*** 611,617 ****
  
  /* Read a location bitpack from bit pack BP and either update *LOC directly
     or add it to the location cache.
!    It is neccesary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_location_cache::input_location (location_t *loc, struct bitpack_d *bp,
--- 611,617 ----
  
  /* Read a location bitpack from bit pack BP and either update *LOC directly
     or add it to the location cache.
!    It is necessary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_location_cache::input_location (location_t *loc, struct bitpack_d *bp,
*************** lto_location_cache::input_location (loca
*** 622,628 ****
  
  /* Read a location bitpack from input block IB and either update *LOC directly
     or add it to the location cache.
!    It is neccesary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_input_location (location_t *loc, struct bitpack_d *bp,
--- 622,628 ----
  
  /* Read a location bitpack from input block IB and either update *LOC directly
     or add it to the location cache.
!    It is necessary to call apply_location_cache to get *LOC updated.  */
  
  void
  lto_input_location (location_t *loc, struct bitpack_d *bp,
*************** lto_input_location (location_t *loc, str
*** 634,640 ****
  /* Read a reference to a tree node from DATA_IN using input block IB.
     TAG is the expected node that should be found in IB, if TAG belongs
     to one of the indexable trees, expect to read a reference index to
!    be looked up in one of the symbol tables, otherwise read the pysical
     representation of the tree using stream_read_tree.  FN is the
     function scope for the read tree.  */
  
--- 634,640 ----
  /* Read a reference to a tree node from DATA_IN using input block IB.
     TAG is the expected node that should be found in IB, if TAG belongs
     to one of the indexable trees, expect to read a reference index to
!    be looked up in one of the symbol tables, otherwise read the physical
     representation of the tree using stream_read_tree.  FN is the
     function scope for the read tree.  */
  
diff -Nrcpad gcc-17-20260524/gcc/lto-streamer-out.cc gcc-17-20260531/gcc/lto-streamer-out.cc
*** gcc-17-20260524/gcc/lto-streamer-out.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-streamer-out.cc	Sun May 31 22:32:06 2026
*************** lto_variably_modified_type_p (tree type)
*** 140,146 ****
  
  
  /* Return true if tree node T is written to various tables.  For these
!    nodes, we sometimes want to write their phyiscal representation
     (via lto_output_tree), and sometimes we need to emit an index
     reference into a table (via lto_output_tree_ref).  */
  
--- 140,146 ----
  
  
  /* Return true if tree node T is written to various tables.  For these
!    nodes, we sometimes want to write their physical representation
     (via lto_output_tree), and sometimes we need to emit an index
     reference into a table (via lto_output_tree_ref).  */
  
*************** lto_is_streamable (tree expr)
*** 391,397 ****
  /* Very rough estimate of streaming size of the initializer.  If we ignored
     presence of strings, we could simply just count number of non-indexable
     tree nodes and number of references to indexable nodes.  Strings however
!    may be very large and we do not want to dump them int othe global stream.
  
     Count the size of initializer until the size in DATA is positive.  */
  
--- 391,397 ----
  /* Very rough estimate of streaming size of the initializer.  If we ignored
     presence of strings, we could simply just count number of non-indexable
     tree nodes and number of references to indexable nodes.  Strings however
!    may be very large and we do not want to dump them into the global stream.
  
     Count the size of initializer until the size in DATA is positive.  */
  
*************** DFS::DFS (struct output_block *ob, tree
*** 789,795 ****
  
  	  /* As a special case do not stream TRANSLATION_UNIT_DECL as shared
  	     tree.  We can not mark it local because references to it does not
! 	     make other trees local (all global decls reffer to it via
  	     CONTEXT).  */
  	  if (size == 1
  	      && TREE_CODE (sccstack[first].t) == TRANSLATION_UNIT_DECL)
--- 789,795 ----
  
  	  /* As a special case do not stream TRANSLATION_UNIT_DECL as shared
  	     tree.  We can not mark it local because references to it does not
! 	     make other trees local (all global decls refer to it via
  	     CONTEXT).  */
  	  if (size == 1
  	      && TREE_CODE (sccstack[first].t) == TRANSLATION_UNIT_DECL)
*************** cmp_symbol_files (const void *pn1, const
*** 2759,2765 ****
    if (n1->lto_file_data && n1->lto_file_data->id != n2->lto_file_data->id)
      return *id_map->get (n1->lto_file_data) - *id_map->get (n2->lto_file_data);
  
!   /* And finaly order by the definition order.  */
    return n1->order - n2->order;
  }
  
--- 2759,2765 ----
    if (n1->lto_file_data && n1->lto_file_data->id != n2->lto_file_data->id)
      return *id_map->get (n1->lto_file_data) - *id_map->get (n2->lto_file_data);
  
!   /* And finally order by the definition order.  */
    return n1->order - n2->order;
  }
  
*************** lto_output (void)
*** 2895,2901 ****
  	  && (gimple_has_body_p (cnode->decl)
  	      || (!flag_wpa
  		  && flag_incremental_link != INCREMENTAL_LINK_LTO)
! 	      /* Thunks have no body but they may be synthetized
  		 at WPA time.  */
  	      || DECL_ARGUMENTS (cnode->decl)))
  	output_function (cnode, output_order);
--- 2895,2901 ----
  	  && (gimple_has_body_p (cnode->decl)
  	      || (!flag_wpa
  		  && flag_incremental_link != INCREMENTAL_LINK_LTO)
! 	      /* Thunks have no body but they may be synthesized
  		 at WPA time.  */
  	      || DECL_ARGUMENTS (cnode->decl)))
  	output_function (cnode, output_order);
diff -Nrcpad gcc-17-20260524/gcc/lto-streamer.h gcc-17-20260531/gcc/lto-streamer.h
*** gcc-17-20260524/gcc/lto-streamer.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-streamer.h	Sun May 31 22:32:06 2026
*************** enum LTO_tags
*** 160,166 ****
    /* Tags of trees are encoded as
       LTO_first_tree_tag + TREE_CODE.  */
    LTO_first_tree_tag,
!   /* Tags of gimple typles are encoded as
       LTO_first_gimple_tag + gimple_code.  */
    LTO_first_gimple_tag = LTO_first_tree_tag + MAX_TREE_CODES,
  
--- 160,166 ----
    /* Tags of trees are encoded as
       LTO_first_tree_tag + TREE_CODE.  */
    LTO_first_tree_tag,
!   /* Tags of gimple tuples are encoded as
       LTO_first_gimple_tag + gimple_code.  */
    LTO_first_gimple_tag = LTO_first_tree_tag + MAX_TREE_CODES,
  
*************** public:
*** 268,276 ****
    /* Apply all changes in location cache.  Add locations into linemap and patch
       trees.  */
    bool apply_location_cache ();
!   /* Tree merging did not suceed; mark all changes in the cache as accepted.  */
    void accept_location_cache ();
!   /* Tree merging did suceed; throw away recent changes.  */
    void revert_location_cache ();
    void input_location (location_t *loc, struct bitpack_d *bp,
  		       class data_in *data_in);
--- 268,277 ----
    /* Apply all changes in location cache.  Add locations into linemap and patch
       trees.  */
    bool apply_location_cache ();
!   /* Tree merging did not succeed; mark all changes in the cache as
!      accepted.  */
    void accept_location_cache ();
!   /* Tree merging did succeed; throw away recent changes.  */
    void revert_location_cache ();
    void input_location (location_t *loc, struct bitpack_d *bp,
  		       class data_in *data_in);
diff -Nrcpad gcc-17-20260524/gcc/lto-wrapper.cc gcc-17-20260531/gcc/lto-wrapper.cc
*** gcc-17-20260524/gcc/lto-wrapper.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/lto-wrapper.cc	Sun May 31 22:32:06 2026
*************** merge_flto_options (vec<cl_decoded_optio
*** 257,263 ****
  }
  
  /* Try to merge and complain about options FDECODED_OPTIONS when applied
!    ontop of DECODED_OPTIONS.  */
  
  static void
  merge_and_complain (vec<cl_decoded_option> &decoded_options,
--- 257,263 ----
  }
  
  /* Try to merge and complain about options FDECODED_OPTIONS when applied
!    on top of DECODED_OPTIONS.  */
  
  static void
  merge_and_complain (vec<cl_decoded_option> &decoded_options,
*************** run_gcc (unsigned argc, char *argv[])
*** 1535,1541 ****
        close (fd);
      }
  
!   /* Initalize the common arguments for the driver.  */
    obstack_init (&argv_obstack);
    obstack_ptr_grow (&argv_obstack, collect_gcc);
    obstack_ptr_grow (&argv_obstack, "-xlto");
--- 1535,1541 ----
        close (fd);
      }
  
!   /* Initialize the common arguments for the driver.  */
    obstack_init (&argv_obstack);
    obstack_ptr_grow (&argv_obstack, collect_gcc);
    obstack_ptr_grow (&argv_obstack, "-xlto");
diff -Nrcpad gcc-17-20260524/gcc/machmode.h gcc-17-20260531/gcc/machmode.h
*** gcc-17-20260524/gcc/machmode.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/machmode.h	Sun May 31 22:32:06 2026
*************** HWI_COMPUTABLE_MODE_P (scalar_int_mode m
*** 1024,1030 ****
  }
  
  struct int_n_data_t {
!   /* These parts are initailized by genmodes output */
    unsigned int bitsize;
    scalar_int_mode_pod m;
    /* RID_* is RID_INTN_BASE + index into this array */
--- 1024,1030 ----
  }
  
  struct int_n_data_t {
!   /* These parts are initialized by genmodes output */
    unsigned int bitsize;
    scalar_int_mode_pod m;
    /* RID_* is RID_INTN_BASE + index into this array */
diff -Nrcpad gcc-17-20260524/gcc/match.pd gcc-17-20260531/gcc/match.pd
*** gcc-17-20260524/gcc/match.pd	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/match.pd	Sun May 31 22:32:06 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 7817,7824 ****
  
      /* For eq/ne with narrowing conversion:
         (T)(X) == (T)(Y) -> (T)(X ^ Y) == 0  */
!     (if (TYPE_PRECISION (TREE_TYPE (@0))
!          < TYPE_PRECISION (TREE_TYPE (@00))
           && (cmp == EQ_EXPR || cmp == NE_EXPR)
           && types_match (TREE_TYPE (@00),
                           TREE_TYPE (@10)))
--- 7817,7825 ----
  
      /* For eq/ne with narrowing conversion:
         (T)(X) == (T)(Y) -> (T)(X ^ Y) == 0  */
!     (if (INTEGRAL_TYPE_P (TREE_TYPE (@00))
! 	 && (TYPE_PRECISION (TREE_TYPE (@0))
!              < TYPE_PRECISION (TREE_TYPE (@00)))
           && (cmp == EQ_EXPR || cmp == NE_EXPR)
           && types_match (TREE_TYPE (@00),
                           TREE_TYPE (@10)))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10252,10258 ****
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (TREE_CODE (type0) == BITINT_TYPE)
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_CTZ;
--- 10253,10259 ----
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (BITINT_TYPE_P (type0))
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_CTZ;
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10392,10398 ****
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (TREE_CODE (type0) == BITINT_TYPE)
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_POPCOUNT;
--- 10393,10399 ----
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (BITINT_TYPE_P (type0))
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_POPCOUNT;
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10424,10429 ****
--- 10425,10440 ----
        (BUILT_IN_POPCOUNT (convert:type0 @0))
        (if (cfn == CFN_BUILT_IN_POPCOUNTLL)
         (BUILT_IN_POPCOUNTLL (convert:type0 @0))))))))
+ 
+ /* popcount (X ^ (X - 1)) is the same as ffs(x) when x is nonzero, and
+    using ctz+1 will generate better code.  */
+ (simplify
+  (POPCOUNT (bit_xor:c tree_expr_nonzero_p@0 (plus @0 integer_minus_onep)))
+  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
+       && direct_internal_fn_supported_p (IFN_CTZ, TREE_TYPE (@0),
+ 					 OPTIMIZE_FOR_SPEED))
+   (with { tree utype = unsigned_type_for (TREE_TYPE (@0)); }
+    (plus (CTZ:type (convert:utype @0)) { build_one_cst (type); }))))
  #endif
  
  /* PARITY simplifications.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10484,10490 ****
  		- TYPE_PRECISION (TREE_TYPE (@0))) & 1) == 0))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (TREE_CODE (type0) == BITINT_TYPE)
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_PARITY;
--- 10495,10501 ----
  		- TYPE_PRECISION (TREE_TYPE (@0))) & 1) == 0))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (BITINT_TYPE_P (type0))
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_PARITY;
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10540,10546 ****
    (cond (ne @0 integer_zerop@1) (func (convert?@3 @0)) INTEGER_CST@2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (TREE_CODE (TREE_TYPE (@3)) == BITINT_TYPE)
  	    {
  	      if (tree_fits_shwi_p (@2))
  		{
--- 10551,10557 ----
    (cond (ne @0 integer_zerop@1) (func (convert?@3 @0)) INTEGER_CST@2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (BITINT_TYPE_P (TREE_TYPE (@3)))
  	    {
  	      if (tree_fits_shwi_p (@2))
  		{
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10564,10570 ****
   (cond (ne @0 integer_zerop@1) (IFN_CLZ (convert?@3 @0) INTEGER_CST@2) @2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (TREE_CODE (TREE_TYPE (@3)) == BITINT_TYPE)
  	    ifn = IFN_CLZ;
  	  else if (direct_internal_fn_supported_p (IFN_CLZ, TREE_TYPE (@3),
  						   OPTIMIZE_FOR_BOTH))
--- 10575,10581 ----
   (cond (ne @0 integer_zerop@1) (IFN_CLZ (convert?@3 @0) INTEGER_CST@2) @2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (BITINT_TYPE_P (TREE_TYPE (@3)))
  	    ifn = IFN_CLZ;
  	  else if (direct_internal_fn_supported_p (IFN_CLZ, TREE_TYPE (@3),
  						   OPTIMIZE_FOR_BOTH))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10579,10585 ****
    (cond (ne @0 integer_zerop@1) (func (convert?@3 @0)) INTEGER_CST@2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (TREE_CODE (TREE_TYPE (@3)) == BITINT_TYPE)
  	    {
  	      if (tree_fits_shwi_p (@2))
  		{
--- 10590,10596 ----
    (cond (ne @0 integer_zerop@1) (func (convert?@3 @0)) INTEGER_CST@2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (BITINT_TYPE_P (TREE_TYPE (@3)))
  	    {
  	      if (tree_fits_shwi_p (@2))
  		{
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10603,10609 ****
   (cond (ne @0 integer_zerop@1) (IFN_CTZ (convert?@3 @0) INTEGER_CST@2) @2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (TREE_CODE (TREE_TYPE (@3)) == BITINT_TYPE)
  	    ifn = IFN_CTZ;
  	  else if (direct_internal_fn_supported_p (IFN_CTZ, TREE_TYPE (@3),
  						   OPTIMIZE_FOR_BOTH))
--- 10614,10620 ----
   (cond (ne @0 integer_zerop@1) (IFN_CTZ (convert?@3 @0) INTEGER_CST@2) @2)
    (with { int val;
  	  internal_fn ifn = IFN_LAST;
! 	  if (BITINT_TYPE_P (TREE_TYPE (@3)))
  	    ifn = IFN_CTZ;
  	  else if (direct_internal_fn_supported_p (IFN_CTZ, TREE_TYPE (@3),
  						   OPTIMIZE_FOR_BOTH))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10941,10947 ****
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (TREE_CODE (type0) == BITINT_TYPE)
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_FFS;
--- 10952,10958 ----
         && TYPE_PRECISION (TREE_TYPE (@1)) > TYPE_PRECISION (TREE_TYPE (@0)))
     (with { combined_fn cfn = CFN_LAST;
  	   tree type0 = TREE_TYPE (@0);
! 	   if (BITINT_TYPE_P (type0))
  	     {
  	       if (TYPE_PRECISION (type0) > MAX_FIXED_MODE_SIZE)
  		 cfn = CFN_FFS;
diff -Nrcpad gcc-17-20260524/gcc/mem-stats.h gcc-17-20260531/gcc/mem-stats.h
*** gcc-17-20260524/gcc/mem-stats.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/mem-stats.h	Sun May 31 22:32:06 2026
*************** public:
*** 113,119 ****
  
    /* File name of source code.  */
    const char *m_filename;
!   /* Funcation name.  */
    const char *m_function;
    /* Line number in source code.  */
    int m_line;
--- 113,119 ----
  
    /* File name of source code.  */
    const char *m_filename;
!   /* Function name.  */
    const char *m_function;
    /* Line number in source code.  */
    int m_line;
*************** public:
*** 259,265 ****
    size_t m_instances;
  };
  
! /* Memory usage pair that connectes memory usage and number
     of allocated bytes.  */
  template <class T>
  class mem_usage_pair
--- 259,265 ----
    size_t m_instances;
  };
  
! /* Memory usage pair that connects memory usage and number
     of allocated bytes.  */
  template <class T>
  class mem_usage_pair
*************** public:
*** 306,312 ****
    typedef hash_map <const void *, std::pair<T *, size_t> > reverse_object_map_t;
    typedef std::pair <mem_location *, T *> mem_list_t;
  
!   /* Default contructor.  */
    mem_alloc_description ();
  
    /* Default destructor.  */
--- 306,312 ----
    typedef hash_map <const void *, std::pair<T *, size_t> > reverse_object_map_t;
    typedef std::pair <mem_location *, T *> mem_list_t;
  
!   /* Default constructor.  */
    mem_alloc_description ();
  
    /* Default destructor.  */
*************** public:
*** 323,329 ****
    T *register_descriptor (const void *ptr, mem_location *location);
  
    /* Register memory allocation descriptor for container PTR.  ORIGIN identifies
!      type of container and GGC identifes if the allocation is handled in GGC
       memory.  Each location is identified by file NAME, LINE in source code and
       FUNCTION name.  */
    T *register_descriptor (const void *ptr, mem_alloc_origin origin,
--- 323,329 ----
    T *register_descriptor (const void *ptr, mem_location *location);
  
    /* Register memory allocation descriptor for container PTR.  ORIGIN identifies
!      type of container and GGC identifies if the allocation is handled in GGC
       memory.  Each location is identified by file NAME, LINE in source code and
       FUNCTION name.  */
    T *register_descriptor (const void *ptr, mem_alloc_origin origin,
*************** mem_alloc_description<T>::register_descr
*** 434,440 ****
  }
  
  /* Register memory allocation descriptor for container PTR.  ORIGIN identifies
!    type of container and GGC identifes if the allocation is handled in GGC
     memory.  Each location is identified by file NAME, LINE in source code and
     FUNCTION name.  */
  
--- 434,440 ----
  }
  
  /* Register memory allocation descriptor for container PTR.  ORIGIN identifies
!    type of container and GGC identifies if the allocation is handled in GGC
     memory.  Each location is identified by file NAME, LINE in source code and
     FUNCTION name.  */
  
*************** mem_alloc_description<T>::unregister_des
*** 550,556 ****
    m_reverse_map->remove (ptr);
  }
  
! /* Default contructor.  */
  
  template <class T>
  inline
--- 550,556 ----
    m_reverse_map->remove (ptr);
  }
  
! /* Default constructor.  */
  
  template <class T>
  inline
diff -Nrcpad gcc-17-20260524/gcc/mode-switching.cc gcc-17-20260531/gcc/mode-switching.cc
*** gcc-17-20260524/gcc/mode-switching.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/mode-switching.cc	Sun May 31 22:32:06 2026
*************** optimize_mode_switching (void)
*** 1156,1162 ****
  	      return no_mode;
  	    };
  
! 	  /* intialize mode in/out availability for bb.  */
  	  if (!targetm.mode_switching.confluence)
  	    {
  	      info[bb->index].mode_out = modes_confluence (avout);
--- 1156,1162 ----
  	      return no_mode;
  	    };
  
! 	  /* initialize mode in/out availability for bb.  */
  	  if (!targetm.mode_switching.confluence)
  	    {
  	      info[bb->index].mode_out = modes_confluence (avout);
diff -Nrcpad gcc-17-20260524/gcc/modulo-sched.cc gcc-17-20260531/gcc/modulo-sched.cc
*** gcc-17-20260524/gcc/modulo-sched.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/modulo-sched.cc	Sun May 31 22:32:06 2026
*************** schedule_reg_moves (partial_schedule_ptr
*** 733,739 ****
  		gcc_assert (set);
  		/* If the instruction contains auto-inc register then
  		   validate that the regmov is being generated for the
! 		   target regsiter rather then the inc'ed register.	*/
  		gcc_assert (!autoinc_var_is_used_p (u->insn, e->dest->insn));
  	      }
  
--- 733,739 ----
  		gcc_assert (set);
  		/* If the instruction contains auto-inc register then
  		   validate that the regmov is being generated for the
! 		   target register rather then the inc'ed register.	*/
  		gcc_assert (!autoinc_var_is_used_p (u->insn, e->dest->insn));
  	      }
  
*************** optimize_sc (partial_schedule_ptr ps, dd
*** 1066,1072 ****
  
  	  /* The branch was failed to be placed in row ii - 1.
  	     Put it back in it's original place in the partial
! 	     schedualing.  */
  	  set_must_precede_follow (&tmp_follow, must_follow, &tmp_precede,
  				   must_precede, branch_cycle, start, end,
  				   step);
--- 1066,1072 ----
  
  	  /* The branch was failed to be placed in row ii - 1.
  	     Put it back in it's original place in the partial
! 	     scheduling.  */
  	  set_must_precede_follow (&tmp_follow, must_follow, &tmp_precede,
  				   must_precede, branch_cycle, start, end,
  				   step);
diff -Nrcpad gcc-17-20260524/gcc/objc/ChangeLog gcc-17-20260531/gcc/objc/ChangeLog
*** gcc-17-20260524/gcc/objc/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/objc/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* objc-act.cc (objc_compare_types): Fix typos.
+ 	(objc_decl_method_attributes): Likewise.
+ 	(build_fast_enumeration_state_template): Likewise.
+ 	(objc_finish_foreach_loop): Likewise.
+ 	* objc-act.h (objc_common_register_features): Likewise.
+ 	* objc-runtime-hooks.h (struct objc_runtime_hooks): Likewise.
+ 
  2025-06-12  Jakub Jelinek  <jakub@redhat.com>
  
  	* objc-act.h (TYPE_OBJC_INFO): Define to info.objc_info
diff -Nrcpad gcc-17-20260524/gcc/objc/objc-act.cc gcc-17-20260531/gcc/objc/objc-act.cc
*** gcc-17-20260524/gcc/objc/objc-act.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/objc/objc-act.cc	Sun May 31 22:32:06 2026
*************** objc_compare_types (tree ltyp, tree rtyp
*** 2572,2578 ****
  	  ltyp = function_args_iter_cond (&liter);
  	  rtyp = function_args_iter_cond (&riter);
  
! 	  /* If we've exhaused both lists simulateously, we're done.  */
  	  if (ltyp == NULL_TREE && rtyp == NULL_TREE)
  	    break;
  
--- 2572,2578 ----
  	  ltyp = function_args_iter_cond (&liter);
  	  rtyp = function_args_iter_cond (&riter);
  
! 	  /* If we've exhausted both lists simulateously, we're done.  */
  	  if (ltyp == NULL_TREE && rtyp == NULL_TREE)
  	    break;
  
*************** objc_decl_method_attributes (tree *node,
*** 5096,5102 ****
  	    {
  	      /* We need to fixup all the argument indexes by adding 2
  		 for the two hidden arguments of an Objective-C method
! 		 invocation, similat to what we do above for the
  		 "format" attribute.  */
  	      /* FIXME: This works great in terms of implementing the
  		 functionality, but the warnings that are produced by
--- 5096,5102 ----
  	    {
  	      /* We need to fixup all the argument indexes by adding 2
  		 for the two hidden arguments of an Objective-C method
! 		 invocation, similar to what we do above for the
  		 "format" attribute.  */
  	      /* FIXME: This works great in terms of implementing the
  		 functionality, but the warnings that are produced by
*************** build_fast_enumeration_state_template (v
*** 9843,9849 ****
              next_object:
  	    if (__objc_foreach_mutation_pointer != *__objc_foreach_enum_state.mutationsPtr) objc_enumeration_mutation (<collection expression>);
  	    <object expression> = enumState.itemsPtr[__objc_foreach_index];
! 	    <statements> [PS: inside <statments>, 'break' jumps to break_label and 'continue' jumps to continue_label]
  
              continue_label:
              __objc_foreach_index++;
--- 9843,9849 ----
              next_object:
  	    if (__objc_foreach_mutation_pointer != *__objc_foreach_enum_state.mutationsPtr) objc_enumeration_mutation (<collection expression>);
  	    <object expression> = enumState.itemsPtr[__objc_foreach_index];
! 	    <statements> [PS: inside <statements>, 'break' jumps to break_label and 'continue' jumps to continue_label]
  
              continue_label:
              __objc_foreach_index++;
*************** objc_finish_foreach_loop (location_t loc
*** 10181,10187 ****
    SET_EXPR_LOCATION (t, location);
    append_to_statement_list (t, &BIND_EXPR_BODY (next_batch_bind));
  
!   /* <statements> [PS: in <statments>, 'break' jumps to break_label and 'continue' jumps to continue_label] */
    append_to_statement_list (for_body, &BIND_EXPR_BODY (next_batch_bind));
  
    /* continue_label: */
--- 10181,10187 ----
    SET_EXPR_LOCATION (t, location);
    append_to_statement_list (t, &BIND_EXPR_BODY (next_batch_bind));
  
!   /* <statements> [PS: in <statements>, 'break' jumps to break_label and 'continue' jumps to continue_label] */
    append_to_statement_list (for_body, &BIND_EXPR_BODY (next_batch_bind));
  
    /* continue_label: */
diff -Nrcpad gcc-17-20260524/gcc/objc/objc-act.h gcc-17-20260531/gcc/objc/objc-act.h
*** gcc-17-20260524/gcc/objc/objc-act.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/objc/objc-act.h	Sun May 31 22:32:06 2026
*************** void objc_common_register_features ();
*** 67,73 ****
    (INSTANCE_METHOD_OR_CLASS_METHOD_DECL_CHECK (DECL)->decl_common.size_unit)
  
  
! /* PROPERTY_DECL.  A PROPERTY_DECL repesents a @property declaration
     (when attached to the list of properties of an interface) or a
     @synthesize or @dynamic declaration (when attached to the list of
     properties of an implementation).  */
--- 67,73 ----
    (INSTANCE_METHOD_OR_CLASS_METHOD_DECL_CHECK (DECL)->decl_common.size_unit)
  
  
! /* PROPERTY_DECL.  A PROPERTY_DECL represents a @property declaration
     (when attached to the list of properties of an interface) or a
     @synthesize or @dynamic declaration (when attached to the list of
     properties of an implementation).  */
diff -Nrcpad gcc-17-20260524/gcc/objc/objc-runtime-hooks.h gcc-17-20260531/gcc/objc/objc-runtime-hooks.h
*** gcc-17-20260524/gcc/objc/objc-runtime-hooks.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/objc/objc-runtime-hooks.h	Sun May 31 22:32:06 2026
*************** struct objc_runtime_hooks
*** 82,88 ****
    /* Check for or otherwise handle a request to check that the constant
       string class reference is set-up & OK.  */
    bool (*setup_const_string_class_decl) (void);
!   /* Return the tree reprenting a const string constructor for the arg.
       Most of the data are in global trees.  */
    tree (*build_const_string_constructor) (location_t, tree, int);
  
--- 82,88 ----
    /* Check for or otherwise handle a request to check that the constant
       string class reference is set-up & OK.  */
    bool (*setup_const_string_class_decl) (void);
!   /* Return the tree representing a const string constructor for the arg.
       Most of the data are in global trees.  */
    tree (*build_const_string_constructor) (location_t, tree, int);
  
diff -Nrcpad gcc-17-20260524/gcc/omp-expand.cc gcc-17-20260531/gcc/omp-expand.cc
*** gcc-17-20260524/gcc/omp-expand.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/omp-expand.cc	Sun May 31 22:32:06 2026
*************** expand_oacc_collapse_vars (const struct
*** 1798,1804 ****
     store number of iterations of the loops from fd->first_nonrect
     to fd->last_nonrect inclusive, i.e. the above COUNT multiplied
     by the counts of rectangular loops not referenced in any non-rectangular
!    loops sandwitched in between those.  */
  
  /* NOTE: It *could* be better to moosh all of the BBs together,
     creating one larger BB with all the computation and the unexpected
--- 1798,1804 ----
     store number of iterations of the loops from fd->first_nonrect
     to fd->last_nonrect inclusive, i.e. the above COUNT multiplied
     by the counts of rectangular loops not referenced in any non-rectangular
!    loops sandwiched in between those.  */
  
  /* NOTE: It *could* be better to moosh all of the BBs together,
     creating one larger BB with all the computation and the unexpected
*************** expand_omp_for_init_vars (struct omp_for
*** 2811,2817 ****
  	    }
  	  /* Fallback implementation.  Evaluate the loops in between
  	     (inclusive) fd->first_nonrect and fd->last_nonrect at
! 	     runtime unsing temporaries instead of the original iteration
  	     variables, in the body just bump the counter and compare
  	     with the desired value.  */
  	  gimple_stmt_iterator gsi2 = *gsi;
--- 2811,2817 ----
  	    }
  	  /* Fallback implementation.  Evaluate the loops in between
  	     (inclusive) fd->first_nonrect and fd->last_nonrect at
! 	     runtime using temporaries instead of the original iteration
  	     variables, in the body just bump the counter and compare
  	     with the desired value.  */
  	  gimple_stmt_iterator gsi2 = *gsi;
*************** expand_omp_for (struct omp_region *regio
*** 8253,8259 ****
        FALLTHRU_EDGE (region->cont)->flags &= ~EDGE_ABNORMAL;
      }
    else
!     /* If there isn't a continue then this is a degerate case where
         the introduction of abnormal edges during lowering will prevent
         original loops from being detected.  Fix that up.  */
      loops_state_set (LOOPS_NEED_FIXUP);
--- 8253,8259 ----
        FALLTHRU_EDGE (region->cont)->flags &= ~EDGE_ABNORMAL;
      }
    else
!     /* If there isn't a continue then this is a degenerate case where
         the introduction of abnormal edges during lowering will prevent
         original loops from being detected.  Fix that up.  */
      loops_state_set (LOOPS_NEED_FIXUP);
*************** expand_omp_atomic_fetch_op (basic_block
*** 9035,9041 ****
  
    /* We could test all of the various optabs involved, but the fact of the
       matter is that (with the exception of i486 vs i586 and xadd) all targets
!      that support any atomic operaton optab also implements compare-and-swap.
       Let optabs.cc take care of expanding any compare-and-swap loop.  */
    if (!can_compare_and_swap_p (imode, true) || !can_atomic_load_p (imode))
      return false;
--- 9035,9041 ----
  
    /* We could test all of the various optabs involved, but the fact of the
       matter is that (with the exception of i486 vs i586 and xadd) all targets
!      that support any atomic operation optab also implements compare-and-swap.
       Let optabs.cc take care of expanding any compare-and-swap loop.  */
    if (!can_compare_and_swap_p (imode, true) || !can_atomic_load_p (imode))
      return false;
*************** build_omp_regions_1 (basic_block bb, str
*** 10863,10869 ****
  	    region = NULL;
  	  else if (code == GIMPLE_OMP_TASKGROUP)
  	    /* #pragma omp taskgroup isn't a stand-alone directive, but
! 	       gimplifier put the end API call into try finall block
  	       for it, so omp expansion can treat it as such.  */
  	    region = NULL;
  	  /* ..., this directive becomes the parent for a new region.  */
--- 10863,10869 ----
  	    region = NULL;
  	  else if (code == GIMPLE_OMP_TASKGROUP)
  	    /* #pragma omp taskgroup isn't a stand-alone directive, but
! 	       gimplifier put the end API call into try finally block
  	       for it, so omp expansion can treat it as such.  */
  	    region = NULL;
  	  /* ..., this directive becomes the parent for a new region.  */
diff -Nrcpad gcc-17-20260524/gcc/omp-general.cc gcc-17-20260531/gcc/omp-general.cc
*** gcc-17-20260524/gcc/omp-general.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/omp-general.cc	Sun May 31 22:32:06 2026
*************** omp_is_allocatable_or_ptr (tree decl)
*** 68,74 ****
  
  /* Check whether this DECL belongs to a Fortran optional argument.
     With 'for_present_check' set to false, decls which are optional parameters
!    themselve are returned as tree - or a NULL_TREE otherwise. Those decls are
     always pointers.  With 'for_present_check' set to true, the decl for checking
     whether an argument is present is returned; for arguments with value
     attribute this is the hidden argument and of BOOLEAN_TYPE.  If the decl is
--- 68,74 ----
  
  /* Check whether this DECL belongs to a Fortran optional argument.
     With 'for_present_check' set to false, decls which are optional parameters
!    themselves are returned as tree - or a NULL_TREE otherwise. Those decls are
     always pointers.  With 'for_present_check' set to true, the decl for checking
     whether an argument is present is returned; for arguments with value
     attribute this is the hidden argument and of BOOLEAN_TYPE.  If the decl is
*************** omp_check_for_duplicate_variant (locatio
*** 1562,1568 ****
  	  error_at (loc,
  		    "multiple definitions of variants with the same "
  		    "context selector violate the one-definition rule");
! 	  inform (DECL_SOURCE_LOCATION (TREE_PURPOSE (attr)),
  		  "previous variant declaration here");
  	  return false;
  	}
--- 1562,1568 ----
  	  error_at (loc,
  		    "multiple definitions of variants with the same "
  		    "context selector violate the one-definition rule");
! 	  inform (DECL_SOURCE_LOCATION (TREE_PURPOSE (TREE_VALUE (attr))),
  		  "previous variant declaration here");
  	  return false;
  	}
diff -Nrcpad gcc-17-20260524/gcc/omp-low.cc gcc-17-20260531/gcc/omp-low.cc
*** gcc-17-20260524/gcc/omp-low.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/omp-low.cc	Sun May 31 22:32:06 2026
*************** lower_rec_input_clauses (tree clauses, g
*** 5840,5846 ****
  		{
  		  /* For reduction in SIMD loop, defer adding the
  		     initialization of the reference, because if we decide
! 		     to use SIMD array for it, the initilization could cause
  		     expansion ICE.  Ditto for other privatization clauses.  */
  		  if (is_simd)
  		    x = NULL_TREE;
--- 5840,5846 ----
  		{
  		  /* For reduction in SIMD loop, defer adding the
  		     initialization of the reference, because if we decide
! 		     to use SIMD array for it, the initialization could cause
  		     expansion ICE.  Ditto for other privatization clauses.  */
  		  if (is_simd)
  		    x = NULL_TREE;
*************** lower_omp (gimple_seq *body, omp_context
*** 15319,15325 ****
    gimple_stmt_iterator gsi;
    for (gsi = gsi_start (*body); !gsi_end_p (gsi); gsi_next (&gsi))
      lower_omp_1 (&gsi, ctx);
!   /* During gimplification, we haven't folded statments inside offloading
       or taskreg regions (gimplify.cc:maybe_fold_stmt); do that now.  */
    if (target_nesting_level || taskreg_nesting_level)
      for (gsi = gsi_start (*body); !gsi_end_p (gsi); gsi_next (&gsi))
--- 15319,15325 ----
    gimple_stmt_iterator gsi;
    for (gsi = gsi_start (*body); !gsi_end_p (gsi); gsi_next (&gsi))
      lower_omp_1 (&gsi, ctx);
!   /* During gimplification, we haven't folded statements inside offloading
       or taskreg regions (gimplify.cc:maybe_fold_stmt); do that now.  */
    if (target_nesting_level || taskreg_nesting_level)
      for (gsi = gsi_start (*body); !gsi_end_p (gsi); gsi_next (&gsi))
diff -Nrcpad gcc-17-20260524/gcc/omp-offload.cc gcc-17-20260531/gcc/omp-offload.cc
*** gcc-17-20260524/gcc/omp-offload.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/omp-offload.cc	Sun May 31 22:32:06 2026
*************** oacc_xform_tile (gcall *call)
*** 806,819 ****
    e_mask = 0;
  #endif
    if (!e_mask)
!     /* Not paritioning.  */
      span = integer_one_node;
    else if (!integer_zerop (tile_size))
      /* User explicitly specified size.  */
      span = tile_size;
    else
      {
!       /* Pick a size based on the paritioning of the element loop and
  	 the number of loop nests.  */
        tree first_size = NULL_TREE;
        tree second_size = NULL_TREE;
--- 806,819 ----
    e_mask = 0;
  #endif
    if (!e_mask)
!     /* Not partitioning.  */
      span = integer_one_node;
    else if (!integer_zerop (tile_size))
      /* User explicitly specified size.  */
      span = tile_size;
    else
      {
!       /* Pick a size based on the partitioning of the element loop and
  	 the number of loop nests.  */
        tree first_size = NULL_TREE;
        tree second_size = NULL_TREE;
*************** oacc_validate_dims (tree fn, tree attrs,
*** 1011,1017 ****
  	   same wording and logic applies to num_workers and
  	   vector_length, however the worker- or vector- single
  	   execution doesn't have the same impact as gang-redundant
! 	   execution.  (If the minimum gang-level partioning is not 1,
  	   the target is probably too confusing.)  */
  	dims[ix] = (used & GOMP_DIM_MASK (ix)
  		    ? oacc_default_dims[ix] : oacc_min_dims[ix]);
--- 1011,1017 ----
  	   same wording and logic applies to num_workers and
  	   vector_length, however the worker- or vector- single
  	   execution doesn't have the same impact as gang-redundant
! 	   execution.  (If the minimum gang-level partitioning is not 1,
  	   the target is probably too confusing.)  */
  	dims[ix] = (used & GOMP_DIM_MASK (ix)
  		    ? oacc_default_dims[ix] : oacc_min_dims[ix]);
*************** oacc_loop_process (oacc_loop *loop, int
*** 1478,1484 ****
  	      "gang reduction on an orphan loop");
  }
  
! /* Walk the OpenACC loop heirarchy checking and assigning the
     programmer-specified partitionings.  OUTER_MASK is the partitioning
     this loop is contained within.  Return mask of partitioning
     encountered.  If any auto loops are discovered, set GOMP_DIM_MAX
--- 1478,1484 ----
  	      "gang reduction on an orphan loop");
  }
  
! /* Walk the OpenACC loop hierarchy checking and assigning the
     programmer-specified partitionings.  OUTER_MASK is the partitioning
     this loop is contained within.  Return mask of partitioning
     encountered.  If any auto loops are discovered, set GOMP_DIM_MAX
*************** oacc_loop_fixed_partitions (oacc_loop *l
*** 1628,1634 ****
    return mask_all;
  }
  
! /* Walk the OpenACC loop heirarchy to assign auto-partitioned loops.
     OUTER_MASK is the partitioning this loop is contained within.
     OUTER_ASSIGN is true if an outer loop is being auto-partitioned.
     Return the cumulative partitioning used by this loop, siblings and
--- 1628,1634 ----
    return mask_all;
  }
  
! /* Walk the OpenACC loop hierarchy to assign auto-partitioned loops.
     OUTER_MASK is the partitioning this loop is contained within.
     OUTER_ASSIGN is true if an outer loop is being auto-partitioned.
     Return the cumulative partitioning used by this loop, siblings and
*************** oacc_loop_auto_partitions (oacc_loop *lo
*** 1749,1755 ****
    return inner_mask;
  }
  
! /* Walk the OpenACC loop heirarchy to check and assign partitioning
     axes.  Return mask of partitioning.  */
  
  static unsigned
--- 1749,1755 ----
    return inner_mask;
  }
  
! /* Walk the OpenACC loop hierarchy to check and assign partitioning
     axes.  Return mask of partitioning.  */
  
  static unsigned
*************** execute_oacc_device_lower ()
*** 2379,2385 ****
  
         2. The address of the variable in the new address space can be taken,
  	  converted to the default (original) address space, and the result of
! 	  that conversion subsituted in place of the original ADDR_EXPR node.
  
       Which of these is done depends on the gimple statement being processed.
       At present atomic operations and inline asms use (1), and everything else
--- 2379,2385 ----
  
         2. The address of the variable in the new address space can be taken,
  	  converted to the default (original) address space, and the result of
! 	  that conversion substituted in place of the original ADDR_EXPR node.
  
       Which of these is done depends on the gimple statement being processed.
       At present atomic operations and inline asms use (1), and everything else
diff -Nrcpad gcc-17-20260524/gcc/omp-simd-clone.cc gcc-17-20260531/gcc/omp-simd-clone.cc
*** gcc-17-20260524/gcc/omp-simd-clone.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/omp-simd-clone.cc	Sun May 31 22:32:06 2026
*************** simd_clone_clauses_extract (struct cgrap
*** 476,482 ****
  }
  
  /* Given a SIMD clone in NODE, calculate the characteristic data
!    type and return the coresponding type.  The characteristic data
     type is computed as described in the Intel Vector ABI.  */
  
  static tree
--- 476,482 ----
  }
  
  /* Given a SIMD clone in NODE, calculate the characteristic data
!    type and return the corresponding type.  The characteristic data
     type is computed as described in the Intel Vector ABI.  */
  
  static tree
*************** ipa_simd_modify_stmt_ops (tree *tp, int
*** 1137,1143 ****
     offset into the corresponding simd_array.
  
     This function will replace all function argument uses with their
!    corresponding simd array elements, and ajust the return values
     accordingly.  */
  
  static void
--- 1137,1143 ----
     offset into the corresponding simd_array.
  
     This function will replace all function argument uses with their
!    corresponding simd array elements, and adjust the return values
     accordingly.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/optabs-query.cc gcc-17-20260531/gcc/optabs-query.cc
*** gcc-17-20260524/gcc/optabs-query.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/optabs-query.cc	Sun May 31 22:32:06 2026
*************** lshift_cheap_p (bool speed_p)
*** 656,662 ****
    static bool init[2] = { false, false };
    static bool cheap[2] = { true, true };
  
!   /* If the targer has no lshift in word_mode, the operation will most
       probably not be cheap.  ??? Does GCC even work for such targets?  */
    if (optab_handler (ashl_optab, word_mode) == CODE_FOR_nothing)
      return false;
--- 656,662 ----
    static bool init[2] = { false, false };
    static bool cheap[2] = { true, true };
  
!   /* If the target has no lshift in word_mode, the operation will most
       probably not be cheap.  ??? Does GCC even work for such targets?  */
    if (optab_handler (ashl_optab, word_mode) == CODE_FOR_nothing)
      return false;
diff -Nrcpad gcc-17-20260524/gcc/optabs-query.h gcc-17-20260531/gcc/optabs-query.h
*** gcc-17-20260524/gcc/optabs-query.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/optabs-query.h	Sun May 31 22:32:06 2026
*************** trapv_binoptab_p (optab binoptab)
*** 90,96 ****
  }
  
  /* Return insn code for a comparison operator with VMODE
!    resultin MASK_MODE, unsigned if UNS is true.  */
  
  inline enum insn_code
  get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
--- 90,96 ----
  }
  
  /* Return insn code for a comparison operator with VMODE
!    result in MASK_MODE, unsigned if UNS is true.  */
  
  inline enum insn_code
  get_vec_cmp_icode (machine_mode vmode, machine_mode mask_mode, bool uns)
*************** get_vec_cmp_icode (machine_mode vmode, m
*** 100,106 ****
  }
  
  /* Return insn code for a comparison operator with VMODE
!    resultin MASK_MODE (only for EQ/NE).  */
  
  inline enum insn_code
  get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode)
--- 100,106 ----
  }
  
  /* Return insn code for a comparison operator with VMODE
!    result in MASK_MODE (only for EQ/NE).  */
  
  inline enum insn_code
  get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode)
diff -Nrcpad gcc-17-20260524/gcc/optabs.cc gcc-17-20260531/gcc/optabs.cc
*** gcc-17-20260524/gcc/optabs.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/optabs.cc	Sun May 31 22:32:06 2026
*************** expand_binop (machine_mode mode, optab b
*** 2178,2184 ****
  	}
      }
  
!   /* Attempt to synthetize double word modulo by constant divisor.  */
    if ((binoptab == umod_optab
         || binoptab == smod_optab
         || binoptab == udiv_optab
--- 2178,2184 ----
  	}
      }
  
!   /* Attempt to synthesize double word modulo by constant divisor.  */
    if ((binoptab == umod_optab
         || binoptab == smod_optab
         || binoptab == udiv_optab
*************** expand_vec_perm_var (machine_mode mode,
*** 7022,7028 ****
    gcc_assert (sel != NULL);
  
    /* Add the byte offset to each byte element.  */
!   /* Note that the definition of the indicies here is memory ordering,
       so there should be no difference between big and little endian.  */
    rtx_vector_builder byte_indices (qimode, u, 1);
    for (i = 0; i < u; ++i)
--- 7022,7028 ----
    gcc_assert (sel != NULL);
  
    /* Add the byte offset to each byte element.  */
!   /* Note that the definition of the indices here is memory ordering,
       so there should be no difference between big and little endian.  */
    rtx_vector_builder byte_indices (qimode, u, 1);
    for (i = 0; i < u; ++i)
*************** expand_compare_and_swap_loop (rtx mem, r
*** 7249,7255 ****
  }
  
  
! /* This function tries to emit an atomic_exchange intruction.  VAL is written
     to *MEM using memory model MODEL. The previous contents of *MEM are returned,
     using TARGET if possible.  */
  
--- 7249,7255 ----
  }
  
  
! /* This function tries to emit an atomic_exchange instruction.  VAL is written
     to *MEM using memory model MODEL. The previous contents of *MEM are returned,
     using TARGET if possible.  */
  
*************** expand_atomic_load (rtx target, rtx mem,
*** 7788,7794 ****
       then we assume that a load will not be atomic.  We could try to
       emulate a load with a compare-and-swap operation, but the store that
       doing this could result in would be incorrect if this is a volatile
!      atomic load or targetting read-only-mapped memory.  */
    if (maybe_gt (GET_MODE_PRECISION (mode), BITS_PER_WORD))
      /* If there is no atomic load, leave the library call.  */
      return NULL_RTX;
--- 7788,7794 ----
       then we assume that a load will not be atomic.  We could try to
       emulate a load with a compare-and-swap operation, but the store that
       doing this could result in would be incorrect if this is a volatile
!      atomic load or targeting read-only-mapped memory.  */
    if (maybe_gt (GET_MODE_PRECISION (mode), BITS_PER_WORD))
      /* If there is no atomic load, leave the library call.  */
      return NULL_RTX;
*************** maybe_optimize_fetch_op (rtx target, rtx
*** 8016,8022 ****
    return NULL_RTX;
  }
  
! /* Try to emit an instruction for a specific operation varaition.
     OPTAB contains the OP functions.
     TARGET is an optional place to return the result. const0_rtx means unused.
     MEM is the memory location to operate on.
--- 8016,8022 ----
    return NULL_RTX;
  }
  
! /* Try to emit an instruction for a specific operation variation.
     OPTAB contains the OP functions.
     TARGET is an optional place to return the result. const0_rtx means unused.
     MEM is the memory location to operate on.
*************** can_reuse_operands_p (enum insn_code ico
*** 8524,8530 ****
      {
      case EXPAND_OUTPUT:
      case EXPAND_UNDEFINED_INPUT:
!       /* Outputs and undefined intputs must remain distinct.  */
        return false;
  
      case EXPAND_FIXED:
--- 8524,8530 ----
      {
      case EXPAND_OUTPUT:
      case EXPAND_UNDEFINED_INPUT:
!       /* Outputs and undefined inputs must remain distinct.  */
        return false;
  
      case EXPAND_FIXED:
diff -Nrcpad gcc-17-20260524/gcc/opts-global.cc gcc-17-20260531/gcc/opts-global.cc
*** gcc-17-20260524/gcc/opts-global.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/opts-global.cc	Sun May 31 22:32:06 2026
*************** init_options_once (void)
*** 263,269 ****
    /* ??? Ideally, we should do this earlier and the FEs will override
       it if desired (none do it so far).  However, the way the FEs
       construct their pretty-printers means that all previous settings
!      are overriden.  */
    global_dc->set_show_highlight_colors (show_highlight_colors);
  
    diagnostic_color_init (global_dc);
--- 263,269 ----
    /* ??? Ideally, we should do this earlier and the FEs will override
       it if desired (none do it so far).  However, the way the FEs
       construct their pretty-printers means that all previous settings
!      are overridden.  */
    global_dc->set_show_highlight_colors (show_highlight_colors);
  
    diagnostic_color_init (global_dc);
diff -Nrcpad gcc-17-20260524/gcc/opts.cc gcc-17-20260531/gcc/opts.cc
*** gcc-17-20260524/gcc/opts.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/opts.cc	Sun May 31 22:32:06 2026
*************** common_handle_option (struct gcc_options
*** 2952,2960 ****
        break;
  
      case OPT_Wstrict_overflow:
!       opts->x_warn_strict_overflow = (value
! 				      ? (int) WARN_STRICT_OVERFLOW_CONDITIONAL
! 				      : 0);
        break;
  
      case OPT_Wsystem_headers:
--- 2952,2958 ----
        break;
  
      case OPT_Wstrict_overflow:
!       /* Deferred.  */
        break;
  
      case OPT_Wsystem_headers:
diff -Nrcpad gcc-17-20260524/gcc/opts.h gcc-17-20260531/gcc/opts.h
*** gcc-17-20260524/gcc/opts.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/opts.h	Sun May 31 22:32:06 2026
*************** struct cl_option
*** 88,94 ****
    /* Option length, not including initial '-'.  */
    unsigned char opt_len;
    /* Next option in a sequence marked with Negative, or -1 if none.
!      For a single option with both a negative and a positve form
       (such as -Wall and -Wno-all), NEG_IDX is equal to the option's
       own index (i.e., cl_options[IDX].neg_idx == IDX holds).  */
    int neg_index;
--- 88,94 ----
    /* Option length, not including initial '-'.  */
    unsigned char opt_len;
    /* Next option in a sequence marked with Negative, or -1 if none.
!      For a single option with both a negative and a positive form
       (such as -Wall and -Wno-all), NEG_IDX is equal to the option's
       own index (i.e., cl_options[IDX].neg_idx == IDX holds).  */
    int neg_index;
diff -Nrcpad gcc-17-20260524/gcc/pair-fusion.cc gcc-17-20260531/gcc/pair-fusion.cc
*** gcc-17-20260524/gcc/pair-fusion.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pair-fusion.cc	Sun May 31 22:32:06 2026
*************** private:
*** 930,936 ****
    // are deleting both original insns and inserting a new insn for the stp.
    insn_info *m_repurpose;
  
!   // Destionation of the stp, it will be placed immediately after m_dest.
    insn_info *m_dest;
  
    // Current nondebug use that needs updating due to stp insertion.
--- 930,936 ----
    // are deleting both original insns and inserting a new insn for the stp.
    insn_info *m_repurpose;
  
!   // Destination of the stp, it will be placed immediately after m_dest.
    insn_info *m_dest;
  
    // Current nondebug use that needs updating due to stp insertion.
*************** pair_fusion_bb_info::try_fuse_pair (bool
*** 2522,2528 ****
      {
        if (dump_file)
  	fprintf (dump_file,
! 		 "punting on load pair due to reg conflcits (%d,%d)\n",
  		 insns[0]->uid (), insns[1]->uid ());
        return false;
      }
--- 2522,2528 ----
      {
        if (dump_file)
  	fprintf (dump_file,
! 		 "punting on load pair due to reg conflicts (%d,%d)\n",
  		 insns[0]->uid (), insns[1]->uid ());
        return false;
      }
diff -Nrcpad gcc-17-20260524/gcc/pair-fusion.h gcc-17-20260531/gcc/pair-fusion.h
*** gcc-17-20260524/gcc/pair-fusion.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pair-fusion.h	Sun May 31 22:32:06 2026
***************
*** 1,7 ****
  // Pass to fuse adjacent loads/stores into paired memory accesses.
  //
  // This file contains the definition of the virtual base class which is
! // overriden by targets that make use of the pass.
  //
  // Copyright (C) 2023-2026 Free Software Foundation, Inc.
  //
--- 1,7 ----
  // Pass to fuse adjacent loads/stores into paired memory accesses.
  //
  // This file contains the definition of the virtual base class which is
! // overridden by targets that make use of the pass.
  //
  // Copyright (C) 2023-2026 Free Software Foundation, Inc.
  //
*************** enum class writeback_type {
*** 85,91 ****
    ALL
  };
  
! // This class can be overriden by targets to give a pass that fuses
  // adjacent loads and stores into load/store pair instructions.
  //
  // The target can override the various virtual functions to customize
--- 85,91 ----
    ALL
  };
  
! // This class can be overridden by targets to give a pass that fuses
  // adjacent loads and stores into load/store pair instructions.
  //
  // The target can override the various virtual functions to customize
diff -Nrcpad gcc-17-20260524/gcc/passes.cc gcc-17-20260531/gcc/passes.cc
*** gcc-17-20260524/gcc/passes.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/passes.cc	Sun May 31 22:32:06 2026
*************** opt_pass *current_pass;
*** 81,87 ****
     need to implement cloning, but passes that support multiple instances
     *must* provide their own implementation of the clone method.
  
!    Handle this by providing a default implemenation, but make it a fatal
     error to call it.  */
  
  opt_pass *
--- 81,87 ----
     need to implement cloning, but passes that support multiple instances
     *must* provide their own implementation of the clone method.
  
!    Handle this by providing a default implementation, but make it a fatal
     error to call it.  */
  
  opt_pass *
*************** account_profile_1 (function *fn, void *d
*** 1914,1920 ****
    pop_cfun ();
  }
  
! /* Account profile chnages to all passes in list starting in SUB.  */
  
  static void
  account_profile_in_list (opt_pass *sub)
--- 1914,1920 ----
    pop_cfun ();
  }
  
! /* Account profile changes to all passes in list starting in SUB.  */
  
  static void
  account_profile_in_list (opt_pass *sub)
*************** execute_todo (unsigned int flags)
*** 2181,2195 ****
      df_finish_pass ((flags & TODO_df_verify) != 0);
  }
  
- /* Verify invariants that should hold between passes.  This is a place
-    to put simple sanity checks.  */
- 
- static void
- verify_interpass_invariants (void)
- {
-   gcc_checking_assert (!fold_deferring_overflow_warnings_p ());
- }
- 
  /* Helper function. Verify that the properties has been turn into the
     properties expected by the pass.  */
  
--- 2181,2186 ----
*************** execute_one_ipa_transform_pass (struct c
*** 2338,2344 ****
    /* Run post-pass cleanup.  */
    gcc_checking_assert (!(todo_after & TODO_verify_il));
    execute_todo (todo_after);
-   verify_interpass_invariants ();
  
    /* Stop timevar.  */
    if (pass->tv_id != TV_NONE)
--- 2329,2334 ----
*************** execute_one_pass (opt_pass *pass)
*** 2714,2721 ****
  	}
      }
  
-   verify_interpass_invariants ();
- 
    /* Stop timevar.  */
    if (pass->tv_id != TV_NONE)
      timevar_pop (pass->tv_id);
--- 2704,2709 ----
diff -Nrcpad gcc-17-20260524/gcc/path-coverage.cc gcc-17-20260531/gcc/path-coverage.cc
*** gcc-17-20260524/gcc/path-coverage.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/path-coverage.cc	Sun May 31 22:32:06 2026
*************** instrument_prime_paths (struct function
*** 635,641 ****
  	      else if (all_bits_set_p (*bitmask, bucketsize) && phi)
  		{
  		  /* This reduces to a no-op (x & ~0).  Reusing the SSA and not
! 		     emitting an unecessary AND is a big improvement for large
  		     programs.  */
  		  tree *prev = SSAex.get ({e->src, bucket});
  		  if (prev)
--- 635,641 ----
  	      else if (all_bits_set_p (*bitmask, bucketsize) && phi)
  		{
  		  /* This reduces to a no-op (x & ~0).  Reusing the SSA and not
! 		     emitting an unnecessary AND is a big improvement for large
  		     programs.  */
  		  tree *prev = SSAex.get ({e->src, bucket});
  		  if (prev)
diff -Nrcpad gcc-17-20260524/gcc/plugin.cc gcc-17-20260531/gcc/plugin.cc
*** gcc-17-20260524/gcc/plugin.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/plugin.cc	Sun May 31 22:32:06 2026
*************** get_event_last (void)
*** 1037,1043 ****
  
  
  /* Retrieve the default plugin directory.  The gcc driver should have passed
!    it as -iplugindir <dir> to the cc1 program, and it is queriable through the
     -print-file-name=plugin option to gcc.  */
  const char*
  default_plugin_dir_name (void)
--- 1037,1043 ----
  
  
  /* Retrieve the default plugin directory.  The gcc driver should have passed
!    it as -iplugindir <dir> to the cc1 program, and it is queryable through the
     -print-file-name=plugin option to gcc.  */
  const char*
  default_plugin_dir_name (void)
diff -Nrcpad gcc-17-20260524/gcc/pointer-query.cc gcc-17-20260531/gcc/pointer-query.cc
*** gcc-17-20260524/gcc/pointer-query.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pointer-query.cc	Sun May 31 22:32:06 2026
*************** handle_min_max_size (tree ptr, int ostyp
*** 1696,1702 ****
  	{
  	  /* If the object referenced by both arguments has been determined
  	     set *PREF to the one with more or less space remainng, whichever
! 	     is appopriate for CODE.
  	     TODO: Indicate when the objects are distinct so it can be
  	     diagnosed.  */
  	  i0 = code == MAX_EXPR;
--- 1696,1702 ----
  	{
  	  /* If the object referenced by both arguments has been determined
  	     set *PREF to the one with more or less space remainng, whichever
! 	     is appropriate for CODE.
  	     TODO: Indicate when the objects are distinct so it can be
  	     diagnosed.  */
  	  i0 = code == MAX_EXPR;
*************** handle_array_ref (tree aref, gimple *stm
*** 1794,1800 ****
    tree arefop = TREE_OPERAND (aref, 0);
    tree reftype = TREE_TYPE (arefop);
    if (!addr && TREE_CODE (TREE_TYPE (reftype)) == POINTER_TYPE)
!     /* Avoid arrays of pointers.  FIXME: Hande pointers to arrays
         of known bound.  */
      return false;
  
--- 1794,1800 ----
    tree arefop = TREE_OPERAND (aref, 0);
    tree reftype = TREE_TYPE (arefop);
    if (!addr && TREE_CODE (TREE_TYPE (reftype)) == POINTER_TYPE)
!     /* Avoid arrays of pointers.  FIXME: Handle pointers to arrays
         of known bound.  */
      return false;
  
*************** handle_ssa_name (tree ptr, bool addr, in
*** 2027,2033 ****
  	qry->max_depth = qry->depth;
        if (const access_ref *cache_ref = qry->get_ref (ptr, ostype))
  	{
! 	  /* Add the number of DEREFerences accummulated so far.  */
  	  const int deref = pref->deref;
  	  *pref = *cache_ref;
  	  pref->deref += deref;
--- 2027,2033 ----
  	qry->max_depth = qry->depth;
        if (const access_ref *cache_ref = qry->get_ref (ptr, ostype))
  	{
! 	  /* Add the number of DEREFerences accumulated so far.  */
  	  const int deref = pref->deref;
  	  *pref = *cache_ref;
  	  pref->deref += deref;
diff -Nrcpad gcc-17-20260524/gcc/poly-int.h gcc-17-20260531/gcc/poly-int.h
*** gcc-17-20260524/gcc/poly-int.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/poly-int.h	Sun May 31 22:32:06 2026
*************** struct if_lossless<T1, T2, T3, true>
*** 184,190 ****
     - poly_int_traits<T>::num_coeffs gives the number of coefficients in T
       if T is a poly_int and 1 otherwise.
  
!    - poly_int_traits<T>::coeff_type gives the coefficent type of T if T
       is a poly_int and T itself otherwise
  
     - poly_int_traits<T>::int_type is a shorthand for
--- 184,190 ----
     - poly_int_traits<T>::num_coeffs gives the number of coefficients in T
       if T is a poly_int and 1 otherwise.
  
!    - poly_int_traits<T>::coeff_type gives the coefficient type of T if T
       is a poly_int and T itself otherwise
  
     - poly_int_traits<T>::int_type is a shorthand for
*************** struct poly_result<T1, T2, 2>
*** 292,298 ****
     second of which has coefficients of type C2.  */
  #define POLY_POLY_COEFF(C1, C2) typename poly_result<C1, C2>::type
  
! /* Enforce that T2 is non-polynomial and provide the cofficient type of
     the result of a binary operation in which the first operand is a
     poly_int with coefficients of type C1 and the second operand is
     a constant of type T2.  */
--- 292,298 ----
     second of which has coefficients of type C2.  */
  #define POLY_POLY_COEFF(C1, C2) typename poly_result<C1, C2>::type
  
! /* Enforce that T2 is non-polynomial and provide the coefficient type of
     the result of a binary operation in which the first operand is a
     poly_int with coefficients of type C1 and the second operand is
     a constant of type T2.  */
diff -Nrcpad gcc-17-20260524/gcc/postreload-gcse.cc gcc-17-20260531/gcc/postreload-gcse.cc
*** gcc-17-20260524/gcc/postreload-gcse.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/postreload-gcse.cc	Sun May 31 22:32:06 2026
*************** gcse_after_reload_main (rtx f ATTRIBUTE_
*** 1372,1378 ****
  
    if (!expr_table->is_empty ())
      {
!       /* Knowing which MEMs are transparent through a block can signifiantly
  	 increase the number of redundant loads found.  So compute transparency
  	 information for each memory expression in the hash table.  */
        df_analyze ();
--- 1372,1378 ----
  
    if (!expr_table->is_empty ())
      {
!       /* Knowing which MEMs are transparent through a block can significantly
  	 increase the number of redundant loads found.  So compute transparency
  	 information for each memory expression in the hash table.  */
        df_analyze ();
diff -Nrcpad gcc-17-20260524/gcc/predict.cc gcc-17-20260531/gcc/predict.cc
*** gcc-17-20260524/gcc/predict.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/predict.cc	Sun May 31 22:32:06 2026
*************** expr_expected_value_1 (tree type, tree o
*** 2512,2519 ****
  	      if (*predictor == predictor2 && p1 == p2)
  		continue;
  	      /* The general case has no precise solution, since we do not
! 		 know probabilities of incomming edges, yet.
! 		 Still if value is predicted over all incomming edges, we
  		 can hope it will be indeed the case.  Conservatively
  		 downgrade prediction quality (so first match merging is not
  		 performed) and take least successful prediction.  */
--- 2512,2519 ----
  	      if (*predictor == predictor2 && p1 == p2)
  		continue;
  	      /* The general case has no precise solution, since we do not
! 		 know probabilities of incoming edges, yet.
! 		 Still if value is predicted over all incoming edges, we
  		 can hope it will be indeed the case.  Conservatively
  		 downgrade prediction quality (so first match merging is not
  		 performed) and take least successful prediction.  */
*************** expr_expected_value_1 (tree type, tree o
*** 2718,2725 ****
  	       example:
  	          op0 * op1
  	       If op0 is 0 with probability p, then we will ignore the
! 	       posibility that op0 != 0 and op1 == 0.  It does not seem to be
! 	       worthwhile to downgrade prediciton quality for this.  */
  	    return res;
  	  if (!nop0)
  	    nop0 = op0;
--- 2718,2725 ----
  	       example:
  	          op0 * op1
  	       If op0 is 0 with probability p, then we will ignore the
! 	       possibility that op0 != 0 and op1 == 0.  It does not seem to be
! 	       worthwhile to downgrade prediction quality for this.  */
  	    return res;
  	  if (!nop0)
  	    nop0 = op0;
*************** is_exit_with_zero_arg (const gimple *stm
*** 2992,2998 ****
        && !gimple_call_builtin_p (stmt, BUILT_IN__EXIT2))
      return false;
  
!   /* Argument is an interger zero. */
    return integer_zerop (gimple_call_arg (stmt, 0));
  }
  
--- 2992,2998 ----
        && !gimple_call_builtin_p (stmt, BUILT_IN__EXIT2))
      return false;
  
!   /* Argument is an integer zero. */
    return integer_zerop (gimple_call_arg (stmt, 0));
  }
  
*************** predict_paths_for_bb (basic_block cur, b
*** 3422,3428 ****
  	 using predictor.  Otherwise we need to look for paths
  	 leading to e->src.
  
! 	 The second may lead to infinite loop in the case we are predicitng
  	 regions that are only reachable by abnormal edges.  We simply
  	 prevent visiting given BB twice.  */
        if (found)
--- 3422,3428 ----
  	 using predictor.  Otherwise we need to look for paths
  	 leading to e->src.
  
! 	 The second may lead to infinite loop in the case we are predicting
  	 regions that are only reachable by abnormal edges.  We simply
  	 prevent visiting given BB twice.  */
        if (found)
*************** estimate_bb_frequencies ()
*** 4124,4130 ****
  
    /* Scaling frequencies up to maximal profile count may result in
       frequent overflows especially when inlining loops.
!      Small scaling results in unnecesary precision loss.  Stay in
       the half of the (exponential) range.  */
    freq_max = (sreal (1) << (profile_count::n_bits / 2)) / freq_max;
    if (freq_max < 16)
--- 4124,4130 ----
  
    /* Scaling frequencies up to maximal profile count may result in
       frequent overflows especially when inlining loops.
!      Small scaling results in unnecessary precision loss.  Stay in
       the half of the (exponential) range.  */
    freq_max = (sreal (1) << (profile_count::n_bits / 2)) / freq_max;
    if (freq_max < 16)
*************** rebuild_frequencies (void)
*** 4481,4487 ****
  						       bb->count);
        if (bb->count.nonzero_p () && bb->count.quality () >= AFDO)
  	feedback_found = true;
!       /* Uninitialized count may be result of inlining or an omision in an
           optimization pass.  */
        if (!bb->count.initialized_p ())
  	{
--- 4481,4487 ----
  						       bb->count);
        if (bb->count.nonzero_p () && bb->count.quality () >= AFDO)
  	feedback_found = true;
!       /* Uninitialized count may be result of inlining or an omission in an
           optimization pass.  */
        if (!bb->count.initialized_p ())
  	{
*************** rebuild_frequencies (void)
*** 4501,4507 ****
  	    {
  	      sum += e->count ();
  	      /* Uninitialized probability may be result of inlining or an
! 	         omision in an optimization pass.  */
  	      if (!e->probability.initialized_p ())
  	        {
  		  if (dump_file)
--- 4501,4507 ----
  	    {
  	      sum += e->count ();
  	      /* Uninitialized probability may be result of inlining or an
! 	         omission in an optimization pass.  */
  	      if (!e->probability.initialized_p ())
  	        {
  		  if (dump_file)
*************** rebuild_frequencies (void)
*** 4514,4520 ****
  	    {
  	      if (dump_file)
  		fprintf (dump_file,
! 			 "BB %i has invalid sum of incomming counts\n",
  			 bb->index);
  	      inconsistency_found = true;
  	    }
--- 4514,4520 ----
  	    {
  	      if (dump_file)
  		fprintf (dump_file,
! 			 "BB %i has invalid sum of incoming counts\n",
  			 bb->index);
  	      inconsistency_found = true;
  	    }
*************** rebuild_frequencies (void)
*** 4534,4540 ****
        return;
      }
    /* Do not re-propagate if we have profile feedback.  Even if the profile is
!      inconsistent from previous transofrmations, it is probably more realistic
       for hot part of the program than result of repropagating.
  
       Consider example where we previously has
--- 4534,4540 ----
        return;
      }
    /* Do not re-propagate if we have profile feedback.  Even if the profile is
!      inconsistent from previous transformations, it is probably more realistic
       for hot part of the program than result of repropagating.
  
       Consider example where we previously has
*************** rebuild_frequencies (void)
*** 4549,4555 ****
       important copy is not the one we look on.
  
       Propagating from probabilities would make profile look consistent, but
!      because probablities after code duplication may not be representative
       for a given run, we would only propagate the error further.  */
    if (feedback_found && !uninitialized_count_found)
      {
--- 4549,4555 ----
       important copy is not the one we look on.
  
       Propagating from probabilities would make profile look consistent, but
!      because probabilities after code duplication may not be representative
       for a given run, we would only propagate the error further.  */
    if (feedback_found && !uninitialized_count_found)
      {
*************** make_pass_rebuild_frequencies (gcc::cont
*** 4626,4632 ****
    return new pass_rebuild_frequencies (ctxt);
  }
  
! /* Perform a dry run of the branch prediction pass and report comparsion of
     the predicted and real profile into the dump file.  */
  
  void
--- 4626,4632 ----
    return new pass_rebuild_frequencies (ctxt);
  }
  
! /* Perform a dry run of the branch prediction pass and report comparison of
     the predicted and real profile into the dump file.  */
  
  void
diff -Nrcpad gcc-17-20260524/gcc/pretty-print-format-impl.h gcc-17-20260531/gcc/pretty-print-format-impl.h
*** gcc-17-20260524/gcc/pretty-print-format-impl.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pretty-print-format-impl.h	Sun May 31 22:32:06 2026
*************** private:
*** 439,445 ****
         BEGIN_URL("http://example.com"), TEXT("-foption"), END_URL, END_QUOTE]
  
       (5) emits all tokens in sequence with appropriate line-wrapping.  This
!      can be overridded via the pretty_printer's token_printer, allowing for
       output formats to e.g. override how URLs are handled, or to handle
       custom_data that wasn't lowered in (2) above, e.g. for handling JSON
       output of optimization records.  */
--- 439,445 ----
         BEGIN_URL("http://example.com"), TEXT("-foption"), END_URL, END_QUOTE]
  
       (5) emits all tokens in sequence with appropriate line-wrapping.  This
!      can be overridden via the pretty_printer's token_printer, allowing for
       output formats to e.g. override how URLs are handled, or to handle
       custom_data that wasn't lowered in (2) above, e.g. for handling JSON
       output of optimization records.  */
diff -Nrcpad gcc-17-20260524/gcc/pretty-print.h gcc-17-20260531/gcc/pretty-print.h
*** gcc-17-20260524/gcc/pretty-print.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pretty-print.h	Sun May 31 22:32:06 2026
*************** private:
*** 360,366 ****
    /* If non-NULL, this is called by pp_format once after all format codes
       have been processed, to allow for client-specific postprocessing.
       This is used by the C++ frontend for handling the %H and %I
!      format codes (which interract with each other).  */
    std::unique_ptr<format_postprocessor> m_format_postprocessor;
  
    /* This is used by pp_output_formatted_text after it has converted all
--- 360,366 ----
    /* If non-NULL, this is called by pp_format once after all format codes
       have been processed, to allow for client-specific postprocessing.
       This is used by the C++ frontend for handling the %H and %I
!      format codes (which interact with each other).  */
    std::unique_ptr<format_postprocessor> m_format_postprocessor;
  
    /* This is used by pp_output_formatted_text after it has converted all
diff -Nrcpad gcc-17-20260524/gcc/prime-paths.cc gcc-17-20260531/gcc/prime-paths.cc
*** gcc-17-20260524/gcc/prime-paths.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/prime-paths.cc	Sun May 31 22:32:06 2026
*************** struct xpair
*** 126,139 ****
  
     The union of near/far is essentially a short-vector optimization, switching
     to a heap-allocated vector when necessary.  This happens relatively rarely
!    (usually maxes out at 1-2%), and the vertices that have more than 2 sucessors
!    also tend to have more than 4.  The root vertex tends to use the dynamic
!    vector because the subpaths are recorded as the successors of the root.
  
     Conceptually, this is a small map from vertex-id -> index and the API is
     modelled as such.  The insert and search functions are unrolled by hand when
!    using the small vector.  This has a noticable performance impact on insert in
!    particular, and is not too complex since we know we are limited to 2
     elements.
  
     Vertices are tagged with endofpath and inserted.  If endofpath is set, the
--- 126,140 ----
  
     The union of near/far is essentially a short-vector optimization, switching
     to a heap-allocated vector when necessary.  This happens relatively rarely
!    (usually maxes out at 1-2%), and the vertices that have more than 2
!    successors also tend to have more than 4.  The root vertex tends to use the
!    dynamic vector because the subpaths are recorded as the successors of the
!    root.
  
     Conceptually, this is a small map from vertex-id -> index and the API is
     modelled as such.  The insert and search functions are unrolled by hand when
!    using the small vector.  This has a noticeable performance impact on insert
!    in particular, and is not too complex since we know we are limited to 2
     elements.
  
     Vertices are tagged with endofpath and inserted.  If endofpath is set, the
*************** struct xpair
*** 150,156 ****
     in [2 4 6] is cleared when the suffixes of [9 7 2 4 6] are inserted.
  
     The node will be inserted into a vec, and should be trivial.  Instances
!    should be value-initialized to zero-intialized state.  */
  struct trie_node
  {
    unsigned length () const
--- 151,157 ----
     in [2 4 6] is cleared when the suffixes of [9 7 2 4 6] are inserted.
  
     The node will be inserted into a vec, and should be trivial.  Instances
!    should be value-initialized to zero-initialized state.  */
  struct trie_node
  {
    unsigned length () const
*************** edge_matrix (const struct graph *cfg)
*** 1333,1342 ****
  
     The algorithm is based on Fazli & Afsharchi's "A Time and Space-Efficient
     Compositional Method for Prime and Test Paths Generation" (2019), combined
!    with a suffix trie for removing duplicate or redundant paths.  An auxillary
     graph of the strongly connected components (SCCs) is built.  Then, the prime
     paths of the SCCs composes the prime paths of each SCC with the prime paths
!    of this auxillary graph.  This can drastically cut the number of redundant
     paths generated compared to a naive algorithm.
  
     This does not work for all graphs.  Some structures, e.g. when most of the
--- 1334,1343 ----
  
     The algorithm is based on Fazli & Afsharchi's "A Time and Space-Efficient
     Compositional Method for Prime and Test Paths Generation" (2019), combined
!    with a suffix trie for removing duplicate or redundant paths.  An auxiliary
     graph of the strongly connected components (SCCs) is built.  Then, the prime
     paths of the SCCs composes the prime paths of each SCC with the prime paths
!    of this auxiliary graph.  This can drastically cut the number of redundant
     paths generated compared to a naive algorithm.
  
     This does not work for all graphs.  Some structures, e.g. when most of the
*************** test_build_ccfg ()
*** 1652,1658 ****
  
  /* This test checks some basic assumptions on finding the strongly connected
     components and disconnecting the graph by removing all edges between SCCs.
!    Creating a single auxillary graph simplifies the bookkeeping.  */
  static void
  test_split_components ()
  {
--- 1653,1659 ----
  
  /* This test checks some basic assumptions on finding the strongly connected
     components and disconnecting the graph by removing all edges between SCCs.
!    Creating a single auxiliary graph simplifies the bookkeeping.  */
  static void
  test_split_components ()
  {
diff -Nrcpad gcc-17-20260524/gcc/print-rtl.cc gcc-17-20260531/gcc/print-rtl.cc
*** gcc-17-20260524/gcc/print-rtl.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/print-rtl.cc	Sun May 31 22:32:06 2026
*************** rtx_writer::print_rtx_operand_code_r (co
*** 579,585 ****
      else if (m_compact)
        {
  	/* In compact mode, print pseudos with '< and '>' wrapping the regno,
! 	   offseting it by (LAST_VIRTUAL_REGISTER + 1), so that the
  	   first non-virtual pseudo is dumped as "<0>".  */
  	gcc_assert (regno > LAST_VIRTUAL_REGISTER);
  	fprintf (m_outfile, " <%d>", regno - (LAST_VIRTUAL_REGISTER + 1));
--- 579,585 ----
      else if (m_compact)
        {
  	/* In compact mode, print pseudos with '< and '>' wrapping the regno,
! 	   offsetting it by (LAST_VIRTUAL_REGISTER + 1), so that the
  	   first non-virtual pseudo is dumped as "<0>".  */
  	gcc_assert (regno > LAST_VIRTUAL_REGISTER);
  	fprintf (m_outfile, " <%d>", regno - (LAST_VIRTUAL_REGISTER + 1));
diff -Nrcpad gcc-17-20260524/gcc/profile-count.h gcc-17-20260531/gcc/profile-count.h
*** gcc-17-20260524/gcc/profile-count.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/profile-count.h	Sun May 31 22:32:06 2026
*************** class GTY((user)) profile_probability
*** 154,160 ****
    static const uint32_t uninitialized_probability
  		 = ((uint32_t) 1 << (n_bits - 1)) - 1;
    /* For probibilityes quality is either UNINITIALIZED (0)
!      or greated then GUESSED.  To save bits we store it in
       adjusted form which skips the invalid values.  */
    static const int min_quality = GUESSED;
  
--- 154,160 ----
    static const uint32_t uninitialized_probability
  		 = ((uint32_t) 1 << (n_bits - 1)) - 1;
    /* For probibilityes quality is either UNINITIALIZED (0)
!      or greater then GUESSED.  To save bits we store it in
       adjusted form which skips the invalid values.  */
    static const int min_quality = GUESSED;
  
*************** public:
*** 1203,1209 ****
  	{
  	  /* This is common case of AFDO scaling when we upgrade
  	     GLOBAL0_AFDO function to AFDO.  Be sure that result
! 	     is AFDO and not GUESSED (which is unnecesarily low).  */
  	  if (num.m_quality == AFDO
  	      && (ret.m_quality != GUESSED
  		  && ret.m_quality != GUESSED_LOCAL))
--- 1203,1209 ----
  	{
  	  /* This is common case of AFDO scaling when we upgrade
  	     GLOBAL0_AFDO function to AFDO.  Be sure that result
! 	     is AFDO and not GUESSED (which is unnecessarily low).  */
  	  if (num.m_quality == AFDO
  	      && (ret.m_quality != GUESSED
  		  && ret.m_quality != GUESSED_LOCAL))
diff -Nrcpad gcc-17-20260524/gcc/pta-andersen.cc gcc-17-20260531/gcc/pta-andersen.cc
*** gcc-17-20260524/gcc/pta-andersen.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/pta-andersen.cc	Sun May 31 22:32:06 2026
*************** merge_node_constraints (constraint_graph
*** 527,533 ****
    FOR_EACH_VEC_ELT (graph->complex[from], i, c)
      {
        /* In complex constraints for node FROM, we may have either
! 	 a = *FROM, and *FROM = a, or an offseted constraint which are
  	 always added to the rhs node's constraints.  */
  
        if (c->rhs.type == DEREF)
--- 527,533 ----
    FOR_EACH_VEC_ELT (graph->complex[from], i, c)
      {
        /* In complex constraints for node FROM, we may have either
! 	 a = *FROM, and *FROM = a, or an offsetted constraint which are
  	 always added to the rhs node's constraints.  */
  
        if (c->rhs.type == DEREF)
*************** add_graph_edge (constraint_graph_t graph
*** 641,647 ****
  	 adding the direct edge FROM -> TO when we have FROM -> ESCAPED
  	 and TO contains ESCAPED.
  	 ???  Note this is only a heuristic, it does not prevent the
! 	 situation from occuring.  The heuristic helps PR38474 and
  	 PR99912 significantly.  */
        if (to < FIRST_REF_NODE
  	  && bitmap_bit_p (graph->succs[from], find (escaped_id))
--- 641,647 ----
  	 adding the direct edge FROM -> TO when we have FROM -> ESCAPED
  	 and TO contains ESCAPED.
  	 ???  Note this is only a heuristic, it does not prevent the
! 	 situation from occurring.  The heuristic helps PR38474 and
  	 PR99912 significantly.  */
        if (to < FIRST_REF_NODE
  	  && bitmap_bit_p (graph->succs[from], find (escaped_id))
diff -Nrcpad gcc-17-20260524/gcc/range-op.cc gcc-17-20260531/gcc/range-op.cc
*** gcc-17-20260524/gcc/range-op.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/range-op.cc	Sun May 31 22:32:06 2026
*************** range_op_handler::operator bool () const
*** 143,149 ****
    return m_operator != &default_operator;
  }
  
! // Return a pointer to the range operator assocaited with this handler.
  // If it is a default operator, return nullptr.
  // This is the equivalent of indexing the range table.
  
--- 143,149 ----
    return m_operator != &default_operator;
  }
  
! // Return a pointer to the range operator associated with this handler.
  // If it is a default operator, return nullptr.
  // This is the equivalent of indexing the range table.
  
*************** operator_cast::op1_range (irange &r, tre
*** 3242,3248 ****
        wide_int value = wide_int::from (bm.value (), TYPE_PRECISION (type),
  				       UNSIGNED);
  
!       // Set then additonal unknown bits in mask.
        wide_int lim = wi::mask (TYPE_PRECISION (lhs_type), true,
  			       TYPE_PRECISION (type));
        mask = mask | lim;
--- 3242,3248 ----
        wide_int value = wide_int::from (bm.value (), TYPE_PRECISION (type),
  				       UNSIGNED);
  
!       // Set then additional unknown bits in mask.
        wide_int lim = wi::mask (TYPE_PRECISION (lhs_type), true,
  			       TYPE_PRECISION (type));
        mask = mask | lim;
*************** operator_bitwise_and::wi_fold (irange &r
*** 3623,3630 ****
  			       const wide_int &rh_ub) const
  {
    // The AND algorithm does not handle complex signed operations well.
!   // If a signed range crosses the boundry between signed and unsigned
!   // proces sit as 2 ranges and union the results.
    if (TYPE_SIGN (type) == SIGNED
        && wi::neg_p (lh_lb, SIGNED) != wi::neg_p (lh_ub, SIGNED))
      {
--- 3623,3630 ----
  			       const wide_int &rh_ub) const
  {
    // The AND algorithm does not handle complex signed operations well.
!   // If a signed range crosses the boundary between signed and unsigned
!   // process it as 2 ranges and union the results.
    if (TYPE_SIGN (type) == SIGNED
        && wi::neg_p (lh_lb, SIGNED) != wi::neg_p (lh_ub, SIGNED))
      {
*************** operator_bitwise_and::op1_range (irange
*** 3869,3875 ****
    op1_mask |= lhs_bm.mask ();
    // The resulting zeros correspond to known bits in the LHS mask, and
    // the LHS value should tell us what they are.  Mask off any
!   // extraneous values thats are not convered by the mask.
    wide_int op1_value = lhs_bm.value () & ~op1_mask;
    irange_bitmask op1_bm (op1_value, op1_mask);
    // Intersect this mask with anything already known about the value.
--- 3869,3875 ----
    op1_mask |= lhs_bm.mask ();
    // The resulting zeros correspond to known bits in the LHS mask, and
    // the LHS value should tell us what they are.  Mask off any
!   // extraneous values that are not covered by the mask.
    wide_int op1_value = lhs_bm.value () & ~op1_mask;
    irange_bitmask op1_bm (op1_value, op1_mask);
    // Intersect this mask with anything already known about the value.
diff -Nrcpad gcc-17-20260524/gcc/range-op.h gcc-17-20260531/gcc/range-op.h
*** gcc-17-20260524/gcc/range-op.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/range-op.h	Sun May 31 22:32:06 2026
*************** public:
*** 238,244 ****
    virtual bool overflow_free_p (const irange &lh, const irange &rh,
  				relation_trio = TRIO_VARYING) const;
  
!   // Compatability check for operands.
    virtual bool operand_check_p (tree, tree, tree) const;
  
  protected:
--- 238,244 ----
    virtual bool overflow_free_p (const irange &lh, const irange &rh,
  				relation_trio = TRIO_VARYING) const;
  
!   // Compatibility check for operands.
    virtual bool operand_check_p (tree, tree, tree) const;
  
  protected:
diff -Nrcpad gcc-17-20260524/gcc/read-md.h gcc-17-20260531/gcc/read-md.h
*** gcc-17-20260524/gcc/read-md.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/read-md.h	Sun May 31 22:32:06 2026
*************** class md_reader
*** 318,324 ****
    htab_t m_overloads_htab;
  };
  
! /* Global singleton; constrast with rtx_reader_ptr below.  */
  extern md_reader *md_reader_ptr;
  
  /* An md_reader subclass which skips unknown directives, for
--- 318,324 ----
    htab_t m_overloads_htab;
  };
  
! /* Global singleton; contrast with rtx_reader_ptr below.  */
  extern md_reader *md_reader_ptr;
  
  /* An md_reader subclass which skips unknown directives, for
*************** class rtx_reader : public md_reader
*** 370,376 ****
  #endif
  };
  
! /* Global singleton; constrast with md_reader_ptr above.  */
  extern rtx_reader *rtx_reader_ptr;
  
  extern void (*include_callback) (const char *);
--- 370,376 ----
  #endif
  };
  
! /* Global singleton; contrast with md_reader_ptr above.  */
  extern rtx_reader *rtx_reader_ptr;
  
  extern void (*include_callback) (const char *);
diff -Nrcpad gcc-17-20260524/gcc/read-rtl-function.cc gcc-17-20260531/gcc/read-rtl-function.cc
*** gcc-17-20260524/gcc/read-rtl-function.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/read-rtl-function.cc	Sun May 31 22:32:06 2026
*************** lookup_reg_by_dump_name (const char *nam
*** 356,362 ****
    /* TODO: handle "virtual-reg-%d".  */
  
    /* In compact mode, pseudos are printed with '< and '>' wrapping the regno,
!      offseting it by (LAST_VIRTUAL_REGISTER + 1), so that the
       first non-virtual pseudo is dumped as "<0>".  */
    if (name[0] == '<' && name[strlen (name) - 1] == '>')
      {
--- 356,362 ----
    /* TODO: handle "virtual-reg-%d".  */
  
    /* In compact mode, pseudos are printed with '< and '>' wrapping the regno,
!      offsetting it by (LAST_VIRTUAL_REGISTER + 1), so that the
       first non-virtual pseudo is dumped as "<0>".  */
    if (name[0] == '<' && name[strlen (name) - 1] == '>')
      {
diff -Nrcpad gcc-17-20260524/gcc/real.cc gcc-17-20260531/gcc/real.cc
*** gcc-17-20260524/gcc/real.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/real.cc	Sun May 31 22:32:06 2026
*************** const struct real_format motorola_single
*** 3186,3192 ****
        - Denormals can be represented, but are treated as +0.0 when
  	used as an operand and are never generated as a result.
        - -0.0 can be represented, but a zero result is always +0.0.
!       - the only supported rounding mode is trunction (towards zero).  */
  const struct real_format spu_single_format =
    {
      encode_ieee_single,
--- 3186,3192 ----
        - Denormals can be represented, but are treated as +0.0 when
  	used as an operand and are never generated as a result.
        - -0.0 can be represented, but a zero result is always +0.0.
!       - the only supported rounding mode is truncation (towards zero).  */
  const struct real_format spu_single_format =
    {
      encode_ieee_single,
diff -Nrcpad gcc-17-20260524/gcc/recog.h gcc-17-20260531/gcc/recog.h
*** gcc-17-20260524/gcc/recog.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/recog.h	Sun May 31 22:32:06 2026
*************** public:
*** 130,136 ****
  			  rtx /*mem*/) { return true; }
  
    /* Note that we've simplified OLD_RTX into NEW_RTX.  When substituting,
!      this only happens if a substitution occured within OLD_RTX.
       Undoing OLD_NUM_CHANGES and up will restore the old form of OLD_RTX.
       OLD_RESULT_FLAGS is the value that RESULT_FLAGS had before processing
       OLD_RTX.  */
--- 130,136 ----
  			  rtx /*mem*/) { return true; }
  
    /* Note that we've simplified OLD_RTX into NEW_RTX.  When substituting,
!      this only happens if a substitution occurred within OLD_RTX.
       Undoing OLD_NUM_CHANGES and up will restore the old form of OLD_RTX.
       OLD_RESULT_FLAGS is the value that RESULT_FLAGS had before processing
       OLD_RTX.  */
diff -Nrcpad gcc-17-20260524/gcc/ree.cc gcc-17-20260531/gcc/ree.cc
*** gcc-17-20260524/gcc/ree.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/ree.cc	Sun May 31 22:32:06 2026
*************** find_and_remove_re (void)
*** 1351,1357 ****
  
       It may first appear that the arguments for the copy are reversed.
       Remember that the memory reference will be changed to refer to the
!      destination of the extention.  So we're actually emitting a copy
       from the new destination to the old destination.  */
    for (unsigned int i = 0; i < reinsn_copy_list.length (); i += 2)
      {
--- 1351,1357 ----
  
       It may first appear that the arguments for the copy are reversed.
       Remember that the memory reference will be changed to refer to the
!      destination of the extension.  So we're actually emitting a copy
       from the new destination to the old destination.  */
    for (unsigned int i = 0; i < reinsn_copy_list.length (); i += 2)
      {
diff -Nrcpad gcc-17-20260524/gcc/reg-notes.def gcc-17-20260531/gcc/reg-notes.def
*** gcc-17-20260524/gcc/reg-notes.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/reg-notes.def	Sun May 31 22:32:06 2026
*************** REG_CFA_NOTE (CFA_RESTORE)
*** 164,170 ****
  REG_CFA_NOTE (CFA_NO_RESTORE)
  
  /* Attached to insns that are RTX_FRAME_RELATED_P, marks insn that sets
!    vDRAP from DRAP.  If vDRAP is a register, vdrap_reg is initalized
     to the argument, if it is a MEM, it is ignored.  */
  REG_CFA_NOTE (CFA_SET_VDRAP)
  
--- 164,170 ----
  REG_CFA_NOTE (CFA_NO_RESTORE)
  
  /* Attached to insns that are RTX_FRAME_RELATED_P, marks insn that sets
!    vDRAP from DRAP.  If vDRAP is a register, vdrap_reg is initialized
     to the argument, if it is a MEM, it is ignored.  */
  REG_CFA_NOTE (CFA_SET_VDRAP)
  
diff -Nrcpad gcc-17-20260524/gcc/reginfo.cc gcc-17-20260531/gcc/reginfo.cc
*** gcc-17-20260524/gcc/reginfo.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/reginfo.cc	Sun May 31 22:32:06 2026
*************** reg_allocno_class (int regno)
*** 856,862 ****
  
  
  
! /* Allocate space for reg info and initilize it.  */
  static void
  allocate_reg_info (void)
  {
--- 856,862 ----
  
  
  
! /* Allocate space for reg info and initialize it.  */
  static void
  allocate_reg_info (void)
  {
diff -Nrcpad gcc-17-20260524/gcc/reload1.cc gcc-17-20260531/gcc/reload1.cc
*** gcc-17-20260524/gcc/reload1.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/reload1.cc	Sun May 31 22:32:06 2026
*************** will_delete_init_insn_p (rtx_insn *insn)
*** 743,749 ****
     so any pseudo reg that is spilled must go to the stack.
  
     Return value is TRUE if reload likely left dead insns in the
!    stream and a DCE pass should be run to elimiante them.  Else the
     return value is FALSE.  */
  
  bool
--- 743,749 ----
     so any pseudo reg that is spilled must go to the stack.
  
     Return value is TRUE if reload likely left dead insns in the
!    stream and a DCE pass should be run to eliminate them.  Else the
     return value is FALSE.  */
  
  bool
*************** emit_reload_insns (class insn_chain *cha
*** 8256,8262 ****
  	}
  
        /* The following if-statement was #if 0'd in 1.34 (or before...).
! 	 It's reenabled in 1.35 because supposedly nothing else
  	 deals with this problem.  */
  
        /* If a register gets output-reloaded from a non-spill register,
--- 8256,8262 ----
  	}
  
        /* The following if-statement was #if 0'd in 1.34 (or before...).
! 	 It's re-enabled in 1.35 because supposedly nothing else
  	 deals with this problem.  */
  
        /* If a register gets output-reloaded from a non-spill register,
diff -Nrcpad gcc-17-20260524/gcc/resource.cc gcc-17-20260531/gcc/resource.cc
*** gcc-17-20260524/gcc/resource.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/resource.cc	Sun May 31 22:32:06 2026
*************** mark_referenced_resources (rtx x, struct
*** 369,375 ****
        /* In addition to the usual references, also consider all outputs
  	 as referenced, to compensate for mark_set_resources treating
  	 them as killed.  This is similar to ZERO_EXTRACT / STRICT_LOW_PART
! 	 handling, execpt that we got a partial incidence instead of a partial
  	 width.  */
        mark_set_resources (x, res, 0,
  			  include_delayed_effects
--- 369,375 ----
        /* In addition to the usual references, also consider all outputs
  	 as referenced, to compensate for mark_set_resources treating
  	 them as killed.  This is similar to ZERO_EXTRACT / STRICT_LOW_PART
! 	 handling, except that we got a partial incidence instead of a partial
  	 width.  */
        mark_set_resources (x, res, 0,
  			  include_delayed_effects
*************** mark_target_live_regs (rtx_insn *insns,
*** 800,806 ****
  	  if (CALL_P (real_insn))
  	    {
  	      /* Values in call-clobbered registers survive a COND_EXEC CALL
! 		 if that is not executed; this matters for resoure use because
  		 they may be used by a complementarily (or more strictly)
  		 predicated instruction, or if the CALL is NORETURN.  */
  	      if (GET_CODE (PATTERN (real_insn)) != COND_EXEC)
--- 800,806 ----
  	  if (CALL_P (real_insn))
  	    {
  	      /* Values in call-clobbered registers survive a COND_EXEC CALL
! 		 if that is not executed; this matters for resource use because
  		 they may be used by a complementarily (or more strictly)
  		 predicated instruction, or if the CALL is NORETURN.  */
  	      if (GET_CODE (PATTERN (real_insn)) != COND_EXEC)
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/access-utils.h gcc-17-20260531/gcc/rtl-ssa/access-utils.h
*** gcc-17-20260524/gcc/rtl-ssa/access-utils.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/access-utils.h	Sun May 31 22:32:06 2026
***************
*** 19,25 ****
  
  namespace rtl_ssa {
  
! // Return a referene to the whole of register REGNO.
  inline resource_info
  full_register (unsigned int regno)
  {
--- 19,25 ----
  
  namespace rtl_ssa {
  
! // Return a reference to the whole of register REGNO.
  inline resource_info
  full_register (unsigned int regno)
  {
*************** drop_memory_access (T accesses)
*** 79,85 ****
  }
  
  // Filter ACCESSES to return an access_array of only those accesses that
! // satisfy PREDICATE.  Alocate the new array above WATERMARK.
  template<typename T, typename FilterPredicate>
  inline T
  filter_accesses (obstack_watermark &watermark,
--- 79,85 ----
  }
  
  // Filter ACCESSES to return an access_array of only those accesses that
! // satisfy PREDICATE.  Allocate the new array above WATERMARK.
  template<typename T, typename FilterPredicate>
  inline T
  filter_accesses (obstack_watermark &watermark,
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/accesses.cc gcc-17-20260531/gcc/rtl-ssa/accesses.cc
*** gcc-17-20260524/gcc/rtl-ssa/accesses.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/accesses.cc	Sun May 31 22:32:06 2026
*************** clobber_info::recompute_group ()
*** 53,59 ****
    gcc_checking_assert (m_parent);
  
    // If the previous splay operation did anything, this clobber is now an
!   // ancestor of CURSOR, and all the nodes inbetween have a stale group.
    // Since we have visited the nodes, we might as well update them too.
    //
    // If the previous splay operation did nothing, start the update from
--- 53,59 ----
    gcc_checking_assert (m_parent);
  
    // If the previous splay operation did anything, this clobber is now an
!   // ancestor of CURSOR, and all the nodes in between have a stale group.
    // Since we have visited the nodes, we might as well update them too.
    //
    // If the previous splay operation did nothing, start the update from
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/accesses.h gcc-17-20260531/gcc/rtl-ssa/accesses.h
*** gcc-17-20260524/gcc/rtl-ssa/accesses.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/accesses.h	Sun May 31 22:32:06 2026
*************** using clobber_tree = clobber_info::splay
*** 664,670 ****
  //   which it dies, otherwise there is a fake live-out use at the end of
  //   the EBB.
  //
! // Since debug instructions should not affect codegen, they opportunisticly
  // attach to the same set_info as nondebug instructions where possible.
  // If a nondebug instruction would attach to a degenerate phi and if no
  // such phi exists, debug instructions instead attach to whichever set_info
--- 664,670 ----
  //   which it dies, otherwise there is a fake live-out use at the end of
  //   the EBB.
  //
! // Since debug instructions should not affect codegen, they opportunistically
  // attach to the same set_info as nondebug instructions where possible.
  // If a nondebug instruction would attach to a degenerate phi and if no
  // such phi exists, debug instructions instead attach to whichever set_info
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/blocks.cc gcc-17-20260531/gcc/rtl-ssa/blocks.cc
*** gcc-17-20260524/gcc/rtl-ssa/blocks.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/blocks.cc	Sun May 31 22:32:06 2026
*************** function_info::add_artificial_accesses (
*** 941,947 ****
    // Ensure that global registers and memory are live at the end of any
    // block that has no successors, such as the exit block and non-local gotos.
    // Global registers have to be singled out because they are not part of
!   // the DF artifical use list (they are instead treated as used within
    // every block).
    if (flags == 0 && EDGE_COUNT (cfg_bb->succs) == 0)
      {
--- 941,947 ----
    // Ensure that global registers and memory are live at the end of any
    // block that has no successors, such as the exit block and non-local gotos.
    // Global registers have to be singled out because they are not part of
!   // the DF artificial use list (they are instead treated as used within
    // every block).
    if (flags == 0 && EDGE_COUNT (cfg_bb->succs) == 0)
      {
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/functions.h gcc-17-20260531/gcc/rtl-ssa/functions.h
*** gcc-17-20260524/gcc/rtl-ssa/functions.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/functions.h	Sun May 31 22:32:06 2026
*************** public:
*** 153,159 ****
    // scope until the change has been aborted or successfully completed.
    obstack_watermark new_change_attempt () { return &m_temp_obstack; }
  
!   // SET and INSN belong to the same EBB, with SET occuring before INSN.
    // Return true if SET is still available at INSN.
    bool remains_available_at_insn (const set_info *set, insn_info *insn);
  
--- 153,159 ----
    // scope until the change has been aborted or successfully completed.
    obstack_watermark new_change_attempt () { return &m_temp_obstack; }
  
!   // SET and INSN belong to the same EBB, with SET occurring before INSN.
    // Return true if SET is still available at INSN.
    bool remains_available_at_insn (const set_info *set, insn_info *insn);
  
*************** public:
*** 166,172 ****
    // available on entry to BB, without solving a full dataflow problem.
    // If all the values are already live on entry to BB or can be made
    // available there, return a use_array that describes the uses as
!   // if they occured at the start of BB.  These uses are purely temporary,
    // and will not become permanent unless applied using change_insns.
    //
    // If the operation fails, return an invalid use_array.
--- 166,172 ----
    // available on entry to BB, without solving a full dataflow problem.
    // If all the values are already live on entry to BB or can be made
    // available there, return a use_array that describes the uses as
!   // if they occurred at the start of BB.  These uses are purely temporary,
    // and will not become permanent unless applied using change_insns.
    //
    // If the operation fails, return an invalid use_array.
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/insns.cc gcc-17-20260531/gcc/rtl-ssa/insns.cc
*** gcc-17-20260524/gcc/rtl-ssa/insns.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/insns.cc	Sun May 31 22:32:06 2026
*************** function_info::record_use (build_info &b
*** 523,529 ****
        // actually correct.
        auto value_is_valid = [&]()
  	{
! 	  // Memmory always has a valid definition.
  	  if (ref.is_mem ())
  	    return true;
  
--- 523,529 ----
        // actually correct.
        auto value_is_valid = [&]()
  	{
! 	  // Memory always has a valid definition.
  	  if (ref.is_mem ())
  	    return true;
  
diff -Nrcpad gcc-17-20260524/gcc/rtl-ssa/insns.h gcc-17-20260531/gcc/rtl-ssa/insns.h
*** gcc-17-20260524/gcc/rtl-ssa/insns.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl-ssa/insns.h	Sun May 31 22:32:06 2026
*************** private:
*** 407,413 ****
    // MAX_RECOG_OPERANDS is the maximum number of pseudos that can be
    // defined by an instruction, so the number of definitions in a real
    // instruction should fit easily in 16 bits.  However, there are no
!   // limits on the number of definitions in artifical instructions.
    unsigned int m_num_uses;
    unsigned int m_num_defs;
  
--- 407,413 ----
    // MAX_RECOG_OPERANDS is the maximum number of pseudos that can be
    // defined by an instruction, so the number of definitions in a real
    // instruction should fit easily in 16 bits.  However, there are no
!   // limits on the number of definitions in artificial instructions.
    unsigned int m_num_uses;
    unsigned int m_num_defs;
  
diff -Nrcpad gcc-17-20260524/gcc/rtl.def gcc-17-20260531/gcc/rtl.def
*** gcc-17-20260524/gcc/rtl.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl.def	Sun May 31 22:32:06 2026
*************** DEF_RTL_EXPR(DEFINE_SPECIAL_PREDICATE, "
*** 1017,1023 ****
     2: A docstring for this constraint, in Texinfo syntax; not currently
        used, in future will be incorporated into the manual's list of
        machine-specific operand constraints.
!    3: A C expression that evalutes to true if "regno" is a valid
        start register.  */
  DEF_RTL_EXPR(DEFINE_REGISTER_CONSTRAINT, "define_register_constraint", "sssS", RTX_EXTRA)
  
--- 1017,1023 ----
     2: A docstring for this constraint, in Texinfo syntax; not currently
        used, in future will be incorporated into the manual's list of
        machine-specific operand constraints.
!    3: A C expression that evaluates to true if "regno" is a valid
        start register.  */
  DEF_RTL_EXPR(DEFINE_REGISTER_CONSTRAINT, "define_register_constraint", "sssS", RTX_EXTRA)
  
*************** DEF_RTL_EXPR(COND, "cond", "Ee", RTX_EXT
*** 1337,1343 ****
     that match the substitution pattern.
  
     Operand:
!    0: The name of the substitition template.
     1: Input template to match to see if a substitution is applicable.
     2: A C expression giving an additional condition for the generated
        new define_expand or define_insn.
--- 1337,1343 ----
     that match the substitution pattern.
  
     Operand:
!    0: The name of the substitution template.
     1: Input template to match to see if a substitution is applicable.
     2: A C expression giving an additional condition for the generated
        new define_expand or define_insn.
*************** DEF_RTL_EXPR(DEFINE_SUBST, "define_subst
*** 1361,1367 ****
        name, for the case that the DEFINE_SUBST is not applied (i.e. the
        unmodified version of the pattern).
     3: String to substitute for the subst-attribute name in the pattern
!       name, for the case that the DEFINE_SUBST is applied to the patten.
  
     The use of DEFINE_SUBST and DEFINE_SUBST_ATTR is explained in the
     GCC internals manual, under "RTL Templates Transformations".  */
--- 1361,1367 ----
        name, for the case that the DEFINE_SUBST is not applied (i.e. the
        unmodified version of the pattern).
     3: String to substitute for the subst-attribute name in the pattern
!       name, for the case that the DEFINE_SUBST is applied to the pattern.
  
     The use of DEFINE_SUBST and DEFINE_SUBST_ATTR is explained in the
     GCC internals manual, under "RTL Templates Transformations".  */
diff -Nrcpad gcc-17-20260524/gcc/rtl.h gcc-17-20260531/gcc/rtl.h
*** gcc-17-20260524/gcc/rtl.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rtl.h	Sun May 31 22:32:06 2026
*************** extern bool const_vec_series_p_1 (const_
*** 3146,3152 ****
  
     { B, B + S, B + 2 * S, B + 3 * S, ... }
  
!    for a nonzero S.  Store B and S in *BASE_OUT and *STEP_OUT on sucess.  */
  
  inline bool
  const_vec_series_p (const_rtx x, rtx *base_out, rtx *step_out)
--- 3146,3152 ----
  
     { B, B + S, B + 2 * S, B + 3 * S, ... }
  
!    for a nonzero S.  Store B and S in *BASE_OUT and *STEP_OUT on success.  */
  
  inline bool
  const_vec_series_p (const_rtx x, rtx *base_out, rtx *step_out)
*************** const_vec_series_p (const_rtx x, rtx *ba
*** 3164,3170 ****
     { B, B + S, B + 2 * S, B + 3 * S, ... }
  
     where B and S are constant or nonconstant.  Store B and S in
!    *BASE_OUT and *STEP_OUT on sucess.  */
  
  inline bool
  vec_series_p (const_rtx x, rtx *base_out, rtx *step_out)
--- 3164,3170 ----
     { B, B + S, B + 2 * S, B + 3 * S, ... }
  
     where B and S are constant or nonconstant.  Store B and S in
!    *BASE_OUT and *STEP_OUT on success.  */
  
  inline bool
  vec_series_p (const_rtx x, rtx *base_out, rtx *step_out)
diff -Nrcpad gcc-17-20260524/gcc/rust/ChangeLog gcc-17-20260531/gcc/rust/ChangeLog
*** gcc-17-20260524/gcc/rust/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rust/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-05-29  Marc Poulhiès  <dkm@kataplop.net>
+ 	    Andreas Schwab  <schwab@linux-m68k.org>
+ 
+ 	PR tree-optimization/114385
+ 	* lex/rust-token.cc (Token::as_string): split concatenation.
+ 
  2026-04-14  jayant chauhan  <0001jayant@gmail.com>
  
  	* backend/rust-compile-item.cc (CompileItem::visit): Do not insert
diff -Nrcpad gcc-17-20260524/gcc/rust/lex/rust-token.cc gcc-17-20260531/gcc/rust/lex/rust-token.cc
*** gcc-17-20260524/gcc/rust/lex/rust-token.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/rust/lex/rust-token.cc	Sun May 31 22:32:06 2026
*************** Token::as_string () const
*** 248,259 ****
  	  if (get_type_hint () == CORETYPE_UNKNOWN)
  	    return get_str ();
  	  else
! 	    return get_str () + get_type_hint_str ();
  	case FLOAT_LITERAL:
  	  if (get_type_hint () == CORETYPE_UNKNOWN)
  	    return get_str ();
  	  else
! 	    return get_str () + get_type_hint_str ();
  	default:
  	  return get_str ();
  	}
--- 248,278 ----
  	  if (get_type_hint () == CORETYPE_UNKNOWN)
  	    return get_str ();
  	  else
! 	    /* FIXME: This is a workaround for an overzealous -Wrestrict,
! 	       #125404 - we should remove it once it is fixed
! 
! 	       return get_str () + get_type_hint_str ();
! 	       */
! 	    {
! 	      std::string s = get_str ();
! 	      s += get_type_hint_str ();
! 	      return s;
! 	    }
  	case FLOAT_LITERAL:
  	  if (get_type_hint () == CORETYPE_UNKNOWN)
  	    return get_str ();
  	  else
! 	    /* FIXME: This is a workaround for an overzealous -Wrestrict,
! 	       #125404 - we should remove it once it is fixed
! 
! 	       return get_str () + get_type_hint_str ();
! 	       */
! 	    {
! 	      std::string s = get_str ();
! 	      s += get_type_hint_str ();
! 	      return s;
! 	    }
! 
  	default:
  	  return get_str ();
  	}
diff -Nrcpad gcc-17-20260524/gcc/sanopt.cc gcc-17-20260531/gcc/sanopt.cc
*** gcc-17-20260524/gcc/sanopt.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sanopt.cc	Sun May 31 22:32:06 2026
*************** public:
*** 233,239 ****
    /* Number of IFN_ASAN_CHECK statements.  */
    int asan_num_accesses;
  
!   /* True when the current functions constains an ASAN_MARK.  */
    bool contains_asan_mark;
  };
  
--- 233,239 ----
    /* Number of IFN_ASAN_CHECK statements.  */
    int asan_num_accesses;
  
!   /* True when the current functions contains an ASAN_MARK.  */
    bool contains_asan_mark;
  };
  
diff -Nrcpad gcc-17-20260524/gcc/sched-deps.cc gcc-17-20260531/gcc/sched-deps.cc
*** gcc-17-20260524/gcc/sched-deps.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sched-deps.cc	Sun May 31 22:32:06 2026
*************** sched_analyze_2 (class deps_desc *deps,
*** 2739,2745 ****
  	 a jump insn which usually generates MOVE_BARRIER preventing
  	 to move insns containing registers or memories through the
  	 barrier.  It is also wrong with generated code performance
! 	 point of view as prefetch withouth dependecies will have a
  	 tendency to be issued later instead of earlier.  It is hard
  	 to generate accurate dependencies for prefetch insns as
  	 prefetch has only the start address but it is better to have
--- 2739,2745 ----
  	 a jump insn which usually generates MOVE_BARRIER preventing
  	 to move insns containing registers or memories through the
  	 barrier.  It is also wrong with generated code performance
! 	 point of view as prefetch without dependencies will have a
  	 tendency to be issued later instead of earlier.  It is hard
  	 to generate accurate dependencies for prefetch insns as
  	 prefetch has only the start address but it is better to have
diff -Nrcpad gcc-17-20260524/gcc/sel-sched-ir.cc gcc-17-20260531/gcc/sel-sched-ir.cc
*** gcc-17-20260524/gcc/sel-sched-ir.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sel-sched-ir.cc	Sun May 31 22:32:06 2026
*************** alloc_target_context (void)
*** 344,350 ****
  
  /* Init target context TC.
     If CLEAN_P is true, then make TC as it is beginning of the scheduler.
!    Overwise, copy current backend context to TC.  */
  static void
  init_target_context (tc_t tc, bool clean_p)
  {
--- 344,350 ----
  
  /* Init target context TC.
     If CLEAN_P is true, then make TC as it is beginning of the scheduler.
!    Otherwise, copy current backend context to TC.  */
  static void
  init_target_context (tc_t tc, bool clean_p)
  {
*************** av_set_union_and_live (av_set_t *top, av
*** 2249,2255 ****
    av_set_iterator i;
    av_set_t *to_tailp, in_both_set = NULL;
  
!   /* Delete from TOP all expres, that present in FROMP.  */
    FOR_EACH_EXPR_1 (expr1, i, top)
      {
        expr_t expr2 = av_set_lookup_and_remove (fromp, EXPR_VINSN (expr1));
--- 2249,2255 ----
    av_set_iterator i;
    av_set_t *to_tailp, in_both_set = NULL;
  
!   /* Delete from TOP all exprs, that present in FROMP.  */
    FOR_EACH_EXPR_1 (expr1, i, top)
      {
        expr_t expr2 = av_set_lookup_and_remove (fromp, EXPR_VINSN (expr1));
*************** make_regions_from_loop_nest (class loop
*** 6110,6116 ****
    return true;
  }
  
! /* Initalize data structures needed.  */
  void
  sel_init_pipelining (void)
  {
--- 6110,6116 ----
    return true;
  }
  
! /* Initialize data structures needed.  */
  void
  sel_init_pipelining (void)
  {
diff -Nrcpad gcc-17-20260524/gcc/sel-sched-ir.h gcc-17-20260531/gcc/sel-sched-ir.h
*** gcc-17-20260524/gcc/sel-sched-ir.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sel-sched-ir.h	Sun May 31 22:32:06 2026
*************** struct _list_iterator
*** 405,411 ****
    /* The list we're iterating.  */
    _list_t *lp;
  
!   /* True when this iterator supprts removing.  */
    bool can_remove_p;
  
    /* True when we've actually removed something.  */
--- 405,411 ----
    /* The list we're iterating.  */
    _list_t *lp;
  
!   /* True when this iterator supports removing.  */
    bool can_remove_p;
  
    /* True when we've actually removed something.  */
*************** struct succ_iterator
*** 1008,1014 ****
  /* A structure returning all successor's information.  */
  struct succs_info
  {
!   /* Flags that these succcessors were computed with.  */
    short flags;
  
    /* Successors that correspond to the flags.  */
--- 1008,1014 ----
  /* A structure returning all successor's information.  */
  struct succs_info
  {
!   /* Flags that these successors were computed with.  */
    short flags;
  
    /* Successors that correspond to the flags.  */
*************** get_all_loop_exits (basic_block bb)
*** 1210,1216 ****
  /* Include all successors.  */
  #define SUCCS_ALL (SUCCS_NORMAL | SUCCS_BACK | SUCCS_OUT)
  
! /* We need to return a succ_iterator to avoid 'unitialized' warning
     during bootstrap.  */
  inline succ_iterator
  _succ_iter_start (insn_t *succp, insn_t insn, int flags)
--- 1210,1216 ----
  /* Include all successors.  */
  #define SUCCS_ALL (SUCCS_NORMAL | SUCCS_BACK | SUCCS_OUT)
  
! /* We need to return a succ_iterator to avoid 'uninitialized' warning
     during bootstrap.  */
  inline succ_iterator
  _succ_iter_start (insn_t *succp, insn_t insn, int flags)
diff -Nrcpad gcc-17-20260524/gcc/sel-sched.cc gcc-17-20260531/gcc/sel-sched.cc
*** gcc-17-20260524/gcc/sel-sched.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sel-sched.cc	Sun May 31 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 71,77 ****
  
     An expression is a vinsn with additional data characterizing its properties
     at some point in the control flow graph.  The data may be its usefulness,
!    priority, speculative status, whether it was renamed/subsituted, etc.
     An expression is described by expr_t type.
  
     Availability set (av_set) is a set of expressions at a given control flow
--- 71,77 ----
  
     An expression is a vinsn with additional data characterizing its properties
     at some point in the control flow graph.  The data may be its usefulness,
!    priority, speculative status, whether it was renamed/substituted, etc.
     An expression is described by expr_t type.
  
     Availability set (av_set) is a set of expressions at a given control flow
*************** static bitmap code_motion_visited_blocks
*** 525,531 ****
  /* The number of bookkeeping copies created.  */
  static int stat_bookkeeping_copies;
  
! /* The number of insns that required bookkeeiping for their scheduling.  */
  static int stat_insns_needed_bookkeeping;
  
  /* The number of insns that got renamed.  */
--- 525,531 ----
  /* The number of bookkeeping copies created.  */
  static int stat_bookkeeping_copies;
  
! /* The number of insns that required bookkeeping for their scheduling.  */
  static int stat_insns_needed_bookkeeping;
  
  /* The number of insns that got renamed.  */
*************** moveup_expr (expr_t expr, insn_t through
*** 2144,2150 ****
       insn is pulled ahead of it.  It's hard to figure out how to
       introduce such a notion in sel-sched, but it already fails to
       support debug insns in other ways, so we just go ahead and
!      let the deug insns go corrupt for now.  */
    if (DEBUG_INSN_P (through_insn) && !DEBUG_INSN_P (insn))
      return MOVEUP_EXPR_SAME;
  
--- 2144,2150 ----
       insn is pulled ahead of it.  It's hard to figure out how to
       introduce such a notion in sel-sched, but it already fails to
       support debug insns in other ways, so we just go ahead and
!      let the debug insns go corrupt for now.  */
    if (DEBUG_INSN_P (through_insn) && !DEBUG_INSN_P (insn))
      return MOVEUP_EXPR_SAME;
  
*************** moveup_expr_cached (expr_t expr, insn_t
*** 2531,2537 ****
         basic blocks.  */;
    else if (try_bitmap_cache (expr, insn, inside_insn_group, &res))
      /* When inside insn group, we do not want remove stores conflicting
!        with previosly issued loads.  */
      got_answer = ! inside_insn_group || res != MOVEUP_EXPR_NULL;
    else if (try_transformation_cache (expr, insn, &res))
      got_answer = true;
--- 2531,2537 ----
         basic blocks.  */;
    else if (try_bitmap_cache (expr, insn, inside_insn_group, &res))
      /* When inside insn group, we do not want remove stores conflicting
!        with previously issued loads.  */
      got_answer = ! inside_insn_group || res != MOVEUP_EXPR_NULL;
    else if (try_transformation_cache (expr, insn, &res))
      got_answer = true;
*************** get_spec_check_type_for_insn (insn_t ins
*** 3216,3222 ****
    return to_check_ds;
  }
  
! /* Find the set of registers that are unavailable for storing expres
     while moving ORIG_OPS up on the path starting from INSN due to
     liveness (USED_REGS) or hardware restrictions (REG_RENAME_P).
  
--- 3216,3222 ----
    return to_check_ds;
  }
  
! /* Find the set of registers that are unavailable for storing exprs
     while moving ORIG_OPS up on the path starting from INSN due to
     liveness (USED_REGS) or hardware restrictions (REG_RENAME_P).
  
*************** get_spec_check_type_for_insn (insn_t ins
*** 3233,3239 ****
  
     This function utilizes code_motion_path_driver (formerly find_used_regs_1)
     to traverse the code motion paths.  This helper function finds registers
!    that are not available for storing expres while moving ORIG_OPS up on the
     path starting from INSN.  A register considered as used on the moving path,
     if one of the following conditions is not satisfied:
  
--- 3233,3239 ----
  
     This function utilizes code_motion_path_driver (formerly find_used_regs_1)
     to traverse the code motion paths.  This helper function finds registers
!    that are not available for storing exprs while moving ORIG_OPS up on the
     path starting from INSN.  A register considered as used on the moving path,
     if one of the following conditions is not satisfied:
  
*************** get_expr_cost (expr_t expr, fence_t fenc
*** 4303,4309 ****
      {
        if (!FENCE_STARTS_CYCLE_P (fence)
  	  && INSN_ASM_P (insn))
! 	/* This is asm insn which is tryed to be issued on the
  	   cycle not first.  Issue it on the next cycle.  */
  	return 1;
        else
--- 4303,4309 ----
      {
        if (!FENCE_STARTS_CYCLE_P (fence)
  	  && INSN_ASM_P (insn))
! 	/* This is asm insn which is tried to be issued on the
  	   cycle not first.  Issue it on the next cycle.  */
  	return 1;
        else
*************** find_place_for_bookkeeping (edge e1, edg
*** 4715,4721 ****
    return place_to_insert;
  }
  
! /* Find a proper seqno for bookkeeing insn inserted at PLACE_TO_INSERT
     for JOIN_POINT.   */
  static int
  find_seqno_for_bookkeeping (insn_t place_to_insert, insn_t join_point)
--- 4715,4721 ----
    return place_to_insert;
  }
  
! /* Find a proper seqno for bookkeeping insn inserted at PLACE_TO_INSERT
     for JOIN_POINT.   */
  static int
  find_seqno_for_bookkeeping (insn_t place_to_insert, insn_t join_point)
*************** update_and_record_unavailable_insns (bas
*** 5673,5679 ****
    rtx_insn *bb_end = sel_bb_end (book_block);
  
    /* First, get correct liveness in the bookkeeping block.  The problem is
!      the range between the bookeeping insn and the end of block.  */
    update_liveness_on_insn (bb_end);
    if (control_flow_insn_p (bb_end))
      update_liveness_on_insn (PREV_INSN (bb_end));
--- 5673,5679 ----
    rtx_insn *bb_end = sel_bb_end (book_block);
  
    /* First, get correct liveness in the bookkeeping block.  The problem is
!      the range between the bookkeeping insn and the end of block.  */
    update_liveness_on_insn (bb_end);
    if (control_flow_insn_p (bb_end))
      update_liveness_on_insn (PREV_INSN (bb_end));
*************** move_op_at_first_insn (insn_t insn, cmpd
*** 6107,6113 ****
       r1 := r2
  
       Here, insn "r1 := r3" was scheduled at the current scheduling point
!      and bookkeeping code was generated at the bookeeping block.  This
       way insn "r1 := r2" is no longer available as a whole instruction
       (but only as expr) ahead of insn "r1 := r3" in bookkeeping block.
       This situation is handled by calling update_data_sets.
--- 6107,6113 ----
       r1 := r2
  
       Here, insn "r1 := r3" was scheduled at the current scheduling point
!      and bookkeeping code was generated at the bookkeeping block.  This
       way insn "r1 := r2" is no longer available as a whole instruction
       (but only as expr) ahead of insn "r1 := r3" in bookkeeping block.
       This situation is handled by calling update_data_sets.
*************** calculate_new_fences (flist_t fences, in
*** 7431,7437 ****
  }
  
  /* Update seqnos of insns given by PSCHEDULED_INSNS.  MIN_SEQNO and MAX_SEQNO
!    are the miminum and maximum seqnos of the group, HIGHEST_SEQNO_IN_USE is
     the highest seqno used in a region.  Return the updated highest seqno.  */
  static int
  update_seqnos_and_stage (int min_seqno, int max_seqno,
--- 7431,7437 ----
  }
  
  /* Update seqnos of insns given by PSCHEDULED_INSNS.  MIN_SEQNO and MAX_SEQNO
!    are the minimum and maximum seqnos of the group, HIGHEST_SEQNO_IN_USE is
     the highest seqno used in a region.  Return the updated highest seqno.  */
  static int
  update_seqnos_and_stage (int min_seqno, int max_seqno,
diff -Nrcpad gcc-17-20260524/gcc/shrink-wrap.cc gcc-17-20260531/gcc/shrink-wrap.cc
*** gcc-17-20260524/gcc/shrink-wrap.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/shrink-wrap.cc	Sun May 31 22:32:06 2026
*************** live_edge_for_reg (basic_block bb, int r
*** 147,153 ****
  /* Try to move INSN from BB to a successor.  Return true on success.
     USES and DEFS are the set of registers that are used and defined
     after INSN in BB.  SPLIT_P indicates whether a live edge from BB
!    is splitted or not.  */
  
  static bool
  move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
--- 147,153 ----
  /* Try to move INSN from BB to a successor.  Return true on success.
     USES and DEFS are the set of registers that are used and defined
     after INSN in BB.  SPLIT_P indicates whether a live edge from BB
!    is split or not.  */
  
  static bool
  move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
*************** try_shrink_wrapping (edge *entry_edge, r
*** 764,770 ****
    /* Now see if we can put the prologue at the start of PRO.  Putting it
       there might require duplicating a block that cannot be duplicated,
       or in some cases we cannot insert the prologue there at all.  If PRO
!      wont't do, try again with the immediate dominator of PRO, and so on.
  
       The blocks that need duplicating are those reachable from PRO but
       not dominated by it.  We keep in BB_WITH a bitmap of the blocks
--- 764,770 ----
    /* Now see if we can put the prologue at the start of PRO.  Putting it
       there might require duplicating a block that cannot be duplicated,
       or in some cases we cannot insert the prologue there at all.  If PRO
!      won't do, try again with the immediate dominator of PRO, and so on.
  
       The blocks that need duplicating are those reachable from PRO but
       not dominated by it.  We keep in BB_WITH a bitmap of the blocks
*************** try_shrink_wrapping (edge *entry_edge, r
*** 994,1000 ****
  	  handle_simple_exit (e);
  
    /* Finally, we want a single edge to put the prologue on.  Make a new
!      block before the PRO block; the edge beteen them is the edge we want.
       Then redirect those edges into PRO that come from blocks without the
       prologue, to point to the new block instead.  The new prologue block
       is put at the end of the insn chain.  */
--- 994,1000 ----
  	  handle_simple_exit (e);
  
    /* Finally, we want a single edge to put the prologue on.  Make a new
!      block before the PRO block; the edge between them is the edge we want.
       Then redirect those edges into PRO that come from blocks without the
       prologue, to point to the new block instead.  The new prologue block
       is put at the end of the insn chain.  */
diff -Nrcpad gcc-17-20260524/gcc/simplify-rtx.cc gcc-17-20260531/gcc/simplify-rtx.cc
*** gcc-17-20260524/gcc/simplify-rtx.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/simplify-rtx.cc	Sun May 31 22:32:06 2026
*************** simplify_context::simplify_logical_relat
*** 2739,2745 ****
     simplify down to IOR/XOR expression right now, but there may be other
     simplifications we can do in the future.
  
!    Return the simpified expression or NULL_RTX if no simpification was
     possible.  */
  rtx
  simplify_context::simplify_ior_with_common_term (machine_mode mode, rtx op0, rtx op1)
--- 2739,2745 ----
     simplify down to IOR/XOR expression right now, but there may be other
     simplifications we can do in the future.
  
!    Return the simplified expression or NULL_RTX if no simplification was
     possible.  */
  rtx
  simplify_context::simplify_ior_with_common_term (machine_mode mode, rtx op0, rtx op1)
*************** simplify_ashift:
*** 5117,5123 ****
  	     (i386) extract scalar element from a vector using chain of
  	     nested VEC_SELECT expressions.  When input operand is a memory
  	     operand, this operation can be simplified to a simple scalar
! 	     load from an offseted memory address.  */
  	  int n_elts;
  	  if (GET_CODE (trueop0) == VEC_SELECT
  	      && (GET_MODE_NUNITS (GET_MODE (XEXP (trueop0, 0)))
--- 5117,5123 ----
  	     (i386) extract scalar element from a vector using chain of
  	     nested VEC_SELECT expressions.  When input operand is a memory
  	     operand, this operation can be simplified to a simple scalar
! 	     load from an offsetted memory address.  */
  	  int n_elts;
  	  if (GET_CODE (trueop0) == VEC_SELECT
  	      && (GET_MODE_NUNITS (GET_MODE (XEXP (trueop0, 0)))
*************** simplify_const_vector_subreg (machine_mo
*** 8379,8385 ****
    if (!native_encode_rtx (innermode, x, buffer, first_byte, buffer_bytes))
      return NULL_RTX;
  
!   /* Reencode the bytes as OUTERMODE.  */
    return native_decode_vector_rtx (outermode, buffer, 0, out_npatterns,
  				   nelts_per_pattern);
  }
--- 8379,8385 ----
    if (!native_encode_rtx (innermode, x, buffer, first_byte, buffer_bytes))
      return NULL_RTX;
  
!   /* Re-encode the bytes as OUTERMODE.  */
    return native_decode_vector_rtx (outermode, buffer, 0, out_npatterns,
  				   nelts_per_pattern);
  }
diff -Nrcpad gcc-17-20260524/gcc/spellcheck.cc gcc-17-20260531/gcc/spellcheck.cc
*** gcc-17-20260524/gcc/spellcheck.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/spellcheck.cc	Sun May 31 22:32:06 2026
*************** assert_not_suggested_for (const location
*** 354,360 ****
      assert_not_suggested_for (SELFTEST_LOCATION, CANDIDATE, TARGET);	\
    SELFTEST_END_STMT
  
! /* Verify that we offer varous suggestions that are meaningful,
     and that we don't offer various other ones that aren't (PR c/82967).  */
  
  static void
--- 354,360 ----
      assert_not_suggested_for (SELFTEST_LOCATION, CANDIDATE, TARGET);	\
    SELFTEST_END_STMT
  
! /* Verify that we offer various suggestions that are meaningful,
     and that we don't offer various other ones that aren't (PR c/82967).  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/stor-layout.cc gcc-17-20260531/gcc/stor-layout.cc
*** gcc-17-20260524/gcc/stor-layout.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/stor-layout.cc	Sun May 31 22:32:06 2026
*************** finish_bitfield_representative (tree rep
*** 2180,2186 ****
        || GET_MODE_BITSIZE (mode) > maxbitsize
        || GET_MODE_BITSIZE (mode) > MAX_FIXED_MODE_SIZE)
      {
!       if (TREE_CODE (TREE_TYPE (field)) == BITINT_TYPE)
  	{
  	  struct bitint_info info;
  	  unsigned prec = TYPE_PRECISION (TREE_TYPE (field));
--- 2180,2186 ----
        || GET_MODE_BITSIZE (mode) > maxbitsize
        || GET_MODE_BITSIZE (mode) > MAX_FIXED_MODE_SIZE)
      {
!       if (BITINT_TYPE_P (TREE_TYPE (field)))
  	{
  	  struct bitint_info info;
  	  unsigned prec = TYPE_PRECISION (TREE_TYPE (field));
*************** layout_type (tree type)
*** 2459,2473 ****
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
      case ENUMERAL_TYPE:
!       {
! 	scalar_int_mode mode
! 	  = smallest_int_mode_for_size (TYPE_PRECISION (type)).require ();
! 	SET_TYPE_MODE (type, mode);
! 	TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (mode));
! 	/* Don't set TYPE_PRECISION here, as it may be set by a bitfield.  */
! 	TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (mode));
! 	break;
!       }
  
      case BITINT_TYPE:
        {
--- 2459,2477 ----
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
      case ENUMERAL_TYPE:
!       if (TREE_CODE (type) != ENUMERAL_TYPE
! 	  || TREE_TYPE (type) == NULL_TREE
! 	  || TREE_CODE (TREE_TYPE (type)) != BITINT_TYPE)
! 	{
! 	  scalar_int_mode mode
! 	    = smallest_int_mode_for_size (TYPE_PRECISION (type)).require ();
! 	  SET_TYPE_MODE (type, mode);
! 	  TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (mode));
! 	  /* Don't set TYPE_PRECISION here, as it may be set by a bitfield.  */
! 	  TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (mode));
! 	  break;
! 	}
!       /* FALLTHRU */
  
      case BITINT_TYPE:
        {
*************** layout_type (tree type)
*** 2558,2564 ****
        TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TREE_TYPE (type));
        if (TYPE_MODE (TREE_TYPE (type)) == BLKmode)
  	{
! 	  gcc_checking_assert (TREE_CODE (TREE_TYPE (type)) == BITINT_TYPE);
  	  SET_TYPE_MODE (type, BLKmode);
  	  TYPE_SIZE (type)
  	    = int_const_binop (MULT_EXPR, TYPE_SIZE (TREE_TYPE (type)),
--- 2562,2568 ----
        TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TREE_TYPE (type));
        if (TYPE_MODE (TREE_TYPE (type)) == BLKmode)
  	{
! 	  gcc_checking_assert (BITINT_TYPE_P (TREE_TYPE (type)));
  	  SET_TYPE_MODE (type, BLKmode);
  	  TYPE_SIZE (type)
  	    = int_const_binop (MULT_EXPR, TYPE_SIZE (TREE_TYPE (type)),
diff -Nrcpad gcc-17-20260524/gcc/stringpool.h gcc-17-20260531/gcc/stringpool.h
*** gcc-17-20260524/gcc/stringpool.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/stringpool.h	Sun May 31 22:32:06 2026
***************
*** 1,4 ****
! /* Declarations and definitons for stringpool.cc.
     Copyright (C) 2013-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Declarations and definitions for stringpool.cc.
     Copyright (C) 2013-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-17-20260524/gcc/sym-exec/sym-exec-state.cc gcc-17-20260531/gcc/sym-exec/sym-exec-state.cc
*** gcc-17-20260524/gcc/sym-exec/sym-exec-state.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sym-exec/sym-exec-state.cc	Sun May 31 22:32:06 2026
*************** state::do_shift_right (value *arg1, valu
*** 767,773 ****
  
  
  /* Adds two bits and carry value.
!    Resturn result and stores new carry bit in "carry".  */
  
  value_bit *
  state::full_adder (value_bit *var1, value_bit *var2, value_bit **carry)
--- 767,773 ----
  
  
  /* Adds two bits and carry value.
!    Returns result and stores new carry bit in "carry".  */
  
  value_bit *
  state::full_adder (value_bit *var1, value_bit *var2, value_bit **carry)
*************** state::get_parent_with_const_child (valu
*** 1161,1167 ****
    node_to_parent.put (expr_root, nullptr);
  
    /* Traversing expression tree:
!      considering only comutative expression nodes.  */
    while (!nodes_to_consider.is_empty ())
      {
        bit_expression *cur_element = *nodes_to_consider.begin ();
--- 1161,1167 ----
    node_to_parent.put (expr_root, nullptr);
  
    /* Traversing expression tree:
!      considering only commutative expression nodes.  */
    while (!nodes_to_consider.is_empty ())
      {
        bit_expression *cur_element = *nodes_to_consider.begin ();
*************** state::add_numbers (value *var1, const v
*** 1239,1245 ****
  }
  
  
! /* ANDs every bit of the vector with var_bit, stroes the result in var1.  */
  
  void
  state::and_number_bit (value *var1, value_bit *var_bit)
--- 1239,1245 ----
  }
  
  
! /* ANDs every bit of the vector with var_bit, stores the result in var1.  */
  
  void
  state::and_number_bit (value *var1, value_bit *var_bit)
*************** state::add_equal_cond (value *arg1, valu
*** 1325,1331 ****
      }
  
    /* When some of bits are constants and they differ by value,
!      then we can evalate it to be false.  */
    for (size_t i = 0; i < arg1->length (); i++)
      {
        if (is_a<bit *> ((*arg1)[i]) && is_a<bit *> ((*arg2)[i])
--- 1325,1331 ----
      }
  
    /* When some of bits are constants and they differ by value,
!      then we can evaluate it to be false.  */
    for (size_t i = 0; i < arg1->length (); i++)
      {
        if (is_a<bit *> ((*arg1)[i]) && is_a<bit *> ((*arg2)[i])
*************** state::add_not_equal_cond (value *arg1,
*** 1388,1394 ****
      }
  
    /* When some of bits are constants and they differ by value,
!      then we can evalate it to be true.  */
    for (size_t i = 0; i < arg1->length (); i++)
      {
        if (is_a<bit *> ((*arg1)[i]) && is_a<bit *> ((*arg2)[i])
--- 1388,1394 ----
      }
  
    /* When some of bits are constants and they differ by value,
!      then we can evaluate it to be true.  */
    for (size_t i = 0; i < arg1->length (); i++)
      {
        if (is_a<bit *> ((*arg1)[i]) && is_a<bit *> ((*arg2)[i])
diff -Nrcpad gcc-17-20260524/gcc/sym-exec/sym-exec-state.h gcc-17-20260531/gcc/sym-exec/sym-exec-state.h
*** gcc-17-20260524/gcc/sym-exec/sym-exec-state.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/sym-exec/sym-exec-state.h	Sun May 31 22:32:06 2026
*************** class state {
*** 183,189 ****
    /* Performs AND operation on two bits.  */
    static value_bit *and_two_bits (value_bit *arg1, value_bit *arg2);
  
!   /* ANDs every bit of the value with var_bit, stroes the result in var1.  */
    void and_number_bit (value *var1, value_bit *var_bit);
  
    /* Multiplies given values.  The result is stored in dest.  */
--- 183,189 ----
    /* Performs AND operation on two bits.  */
    static value_bit *and_two_bits (value_bit *arg1, value_bit *arg2);
  
!   /* ANDs every bit of the value with var_bit, stores the result in var1.  */
    void and_number_bit (value *var1, value_bit *var_bit);
  
    /* Multiplies given values.  The result is stored in dest.  */
*************** class state {
*** 263,269 ****
    value *shift_left_by_const (const value *number, size_t shift_value);
  
    /* Adds two bits and carry value.
!      Resturn result and stores new carry bit in "carry".  */
    static value_bit *full_adder (value_bit *var1, value_bit *var2,
  				value_bit **carry);
  
--- 263,269 ----
    value *shift_left_by_const (const value *number, size_t shift_value);
  
    /* Adds two bits and carry value.
!      Returns result and stores new carry bit in "carry".  */
    static value_bit *full_adder (value_bit *var1, value_bit *var2,
  				value_bit **carry);
  
diff -Nrcpad gcc-17-20260524/gcc/symbol-summary.h gcc-17-20260531/gcc/symbol-summary.h
*** gcc-17-20260524/gcc/symbol-summary.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/symbol-summary.h	Sun May 31 22:32:06 2026
*************** private:
*** 169,175 ****
     related to a callgraph node.  Typical usage can be seen in IPA passes which
     create a temporary pass-related structures.  The summary class registers
     hooks that are triggered when a new node is inserted, duplicated and deleted.
!    A user of a summary class can ovewrite virtual methods than are triggered by
     the summary if such hook is triggered.  Apart from a callgraph node, the user
     is given a data structure tied to the node.
  
--- 169,175 ----
     related to a callgraph node.  Typical usage can be seen in IPA passes which
     create a temporary pass-related structures.  The summary class registers
     hooks that are triggered when a new node is inserted, duplicated and deleted.
!    A user of a summary class can overwrite virtual methods than are triggered by
     the summary if such hook is triggered.  Apart from a callgraph node, the user
     is given a data structure tied to the node.
  
diff -Nrcpad gcc-17-20260524/gcc/symtab.cc gcc-17-20260531/gcc/symtab.cc
*** gcc-17-20260524/gcc/symtab.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/symtab.cc	Sun May 31 22:32:06 2026
*************** symtab_node::noninterposable_alias (symt
*** 2048,2054 ****
    return false;
  }
  
! /* If node cannot be overwriten by static or dynamic linker to point to
     different definition, return NODE. Otherwise look for alias with such
     property and if none exists, introduce new one.  */
  
--- 2048,2054 ----
    return false;
  }
  
! /* If node cannot be overwritten by static or dynamic linker to point to
     different definition, return NODE. Otherwise look for alias with such
     property and if none exists, introduce new one.  */
  
*************** symtab_node::equal_address_to (symtab_no
*** 2410,2416 ****
       We probably should be consistent and use this fact here, too, but for
       the moment return false only when we are called from the alias oracle.
       Return 0 in C constant initializers and C++ manifestly constant
!      expressions, the likelyhood that different vars will be aliases is
       small and returning -1 lets us reject too many initializers.  */
    if (memory_accessed || folding_initializer)
      return 0;
--- 2410,2416 ----
       We probably should be consistent and use this fact here, too, but for
       the moment return false only when we are called from the alias oracle.
       Return 0 in C constant initializers and C++ manifestly constant
!      expressions, the likelihood that different vars will be aliases is
       small and returning -1 lets us reject too many initializers.  */
    if (memory_accessed || folding_initializer)
      return 0;
diff -Nrcpad gcc-17-20260524/gcc/system.h gcc-17-20260531/gcc/system.h
*** gcc-17-20260524/gcc/system.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/system.h	Sun May 31 22:32:06 2026
*************** void gcc_stablesort_r (void *, size_t, s
*** 1229,1235 ****
     - the character 'k', if the number is higher than 10 K (in base 2)
       but strictly lower than 10 M (in base 2)
     - the character 'M' if the number is higher than 10 M (in base2)
!    - the charcter ' ' if the number is strictly lower  than 10 K  */
  #define SIZE_LABEL(x) ((x) < 10 * ONE_K ? ' ' : ((x) < 10 * ONE_M ? 'k' : 'M'))
  
  /* Display an integer amount as multiple of 1K or 1M (in base 2).
--- 1229,1235 ----
     - the character 'k', if the number is higher than 10 K (in base 2)
       but strictly lower than 10 M (in base 2)
     - the character 'M' if the number is higher than 10 M (in base2)
!    - the character ' ' if the number is strictly lower  than 10 K  */
  #define SIZE_LABEL(x) ((x) < 10 * ONE_K ? ' ' : ((x) < 10 * ONE_M ? 'k' : 'M'))
  
  /* Display an integer amount as multiple of 1K or 1M (in base 2).
diff -Nrcpad gcc-17-20260524/gcc/target-hooks-macros.h gcc-17-20260531/gcc/target-hooks-macros.h
*** gcc-17-20260524/gcc/target-hooks-macros.h	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/target-hooks-macros.h	Sun May 31 22:32:06 2026
***************
*** 52,58 ****
     under the GPL, but not under the GFDL, put it in a comment above the hook
     definition.  If the function declaration is available both under GPL and
     GFDL, but the documentation is only available under the GFDL, put the
!    documentaton in tm.texi.in, heading with @hook <hookname> and closing
     the paragraph with @end deftypefn / deftypevr as appropriate, and marking
     the next autogenerated hook with @hook <hookname>.
     In both these cases, leave the DOC string empty, i.e. "".
--- 52,58 ----
     under the GPL, but not under the GFDL, put it in a comment above the hook
     definition.  If the function declaration is available both under GPL and
     GFDL, but the documentation is only available under the GFDL, put the
!    documentation in tm.texi.in, heading with @hook <hookname> and closing
     the paragraph with @end deftypefn / deftypevr as appropriate, and marking
     the next autogenerated hook with @hook <hookname>.
     In both these cases, leave the DOC string empty, i.e. "".
***************
*** 68,74 ****
      A documentation string of "*" means not to emit any documentation at all,
     and is mainly used internally for DEFHOOK_UNDOC.  It should generally not
     be used otherwise, but it has its use for exceptional cases where automatic
!    documentation is not wanted, and the real documentation is elsewere, like
     for TARGET_ASM_{,UN}ALIGNED_INT_OP, which are hooks only for implementation
     purposes; they refer to structs, the components of which are documented as
     separate hooks TARGET_ASM_{,UN}ALIGNED_[HSDT]I_OP.
--- 68,74 ----
      A documentation string of "*" means not to emit any documentation at all,
     and is mainly used internally for DEFHOOK_UNDOC.  It should generally not
     be used otherwise, but it has its use for exceptional cases where automatic
!    documentation is not wanted, and the real documentation is elsewhere, like
     for TARGET_ASM_{,UN}ALIGNED_INT_OP, which are hooks only for implementation
     purposes; they refer to structs, the components of which are documented as
     separate hooks TARGET_ASM_{,UN}ALIGNED_[HSDT]I_OP.
diff -Nrcpad gcc-17-20260524/gcc/target.def gcc-17-20260531/gcc/target.def
*** gcc-17-20260524/gcc/target.def	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/target.def	Sun May 31 22:32:06 2026
*************** DEFHOOK
*** 1748,1754 ****
  (expand_var_decl,
  "This hook, if defined, is used by accelerator target back-ends to expand\n\
  specially handled kinds of @code{VAR_DECL} expressions.  A particular use is\n\
! to place variables with specific attributes inside special accelarator\n\
  memories.  A return value of @code{NULL} indicates that the target does not\n\
  handle this @code{VAR_DECL}, and normal RTL expanding is resumed.\n\
  \n\
--- 1748,1754 ----
  (expand_var_decl,
  "This hook, if defined, is used by accelerator target back-ends to expand\n\
  specially handled kinds of @code{VAR_DECL} expressions.  A particular use is\n\
! to place variables with specific attributes inside special accelerator\n\
  memories.  A return value of @code{NULL} indicates that the target does not\n\
  handle this @code{VAR_DECL}, and normal RTL expanding is resumed.\n\
  \n\
*************** for a given element mode.\n\
*** 1970,1976 ****
  \n\
  The modes returned in @var{modes} should use the smallest element mode\n\
  possible for the vectorization approach that they represent, preferring\n\
! integer modes over floating-poing modes in the event of a tie.  The first\n\
  mode should be the @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE} for its\n\
  element mode.\n\
  \n\
--- 1970,1976 ----
  \n\
  The modes returned in @var{modes} should use the smallest element mode\n\
  possible for the vectorization approach that they represent, preferring\n\
! integer modes over floating-point modes in the event of a tie.  The first\n\
  mode should be the @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE} for its\n\
  element mode.\n\
  \n\
*************** modes and they have different conditiona
*** 2822,2832 ****
  DEFHOOK
  (gen_ccmp_first,
   "This function prepares to emit a comparison insn for the first compare in a\n\
!  sequence of conditional comparisions.  It returns an appropriate comparison\n\
   with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.\n\
   The insns to prepare the compare are saved in @var{prep_seq} and the compare\n\
   insns are saved in @var{gen_seq}.  They will be emitted when all the\n\
!  compares in the conditional comparision are generated without error.\n\
   @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.",
   rtx, (rtx_insn **prep_seq, rtx_insn **gen_seq, rtx_code code, tree op0, tree op1),
   NULL)
--- 2822,2832 ----
  DEFHOOK
  (gen_ccmp_first,
   "This function prepares to emit a comparison insn for the first compare in a\n\
!  sequence of conditional comparisons.  It returns an appropriate comparison\n\
   with @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.\n\
   The insns to prepare the compare are saved in @var{prep_seq} and the compare\n\
   insns are saved in @var{gen_seq}.  They will be emitted when all the\n\
!  compares in the conditional comparison are generated without error.\n\
   @var{code} is the @code{rtx_code} of the compare for @var{op0} and @var{op1}.",
   rtx, (rtx_insn **prep_seq, rtx_insn **gen_seq, rtx_code code, tree op0, tree op1),
   NULL)
*************** DEFHOOK
*** 2838,2844 ****
   @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.\n\
   The insns to prepare the compare are saved in @var{prep_seq} and the compare\n\
   insns are saved in @var{gen_seq}.  They will be emitted when all the\n\
!  compares in the conditional comparision are generated without error.  The\n\
   @var{prev} expression is the result of a prior call to @code{gen_ccmp_first}\n\
   or @code{gen_ccmp_next}.  It may return @code{NULL} if the combination of\n\
   @var{prev} and this comparison is not supported, otherwise the result must\n\
--- 2838,2844 ----
   @code{CC} for passing to @code{gen_ccmp_next} or @code{cbranch_optab}.\n\
   The insns to prepare the compare are saved in @var{prep_seq} and the compare\n\
   insns are saved in @var{gen_seq}.  They will be emitted when all the\n\
!  compares in the conditional comparison are generated without error.  The\n\
   @var{prev} expression is the result of a prior call to @code{gen_ccmp_first}\n\
   or @code{gen_ccmp_next}.  It may return @code{NULL} if the combination of\n\
   @var{prev} and this comparison is not supported, otherwise the result must\n\
*************** DEFHOOK
*** 3792,3798 ****
  built-in function without the @code{__builtin_} prefix in addition to the\n\
  normal built-in function with the @code{__builtin_} prefix.  The default is\n\
  to only enable built-in functions without the @code{__builtin_} prefix for\n\
! the GNU C langauge.  In strict ANSI/ISO mode, the built-in function without\n\
  the @code{__builtin_} prefix is not enabled.  The argument @code{FUNC} is the\n\
  @code{enum built_in_function} id of the function to be enabled.",
   bool, (int func),
--- 3792,3798 ----
  built-in function without the @code{__builtin_} prefix in addition to the\n\
  normal built-in function with the @code{__builtin_} prefix.  The default is\n\
  to only enable built-in functions without the @code{__builtin_} prefix for\n\
! the GNU C language.  In strict ANSI/ISO mode, the built-in function without\n\
  the @code{__builtin_} prefix is not enabled.  The argument @code{FUNC} is the\n\
  @code{enum built_in_function} id of the function to be enabled.",
   bool, (int func),
*************** of spill registers and print a fatal err
*** 4061,4067 ****
   hook_bool_mode_false)
  
  /* Register number for a flags register.  Only needs to be defined if the
!    target is constrainted to use post-reload comparison elimination.  */
  DEFHOOKPOD
  (flags_regnum,
   "If the target has a dedicated flags register, and it needs to use the\n\
--- 4061,4067 ----
   hook_bool_mode_false)
  
  /* Register number for a flags register.  Only needs to be defined if the
!    target is constrained to use post-reload comparison elimination.  */
  DEFHOOKPOD
  (flags_regnum,
   "If the target has a dedicated flags register, and it needs to use the\n\
*************** DEFHOOK
*** 4710,4716 ****
   compilation for the second case.\n\
   \n\
   For targets that have no processors that can execute instructions\n\
!  speculatively an alternative implemenation of this hook is available:\n\
   simply redefine this hook to @code{speculation_safe_value_not_needed}\n\
   along with your other target hooks.",
  bool, (bool active), default_have_speculation_safe_value)
--- 4710,4716 ----
   compilation for the second case.\n\
   \n\
   For targets that have no processors that can execute instructions\n\
!  speculatively an alternative implementation of this hook is available:\n\
   simply redefine this hook to @code{speculation_safe_value_not_needed}\n\
   along with your other target hooks.",
  bool, (bool active), default_have_speculation_safe_value)
*************** hardware count register support for decr
*** 4774,4780 ****
  move IV value from hardware count register to general purpose register\n\
  while doloop IV candidate is used for address IV uses.  It probably takes\n\
  expensive penalty.  This hook allows target owners to define the cost for\n\
! this escpecially for address IV uses.\n\
  The default value is zero.",
   int64_t, 0)
  
--- 4774,4780 ----
  move IV value from hardware count register to general purpose register\n\
  while doloop IV candidate is used for address IV uses.  It probably takes\n\
  expensive penalty.  This hook allows target owners to define the cost for\n\
! this especially for address IV uses.\n\
  The default value is zero.",
   int64_t, 0)
  
*************** documentation.",
*** 5211,5216 ****
--- 5211,5228 ----
   bool, (const function_arg_info &arg),
   must_pass_in_stack_var_size_or_pad)
  
+ DEFHOOK
+ (overaligned_stack_slot_required,
+  "This hook should return @code{true} when call-related stack slots whose\n\
+ requested alignment exceeds @code{MAX_SUPPORTED_STACK_ALIGNMENT} need special\n\
+ handling on the target.  This covers stack slots created by call expansion\n\
+ (such as by-reference argument copies and hidden structure return storage) and\n\
+ incoming argument setup.  When @code{true}, GCC may avoid normal fixed stack\n\
+ slots for such cases and use over-allocation plus dynamic address alignment\n\
+ instead.",
+  bool, (void),
+  hook_bool_void_false)
+ 
  /* Return true if type TYPE, mode MODE, which is passed by reference,
     should have the object copy generated by the callee rather than
     the caller.  It is never called for TYPE requiring constructors.  */
*************** applied.  @var{type} is either @code{EXC
*** 6579,6585 ****
  @code{EXCESS_PRECISION_TYPE_STANDARD}, or\n\
  @code{EXCESS_PRECISION_TYPE_FLOAT16}.  For\n\
  @code{EXCESS_PRECISION_TYPE_IMPLICIT}, the target should return which\n\
! precision and range operations will be implictly evaluated in regardless\n\
  of the excess precision explicitly added.  For\n\
  @code{EXCESS_PRECISION_TYPE_STANDARD}, \n\
  @code{EXCESS_PRECISION_TYPE_FLOAT16}, and\n\
--- 6591,6597 ----
  @code{EXCESS_PRECISION_TYPE_STANDARD}, or\n\
  @code{EXCESS_PRECISION_TYPE_FLOAT16}.  For\n\
  @code{EXCESS_PRECISION_TYPE_IMPLICIT}, the target should return which\n\
! precision and range operations will be implicitly evaluated in regardless\n\
  of the excess precision explicitly added.  For\n\
  @code{EXCESS_PRECISION_TYPE_STANDARD}, \n\
  @code{EXCESS_PRECISION_TYPE_FLOAT16}, and\n\
diff -Nrcpad gcc-17-20260524/gcc/targhooks.cc gcc-17-20260531/gcc/targhooks.cc
*** gcc-17-20260524/gcc/targhooks.cc	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/targhooks.cc	Sun May 31 22:32:06 2026
*************** default_floatn_mode (int n, bool extende
*** 620,626 ****
     should implicitly enable the built-in function without the __builtin_ prefix
     in addition to the normal built-in function with the __builtin_ prefix.  The
     default is to only enable built-in functions without the __builtin_ prefix
!    for the GNU C langauge.  The argument FUNC is the enum builtin_in_function
     id of the function to be enabled.  */
  
  bool
--- 620,626 ----
     should implicitly enable the built-in function without the __builtin_ prefix
     in addition to the normal built-in function with the __builtin_ prefix.  The
     default is to only enable built-in functions without the __builtin_ prefix
!    for the GNU C language.  The argument FUNC is the enum builtin_in_function
     id of the function to be enabled.  */
  
  bool
*************** default_floatn_builtin_p (int func ATTRI
*** 638,644 ****
    return c_or_objective_c;
  }
  
! /* Make some target macros useable by target-independent code.  */
  bool
  targhook_words_big_endian (void)
  {
--- 638,644 ----
    return c_or_objective_c;
  }
  
! /* Make some target macros usable by target-independent code.  */
  bool
  targhook_words_big_endian (void)
  {
*************** default_builtin_vector_alignment_reachab
*** 1573,1579 ****
  }
  
  /* By default, assume that a target supports any factor of misalignment
!    memory access if it supports movmisalign patten.
     is_packed is true if the memory access is defined in a packed struct.  */
  bool
  default_builtin_support_vector_misalignment (machine_mode mode,
--- 1573,1579 ----
  }
  
  /* By default, assume that a target supports any factor of misalignment
!    memory access if it supports movmisalign pattern.
     is_packed is true if the memory access is defined in a packed struct.  */
  bool
  default_builtin_support_vector_misalignment (machine_mode mode,
*************** default_addr_space_for_artificial_rodata
*** 1827,1833 ****
  }
  
  
! /* The defualt implementation of TARGET_HARD_REGNO_NREGS.  */
  
  unsigned int
  default_hard_regno_nregs (unsigned int, machine_mode mode)
--- 1827,1833 ----
  }
  
  
! /* The default implementation of TARGET_HARD_REGNO_NREGS.  */
  
  unsigned int
  default_hard_regno_nregs (unsigned int, machine_mode mode)
diff -Nrcpad gcc-17-20260524/gcc/testsuite/ChangeLog gcc-17-20260531/gcc/testsuite/ChangeLog
*** gcc-17-20260524/gcc/testsuite/ChangeLog	Sun May 24 22:32:06 2026
--- gcc-17-20260531/gcc/testsuite/ChangeLog	Sun May 31 22:32:06 2026
***************
*** 1,3 ****
--- 1,1031 ----
+ 2026-05-30  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/general/firstp.c: Adjust testcases.
+ 	* gcc.target/aarch64/sve2/acle/general/lastp.c: Likewise.
+ 
+ 2026-05-30  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/loongarch/la64/mul-const-reduction.c: Adjust expected
+ 	output.
+ 
+ 2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/105582
+ 	* gfortran.dg/block_proc_ptr_1.f90: New test.
+ 
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125123
+ 	* g++.dg/cpp26/expansion-stmt42.C: New test.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* g++.dg/opt/pr104515.C: Fix typo in dejagnu check pattern.
+ 	* g++.dg/tree-ssa/pr88797.C: Likewise.
+ 	* gcc.dg/ipa/fnsummary-1.c: Likewise.
+ 	* gcc.dg/tree-ssa/copy-headers-7.c: Likewise.
+ 	* gcc.dg/tree-ssa/split-path-11.c: Likewise.
+ 	* gcc.dg/tree-ssa/split-path-13.c: Likewise.
+ 	* gcc.dg/tree-ssa/split-path-2.c: Likewise.
+ 	* gcc.dg/tree-ssa/split-path-5.c: Likewise.
+ 
+ 2026-05-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.dg/bitint-133.c: New test.
+ 	* gcc.dg/bitint-134.c: New test.
+ 	* gcc.dg/bitint-135.c: New test.
+ 	* gcc.dg/bitint-136.c: New test.
+ 	* gcc.dg/torture/bitint-99.c: New test.
+ 
+ 2026-05-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc.dg/torture/pr125453-1.c: Add -w to the options.
+ 
+ 2026-05-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/125393
+ 	* gfortran.dg/argument_checking_28.f90: New test.
+ 
+ 2026-05-29  Robert Dubner  <rdubner@symas.com>
+ 	    James K. Lowden  <jklowden@cobolworx.com>
+ 	    Xavier Del Campo  <xdelcampo@symas.com>
+ 
+ 	* cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob:
+ 	Updated compiler error message.
+ 	* cobol.dg/group2/BINARY_and_COMP-5.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/Simple_p-scaling.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/compare_national_to_display.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob:
+ 	Likewise.
+ 	* cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob: New test.
+ 	* cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out: New test.
+ 	* cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob: New test.
+ 	* cobol.dg/group2/CBL_CHECK_FILE_EXIST.out: New test.
+ 	* cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob: New test.
+ 	* cobol.dg/group2/CBL_DELETE_FILE.cob: New test.
+ 	* cobol.dg/group2/CBL_DELETE_FILE.out: New test.
+ 	* cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob: New test.
+ 	* cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out: New test.
+ 	* cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob: New test.
+ 	* cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out: New test.
+ 	* cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob: New test.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob: New test.
+ 	* cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out: New test.
+ 	* cobol.dg/group2/MOVE_LEVEL_78.cob: New test.
+ 	* cobol.dg/group2/MOVE_LEVEL_78.out: New test.
+ 	* cobol.dg/group2/add_-1_to_negative_pic_S9999.cob: New test.
+ 	* cobol.dg/group2/add_-1_to_negative_pic_S9999.out: New test.
+ 	* cobol.dg/group2/add_-1_to_pic_9999.cob: New test.
+ 	* cobol.dg/group2/add_-1_to_pic_9999.out: New test.
+ 	* cobol.dg/group2/add_-1_to_positive_pic_S9999.cob: New test.
+ 	* cobol.dg/group2/add_-1_to_positive_pic_S9999.out: New test.
+ 	* cobol.dg/group2/add_1_to_pic_9999.cob: New test.
+ 	* cobol.dg/group2/add_1_to_pic_9999.out: New test.
+ 	* cobol.dg/group2/add_1_to_positive_pic_S9999.cob: New test.
+ 	* cobol.dg/group2/add_1_to_positive_pic_S9999.out: New test.
+ 	* cobol.dg/group2/add__1_to_negative_pic_S9999.cob: New test.
+ 	* cobol.dg/group2/add__1_to_negative_pic_S9999.out: New test.
+ 	* cobol.dg/group2/ambiguous_PERFORM.cob: New test.
+ 	* cobol.dg/group2/ambiguous_PERFORM.out: New test.
+ 	* cobol.dg/group2/cbltypes.cpy: New test.
+ 	* cobol.dg/group2/compare_float_to_other_types.cob: New test.
+ 	* cobol.dg/group2/compare_float_to_other_types.out: New test.
+ 	* cobol.dg/group2/move_numeric_to_alphanumeric.cob: New test.
+ 	* cobol.dg/group2/move_numeric_to_alphanumeric.out: New test.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* gfortran.dg/gomp/allocate-static-3.f90: Modify to also
+ 	disallow local static variables.
+ 	* c-c++-common/gomp/allocate-20.c: New test.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/pragma_cpp_predefs_3.c: Add SVE2p2 tests.
+ 	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add SME2p2 test.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* g++.target/aarch64/sve/aarch64-ssve.exp: Add sve2p2 to the
+ 	target string.  Move svcompact from $nonstreaming_only to
+ 	$streaming_ok.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_bf16.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_f64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_mf8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_s16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_s32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_s64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_s8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_u16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_u64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/compact_u8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_bf16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_f64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_mf8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_s16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_s32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_s64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_s8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_u16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_u64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/expand_u8.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/firstp_b16.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/firstp_b32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/firstp_b64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/firstp_b8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/lastp_b16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/lastp_b32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/lastp_b64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/lastp_b8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/general/firstp.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/general/lastp.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c: Likewise.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/not_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c: New file.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c: New file.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c: New file.
+ 	* gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c: New file.
+ 
+ 2026-05-29  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* lib/target-supports.exp
+ 	(check_effective_target_aarch64_sve2p2_hw): New target check.
+ 	(check_effective_target_aarch64_sve2p2_ok): New target check.
+ 	(exts_sve2): Add sme2p2.
+ 
+ 2026-05-29  LIU Hao  <lh_mouse@126.com>
+ 
+ 	* gcc.target/i386/rewrite-sib-without-base.c: New test.
+ 
+ 2026-05-29  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* gcc.target/i386/sse2-paddb-2.c: Support -march=cascadelake.
+ 	* gcc.target/i386/sse2-paddd-2.c: Likewise.
+ 	* gcc.target/i386/sse2-paddw-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubb-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubd-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubw-2.c: Likewise.
+ 
+ 2026-05-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/125489
+ 	* gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c: Add the
+ 	missing end brace.
+ 
+ 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gfortran.dg/f_c_string3.f90: New.
+ 	* gfortran.dg/f_c_string4.f90: New.
+ 	* gfortran.dg/f_c_string5.f90: New.
+ 
+ 2026-05-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/c_f_strpointer-1.f90: New.
+ 	* gfortran.dg/c_f_strpointer-2.f90: New.
+ 	* gfortran.dg/c_f_strpointer-3.f90: New.
+ 	* gfortran.dg/c_f_strpointer-4.f90: New.
+ 	* gfortran.dg/c_f_strpointer-5.f90: New.
+ 	* gfortran.dg/c_f_strpointer-6.f90: New.
+ 	* gfortran.dg/c_f_strpointer-7.f90: New.
+ 	* gfortran.dg/c_f_strpointer-8.f90: New.
+ 	* gfortran.dg/c_f_strpointer-9.f90: New.
+ 	* gfortran.dg/c_f_strpointer-10.f90: New.
+ 	* gfortran.dg/pr108961.f90: Rename locally-defined c_f_strpointer.
+ 
+ 2026-05-28  Jean-Christian CÎRSTEA  <jean.christian.cirstea@gmail.com>
+ 
+ 	PR c++/120458
+ 	* g++.dg/README: Explain purpose of modules/ dir.
+ 	* g++.dg/modules/pr120458-1_a.C: Define non-ASCII module with
+ 	default mapper.
+ 	* g++.dg/modules/pr120458-1_b.C: Import non-ASCII module with
+ 	default mapper.
+ 	* g++.dg/modules/pr120458-2_a.C: Define non-ASCII module with
+ 	a file as mapper.
+ 	* g++.dg/modules/pr120458-2_b.C: Import non-ASCII module with
+ 	a file as mapper.
+ 	* g++.dg/modules/pr120458-2.map: Define mapping for pr120458-2
+ 	test case.
+ 
+ 2026-05-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.dg/vect/vect-early-break-no-epilog_11.c: Require
+ 	avx512f_runtime instead of avx512f_hw.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/sse4_1-ptest-7.c: New test case.
+ 
+ 2026-05-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* gcc.target/i386/avx512f-simd-1.c: Tweak test case.
+ 	* gcc.target/i386/sse2-paddb-2.c: New test case.
+ 	* gcc.target/i386/sse2-paddd-2.c: Likewise.
+ 	* gcc.target/i386/sse2-paddw-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubb-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubd-2.c: Likewise.
+ 	* gcc.target/i386/sse2-psubw-2.c: Likewise.
+ 
+ 2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125454
+ 	* g++.dg/other/array8.C: New test.
+ 
+ 2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125430
+ 	* gfortran.dg/module_private_2.f90: Remove scan-tree-dump-times
+ 	assertion for 'priv'; PRIVATE module procedures now have global
+ 	linkage with hidden visibility and are no longer optimized away.
+ 	* gfortran.dg/public_private_module_2.f90: Add xfail markers to
+ 	scan-assembler-not for 'two' and 'six'; update comment to mention
+ 	procedures alongside variables.
+ 	* gfortran.dg/public_private_module_7.f90: Add xfail marker to
+ 	scan-assembler-not for '__m_common_attrs_MOD_other'.
+ 	* gfortran.dg/public_private_module_8.f90: Add xfail marker to
+ 	scan-assembler-not for '__m_MOD_myotherlen'.
+ 	* gfortran.dg/submodule_private_host.f90: New test.
+ 	* gfortran.dg/submodule_private_host_aux.f90: New auxiliary file.
+ 	* gfortran.dg/warn_unused_function_2.f90: Remove 'defined but not
+ 	used' expectation for s1; PRIVATE module procedures now have
+ 	global linkage and no longer trigger the unused-function warning.
+ 
+ 2026-05-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c: Adjust expected
+ 	output.
+ 	* gcc.target/riscv/amo/a-rvwmo-store-relaxed.c: Likewise.
+ 	* gcc.target/riscv/amo/a-rvwmo-store-release.c: Likewise.
+ 	* gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c: Likewise.
+ 	* gcc.target/riscv/amo/a-ztso-store-relaxed.c: Likewise.
+ 	* gcc.target/riscv/amo/a-ztso-store-release.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-rvwmo-store-release.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c: Likewise.
+ 	* gcc.target/riscv/amo/zalasr-ztso-store-release.c: Likewise.
+ 	* gcc.target/riscv/cpymem-64-ooo.c: Likewise.
+ 	* gcc.target/riscv/cpymem-64.c: Likewise.
+ 	* gcc.target/riscv/memcpy-nonoverlapping.c: Likewise.
+ 	* gcc.target/riscv/pr67731.c: Likewise.
+ 
+ 2026-05-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/106957
+ 	* g++.dg/cpp2a/lambda-uneval32.C: New test.
+ 
+ 2026-05-28  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/fp-reg-class.c: New test.
+ 
+ 2026-05-28  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+ 
+ 	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c: Update expected LMUL counts.
+ 	* gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/pr123414.c: Disable vector cost model.
+ 
+ 2026-05-28  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.dg/vect/vect-early-break-no-epilog_11.c: Add AVX512 for x86_64.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/vec_init_5.c: New test.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/gather_load_10.c: Adjust testcase.
+ 	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-18.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-23.c: Likewise.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/ldp_stp_16.c: Adjust testcase.
+ 	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-18.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-23.c: New test.
+ 
+ 2026-05-28  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.dg/vect/complex/bb-slp-complex-add-half-float.c: Adjust testcase.
+ 	* gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c: Likewise.
+ 	* gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c: Likewise.
+ 	* gcc.target/aarch64/sve/slp_1.c: Likewise.
+ 
+ 2026-05-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/125469
+ 	* gcc.target/i386/apx-nf-pr125469.c: New test.
+ 
+ 2026-05-28  oltolm  <oleg.tolmatcev@gmail.com>
+ 
+ 	PR target/54412
+ 	* gcc.target/i386/pr54412-v4d-o0-aligned-locals.c: New test.
+ 	* gcc.target/i386/pr54412-o2-by-value-cases.c: New test.
+ 	* gcc.target/i386/pr54412-sret-no-args.c: New test.
+ 	* gcc.target/i386/pr54412-callee-byref-param.c: New test.
+ 	* gcc.target/i386/pr54412-avx512-aligned64.c: New test.
+ 
+ 2026-05-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/riscv/rvv/base/pr115456-3.c: Drop compromised scan-asm
+ 	part of the test.
+ 
+ 2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* gfortran.dg/EXformat_3.F90: New test covering rounding for
+ 	KIND=4, 8, 10, and 16: clear round-up, ties-to-even (truncate
+ 	and round-up cases), carry propagation, and normalization.
+ 	* gfortran.dg/EXrounding.F90: New test checking the various
+ 	rounding modes for all kinds.
+ 
+ 2026-05-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* g++.dg/warn/Winvalid-memory-model-2.C: Adjust dg-regexp.
+ 	* g++.dg/warn/Winvalid-memory-model.C: Likewise.
+ 
+ 2026-05-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 	    Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	* gcc.target/aarch64/ext-dce-1.c: New test.
+ 	* gcc.target/riscv/ext-dce-3.c: New test.
+ 	* gcc.target/riscv/ext-dce-4.c: New test.
+ 
+ 2026-05-27  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* gcc.target/aarch64/acle/chkfeat-1.c: Update.
+ 	* gcc.target/aarch64/acle/gcs-1.c: Update.
+ 	* gcc.target/aarch64/acle/pr110100.c: Update.
+ 	* gcc.target/aarch64/bitfield-bitint-abi-align16.c: Update.
+ 	* gcc.target/aarch64/bitfield-bitint-abi-align8.c: Update.
+ 	* gcc.target/aarch64/chkfeat-1.c: Update.
+ 	* gcc.target/aarch64/chkfeat-2.c: Update.
+ 	* gcc.target/aarch64/cmpbr.c: Update.
+ 	* gcc.target/aarch64/eh_return-3.c: Update.
+ 	* gcc.target/aarch64/gcspopm-1.c: Update.
+ 	* gcc.target/aarch64/gcsss-1.c: Update.
+ 	* gcc.target/aarch64/int_mov_immediate_1.c: Update.
+ 	* gcc.target/aarch64/memset-corner-cases-2.c: Update.
+ 	* gcc.target/aarch64/memset-corner-cases.c: Update.
+ 	* gcc.target/aarch64/mops_1.c: Update.
+ 	* gcc.target/aarch64/mops_2.c: Update.
+ 	* gcc.target/aarch64/mops_3.c: Update.
+ 	* gcc.target/aarch64/movk_3.c: Update.
+ 	* gcc.target/aarch64/movtf_1.c: Update.
+ 	* gcc.target/aarch64/movti_1.c: Update.
+ 	* gcc.target/aarch64/noeffect9.c: Update.
+ 	* gcc.target/aarch64/pr71727.c: Update.
+ 	* gcc.target/aarch64/pr84882.c: Update.
+ 	* gcc.target/aarch64/sme/locally_streaming_1.c: Update.
+ 	* gcc.target/aarch64/sme/locally_streaming_1_nosve.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_b16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_b32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_b64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_b8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_c16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_c32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_c64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilege_c8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_b16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_b32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_b64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_b8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_c16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_c32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_c64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilele_c8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c: Update.
+ 	* gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/cntb_pat.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/cntd_pat.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/cnth_pat.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/cntw_pat.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dupq_f32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dupq_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dupq_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/index_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/index_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/prfb_gather.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/prfd_gather.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/prfh_gather.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/prfw_gather.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilele_b16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilele_b32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilele_b64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilele_b8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilelt_b16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilelt_b32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilelt_b64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/whilelt_b8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/general/cntb_pat_1.c: Update.
+ 	* gcc.target/aarch64/sve/acle/general/cntd_pat_1.c: Update.
+ 	* gcc.target/aarch64/sve/acle/general/cnth_pat_1.c: Update.
+ 	* gcc.target/aarch64/sve/acle/general/cntw_pat_1.c: Update.
+ 	* gcc.target/aarch64/sve/acle/general/whilelt_5.c: Update.
+ 	* gcc.target/aarch64/sve/const_2.c: Update.
+ 	* gcc.target/aarch64/sve/const_3.c: Update.
+ 	* gcc.target/aarch64/sve/noeffect9.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2_256.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/stack_clash_2_512.c: Update.
+ 	* gcc.target/aarch64/sve/pcs/struct_3_128.c: Update.
+ 	* gcc.target/aarch64/sve/pfalse-count_pred.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_c16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_c32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_c64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilege_c8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_c16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_c32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_c64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilele_c8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c: Update.
+ 	* gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c: Update.
+ 	* gcc.target/aarch64/test_frame_17.c: Update.
+ 	* gcc.target/aarch64/vec-init-single-const.c: Update.
+ 	* gcc.target/aarch64/vect-cse-codegen.c: Update.
+ 
+ 2026-05-27  Kishan Parmar  <kishan@linux.ibm.com>
+ 	    Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	PR target/125448
+ 	* gcc.target/powerpc/mpc860_no_lwsync.c: Restrict to ilp32 targets.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120164
+ 	* gcc.dg/vect/vect-prefetch-drop_2.c: New test.
+ 
+ 2026-05-27  oltolm  <oleg.tolmatcev@gmail.com>
+ 
+ 	* gcc.target/i386/pr89597-1.c: New test.
+ 	* gcc.target/i386/pr89597-2.c: New test.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120352
+ 	* gcc.dg/vect/vect-early-break-no-epilog_1.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_10.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_11.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_2.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_3.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_4.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_5.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_6.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_7.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_8.c: New test.
+ 	* gcc.dg/vect/vect-early-break-no-epilog_9.c: New test.
+ 	* gcc.target/aarch64/noeffect.c: New test.
+ 	* gcc.target/aarch64/noeffect10.c: New test.
+ 	* gcc.target/aarch64/noeffect11.c: New test.
+ 	* gcc.target/aarch64/noeffect2.c: New test.
+ 	* gcc.target/aarch64/noeffect3.c: New test.
+ 	* gcc.target/aarch64/noeffect4.c: New test.
+ 	* gcc.target/aarch64/noeffect5.c: New test.
+ 	* gcc.target/aarch64/noeffect6.c: New test.
+ 	* gcc.target/aarch64/noeffect7.c: New test.
+ 	* gcc.target/aarch64/noeffect8.c: New test.
+ 	* gcc.target/aarch64/noeffect9.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect10.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect11.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect2.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect3.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect4.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect5.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect6.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect7.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect8.c: New test.
+ 	* gcc.target/aarch64/sve/noeffect9.c: New test.
+ 
+ 2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/125148
+ 	* gcc.target/aarch64/sve/highway_run.c: New test.
+ 
+ 2026-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125412
+ 	* g++.dg/reflect/pr125412.C: New test.
+ 
+ 2026-05-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125423
+ 	* g++.dg/reflect/bases_of6.C: New test.
+ 
+ 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125396
+ 	* gcc.dg/torture/pr125396-1.c: New test.
+ 
+ 2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* g++.dg/warn/Winvalid-memory-model-2.C: Disable deprecated
+ 	warnings for C++26 and up.
+ 	* g++.dg/warn/Winvalid-memory-model.C: Likewise.
+ 
+ 2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/fusion-auipc-addi-2.c: New test.
+ 	* gcc.target/riscv/fusion-lui-addi-2.c: New test.
+ 	* gcc.target/riscv/fusion-zexth-2.c: New test.
+ 	* gcc.target/riscv/fusion-zextw-2.c: New test.
+ 
+ 2026-05-26  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/fusion-auipc-ld.c: New test.
+ 	* gcc.target/riscv/fusion-b-alui.c: New test.
+ 	* gcc.target/riscv/fusion-cache-aligned-std.c: New test.
+ 	* gcc.target/riscv/fusion-ldindexed.c: New test.
+ 
+ 2026-05-26  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125453
+ 	* gcc.dg/torture/pr125453-1.c: New test.
+ 
+ 2026-05-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/stack-usage-realign.c: Adjusted.
+ 
+ 2026-05-25  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125409
+ 	* gcc.target/avr/torture/pr125409.h: New file.
+ 	* gcc.target/avr/torture/pr125409-fx24-ssk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-ssr.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-suk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-sur.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-usk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-usr.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-uuk.c: New test.
+ 	* gcc.target/avr/torture/pr125409-fx24-uur.c: New test.
+ 
+ 2026-05-25  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/125377
+ 	* c-c++-common/gomp/begin-declare-variant-1.c: New test.
+ 
+ 2026-05-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.dg/stack-usage-1.c: Adjust.
+ 
+ 2026-05-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/stack-usage-realign.c: Add the user visibility
+ 	name to scan-stack-usage.
+ 
+ 2026-05-25  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR middle-end/124630
+ 	* gcc.dg/pr124630.c: New test.
+ 	* gcc.target/i386/pr124630.c: New test.
+ 
+ 2026-05-24  Raven Hallsby  <karl@hallsby.com>
+ 
+ 	PR tree-optimization/125104
+ 	* gcc.dg/tree-ssa/pr125104.c: New test.
+ 
+ 2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc.dg/stack-usage-1.c: Update testcase.
+ 
+ 2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125419
+ 	* gcc.dg/torture/pr125419-1.c: New test.
+ 
+ 2026-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* gfortran.dg/EXformat_1.F90: New test.
+ 	* gfortran.dg/EXformat_2.f90: New test.
+ 
  2026-05-23  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
  
  	* gcc.dg/Wstrict-overflow-22.c: Removed, given that we do not
diff -Nrcpad gcc-17-20260524/gcc/testsuite/c-c++-common/gomp/allocate-20.c gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/allocate-20.c
*** gcc-17-20260524/gcc/testsuite/c-c++-common/gomp/allocate-20.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/allocate-20.c	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,99 ----
+ // { dg-do compile }
+ 
+ typedef __UINTPTR_TYPE__ omp_uintptr_t;
+ 
+ #if __cplusplus >= 201103L
+ # define __GOMP_UINTPTR_T_ENUM : omp_uintptr_t
+ #else
+ # define __GOMP_UINTPTR_T_ENUM
+ #endif
+ 
+ typedef enum omp_allocator_handle_t __GOMP_UINTPTR_T_ENUM
+ { 
+   omp_null_allocator = 0,
+   omp_default_mem_alloc = 1,
+   omp_large_cap_mem_alloc = 2,
+   omp_const_mem_alloc = 3,
+   omp_high_bw_mem_alloc = 4,
+   omp_low_lat_mem_alloc = 5,
+   omp_cgroup_mem_alloc = 6,
+   omp_pteam_mem_alloc = 7,
+   omp_thread_mem_alloc = 8,
+   ompx_gnu_pinned_mem_alloc = 200,
+   ompx_gnu_managed_mem_alloc = 201,
+   __omp_allocator_handle_t_max__ = __UINTPTR_MAX__
+ } omp_allocator_handle_t;
+ 
+ static int g0;
+ static int g1;
+ static int g2;
+ static int g3;
+ static int g4;
+ static int g5;
+ static int g6;
+ static int g7;
+ static int g8;
+ static int g9;
+ static int g10;
+ 
+ #pragma omp allocate(g0) allocator(omp_null_allocator)  // { dg-error "'allocator' clause requires a predefined allocator as 'g0' is static" "" { target c } }
+ #pragma omp allocate(g1) allocator(omp_default_mem_alloc)
+ #pragma omp allocate(g2) allocator(omp_large_cap_mem_alloc)
+ #pragma omp allocate(g3) allocator(omp_const_mem_alloc)
+ #pragma omp allocate(g4) allocator(omp_high_bw_mem_alloc)
+ #pragma omp allocate(g5) allocator(omp_low_lat_mem_alloc)
+ #pragma omp allocate(g6) allocator(omp_cgroup_mem_alloc)  // { dg-error "'allocator' clause for static variable 'g6' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+ #pragma omp allocate(g7) allocator(omp_pteam_mem_alloc)   // { dg-error "'allocator' clause for static variable 'g7' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+ #pragma omp allocate(g8) allocator(omp_thread_mem_alloc)  // { dg-error "'allocator' clause for static variable 'g8' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+ #pragma omp allocate(g9) allocator(ompx_gnu_pinned_mem_alloc)
+ #pragma omp allocate(g10) allocator(ompx_gnu_managed_mem_alloc)
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ 
+ 
+ void local_static ()
+ {
+   static int s0;
+   static int s1;
+   static int s2;
+   static int s3;
+   static int s4;
+   static int s5;
+   static int s6;
+   static int s7;
+   static int s8;
+   static int s9;
+   static int s10;
+ 
+   #pragma omp allocate(s0) allocator(omp_null_allocator)  // { dg-error "'allocator' clause requires a predefined allocator as 's0' is static" "" { target c } }
+   #pragma omp allocate(s1) allocator(omp_default_mem_alloc)
+   #pragma omp allocate(s2) allocator(omp_large_cap_mem_alloc)
+   #pragma omp allocate(s3) allocator(omp_const_mem_alloc)
+   #pragma omp allocate(s4) allocator(omp_high_bw_mem_alloc)
+   #pragma omp allocate(s5) allocator(omp_low_lat_mem_alloc)
+   #pragma omp allocate(s6) allocator(omp_cgroup_mem_alloc)  // { dg-error "'allocator' clause for static variable 's6' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+   #pragma omp allocate(s7) allocator(omp_pteam_mem_alloc)   // { dg-error "'allocator' clause for static variable 's7' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+   #pragma omp allocate(s8) allocator(omp_thread_mem_alloc)  // { dg-error "'allocator' clause for static variable 's8' must not be 'omp_cgroup_mem_alloc', 'omp_pteam_mem_alloc', or 'omp_thread_mem_alloc'" "" { target c } }
+   #pragma omp allocate(s9) allocator(ompx_gnu_pinned_mem_alloc)
+   #pragma omp allocate(s10) allocator(ompx_gnu_managed_mem_alloc)
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+   // { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } .-11 }
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/c-c++-common/gomp/begin-declare-variant-1.c gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/begin-declare-variant-1.c
*** gcc-17-20260524/gcc/testsuite/c-c++-common/gomp/begin-declare-variant-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/begin-declare-variant-1.c	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,16 ----
+ /* PR c/125377 */
+ 
+ static int omp_is_initial_device(void);
+ // { dg-warning "'omp_is_initial_device' used but never defined" "" { target c } .-1 }
+ #pragma omp begin declare variant match(device={kind(host)})
+     static inline int omp_is_initial_device(void) { return 1; }  // { dg-note "previous variant declaration here" }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match(device={kind(host)})
+     static inline int omp_is_initial_device(void) { return 1; } // { dg-error "multiple definitions of variants with the same context selector violate the one-definition rule" }
+ #pragma omp end declare variant
+ 
+ int main()
+ {
+   __builtin_printf("%d\n", omp_is_initial_device());
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/37-digit_Initialization_of_fundamental_types.cob	Sun May 31 22:32:07 2026
***************
*** 9,15 ****
          01 foo3 pic 9(30).9(7)        value 123456789012345678901234567890.1234567.
          01 foo4 pic 9(30)v9(7) binary value 123456789012345678901234567890.1234567.
          01 foo5 pic 9(30)v9(7) comp-5 value 123456789012345678901234567890.1234567.
!         01 foo6 pic 9(30)v9(7) binary-double 
                                        value 123456789012345678901234567890.1234567.
          procedure           division.
          display foo1
--- 9,15 ----
          01 foo3 pic 9(30).9(7)        value 123456789012345678901234567890.1234567.
          01 foo4 pic 9(30)v9(7) binary value 123456789012345678901234567890.1234567.
          01 foo5 pic 9(30)v9(7) comp-5 value 123456789012345678901234567890.1234567.
!         01 foo6 pic 9(30)v9(7) *> was binary-double
                                        value 123456789012345678901234567890.1234567.
          procedure           division.
          display foo1
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/BINARY_and_COMP-5.cob	Sun May 31 22:32:07 2026
***************
*** 39,45 ****
          02 var-scomp4p  redefines       var-scomp4 pointer.
          02 var-scompu4  computational-4 pic s9v9(10) .
          02 var-scompu4p redefines       var-scompu4 pointer.
!         
          02 var-scomp5   comp-5          pic s9v9(10) .
          02 var-scomp5p  redefines       var-scomp5 pointer.
          02 var-scompu5  computational-5 pic s9v9(10) .
--- 39,45 ----
          02 var-scomp4p  redefines       var-scomp4 pointer.
          02 var-scompu4  computational-4 pic s9v9(10) .
          02 var-scompu4p redefines       var-scompu4 pointer.
! 
          02 var-scomp5   comp-5          pic s9v9(10) .
          02 var-scomp5p  redefines       var-scomp5 pointer.
          02 var-scompu5  computational-5 pic s9v9(10) .
***************
*** 48,67 ****
              move  0.0001193046 to var-binary var-comp var-compu
                                       var-comp4 var-compu4 var-comp5
                                       var-compu5
!             display " " var-binary "  " var-comp "  " var-compu "  " 
!                                     var-comp4 "  " var-compu4 "  " 
                                      var-comp5 "  " var-compu5
              move  0.0001193046 to var-sbinary var-scomp var-scompu
                                      var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " " 
                                      var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
!             move -0.0001193046 to var-sbinary var-scomp var-scompu 
!                                     var-scomp4 var-scompu4 var-scomp5 
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " " 
!                                     var-scomp4 " " var-scompu4 " " 
                                      var-scomp5 " " var-scompu5
              display var-binaryp
              display var-compp
--- 48,67 ----
              move  0.0001193046 to var-binary var-comp var-compu
                                       var-comp4 var-compu4 var-comp5
                                       var-compu5
!             display " " var-binary "  " var-comp "  " var-compu "  "
!                                     var-comp4 "  " var-compu4 "  "
                                      var-comp5 "  " var-compu5
              move  0.0001193046 to var-sbinary var-scomp var-scompu
                                      var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " "
                                      var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
!             move -0.0001193046 to var-sbinary var-scomp var-scompu
!                                     var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " "
!                                     var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
              display var-binaryp
              display var-compp
***************
*** 113,119 ****
          02 var-scomp4p  redefines       var-scomp4 pointer.
          02 var-scompu4  pic s9v9(10) computational-4 .
          02 var-scompu4p redefines       var-scompu4 pointer.
!         
          02 var-scomp5   pic s9v9(10) comp-5          .
          02 var-scomp5p  redefines       var-scomp5 pointer.
          02 var-scompu5  pic s9v9(10) computational-5 .
--- 113,119 ----
          02 var-scomp4p  redefines       var-scomp4 pointer.
          02 var-scompu4  pic s9v9(10) computational-4 .
          02 var-scompu4p redefines       var-scompu4 pointer.
! 
          02 var-scomp5   pic s9v9(10) comp-5          .
          02 var-scomp5p  redefines       var-scomp5 pointer.
          02 var-scompu5  pic s9v9(10) computational-5 .
***************
*** 122,141 ****
              move  0.0001193046 to var-binary var-comp var-compu
                                       var-comp4 var-compu4 var-comp5
                                       var-compu5
!             display " " var-binary "  " var-comp "  " var-compu "  " 
!                                     var-comp4 "  " var-compu4 "  " 
                                      var-comp5 "  " var-compu5
              move  0.0001193046 to var-sbinary var-scomp var-scompu
                                      var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " " 
                                      var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
!             move -0.0001193046 to var-sbinary var-scomp var-scompu 
!                                     var-scomp4 var-scompu4 var-scomp5 
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " " 
!                                     var-scomp4 " " var-scompu4 " " 
                                      var-scomp5 " " var-scompu5
              display var-binaryp
              display var-compp
--- 122,141 ----
              move  0.0001193046 to var-binary var-comp var-compu
                                       var-comp4 var-compu4 var-comp5
                                       var-compu5
!             display " " var-binary "  " var-comp "  " var-compu "  "
!                                     var-comp4 "  " var-compu4 "  "
                                      var-comp5 "  " var-compu5
              move  0.0001193046 to var-sbinary var-scomp var-scompu
                                      var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " "
                                      var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
!             move -0.0001193046 to var-sbinary var-scomp var-scompu
!                                     var-scomp4 var-scompu4 var-scomp5
                                      var-scompu5
!             display var-sbinary " " var-scomp " " var-scompu " "
!                                     var-scomp4 " " var-scompu4 " "
                                      var-scomp5 " " var-scompu5
              display var-binaryp
              display var-compp
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,57 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out" }
+ 
+         identification division.
+         program-id. uat_cbl_alloc_mem.
+ 
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+ 
+         data division.
+         working-storage section.
+         01  mem-pointer     usage is pointer.
+         01  mem-size        pic x(8) comp-5 value 1.
+       *> According to
+       *> https://docs.rocketsoftware.com/bundle/visualcoboleclux_ug_110/page/pvv1742952958145.html
+       *>
+       *> flags:
+       *>  bit0: shared memory
+       *>  bit1: reserved (zero)
+       *>  bit2: program-independent (what does that mean?)
+       *>  bit3: thread-local storage
+       *>  bitn: reserved (zero)
+       *>
+       *> Unfortunately, it is not possible to ensure whether
+       *> CBL_ALLOC_MEM will honor the semantics behind these flags
+       *> without looking at its implementation, so just keep them
+       *> assigned to zeros.
+         01  flags           pic x(8) comp-5 value 0.
+         01  status-code     pic x(2) comp-5.
+ 
+         procedure division.
+             call "CBL_ALLOC_MEM" using mem-pointer
+                                  by value mem-size
+                                  by value flags
+                                  returning status-code.
+             if status-code is not equal to 0
+                 display "CBL_ALLOC_MEM failed with " status-code
+             else
+                 display "CBL_ALLOC_MEM was sucessful"
+                 call "CBL_FREE_MEM" using by value mem-pointer
+                                     returning status-code
+ 
+                 if status-code is not equal to 0
+                   display "CBL_FREE_MEM failed with " status-code
+                 else
+                   display "CBL_FREE_MEM was sucessful"
+                 end-if
+             end-if.
+             goback.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_ALLOC_MEM___CBL_FREE_MEM.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,3 ----
+ CBL_ALLOC_MEM was sucessful
+ CBL_FREE_MEM was sucessful
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,64 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/CBL_CHECK_FILE_EXIST.out" }
+ 
+         identification division.
+         program-id. test_cbl_check_file_exist.
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+         data division.
+         working-storage section.
+         copy "cbltypes.cpy".
+         01 buf type cblt-fileexist-buf.
+         01 status-code pic x(2) comp-5.
+ 
+         >> define GOOD as "/dev/null"
+         >> define BAD as "/dev/thisfiledoesnotexist"
+         procedure division.
+         main section.
+           perform open-good.
+           perform open-bad.
+           goback.
+ 
+         open-good section.
+           display "Checking whether " GOOD " exists".
+           call "CBL_CHECK_FILE_EXIST" using GOOD
+                                             buf
+                                       returning status-code.
+           if status-code is not zero
+             display "CBL_CHECK_FILE_EXIST " GOOD " failed with "
+               return-code
+           else
+             display "CBL_CHECK_FILE_EXIST " GOOD " was successful"
+       *> The values below are returned by CBL_CHECK_FILE_EXIST and are
+       *> inherently dynamic, so they cannot be tested reliably.
+       D      display "cblte-fe-filesize is " cblte-fe-filesize
+       D      display "cblte-fe-day is " cblte-fe-day
+       D      display "cblte-fe-month is " cblte-fe-month
+       D      display "cblte-fe-year is " cblte-fe-year
+       D      display "cblte-fe-hours is " cblte-fe-hours
+       D      display "cblte-fe-minutes is " cblte-fe-minutes
+       D      display "cblte-fe-seconds is " cblte-fe-seconds
+       D      display "cblte-fe-hundreths is " cblte-fe-hundreths
+           end-if.
+           exit paragraph.
+ 
+         open-bad section.
+           display "Checking whether " BAD " exists".
+           call "CBL_CHECK_FILE_EXIST" using BAD
+                                             buf
+                                       returning status-code.
+           if status-code is not zero
+             display "Expected failure: CBL_CHECK_FILE_EXIST " BAD
+           else
+             display "CBL_CHECK_FILE_EXIST " BAD
+               " was unexpectedly successful"
+           end-if.
+           exit paragraph.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CHECK_FILE_EXIST.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,5 ----
+ Checking whether /dev/null exists
+ CBL_CHECK_FILE_EXIST /dev/null was successful
+ Checking whether /dev/thisfiledoesnotexist exists
+ Expected failure: CBL_CHECK_FILE_EXIST /dev/thisfiledoesnotexist
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_CREATE_FILE___CBL_WRITE_FILE___CBL_CLOSE_FILE.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,70 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+ 
+         identification division.
+         program-id. test_cbl_write_file.
+ 
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+ 
+         >> define FILE_NAME as "test_cbl_write_file.cbl.txt"
+ 
+         data division.
+         working-storage section.
+       *> Create and open as write-only.
+         01  access-mode pic x comp-x value 2.
+       *> Deny both read and write,
+       *> As per specs, it must be assigned to zero on write-only.
+       *> Not supported by GnuCOBOL or gcc-cobol, anyway.
+         01  deny-mode   pic x comp-x value 0.
+       *> Reserved value
+         01  device      pic x comp-x value 0.
+         01  file-handle pic x(4) comp-5.
+         01  fh-signed   binary-long value -1.
+         01  file-offset pic x(8) comp-x value 0.
+       *> Standard write.
+         01  flags       pic x comp-x value 0.
+         01  byte-count  pic x(4) comp-x.
+         01  buffer      pic x(5) value "hello".
+         01  error-msg   pic x(128).
+ 
+         procedure division.
+       *> First, ensure the test file exists.
+           call "CBL_CREATE_FILE" using FILE_NAME
+                                        access-mode
+                                        deny-mode
+                                        device
+                                        file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CREATE_FILE " FILE_NAME " failed with "
+               return-code
+             go to end-label
+           end-if.
+ 
+           move function length(buffer) to byte-count.
+ 
+           move file-handle to fh-signed.
+           call "CBL_WRITE_FILE" using file-handle
+                                       file-offset
+                                       byte-count
+                                       flags
+                                       buffer.
+ 
+           if return-code <> 0
+             display "CBL_WRITE_FILE failed with " return-code
+           end-if.
+ 
+           end-label.
+           if fh-signed is greater than 0
+             call "CBL_CLOSE_FILE" using file-handle
+           end-if.
+ 
+           goback.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,69 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/CBL_DELETE_FILE.out" }
+ 
+         identification division.
+         program-id. test_delete_file.
+         data division.
+         >>define filename as "/tmp/test_delete_file.cbl.txt"
+         >>define invalid-path as "/tmp/thisfileshouldnotexist.txt"
+         working-storage section.
+         01 file-status pic x(2) comp-5.
+         01 fs redefines file-status.
+           03 MSB pic x.
+           03 LSB pic x comp-x.
+         01 deny-mode pic x comp-x value 0.
+         01 access-mode pic x comp-x value 2.
+         01 device pic x comp-x value 0.
+         01 file-handle pic x(4) comp-5.
+ 
+         procedure division.
+           perform create-file.
+           perform delete-file.
+           perform delete-invalid-file.
+           goback.
+ 
+         create-file section.
+           call "CBL_CREATE_FILE" using filename
+                                        access-mode
+                                        deny-mode
+                                        device
+                                        file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CREATE_FILE failed with " return-code
+             goback
+           end-if.
+ 
+           call "CBL_CLOSE_FILE" using file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CLOSE_FILE failed with " return-code
+             goback
+           end-if.
+ 
+           exit paragraph.
+ 
+         delete-file section.
+           call "CBL_DELETE_FILE" using filename.
+ 
+           if file-status <> 0
+             display "CBL_DELETE_FILE failed with " return-code
+           end-if.
+ 
+           exit paragraph.
+ 
+         delete-invalid-file section.
+           call "CBL_DELETE_FILE" using invalid-path
+                                  returning file-status.
+ 
+           if file-status <> 0
+             display "Expected failure when deleting " invalid-path
+             display "File status MSB: " MSB
+             display "File status LSB: " LSB
+           end-if.
+ 
+           exit paragraph.
+ 
+         end program test_delete_file.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_DELETE_FILE.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,4 ----
+ Expected failure when deleting /tmp/thisfileshouldnotexist.txt
+ File status MSB: 9
+ File status LSB: 013
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,80 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out" }
+ 
+         identification division.
+         program-id. uat_cbl_open_file.
+ 
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+ 
+         >>define FILE_NAME as "/tmp/thisfileshouldneverexist.txt"
+ 
+         data division.
+         working-storage section.
+       *> Open as read-only.
+         01  access-mode pic x comp-x value 1.
+       *> Not supported by gcc-cobol or GnuCOBOL yet.
+         01  deny-mode   pic x comp-x value 0.
+       *> Reserved value.
+         01  device      pic x comp-x value 0.
+         01  file-handle pic x(4) comp-5.
+         01  file-status pic x(2) comp-5.
+         01  fs redefines file-status.
+           03 msb pic x.
+           03 lsb pic x comp-x.
+ 
+         procedure division.
+           perform open-ro.
+           perform open-failed-ro.
+       *> Return with explicit status code. Otherwise, return-code
+       *> (which should be non-zero since open-failed-ro is expected
+       *> to fail) will be returned as the status code.
+           goback with normal status 0.
+ 
+         open-ro.
+           move 1 to access-mode.
+           display "Opening /dev/null as read-only"
+           call "CBL_OPEN_FILE" using "/dev/null"
+                                      access-mode
+                                      deny-mode
+                                      device
+                                      file-handle
+           if return-code <> 0
+             display "Failed to open " FILE_NAME " with " return-code
+           else
+             call "CBL_CLOSE_FILE" using file-handle
+           end-if.
+ 
+           exit paragraph.
+ 
+         open-failed-ro.
+       * Open as read-only.
+           move 1 to access-mode.
+       * Deny both read and write.
+           move 0 to deny-mode.
+           display "Opening " FILE_NAME " as read-only"
+           call "CBL_OPEN_FILE" using FILE_NAME
+                                      access-mode
+                                      deny-mode
+                                      device
+                                      file-handle
+                                      returning file-status.
+           if file-status <> 0
+             display "Expected failure when opening " FILE_NAME
+             display "File status MSB: " msb
+             display "File status LSB: " lsb
+           else
+             display "CBL_OPEN_FILE was unexpectedly successful"
+           end-if.
+ 
+           exit paragraph.
+ 
+         end program uat_cbl_open_file.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_CLOSE_FILE.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,6 ----
+ Opening /dev/null as read-only
+ Opening /tmp/thisfileshouldneverexist.txt as read-only
+ Expected failure when opening /tmp/thisfileshouldneverexist.txt
+ File status MSB: 9
+ File status LSB: 013
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,78 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out" }
+ 
+         identification division.
+         program-id. uat_cbl_read_file.
+ 
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+ 
+         data division.
+         working-storage section.
+         01  access-mode pic x comp-x.
+         01  deny-mode   pic x comp-x.
+       *> Reserved value.
+         01  device      pic x comp-x value 0.
+         01  file-handle pic x(4) comp-5 value 4294967295.
+         01  file-offset pic x(8) comp-x.
+         01  byte-count  pic x(4) comp-x.
+         01  flags       pic x comp-x.
+         78  buflen      value 16.
+         01  buffer      pic x(buflen).
+         01  iterator    pic 9(2).
+         01  i           pic 9(2).
+ 
+         procedure division.
+       *> Open as read-only.
+           move 1 to access-mode.
+       *> Deny both read and write.
+           move 0 to deny-mode.
+           display "Opening /dev/zero as read-only".
+           call "CBL_OPEN_FILE" using "/dev/zero"
+                                      access-mode
+                                      deny-mode
+                                      device
+                                      file-handle.
+           if return-code is less than 0
+             display "Failed to open /dev/zero"
+             go to end-label
+           end-if.
+ 
+           move all x"ff" to buffer(1 : buflen).
+ 
+           move 0 to file-offset.
+           move buflen to byte-count.
+       *> Standard read.
+           move 0 to flags.
+           call "CBL_READ_FILE" using file-handle
+                                      file-offset
+                                      byte-count
+                                      flags
+                                      buffer.
+ 
+           if return-code is less than 0
+             display "Failed to read " byte-count " bytes"
+             go to end-label
+           end-if.
+ 
+           perform varying i from 1 by 1 until i > buflen
+             if buffer(i : 1) is not equal to x"00"
+               display "Unexpected non-zero contents in buffer position "
+                 i ": " buffer(i : 1)
+               go to end-label
+             end-if
+           end-perform.
+ 
+           end-label.
+           if file-handle is greater than 0 or equal to 0
+             call "CBL_CLOSE_FILE" using file-handle
+           end-if.
+           goback.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_OPEN_FILE___CBL_READ_FILE___CBL_CLOSE_FILE.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,2 ----
+ Opening /dev/zero as read-only
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/CBL_READ_FILE__check_file_size_with_flags___128.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,112 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+ 
+         identification division.
+         program-id. uat_file_size.
+ 
+         environment division.
+         configuration section.
+           source-computer. Posix
+         >>if debugging-mode is defined
+           with debugging mode
+         >>end-if
+         .
+           object-computer. Posix.
+ 
+         data division.
+         >>define filename as "/tmp/test_file_size.cbl.txt"
+         >>define buffer as "hi, this text is exactly 38 bytes long"
+         working-storage section.
+           01 file-handle pic x(4) comp-5.
+           01 access-mode pic x comp-x.
+           01 deny-mode pic x comp-x value 0.
+           01 device pic x comp-x value 0.
+           01 file-offset    	PIC X(8) COMP-x.
+           01 byte-count     	pic x(4) comp-x.
+           01 flags            pic x comp-x value 0.
+           01 dummy            pic x.
+ 
+         procedure division.
+           perform write-file.
+           perform check-file-size.
+           goback.
+ 
+         write-file section.
+           *> Open as write-only.
+           move 2 to access-mode.
+           call "CBL_CREATE_FILE" using filename
+                                        access-mode
+                                        deny-mode
+                                        device
+                                        file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CREATE_FILE failed with " return-code
+             goback
+           end-if.
+ 
+           move 0 to file-offset.
+           move function byte-length(buffer) to byte-count.
+ 
+           call "CBL_WRITE_FILE" using file-handle
+                                       file-offset
+                                       byte-count
+                                       flags
+                                       buffer.
+ 
+           if return-code <> 0
+             display "CBL_WRITE_FILE failed with " return-code
+             goback
+           end-if.
+ 
+           call "CBL_CLOSE_FILE" using file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CLOSE_FILE failed with " return-code
+           end-if.
+ 
+           exit paragraph.
+ 
+         check-file-size section.
+           *> Open as read-only.
+           move 1 to access-mode.
+           call "CBL_OPEN_FILE" using filename
+                                      access-mode
+                                      deny-mode
+                                      device
+                                      file-handle.
+ 
+           if return-code <> 0
+             display "CBL_OPEN_FILE failed with " return-code
+             goback
+           end-if.
+ 
+           *> Obtain file size.
+           move 128 to flags.
+ 
+           call "CBL_READ_FILE" using file-handle
+                                      file-offset
+                                      byte-count
+                                      flags
+                                      dummy.
+ 
+           if return-code <> 0
+             display "CBL_READ_FILE failed with " return-code
+             goback
+           else if file-offset <> function byte-length(buffer)
+             display "File size mismatch. "
+               "Expected " function byte-length(buffer) " bytes, "
+               "got " file-offset
+             goback
+           end-if.
+ 
+           call "CBL_CLOSE_FILE" using file-handle.
+ 
+           if return-code <> 0
+             display "CBL_CLOSE_FILE failed with " return-code
+           end-if.
+ 
+           exit paragraph.
+ 
+         end program uat_file_size.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob	Sun May 31 22:32:07 2026
***************
*** 71,76 ****
--- 71,77 ----
        *-                "entical): " DST1 " - " DST2
        *         END-DISPLAY
        *     END-IF.
+       * "  <== this double-quote helps emacs resume syntax highlighting
  
             MOVE 1.1234567 TO DST1.
             MOVE 1.1234569 TO DST2.
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,93 ----
+        *> { dg-do run }
+        *> { dg-options "-fexec-charset=utf16le" }
+        *> { dg-output-file "group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out" }
+         identification division.
+         program-id. hex-init.
+         data division.
+         working-storage section.
+         01 template.
+             05 under-test   pic x(8).
+             05 filler       pic x.
+             05 msg pic      x(12).
+             05 filler       pic x.
+             05 utf16-val    pic x(8).
+ 
+         01  var01020304.
+             05 filler1.
+                 10 filler2     pic x(2) VALUE "33".
+                 10 as-value    pic x(4) VALUE  X'01020304'.
+                 10 filler3     pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var01020304".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300010203040000000033003300".
+ 
+         01  var-low.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  LOW-VALUES.
+                 10 filler3      pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var-low".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300000000000000000033003300".
+ 
+         01  var-space.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  SPACE.
+                 10 filler3      pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var-space".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300200020002000200033003300".
+ 
+         01  var-quote.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  QUOTE.
+                 10 filler3      pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var-quote".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300220022002200220033003300".
+ 
+         01  var-zero.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  ZERO.
+                 10 filler3      pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var-zero".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300300030003000300033003300".
+ 
+         01  var-high.
+             05 filler1.
+                 10 filler2      pic x(2) VALUE "33".
+                 10 as-value     pic x(4) VALUE  HIGH-VALUES.
+                 10 filler3      pic x(2) VALUE "33".
+             05 filler       pic x       value space.
+             05 msg pic      x(12)       value "var-high".
+             05 filler       pic x       value space.
+             05 utf16-val    pic x(8)    value X"33003300FF00FF00FF00FF0033003300".
+ 
+         procedure division.
+             move var01020304  to template perform checker
+             move var-low      to template perform checker
+             move var-space    to template perform checker
+             move var-quote    to template perform checker
+             move var-zero     to template perform checker
+             move var-high     to template perform checker
+             goback.
+         checker.
+             display msg of template space with no advancing
+             if utf16-val of template =
+                         utf16-val of template
+                 display "is okay."
+             else
+                 display "is no good: " function hex-of(under-test)
+                 end-if
+             continue.
+         end program hex-init.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Complex_HEX__VALUE_and_MOVE_-_UTF-16.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,7 ----
+ var01020304  is okay.
+ var-low      is okay.
+ var-space    is okay.
+ var-quote    is okay.
+ var-zero     is okay.
+ var-high     is okay.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,51 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect mf" }
+        *> { dg-output-file "group2/MOVE_LEVEL_78.out" }
+         identification   division.
+         program-id. prog.
+         data division.
+         working-storage section.
+         78 constq value quotes.
+         78 consts value spaces.
+         78 constz value zeroes.
+         78 constl value low-values.
+         78 consth value high-values.
+         01 str pic x(10).
+         01 strp redefines str pointer.
+         01 s  pic x(8) value Space.
+         01 sp redefines s pointer.
+         01 q pic x(8) value Quote.
+         01 qp redefines q pointer.
+         01 z pic x(8) value Zero.
+         01 zp redefines z pointer.
+         procedure        division.
+             move constl to str
+             display strp
+             move consts to str
+             if strp = sp
+                 display "Space OK."
+             else
+                 display "Space no good."
+                 end-if
+             move constq to str
+             if strp = qp
+                 display "Quote OK."
+             else
+                 display "Quote no good: " '"' qp '"' ' <> ' '"' strp  '"'
+                 end-if
+             move constz to str
+             if strp = zp
+                 display "Zero OK."
+             else
+                 display "Zero no good:  " '"' zp '"' ' <> ' '"' strp  '"'
+                 end-if
+             move consth to str
+             if str equal consth
+                 display "High-value OK."
+             else
+                 display "High-value is no good: "
+                          '"' function hex-of(consth) '"' ' <> ' '"' function hex-of(str)  '"'
+             goback.
+         end program prog.
+ 
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,6 ----
+ 0x0000000000000000
+ Space OK.
+ Quote OK.
+ Zero OK.
+ High-value OK.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Multi-target_MOVE_with_subscript_re-evaluation.cob	Sun May 31 22:32:07 2026
***************
*** 6,15 ****
          DATA DIVISION.
          WORKING-STORAGE SECTION.
          01 FILLER.
!           02 ADATA PIC X(6) VALUE "654321".
            02 A REDEFINES ADATA PIC 9 OCCURS 6 TIMES.
            02 B PIC 9.
!           02 CDATA PIC X(6) VALUE "999999".
            02 C REDEFINES CDATA PIC 9 OCCURS 6 TIMES.
          01 TEMP PIC 9.
          PROCEDURE DIVISION.
--- 6,15 ----
          DATA DIVISION.
          WORKING-STORAGE SECTION.
          01 FILLER.
!           02 ADATA pic x(6) VALUE "654321".
            02 A REDEFINES ADATA PIC 9 OCCURS 6 TIMES.
            02 B PIC 9.
!           02 CDATA pic x(6) VALUE "999999".
            02 C REDEFINES CDATA PIC 9 OCCURS 6 TIMES.
          01 TEMP PIC 9.
          PROCEDURE DIVISION.
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Named_conditionals_-_fixed__float__and_alphabetic.cob	Sun May 31 22:32:07 2026
***************
*** 10,16 ****
                             false "boat".
              88 germanmade  value "volkswagen", "audi",
                                   "mercedes", "bmw",
!                                  "porsche".        
          01  agegroup  pic 999.
              88 child  value  0 through  12.
              88 teen   value 13 through  19.
--- 10,16 ----
                             false "boat".
              88 germanmade  value "volkswagen", "audi",
                                   "mercedes", "bmw",
!                                  "porsche".
          01  agegroup  pic 999.
              88 child  value  0 through  12.
              88 teen   value 13 through  19.
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/Simple_p-scaling.cob	Sun May 31 22:32:07 2026
***************
*** 18,33 ****
           05 vary04    picture ppp99   COMP-5         value 0.00078 .
           05 vary05    picture ppp99   PACKED-DECIMAL value 0.00078 .
          procedure           division.
!         display vars01 
!         display vars02 
!         display vars03 
!         display vars04 
!         display vars05 
!         display vary01 
!         display vary02 
!         display vary03 
!         display vary04 
!         display vary05 
          goback.
          end program         prog.
  
--- 18,33 ----
           05 vary04    picture ppp99   COMP-5         value 0.00078 .
           05 vary05    picture ppp99   PACKED-DECIMAL value 0.00078 .
          procedure           division.
!         display vars01
!         display vars02
!         display vars03
!         display vars04
!         display vars05
!         display vary01
!         display vary02
!         display vary03
!         display vary04
!         display vary05
          goback.
          end program         prog.
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/access_to_OPTIONAL_LINKAGE_item_not_passed.cob	Sun May 31 22:32:07 2026
***************
*** 24,30 ****
            05 y          pic x(4).
          procedure        division using optional x.
          set py to address of x.
!         if py is not equal to zero
              display y
          else
              display "parameter omitted"
--- 24,30 ----
            05 y          pic x(4).
          procedure        division using optional x.
          set py to address of x.
!         if py is not equal to null
              display y
          else
              display "parameter omitted"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,36 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add_-1_to_negative_pic_S9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.  This routine checks adding a negative
+         *> value to negative signable targets.
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic s9.
+         01 foo4 pic s9999.
+         01 foov pic s9v99.
+         procedure                   division.
+         move -8 to foo1
+         add -1 to foo1 display foo1 
+         add -1 to foo1 display foo1
+         add -1 to foo1 display foo1
+         move -8 to foo1
+         add -5 to foo1 display foo1 
+         move -9998 to foo4
+         add -1 to foo4 display foo4
+         add -1 to foo4 display foo4
+         add -1 to foo4 display foo4
+         move -9998 to foo4
+         add -5 to foo4 display foo4 
+         move -9998 to foov
+         add -1 to foov display foov 
+         add -1 to foov display foov
+         add -1 to foov display foov
+         move -98.21 to foov
+         add -1 to foov display foov 
+         add -1 to foov display foov
+         add -1 to foov display foov
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_negative_pic_S9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ -9
+ +0
+ -1
+ -3
+ -9999
+ +0000
+ -0001
+ -0003
+ -9.00
+ +0.00
+ -1.00
+ -9.21
+ -0.21
+ -1.21
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,36 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add_-1_to_pic_9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.  This routine checks adding a negative
+         *> value to unsignable targets.
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic 9.
+         01 foo4 pic 9999.
+         01 foov pic 9v99.
+         procedure                   division.
+         move 2 to foo1
+         add -1 to foo1 display foo1 
+         add -1 to foo1 display foo1
+         add -1 to foo1 display foo1
+         move 3 to foo1
+         add -5 to foo1 display foo1 
+         move 2 to foo4
+         add -1 to foo4 display foo4
+         add -1 to foo4 display foo4
+         add -1 to foo4 display foo4
+         move 3 to foo4
+         add -5 to foo4 display foo4 
+         move 2 to foov
+         add -1 to foov display foov 
+         add -1 to foov display foov
+         add -1 to foov display foov
+         move 2.21 to foov
+         add -1 to foov display foov 
+         add -1 to foov display foov
+         add -1 to foov display foov
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_pic_9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ 1
+ 0
+ 1
+ 2
+ 0001
+ 0000
+ 0001
+ 0002
+ 1.00
+ 0.00
+ 1.00
+ 1.21
+ 0.21
+ 0.79
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add_-1_to_positive_pic_S9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.  This routine checks adding a negative
+         *> value to positive signable targets.
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic s9999.
+         01 foo2 pic s99v99.
+         procedure                   division.
+         move 2 to foo1
+         add -1 to foo1 display foo1 " should be +0001"
+         add -1 to foo1 display foo1 " should be +0000"
+         add -1 to foo1 display foo1 " should be -0001"
+         move 2.21 to foo2           
+         add -1 to foo2 display foo2 " should be +01.21"
+         add -1 to foo2 display foo2 " should be +00.21"
+         add -1 to foo2 display foo2 " should be -01.79"
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_-1_to_positive_pic_S9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,7 ----
+ +0001 should be +0001
+ +0000 should be +0000
+ -0001 should be -0001
+ +01.21 should be +01.21
+ +00.21 should be +00.21
+ -00.79 should be -01.79
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,36 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add_1_to_pic_9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.
+         *> This routine checks adding +1 to to PIC 9999
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic 9.
+         01 foo4 pic 9999.
+         01 foov pic 9v99.
+         procedure                   division.
+             move 8 to foo1
+             add 1 to foo1 display foo1
+             add 1 to foo1 display foo1
+             add 1 to foo1 display foo1
+             move 8 to foo1
+             add 3 to foo1 display foo1
+             move 9998 to foo4
+             add 1 to foo4 display foo4
+             add 1 to foo4 display foo4
+             add 1 to foo4 display foo4
+             move 9998 to foo4
+             add 3 to foo4 display foo4
+             move 8 to foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             move 8.21 to foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_pic_9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ 9
+ 0
+ 1
+ 1
+ 9999
+ 0000
+ 0001
+ 0001
+ 9.00
+ 0.00
+ 1.00
+ 9.21
+ 0.21
+ 1.21
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,36 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add_1_to_positive_pic_S9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.
+         *> This routine checks adding +1 to to PIC S9999
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic s9.
+         01 foo4 pic s9999.
+         01 foov pic s9v99.
+         procedure                   division.
+             move 8 to foo1
+             add 1 to foo1 display foo1
+             add 1 to foo1 display foo1
+             add 1 to foo1 display foo1
+             move 8 to foo1
+             add 3 to foo1 display foo1
+             move 9998 to foo4
+             add 1 to foo4 display foo4
+             add 1 to foo4 display foo4
+             add 1 to foo4 display foo4
+             move 9998 to foo4
+             add 3 to foo4 display foo4
+             move 8 to foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             move 8.21 to foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             add 1 to foov display foov
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add_1_to_positive_pic_S9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ +9
+ +0
+ +1
+ +1
+ +9999
+ +0000
+ +0001
+ +0001
+ +9.00
+ +0.00
+ +1.00
+ +9.21
+ +0.21
+ +1.21
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,36 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/add__1_to_negative_pic_S9999.out" }
+         *> We have special code for adding single digits to
+         *> numeric-display variables.  This routine checks adding a positive
+         *> value to negative signable targets.
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 foo1 pic s9.
+         01 foo4 pic s9999.
+         01 foov pic s9v99.
+         procedure                   division.
+         move -2 to foo1
+         add 1 to foo1 display foo1 
+         add 1 to foo1 display foo1
+         add 1 to foo1 display foo1
+         move -3 to foo1
+         add 5 to foo1 display foo1 
+         move -2 to foo4
+         add 1 to foo4 display foo4
+         add 1 to foo4 display foo4
+         add 1 to foo4 display foo4
+         move -3 to foo4
+         add 5 to foo4 display foo4 
+         move -2 to foov
+         add 1 to foov display foov 
+         add 1 to foov display foov
+         add 1 to foov display foov
+         move -2.21 to foov
+         add 1 to foov display foov 
+         add 1 to foov display foov
+         add 1 to foov display foov
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/add__1_to_negative_pic_S9999.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,15 ----
+ -1
+ +0
+ +1
+ +2
+ -0001
+ +0000
+ +0001
+ +0002
+ -1.00
+ +0.00
+ +1.00
+ -1.21
+ -0.21
+ +0.79
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,22 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/ambiguous_PERFORM.out" }
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. prog.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION. 
+        PROCEDURE DIVISION.
+        first-section section.
+        paragraph-1.
+           perform paragraph-2
+           GO TO get-out.
+        paragraph-2.
+           display "paragraph 2 in first-section.".
+           exit paragraph.
+        get-out.
+        GOBACK.
+        
+        second-section section.
+        paragraph-2. 
+           display "paragraph 2 in second-section.".
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/ambiguous_PERFORM.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,2 ----
+ paragraph 2 in first-section.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/cbltypes.cpy gcc-17-20260531/gcc/testsuite/cobol.dg/group2/cbltypes.cpy
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/cbltypes.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/cbltypes.cpy	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,19 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * The information is returned to the file-info argument, which
+       * is defined as the following 16-byte area:
+ 
+         01  cblt-fileexist-buf    typedef.
+           03  cblte-fe-filesize   PIC X(8) COMP-X.
+           03  cblte-fe-date.
+             05 cblte-fe-day       PIC X COMP-X.
+             05 cblte-fe-month     PIC X COMP-X.
+             05 cblte-fe-year      PIC X(2) comp-x.
+           03  cblte-fe-time.
+             05 cblte-fe-hours     PIC X COMP-X.
+             05 cblte-fe-minutes   PIC X COMP-X.
+             05 cblte-fe-seconds   PIC X COMP-X.
+             05 cblte-fe-hundreths PIC X COMP-X.
+ 
+         >> POP source format
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,56 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/compare_float_to_other_types.out" }
+         identification          division.
+         program-id.             prog.
+         data                    division.
+         working-storage         section.
+         *> This is the beginning of a larger sanity check for comparing
+         *> values.  I ran out of enthusiasm today.
+         77 var01    pic     9999     DISPLAY          value 1000     .
+         77 var02    pic     9ppp     DISPLAY          value 1000     .
+         77 var03    pic     9999v99  DISPLAY          value 1000     .
+         77 var04    pic     v999999  DISPLAY          value 0.000100 .
+         77 var05    pic     ppp999   DISPLAY          value 0.000100 .
+ 
+         77 var31    pic     9999     COMP-3          value 1000     .
+         77 var32    pic     9ppp     COMP-3          value 1000     .
+         77 var33    pic     9999v99  COMP-3          value 1000     .
+         77 var34    pic     v999999  COMP-3          value 0.000100 .
+         77 var35    pic     ppp999   COMP-3          value 0.000100 .
+ 
+         77 var41    pic     9999     COMP-4          value 1000     .
+         77 var42    pic     9ppp     COMP-4          value 1000     .
+         77 var43    pic     9999v99  COMP-4          value 1000     .
+         77 var44    pic     v999999  COMP-4          value 0.000100 .
+         77 var45    pic     ppp999   COMP-4          value 0.000100 .
+ 
+         77 var51    pic     9999     COMP-5          value 1000     .
+         77 var52    pic     9ppp     COMP-5          value 1000     .
+         77 var53    pic     9999v99  COMP-5          value 1000     .
+         77 var54    pic     v999999  COMP-5          value 0.000100 .
+         77 var55    pic     ppp999   COMP-5          value 0.000100 .
+ 
+         77 var61    pic     9999     packed-decimal no sign    value 1000     .
+         77 var62    pic     9ppp     packed-decimal no sign    value 1000     .
+         77 var63    pic     9999v99  packed-decimal no sign    value 1000     .
+         77 var64    pic     v999999  packed-decimal no sign    value 0.000100 .
+         77 var65    pic     ppp999   packed-decimal no sign    value 0.000100 .
+ 
+         77 f1     float-long value 1500.
+         77 f2     float-long value 0.000200 .
+ 
+         procedure               division.
+             if f1 > var01 display "01okay" else display "01BAD" end-if
+             if f1 > var31 display "03okay" else display "03BAD" end-if
+             if f1 > var41 display "04okay" else display "04BAD" end-if
+             if f1 > var51 display "05okay" else display "05BAD" end-if
+             if f1 > var61 display "06okay" else display "05BAD" end-if
+ 
+             if f1 < var01 display "01BAD~" else display "01okay~" end-if
+             if f1 < var31 display "03BAD~" else display "03okay~" end-if
+             if f1 < var41 display "04BAD~" else display "04okay~" end-if
+             if f1 < var51 display "05BAD~" else display "05okay~" end-if
+             if f1 < var61 display "06BAD~" else display "06okay~" end-if
+             goback.
+         end program             prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_float_to_other_types.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,11 ----
+ 01okay
+ 03okay
+ 04okay
+ 05okay
+ 06okay
+ 01okay~
+ 03okay~
+ 04okay~
+ 05okay~
+ 06okay~
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/compare_national_to_display.cob	Sun May 31 22:32:07 2026
***************
*** 8,14 ****
              locale greek is "cyrillic"
              locale unicode is "utf16le".
          object-computer.
!             xerox-parc-star 
              character classification
                  for alphanumeric is greek
                  for national is unicode.
--- 8,14 ----
              locale greek is "cyrillic"
              locale unicode is "utf16le".
          object-computer.
!             xerox-parc-star
              character classification
                  for alphanumeric is greek
                  for national is unicode.
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/comprensive_compare_comp-1_comp-5.cob	Sun May 31 22:32:07 2026
***************
*** 42,52 ****
              display "  .le. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa <= bbb 
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".eq." if aaa <= bbb 
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".gt." if aaa <= bbb 
                   move "BAD!" to result else move "Good" to result end-if
              end-evaluate
              display space result
--- 42,52 ----
              display "  .le. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa <= bbb
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".eq." if aaa <= bbb
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".gt." if aaa <= bbb
                   move "BAD!" to result else move "Good" to result end-if
              end-evaluate
              display space result
***************
*** 55,65 ****
              display "  .eq. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa = bbb 
                   move "BAD!" to result else move "Good" to result end-if
!               when known equal ".eq." if aaa = bbb 
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".gt." if aaa = bbb 
                   move "BAD!" to result else move "Good" to result end-if
              end-evaluate
              display space result
--- 55,65 ----
              display "  .eq. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa = bbb
                   move "BAD!" to result else move "Good" to result end-if
!               when known equal ".eq." if aaa = bbb
                   move "Good" to result else move "BAD!" to result end-if
!               when known equal ".gt." if aaa = bbb
                   move "BAD!" to result else move "Good" to result end-if
              end-evaluate
              display space result
***************
*** 68,74 ****
              display "  .ge. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa >= bbb 
                  move "BAD!" to result else move "Good" to result end-if
                when known equal ".eq." if aaa >= bbb
                  move "Good" to result else move "BAD!" to result end-if
--- 68,74 ----
              display "  .ge. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa >= bbb
                  move "BAD!" to result else move "Good" to result end-if
                when known equal ".eq." if aaa >= bbb
                  move "Good" to result else move "BAD!" to result end-if
***************
*** 94,100 ****
              display "  .ne. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa <> bbb 
                  move "Good" to result else move "BAD!" to result end-if
                when known equal ".eq." if aaa <> bbb
                  move "BAD!" to result else move "Good" to result end-if
--- 94,100 ----
              display "  .ne. " with no advancing
              move "xxxx" to result
              evaluate true
!               when known equal ".lt." if aaa <> bbb
                  move "Good" to result else move "BAD!" to result end-if
                when known equal ".eq." if aaa <> bbb
                  move "BAD!" to result else move "Good" to result end-if
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob gcc-17-20260531/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,24 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/move_numeric_to_alphanumeric.out" }
+         identification      division.
+         program-id.         prog.
+         data                division.
+         working-storage     section.
+         01 aaa pic s9.
+         01 bbb pic s999ppp.
+         01 xxx pic x(16).
+         procedure           division.
+             display "This should be 001"
+             move 001 to xxx display xxx
+             display "These should be 1"
+             move  -1 to xxx display xxx
+             move  +1 to xxx display xxx
+             move   1 to xxx display xxx
+             move   1 to aaa move aaa to xxx display xxx
+             move  -1 to aaa move aaa to xxx display xxx
+             display "These should be 001000"
+             move  1000 to bbb move bbb to xxx display xxx
+             move -1000 to bbb move bbb to xxx display xxx
+             goback.
+         end program         prog.
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out gcc-17-20260531/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out
*** gcc-17-20260524/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,12 ----
+ This should be 001
+ 001             
+ These should be 1
+ 1               
+ 1               
+ 1               
+ 1               
+ 1               
+ These should be 001000
+ 001000          
+ 001000          
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/README gcc-17-20260531/gcc/testsuite/g++.dg/README
*** gcc-17-20260524/gcc/testsuite/g++.dg/README	Sun May 24 22:32:07 2026
--- gcc-17-20260531/gcc/testsuite/g++.dg/README	Sun May 31 22:32:07 2026
*************** inherit	 Tests for inheritance -- virtua
*** 15,20 ****
--- 15,21 ----
  init	 Tests for initialization semantics, constructors/destructors, etc.
  lookup	 Tests for lookup semantics, namespaces, using, etc.
  lto	 Tests for Link Time Optimization.
+ modules  Tests for C++20 modules.
  opt	 Tests for fixes of bugs with particular optimizations.
  overload Tests for overload resolution and conversions.
  parse	 Tests for parsing.
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C gcc-17-20260531/gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/125123
+ // { dg-do compile { target c++20 } }
+ // { dg-options "-g" }
+ 
+ struct A
+ {
+   int a[2];
+   constexpr int const *begin () const { return a; }
+   constexpr int const *end () const { return a + 2; }
+ };
+ 
+ template <typename T>
+ requires true
+ void
+ foo ()
+ {
+   template for (constexpr int i : A { 0, 1 })	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;
+   template for (constexpr int i : A { 0, 1 })	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;
+ }
+ template void foo <void> ();
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C	Sun May 31 22:32:07 2026
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/106957
+ // { dg-do compile { target c++20 } }
+ 
+ template<bool B>
+ struct bool_constant {
+   static constexpr bool value = B;
+   constexpr operator bool() const { return value; }
+ };
+ 
+ using true_type = bool_constant<true>;
+ using false_type = bool_constant<false>;
+ 
+ constexpr auto f = [](int){}; // { dg-error "invalid conversion" }
+ 
+ template<typename T>
+ auto canCallFOn(T) -> decltype([]{ f(T{}); }(), true_type{}); // { dg-error "no match|invalid conversion" }
+ 
+ constexpr false_type canCallFOn(...) {
+     return {};
+ }
+ 
+ int main() {
+     static_assert(!canCallFOn(1)); // { dg-error "" }
+     static_assert(!canCallFOn("")); // { dg-error "" }
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-1_a.C gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_a.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-1_a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_a.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,9 ----
+ // { dg-module-do link }
+ // { dg-additional-options "-fmodules -finput-charset=UTF-8" }
+ 
+ export module 영혼;
+ // { dg-module-cmi }
+ 
+ export unsigned f(unsigned x) {
+ 	return x + 3;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-1_b.C gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_b.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-1_b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_b.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,11 ----
+ // { dg-module-do link }
+ // { dg-additional-options "-fmodules -finput-charset=UTF-8" }
+ 
+ #include <iostream>
+ 
+ import 영혼;
+ 
+ int main(void) {
+ 	std::cout << f(13) << '\n';
+ 	return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2.map gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2.map
*** gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2.map	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2.map	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,2 ----
+ $root .
+ 灵魂 pr120458_a.gcm
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2_a.C gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_a.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2_a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_a.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,11 ----
+ // { dg-module-do link }
+ // { dg-additional-options "-fmodules -fmodule-mapper=[srcdir]/pr120458-2.map " }
+ // { dg-additional-options "-finput-charset=UTF-8 " }
+ // { dg-additional-files "pr120458-2.map" }
+ 
+ export module 灵魂;
+ // { dg-module-cmi }
+ 
+ export unsigned f(unsigned x) {
+ 	return x + 3;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2_b.C gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_b.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/modules/pr120458-2_b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_b.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,12 ----
+ // { dg-module-do link }
+ // { dg-additional-options "-fmodules -fmodule-mapper=[srcdir]/pr120458-2.map " }
+ // { dg-additional-options "-finput-charset=UTF-8" }
+ 
+ import 灵魂;
+ 
+ #include <iostream>
+ 
+ int main(void) {
+ 	std::cout << f(13) << '\n';
+ 	return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/opt/pr104515.C gcc-17-20260531/gcc/testsuite/g++.dg/opt/pr104515.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/opt/pr104515.C	Sun May 24 22:32:08 2026
--- gcc-17-20260531/gcc/testsuite/g++.dg/opt/pr104515.C	Sun May 31 22:32:08 2026
*************** void pop_back_many(Vec& v, unsigned n)
*** 15,18 ****
  }
  
  // { dg-final { scan-tree-dump "Executing store motion of v" "lim2" } }
! // { dg-final { scan-tree-dump "Re-issueing dependent" "lim2" } }
--- 15,18 ----
  }
  
  // { dg-final { scan-tree-dump "Executing store motion of v" "lim2" } }
! // { dg-final { scan-tree-dump "Re-issuing dependent" "lim2" } }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/other/array8.C gcc-17-20260531/gcc/testsuite/g++.dg/other/array8.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/other/array8.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/other/array8.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/125454
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename T>
+ void
+ foo()
+ {
+   T a = a[a]; // { dg-error "array subscript is not an integer" }
+ }
+ 
+ void
+ bar ()
+ {
+   foo<int[]>;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/reflect/bases_of6.C gcc-17-20260531/gcc/testsuite/g++.dg/reflect/bases_of6.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/reflect/bases_of6.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/reflect/bases_of6.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/125423
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ struct Base
+ {
+ };
+ struct Derived : Base
+ {
+ };
+ 
+ template <typename Tp, Tp v> struct get_type
+ {
+     inline constexpr static auto info = ^^void;
+ };
+ 
+ template <std::meta::info base> struct get_type<std::meta::info, base>
+ {
+     inline constexpr static auto info = std::meta::type_of(base);
+ };
+ 
+ template <std::meta::info currField> struct ReflectionSubPanel
+ {
+     static constexpr auto _ranges = []()
+     {
+         constexpr auto b = std::meta::bases_of(^^Derived, std::meta::access_context::unchecked())[0];
+         return get_type<decltype(b), b>::info;
+     }();
+ };
+ 
+ int main() { ReflectionSubPanel<^^Derived> panel; }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/reflect/pr125412.C gcc-17-20260531/gcc/testsuite/g++.dg/reflect/pr125412.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/reflect/pr125412.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/g++.dg/reflect/pr125412.C	Sun May 31 22:32:08 2026
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/125412
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ void
+ foo ()
+ {
+ }
+ 
+ auto bar ();
+ 
+ template <typename T>
+ auto a = foo ();	// { dg-error "variable or field 'a' declared void" }
+ template <typename T>
+ auto b = bar ();	// { dg-error "use of 'auto bar\\\(\\\)' before deduction of 'auto'" }
+ 
+ consteval {
+   auto c = substitute (^^a, { ^^int });
+   std::meta::extract <int> (c);
+   auto d = substitute (^^b, { ^^int });
+   std::meta::extract <int> (d);
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/tree-ssa/pr88797.C gcc-17-20260531/gcc/testsuite/g++.dg/tree-ssa/pr88797.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/tree-ssa/pr88797.C	Sun May 24 22:32:08 2026
--- gcc-17-20260531/gcc/testsuite/g++.dg/tree-ssa/pr88797.C	Sun May 31 22:32:08 2026
*************** void test_f(unsigned x, unsigned y) {
*** 12,16 ****
  }
  
  /* { dg-final { scan-tree-dump-not "Duplicating join block" "split-paths" } } */
! /* { dg-final { scan-tree-dump-times "appears to be a join point for if-convertable bbs." 1 "split-paths" } } */
  
--- 12,16 ----
  }
  
  /* { dg-final { scan-tree-dump-not "Duplicating join block" "split-paths" } } */
! /* { dg-final { scan-tree-dump-times "appears to be a join point for if-convertible bbs." 1 "split-paths" } } */
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C gcc-17-20260531/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C	Sun May 24 22:32:08 2026
--- gcc-17-20260531/gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C	Sun May 31 22:32:08 2026
***************
*** 2,8 ****
     -Wsystem-headers
     Verify warnings for atomic functions with optimization.
     { dg-do compile { target c++11 } }
!    { dg-options "-O1" } */
  
  #include <atomic>
  
--- 2,9 ----
     -Wsystem-headers
     Verify warnings for atomic functions with optimization.
     { dg-do compile { target c++11 } }
!    { dg-options "-O1" }
!    { dg-additional-options "-Wno-deprecated-declarations" { target c++26 } } */
  
  #include <atomic>
  
*************** void test_load (int *pi)
*** 25,32 ****
    *pi++ = eai.load (seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:23:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
--- 26,33 ----
    *pi++ = eai.load (seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:25:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
*************** void test_store (int *pi)
*** 40,48 ****
    eai.store (*pi++, seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:36:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:39:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
--- 41,49 ----
    eai.store (*pi++, seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:38:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:40:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
*************** void test_compare_exchange (int *pi, int
*** 70,79 ****
    cmpxchg (&eai, pi++, *pj++, relaxed, seq_cst);  // warning
    cmpxchg (&eai, pi++, *pj++, relaxed, relaxed);
  
!   /* { dg-regexp " *inlined from \[^\n\r\]+.C:66:.*" "" { target *-*-* } 0 }
!      { dg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { target *-*-* } 0 }
       { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { target *-*-* } 0 } */
  }
--- 71,80 ----
    cmpxchg (&eai, pi++, *pj++, relaxed, seq_cst);  // warning
    cmpxchg (&eai, pi++, *pj++, relaxed, relaxed);
  
!   /* { dg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { target *-*-* } 0 }
       { dg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { target *-*-* } 0 }
+      { dg-regexp " *inlined from \[^\n\r\]+.C:71:.*" "" { target *-*-* } 0 }
       { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { target *-*-* } 0 } */
  }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C gcc-17-20260531/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
*** gcc-17-20260524/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C	Sun May 24 22:32:08 2026
--- gcc-17-20260531/gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C	Sun May 31 22:32:08 2026
***************
*** 2,8 ****
     -Wsystem-headers
     Verify warnings for basic atomic functions with no optimization.
     { dg-do compile { target c++11 } }
!    { dg-options "-O0 -Wall" } */
  
  #include <atomic>
  
--- 2,9 ----
     -Wsystem-headers
     Verify warnings for basic atomic functions with no optimization.
     { dg-do compile { target c++11 } }
!    { dg-options "-O0 -Wall" }
!    { dg-additional-options "-Wno-deprecated-declarations" { target c++26 } } */
  
  #include <atomic>
  
*************** void test_load (int *pi)
*** 25,32 ****
    *pi++ = eai.load (seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:23:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
--- 26,33 ----
    *pi++ = eai.load (seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:24:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:25:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_load\[^\n\r\]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
*************** void test_store (int *pi)
*** 40,48 ****
    eai.store (*pi++, seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:36:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:39:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
--- 41,49 ----
    eai.store (*pi++, seq_cst);
  }
  
! /* { dg-regexp " *inlined from \[^\n\r\]+.C:37:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:38:.*" "" { target *-*-* } 0 }
!    { dg-regexp " *inlined from \[^\n\r\]+.C:40:.*" "" { target *-*-* } 0 }
     { dg-warning "__atomic_store\[^\n\r]* \\\[-Winvalid-memory-model" "warning" { target *-*-* } 0 } */
  
  
*************** void test_compare_exchange (int *pi, int
*** 75,84 ****
  
    /* HACK: xfail doesn't seem to work for the dg-regexp directives below,
       so disable them by prepending an X to their names...
-     { Xdg-regexp " *inlined from \[^\n\r\]+.C:66:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { xfail *-*-* } 0 }
      { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { xfail *-*-* } 0 } */
  }
--- 76,85 ----
  
    /* HACK: xfail doesn't seem to work for the dg-regexp directives below,
       so disable them by prepending an X to their names...
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:67:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:68:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:69:.*" "" { xfail *-*-* } 0 }
      { Xdg-regexp " *inlined from \[^\n\r\]+.C:70:.*" "" { xfail *-*-* } 0 }
+     { Xdg-regexp " *inlined from \[^\n\r\]+.C:71:.*" "" { xfail *-*-* } 0 }
      { dg-warning "__atomic_compare_exchange\[^\n\r\]* \\\[-Winvalid-memory-model" "cmpxchg 1" { xfail *-*-* } 0 } */
  }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp gcc-17-20260531/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
*** gcc-17-20260524/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp	Sun May 24 22:32:08 2026
--- gcc-17-20260531/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp	Sun May 31 22:32:08 2026
*************** gcc_parallel_test_enable 0
*** 37,43 ****
  set preamble {
  #include <arm_sve.h>
  
! #pragma GCC target "+i8mm+f32mm+f64mm+sve2+sve2-bitperm+sve2-sm4+sve2-aes+sve2-sha3+sme"
  
  extern svbool_t &pred;
  
--- 37,43 ----
  set preamble {
  #include <arm_sve.h>
  
! #pragma GCC target "+i8mm+f32mm+f64mm+sve2+sve2-bitperm+sve2-sm4+sve2-aes+sve2-sha3+sme+sme2p2"
  
  extern svbool_t &pred;
  
*************** proc check_ssve_calls { harness calls sh
*** 145,150 ****
--- 145,151 ----
  set streaming_ok {
      s8 = svadd_x (pred, s8, s8)
      s8 = svld1 (pred, s8_ptr)
+     u32 = svcompact (pred, u32)
  }
  
  # This order follows the list in the SME manual.
*************** set nonstreaming_only {
*** 164,171 ****
      u8 = svbdep (u8, u8)
      u8 = svbext (u8, u8)
      f32 = svbfmmla (f32, bf16, bf16)
-     u8 = svbgrp (u8, u8)
-     u32 = svcompact (pred, u32)
      f32 = svadda (pred, 1.0f, f32)
      f32 = svexpa (u32)
      f32 = svmmla (f32, f32, f32)
--- 165,170 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-10.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-10.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-10.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-10.c	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=1" } */
- 
- /* Source: Ian Lance Taylor.  */
- 
- int
- foo (int i)
- {
-   return __builtin_abs (i) >= 0;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-11.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-11.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-11.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-11.c	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=1" } */
- 
- /* Based on strict-overflow-5.c.  */
- 
- /* We can only unroll when using strict overflow semantics.  But we
-    don't issue a warning for relying on undefined overflow in
-    loops.  */
- 
- int foo (int i)
- {
-   int index;
-   int r=0;
-  
-   for (index = i; index <= i+4; index+=2)
-     r++;
-  
-   return r;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-12.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-12.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-12.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-12.c	Thu Jan  1 00:00:00 1970
***************
*** 1,16 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=2" } */
- 
- /* Source: Ian Lance Taylor.  Dual of no-strict-overflow-6.c.  */
- 
- /* VRP test.  This turns into an infinite loop when using strict
-    overflow semantics.  */
- 
- int
- foo ()
- {
-   int i, bits;
-   for (i = 1, bits = 1; i > 0; i += i) /* { dg-warning "assuming signed overflow does not occur" "correct warning" { xfail *-*-* } } */
-     ++bits;
-   return bits;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-13.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-13.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-13.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-13.c	Thu Jan  1 00:00:00 1970
***************
*** 1,18 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=2" } */
- 
- /* Source: Ian Lance Taylor.  Dual of no-strict-overflow-6.c.  */
- 
- /* VRP test.  This turns into an infinite loop (depending on what
-    bigtime_test does), but at least we warn about it.  */
- 
- extern int bigtime_test (int);
- int
- foo ()
- {
-   int j;
-   for (j = 1; 0 < j; j *= 2) /* { dg-warning "assuming signed overflow does not occur" "correct warning" { xfail *-*-* } } */
-     if (! bigtime_test (j))
-       return 1;
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-14.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-14.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-14.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-14.c	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=4" } */
- 
- /* Source: Ian Lance Taylor.  */
- 
- int
- foo (int j)
- {
-   int i;
-   int sum = 0;
- 
-   for (i = 1; i < j; i += i)
-     sum += i / 16; /* { dg-warning "assuming signed overflow does not occur" ""  { xfail *-*-* } } */
-   return sum;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-15.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-15.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-15.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-15.c	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=4" } */
- 
- /* Source: Ian Lance Taylor.  */
- 
- int
- foo (int j)
- {
-   int i;
-   int sum = 0;
- 
-   for (i = 1; i < j; i += i)
-     sum += __builtin_abs (i); /* { dg-warning "assuming signed overflow does not occur" "" { xfail *-*-* } } */
-   return sum;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-16.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-16.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-16.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-16.c	Thu Jan  1 00:00:00 1970
***************
*** 1,11 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* From PR 31522.  */
- 
- int f (int x) {
-   int y;
-   if (x <= 4) y = 1;
-   else y = x / 4;
-   return y <= 0;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-17.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-17.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-17.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-17.c	Thu Jan  1 00:00:00 1970
***************
*** 1,20 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* This erroneously gave an overflow warning.  */
- 
- extern void bar (char);
- void
- foo (char *s)
- {
-   int len, i;
- 
-   for (len = 1; len < 5000; ++len)
-     {
-       for (i = 0; i < len; ++i)
- 	{
- 	  if (s[i] != '\0')
- 	    bar (s[i]);
- 	}
-     }
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-18.c	Thu Jan  1 00:00:00 1970
***************
*** 1,23 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* Warn about an overflow when folding i > 0, p->a - p->b can be larger
-    than INT_MAX and thus i can wrap.  */
- 
- struct c { unsigned int a; unsigned int b; };
- extern void bar (struct c *);
- int
- foo (struct c *p)
- {
-   int i;
-   int sum = 0;
- 
-   for (i = 0; i < p->a - p->b; ++i)
-     {
-       /* See PR80511 for the XFAIL.  */
-       if (i > 0)  /* { dg-warning "signed overflow" "" { xfail *-*-* } } */
- 	sum += 2;
-       bar (p);
-     }
-   return sum;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-19.c	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* Don't warn about an overflow when threading jumps.  We used to get
-    a warning from comparing bounds generated by VRP.  */
- 
- int
- bar(int a, int b, int n)
- {
-   if (b > a)
-     n = a - b;
-   if (a >= b)
-     n = 1;
-   return n;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-2.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-2.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,13 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=2" } */
- 
- /* Source: Ian Lance Taylor.  Based on strict-overflow-1.c.  */
- 
- /* We can only simplify the conditional when using strict overflow
-    semantics.  */
- 
- int
- foo (int i)
- {
-   return i - 5 < 10;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-20.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-20.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-20.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-20.c	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- /* { dg-do compile } */
- /* { dg-options "-std=gnu17 -fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* Don't warn about an overflow in a copied loop header.  We used to
-    get a warning in value numbering.  This is PR 33565.  */
- 
- void do_something ();
- 
- void f (int m, int n)
- {
-   int j;
-  
-   for (j = m; j	< m + 10 && j <	n; j ++)
-     do_something (j);
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-21.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-21.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-21.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-21.c	Thu Jan  1 00:00:00 1970
***************
*** 1,12 ****
- /* PR 32102: -Wall stomps on -Wstrict-overflow */
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=2 -Wall" } */
- int
- foo ()
- {
-   int i, bits;
-   for (i = 1, bits = 1; i > 0; i += i) /* { dg-warning "assuming signed overflow does not occur" "correct warning" { xfail *-*-* } } */
-     ++bits;
-   return bits;
- }
- 
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-23.c	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow" } */
- 
- unsigned int
- do_scrolling (unsigned int window_size, unsigned int writecost)
- {
-   unsigned int i = window_size;
- 
-   int terminal_window_p = 0;
-   unsigned int queue = 0;
- 
-   for (i = window_size; i; i--)
-     {
-       if (writecost < i)
-     ++queue;
-       else if (writecost & 1)
-     terminal_window_p = 1;
-     }
- 
-   if (queue > 0)
-     {
-       if (!terminal_window_p)
-     {
-       terminal_window_p = 1;
-     }
-     }
- 
-   if (terminal_window_p)
-     return 100;
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c	Thu Jan  1 00:00:00 1970
***************
*** 1,11 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=3" } */
- 
- /* We can only simplify the conditional when using strict overflow
-    semantics.  */
- 
- int
- foo (int x, int y)
- {
-   return x - y < 0; /* { dg-warning "assuming signed overflow does not occur" "correct warning" } */
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-26.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-26.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-26.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-26.c	Thu Jan  1 00:00:00 1970
***************
*** 1,16 ****
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow" } */
- 
- int
- f (int i, int j)
- {
-   unsigned int c = 0;                                                          
-   if (i < j)
-     {
-       unsigned int n = j - i;
-       unsigned int i;
-       for (i = 0; i < n; i++) /* { dg-bogus "signed overflow" } */
- 	c++;
-     }
-   return c;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-27.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-27.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-27.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-27.c	Thu Jan  1 00:00:00 1970
***************
*** 1,28 ****
- /* { dg-do compile } */
- /* { dg-options "-O3 -Wstrict-overflow=2 -Werror" } */
- 
- typedef __SIZE_TYPE__ size_t;
- extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
- 		       char **__restrict __save_ptr)
-   __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
- extern const unsigned short int **__ctype_b_loc (void)
-   __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
- extern int *DEBUGLEVEL_CLASS;
- size_t debug_num_classes = 0;
- void debug_parse_param(char *param);
- void
- debug_parse_levels(const char *params_str, size_t str_len)
- {
-   char str[str_len+1];
-   char *tok, *saveptr;
-   size_t i;
-   tok = strtok_r(str, " \t,\n\r", &saveptr);
-   if (((*__ctype_b_loc ())[(int) ((tok[0]))]))
-     tok = strtok_r(((void *)0), " \t,\n\r", &saveptr);
-   else
-     DEBUGLEVEL_CLASS[0] = 0;
-   for (i = 0 +1; i < debug_num_classes; i++)
-     DEBUGLEVEL_CLASS[i] = DEBUGLEVEL_CLASS[0];
-   while (tok != ((void *)0) )
-     debug_parse_param(tok);
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-4.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-4.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-4.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-4.c	Thu Jan  1 00:00:00 1970
***************
*** 1,13 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=3" } */
- 
- /* Source: Ian Lance Taylor.  Based on strict-overflow-2.c.  */
- 
- /* We can only simplify the division when using strict overflow
-    semantics.  */
- 
- int
- foo (int i)
- {
-   return (i * 100) / 10;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-6.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-6.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-6.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-6.c	Thu Jan  1 00:00:00 1970
***************
*** 1,13 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow=2" } */
- 
- /* Source: Ian Lance Taylor.  Based on strict-overflow-3.c.  */
- 
- /* We can only simplify the conditional when using strict overflow
-    semantics.  */
- 
- int
- foo (int i, int j)
- {
-   return i + 100 < j + 1000;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-7.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-7.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-7.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-7.c	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
- 
- /* Source: Ian Lance Taylor.  */
- 
- int
- foo (int i)
- {
-   return i + 10 > i; /* { dg-warning "assuming signed overflow does not occur" "correct warning" { xfail *-*-* } } */
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-8.c gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-8.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/Wstrict-overflow-8.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/Wstrict-overflow-8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- /* { dg-do compile } */
- /* { dg-options "-fstrict-overflow -O2 -Wall -Wno-strict-overflow" } */
- 
- /* Source: Ian Lance Taylor.  */
- 
- int
- foo (int i)
- {
-   return i + 10 > i;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-133.c gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-133.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-133.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-133.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,45 ----
+ /* C2Y N3705: bit-precise enum.  */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c2y" } */
+ 
+ #define expr_has_type(e, t) _Generic (e, default : 0, t : 1)
+ 
+ #if __BITINT_MAXWIDTH__ >= 129
+ enum A : unsigned _BitInt(3) { A0 = 0, A1 = 7 };
+ enum B : unsigned _BitInt(67) { B0 = 0, B1 = 255 };
+ enum C : _BitInt(4) { C0 = -8, C1 = 7 };
+ enum D : signed _BitInt(129) { D0 = -61822874253726891040447382843909510144wb, D1 = 333265406300494622897688995893630121068wb };
+ enum E : _BitInt(__BITINT_MAXWIDTH__) { E0 = -1, E1 = 1 };
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 129
+   enum A a = A0;
+   static_assert (expr_has_type (a, enum A));
+   static_assert (expr_has_type (+a, unsigned _BitInt(3)));
+   static_assert (expr_has_type (a + 0wb, unsigned _BitInt(3)));
+   static_assert (expr_has_type (a + a, unsigned _BitInt(3)));
+   enum B b = B0;
+   static_assert (expr_has_type (b, enum B));
+   static_assert (expr_has_type (+b, unsigned _BitInt(67)));
+   static_assert (expr_has_type (b + 0wb, unsigned _BitInt(67)));
+   static_assert (expr_has_type (b + b, unsigned _BitInt(67)));
+   enum C c = C0;
+   static_assert (expr_has_type (c, enum C));
+   static_assert (expr_has_type (+c, _BitInt(4)));
+   static_assert (expr_has_type (c + 0wb, _BitInt(4)));
+   static_assert (expr_has_type (c + c, _BitInt(4)));
+   enum D d = D0;
+   static_assert (expr_has_type (d, enum D));
+   static_assert (expr_has_type (+d, signed _BitInt(129)));
+   static_assert (expr_has_type (d + 0wb, signed _BitInt(129)));
+   static_assert (expr_has_type (d + d, signed _BitInt(129)));
+   enum E e = E0;
+   static_assert (expr_has_type (e, enum E));
+   static_assert (expr_has_type (+e, signed _BitInt(__BITINT_MAXWIDTH__)));
+   static_assert (expr_has_type (e + 0wb, signed _BitInt(__BITINT_MAXWIDTH__)));
+   static_assert (expr_has_type (e + e, signed _BitInt(__BITINT_MAXWIDTH__)));
+ #endif
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-134.c gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-134.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-134.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-134.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,42 ----
+ /* C2Y N3705: bit-precise enum.  */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c2y -Wall" } */
+ 
+ enum E : unsigned _BitInt(1) { E1 = 0, E2 = 1 };
+ #if __BITINT_MAXWITH__ >= 977
+ enum F : _BitInt(976) { F1 = 1wb, F2 = 300670311812537087458442068171242480163042891902139164259644606340061247186864125993521170465570759574674133007538491713720385607199458367860097993945704706551423706008678936855195978990583102392208311054636025123775462104768336555710742464822135886690195218326330916446029087852132145116425130wb, F3 = ~(unsigned _BitInt(975)) 0 };
+ #endif
+ 
+ int
+ foo (enum E x)
+ {
+   switch (x)
+     {
+     case E1:
+       return 1;
+     case E2:
+       return 2;
+     }
+ }
+ 
+ #if __BITINT_MAXWITH__ >= 977
+ _BitInt(977)
+ bar (enum F x)
+ {
+   return x + 1;
+ }
+ 
+ enum F
+ baz (enum F x)
+ {
+   switch (x)
+     {
+     case F1:
+       return F2;
+     case F2:
+       return F3;
+     default:
+       return F1;
+     }
+ }
+ #endif
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-135.c gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-135.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-135.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-135.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,47 ----
+ /* C2Y N3705: bit-precise enum.  */
+ /* { dg-do run { target bitint } } */
+ /* { dg-options "-std=c2y" } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 257
+ enum A : unsigned _BitInt(7) { A0 = 0, A1 = 7 };
+ enum B : unsigned _BitInt(79) { B0 = 0, B1 = 255 };
+ enum C : _BitInt(25) { C0 = -8, C1 = 7 };
+ enum D : signed _BitInt(182) { D0 = -61822874253726891040447382843909510144wb, D1 = 333265406300494622897688995893630121068wb };
+ enum E : _BitInt(__BITINT_MAXWIDTH__) { E0 = -1, E1 = 1 };
+ struct F { enum A a : 3; enum B b : 67; enum C c : 4; enum D d : 129; enum E e : 257; } f;
+ #endif
+ 
+ [[gnu::noipa]] void
+ foo ()
+ {
+   if (f.a != A1
+       || f.b != B1
+       || f.c != C1
+       || f.d != D1
+       || f.e != E1)
+     __builtin_abort ();
+   f.a = A0;
+   f.b = B0;
+   f.c = C0;
+   f.d = D0;
+   f.e = E0;
+ }
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 257
+   f.a = A1;
+   f.b = B1;
+   f.c = C1;
+   f.d = D1;
+   f.e = E1;
+   foo ();
+   if (f.a != A0
+       || f.b != B0
+       || f.c != C0
+       || f.d != D0
+       || f.e != E0)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-136.c gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-136.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/bitint-136.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-136.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,36 ----
+ /* C2Y N3705: bit-precise enum.  */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c2y" } */
+ 
+ #define expr_has_type(e, t) _Generic (e, default : 0, t : 1)
+ 
+ #if __BITINT_MAXWIDTH__ >= 257
+ enum A : unsigned _BitInt(7) { A0 = 0, A1 = 7 };
+ enum B : unsigned _BitInt(79) { B0 = 0, B1 = 255 };
+ enum C : _BitInt(25) { C0 = -8, C1 = 7 };
+ enum D : signed _BitInt(182) { D0 = -61822874253726891040447382843909510144wb, D1 = 333265406300494622897688995893630121068wb };
+ enum E : _BitInt(__BITINT_MAXWIDTH__) { E0 = -1, E1 = 1 };
+ struct F { enum A a : 3; enum B b : 67; enum C c : 4; enum D d : 129; enum E e : 257; } f;
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 257
+   static_assert (expr_has_type (+f.a, unsigned _BitInt(7)));
+   static_assert (expr_has_type (f.a + 0wb, unsigned _BitInt(7)));
+   static_assert (expr_has_type (f.a + f.a, unsigned _BitInt(7)));
+   static_assert (expr_has_type (+f.b, unsigned _BitInt(79)));
+   static_assert (expr_has_type (f.b + 0wb, unsigned _BitInt(79)));
+   static_assert (expr_has_type (f.b + f.b, unsigned _BitInt(79)));
+   static_assert (expr_has_type (+f.c, _BitInt(25)));
+   static_assert (expr_has_type (f.c + 0wb, _BitInt(25)));
+   static_assert (expr_has_type (f.c + f.c, _BitInt(25)));
+   static_assert (expr_has_type (+f.d, signed _BitInt(182)));
+   static_assert (expr_has_type (f.d + 0wb, signed _BitInt(182)));
+   static_assert (expr_has_type (f.d + f.d, signed _BitInt(182)));
+   static_assert (expr_has_type (+f.e, signed _BitInt(__BITINT_MAXWIDTH__)));
+   static_assert (expr_has_type (f.e + 0wb, signed _BitInt(__BITINT_MAXWIDTH__)));
+   static_assert (expr_has_type (f.e + f.e, signed _BitInt(__BITINT_MAXWIDTH__)));
+ #endif
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/ipa/fnsummary-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/ipa/fnsummary-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/ipa/fnsummary-1.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/ipa/fnsummary-1.c	Sun May 31 22:32:09 2026
*************** test(int a, int b)
*** 6,9 ****
  		__builtin_unreachable ();
  }
  /* { dg-final { scan-ipa-dump "ends with conditional guarding __builtin_unreachable" "fnsummary"  } } */
! /* { dg-final { scan-ipa-dump-times "skipping unnecesary stmt" 2 "fnsummary"  } } */
--- 6,9 ----
  		__builtin_unreachable ();
  }
  /* { dg-final { scan-ipa-dump "ends with conditional guarding __builtin_unreachable" "fnsummary"  } } */
! /* { dg-final { scan-ipa-dump-times "skipping unnecessary stmt" 2 "fnsummary"  } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/opts-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/opts-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/opts-1.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/opts-1.c	Sun May 31 22:32:09 2026
***************
*** 1,9 ****
  /* Test negative forms of various options are rejected.  */
  /* { dg-do compile } */
! /* { dg-options "-Wno-strict-aliasing=1 -Wno-strict-overflow=1 -fno-abi-version=1 -fno-lto-compression-level=1 -fno-tree-parallelize-loops=1" } */
  
  /* { dg-error "-fno-abi-version" "-fno-abi-version" { target *-*-* } 0 } */
  /* { dg-error "-fno-lto-compression-level" "-fno-lto-compression-level" { target *-*-* } 0 } */
  /* { dg-error "-fno-tree-parallelize-loops" "-fno-tree-parallelize-loops" { target *-*-* } 0 } */
- /* { dg-error "-Wno-strict-overflow" "-Wno-strict-overflow" { target *-*-* } 0 } */
  /* { dg-error "-Wno-strict-aliasing" "-Wno-strict-aliasing" { target *-*-* } 0 } */
--- 1,8 ----
  /* Test negative forms of various options are rejected.  */
  /* { dg-do compile } */
! /* { dg-options "-Wno-strict-aliasing=1 -fno-abi-version=1 -fno-lto-compression-level=1 -fno-tree-parallelize-loops=1" } */
  
  /* { dg-error "-fno-abi-version" "-fno-abi-version" { target *-*-* } 0 } */
  /* { dg-error "-fno-lto-compression-level" "-fno-lto-compression-level" { target *-*-* } 0 } */
  /* { dg-error "-fno-tree-parallelize-loops" "-fno-tree-parallelize-loops" { target *-*-* } 0 } */
  /* { dg-error "-Wno-strict-aliasing" "-Wno-strict-aliasing" { target *-*-* } 0 } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr124630.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr124630.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr124630.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr124630.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,16 ----
+ /* PR middle-end/124630 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ctz } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ unsigned
+ foo (unsigned a)
+ {
+   if (a != 0)
+     return __builtin_popcount (a ^ (a - 1)) - 1;
+   else
+     return __CHAR_BIT__ * __SIZEOF_INT__;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin_ctz|\\.CTZ" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin_popcount|\\.POPCOUNT" "optimized" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr36227.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr36227.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr36227.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr36227.c	Thu Jan  1 00:00:00 1970
***************
*** 1,14 ****
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow=3" } */
- typedef __UINTPTR_TYPE__ ptrcast;
- 
- volatile unsigned long *
- sat_add(volatile unsigned long *ptr, unsigned long i, volatile unsigned long *end)
- {
-   if ((ptrcast)ptr + i * sizeof(*ptr) > (ptrcast)ptr) /* { dg-bogus "pointer wraparound" } */
-     return ptr + i;
-   else
-     return end;
- }
- 
- 
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr48022-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr48022-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr48022-1.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr48022-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,14 ****
- /* PR tree-optimization/48022 */
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow" } */
- 
- int
- foo (const char *x)
- {
-   unsigned long l = 1;
-   const unsigned char *s = (const unsigned char *) (const char *) (x);
-   int r = s[0] - ((const unsigned char *) (const char *) ("/"))[0];
-   if (l > 0 && r == 0)
-     r = (s[1] - ((const unsigned char *) (const char *) ("/"))[1]);
-   return r;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr48022-2.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr48022-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr48022-2.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr48022-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,11 ****
- /* PR tree-optimization/48022 */
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow" } */
- 
- #include <string.h>
- 
- int
- foo (const char *x)
- {
-   return strcmp (x, "/");
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr49705.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr49705.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr49705.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr49705.c	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wstrict-overflow" } */
- 
- struct glyph
- {
-   long foo, bar, baz;
- };
- 
- extern int fatal (char const *, int, int);
- 
- int
- check_image_width (int width, int height)
- {
-   if ((((((0 * (0 * 2 + width) - 1) < 0) ? - (~ (0 * (0 * 2 + width) + 0) == -1) - ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) + 0))) < 0 ? (2 < 0 ? width < ((((0 * (0 * 2 + width) - 1) < 0) ? - (~ (0 * (0 * 2 + width) + 0) == -1) - ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) + 0))) - 2 : ((((0 * (0 * 2 + width) - 1) < 0) ? ((((0 * (0 * 2 + width) + 1) << (sizeof ((0 * 2 + width) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * 2 + width) - 1))) - 2 < width) : width < 0 ? 2 <= width + 2 : 2 < 0 ? width <= width + 2 : width + 2 < 2)
-       || ((((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) == 0 && (((width + 2) < 0 && 0 < height) || (height < 0 && 0 < (width + 2)))) || (height < 0 ? ((width + 2) < 0 ? (width + 2) < ((((0 * (0 * height + (width + 2)) - 1) < 0) ? ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) - 1))) / height : height == -1 ? 0 : ((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) / height < (width + 2)) : height == 0 ? 0 : ((width + 2) < 0 ? (width + 2) < ((((0 * (0 * height + (width + 2)) - 1) < 0) ? - (~ (0 * (0 * height + (width + 2)) + 0) == -1) - ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) + 0))) / height : ((((0 * (0 * height + (width + 2)) - 1) < 0) ? ((((0 * (0 * height + (width + 2)) + 1) << (sizeof ((0 * height + (width + 2)) + 0) * 8 - 2)) - 1) * 2 + 1) : (0 * (0 * height + (width + 2)) - 1))) / height < (width + 2))))
-       || ((9223372036854775807L < 18446744073709551615UL ? 9223372036854775807L : 18446744073709551615UL) / sizeof (struct glyph)
- 	  < (width + 2) * height))
-     fatal ("screen size %dx%d too big", width, height);
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr52904.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr52904.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr52904.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr52904.c	Thu Jan  1 00:00:00 1970
***************
*** 1,20 ****
- /* { dg-do compile } */
- /* { dg-options "-Wstrict-overflow -O2" } */
- extern int foo (int);
- 
- int
- wait_reading_process_output (void)
- {
-   int nfds = 0;
-   int channel;
- 
-   for (channel = 0; channel < 1024; ++channel)
-     {
-       if (foo (channel))
- 	nfds++;
-     }
- 
-   if (nfds < 0) /* { dg-bogus "assuming signed overflow does not occur" "" } */
-     return 1;
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pr81592.c gcc-17-20260531/gcc/testsuite/gcc.dg/pr81592.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pr81592.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pr81592.c	Sun May 31 22:32:09 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -Wall -fno-strict-overflow  -Wstrict-overflow=2 -fsanitize=signed-integer-overflow" } */
  
  #include <stdio.h>
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -Wall -fsanitize=signed-integer-overflow" } */
  
  #include <stdio.h>
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/pragma-diag-3.c gcc-17-20260531/gcc/testsuite/gcc.dg/pragma-diag-3.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/pragma-diag-3.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/pragma-diag-3.c	Sun May 31 22:32:09 2026
***************
*** 1,23 ****
  /* { dg-do compile } */
! /* { dg-options "-Wswitch-enum -Wsign-compare -fstrict-overflow -Wstrict-overflow -Werror -Wno-error=switch-enum" } */
! /* PR c/66098 - #pragma diagnostic 'ignored' not fully undone by pop for strict-overflow 
!    PR c/66711 - GCC does not correctly restore diagnostic state after pragma GCC diagnostic pop with -Werror 
! */
  /* { dg-message "warnings being treated as errors" "" {target "*-*-*"} 0 } */
  
! void testing2() {
! #pragma GCC diagnostic push
! #pragma GCC diagnostic ignored "-Wstrict-overflow"
!   int j = 4;
!   j + 4 < j;
! #pragma GCC diagnostic pop
! }
! 
! void testing3() {
!   int k = 4;
!   k + 4 < k; /* { dg-error "overflow" "" { xfail *-*-* } } */
! }
! 
  int bar()
  {
    unsigned x = 0;
--- 1,8 ----
  /* { dg-do compile } */
! /* { dg-options "-Wswitch-enum -Wsign-compare -fstrict-overflow -Werror -Wno-error=switch-enum" } */
  /* { dg-message "warnings being treated as errors" "" {target "*-*-*"} 0 } */
  
! /* PR c/66711 - GCC does not correctly restore diagnostic state after pragma GCC diagnostic pop with -Werror  */
  int bar()
  {
    unsigned x = 0;
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/stack-usage-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/stack-usage-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/stack-usage-1.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/stack-usage-1.c	Sun May 31 22:32:09 2026
*************** int foo (void)
*** 116,120 ****
    return 0;
  }
  
! /* { dg-final { scan-stack-usage "foo `foo`\t\(256|264\)\tstatic" } } */
  /* { dg-final { cleanup-stack-usage } } */
--- 116,120 ----
    return 0;
  }
  
! /* { dg-final { scan-stack-usage "foo\tfoo\t\(256|264\)\tstatic" } } */
  /* { dg-final { cleanup-stack-usage } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/torture/bitint-99.c gcc-17-20260531/gcc/testsuite/gcc.dg/torture/bitint-99.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/torture/bitint-99.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/torture/bitint-99.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,58 ----
+ /* C2Y N3705: bit-precise enum.  */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ /* { dg-skip-if "" { ! run_expensive_tests }  { "*" } { "-O0" "-O2" } } */
+ /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 931
+ enum A : unsigned _BitInt(931) { A0 = 0, A1 = ~(unsigned _BitInt(931)) 0 };
+ 
+ [[gnu::noipa]] enum A
+ foo (enum A x, enum A y)
+ {
+   return x + y;
+ }
+ 
+ [[gnu::noipa]] enum A
+ bar (enum A x, enum A y)
+ {
+   return x * y;
+ }
+ 
+ [[gnu::noipa]] enum A
+ baz (enum A x, int y)
+ {
+   return x << y;
+ }
+ 
+ [[gnu::noipa]] long double
+ qux (enum A x)
+ {
+   return x;
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+   if (foo (6311375123928035423950285815103134911823756068469611777446526212940235067784850613353497329740063593697085797242982576864482320954041469603405692898785705968909387515267461870959824498259469495351851027191417268686507795153960941899524534819776605247652440362840005231043955863251uwb,
+ 	   14387261967519759057764126008098292183127782109485750598911399497161011642298676488973745200653245797159693794534840726810049655774169609382090435748786710789342570033603954826553305901144008614628394445814741866666472834301004639140374682209505172315237277433772283979289285215192uwb)
+       != ((unsigned _BitInt(931)) 6311375123928035423950285815103134911823756068469611777446526212940235067784850613353497329740063593697085797242982576864482320954041469603405692898785705968909387515267461870959824498259469495351851027191417268686507795153960941899524534819776605247652440362840005231043955863251uwb
+ 	  + 14387261967519759057764126008098292183127782109485750598911399497161011642298676488973745200653245797159693794534840726810049655774169609382090435748786710789342570033603954826553305901144008614628394445814741866666472834301004639140374682209505172315237277433772283979289285215192uwb)
+       || foo (42, 43) != 85
+       || bar (11450886075967129033052256159825006993789547814645317054307262295553183531582194402180689046449356587523973694466833975060817054401287265586817097051188432556072249366122506436985624261677676836219438960612585780057976181675859636764878183805546490277128899407974903051218414039906uwb,
+ 	      17319821836005877733927644950742811128616796074756636477991226488210814096671627534609545922744022960185648230703380956243036682725031141936390527207521613841001950058662947028886894999944938393683770058909115780447269611178311112868417694704349733151327800871414934360178286516220uwb)
+ 	 != ((unsigned _BitInt(931)) 11450886075967129033052256159825006993789547814645317054307262295553183531582194402180689046449356587523973694466833975060817054401287265586817097051188432556072249366122506436985624261677676836219438960612585780057976181675859636764878183805546490277128899407974903051218414039906uwb
+ 	      * 17319821836005877733927644950742811128616796074756636477991226488210814096671627534609545922744022960185648230703380956243036682725031141936390527207521613841001950058662947028886894999944938393683770058909115780447269611178311112868417694704349733151327800871414934360178286516220uwb)
+       || bar (42, 43) != (42 * 43)
+       || baz (1741243423058845609493717319573689670252835849747079409452709857940702982389080261485458577486556787796580475119344401810353389865747399915963686220476226766063058821552766983213692892185191052405922570241479839142610515539669844621168541758908874036250322040751021964408140728317uwb,
+ 	      278)
+ 	 != ((unsigned _BitInt(931)) 1741243423058845609493717319573689670252835849747079409452709857940702982389080261485458577486556787796580475119344401810353389865747399915963686220476226766063058821552766983213692892185191052405922570241479839142610515539669844621168541758908874036250322040751021964408140728317uwb
+ 	     << 278)
+ #if __LDBL_MAX_19_EXP__ >= 240
+       || qux (1072109040180989940290225035254632830964130184664319348440549688998788uwb)
+ 	 != (long double) 1072109040180989940290225035254632830964130184664319348440549688998788uwb
+ #endif
+       || false)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/torture/pr125396-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125396-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/torture/pr125396-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125396-1.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/125396 */
+ 
+ 
+ char g7;
+ int g13, g26;
+ int g() __attribute__((returns_twice));
+ void f8()
+ {
+     int arr1[2];
+     int c2, c4;
+     char v6;
+     int sj12;
+     int sj14;
+ lbl_br1:
+     if (g13) goto lbl_br3;
+     if (c4)
+     {
+         c4 = 0;
+         goto lbl_br6;
+     }
+     switch (v6)
+     case 1:
+         c4 = 1;
+     sj14 = g();
+     g13 = sj12;
+ lbl_br3:
+     arr1[0] = 0;
+     sj12 = g();
+     c2 = g7;
+     g26 = 5;
+     if (c2) __builtin_unreachable();
+ lbl_br6:
+     sj12 = arr1[0];
+     arr1[0] = 9;
+     if (g26) f8();
+     goto lbl_br1;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/torture/pr125453-1.c gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125453-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/torture/pr125453-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125453-1.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fgimple" } */
+ /* Disable all warnings since the code in h is undefined and could
+    invoke -Wstringop-overflow warnigns and others. */
+ /* { dg-additional-options "-w" } */
+ /* PR tree-optimization/125453 */
+ 
+ int b[10];
+ 
+ _Bool __GIMPLE f(int *c)
+ {
+     unsigned t;
+     unsigned t1;
+     int t2;
+     _Bool t3;
+     t = (unsigned)c;
+     t1 = (unsigned)_Literal (char *)&b;
+     t = t - t1;
+     t2 = (int)t;
+     t3 = t2 != 0;
+     return t3;
+ }
+ 
+ 
+ 
+ int g1(void);
+ int f1(const char *);
+ 
+ void h(void) {
+   char b[1], *c;
+   int d, e;
+   for (d = 0, c = b; d < 3; d++, c++) {
+     g1();
+     if (d && e)
+       break;
+   }
+   *c = '\0';
+   f1(b);
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/copy-headers-7.c	Sun May 31 22:32:09 2026
*************** int is_sorted(int *a, int n, int m, int
*** 15,20 ****
  
  /* { dg-final { scan-tree-dump "is now do-while loop" "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Conditional combines static and invariant" 0 "ch2" } } */
! /* { dg-final { scan-tree-dump-times "Will elliminate invariant exit" 1 "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Will eliminate peeled conditional" 1 "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Will duplicate bb" 3 "ch2" } } */
--- 15,20 ----
  
  /* { dg-final { scan-tree-dump "is now do-while loop" "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Conditional combines static and invariant" 0 "ch2" } } */
! /* { dg-final { scan-tree-dump-times "Will eliminate invariant exit" 1 "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Will eliminate peeled conditional" 1 "ch2" } } */
  /* { dg-final { scan-tree-dump-times "Will duplicate bb" 3 "ch2" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c	Sun May 31 22:32:09 2026
*************** void foo(unsigned long long *M)
*** 11,14 ****
      }
  }
  
! /* { dg-final { scan-tree-dump-times "join point for if-convertable" 1 "split-paths" } } */
--- 11,14 ----
      }
  }
  
! /* { dg-final { scan-tree-dump-times "join point for if-convertible" 1 "split-paths" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-13.c	Sun May 31 22:32:09 2026
*************** foo(signed char *p, int n)
*** 22,26 ****
    return s;
  }
  
! /* { dg-final { scan-tree-dump "appears to be a join point for if-convertable" "split-paths" } } */
  
--- 22,26 ----
    return s;
  }
  
! /* { dg-final { scan-tree-dump "appears to be a join point for if-convertible" "split-paths" } } */
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-2.c	Sun May 31 22:32:09 2026
*************** foo(signed char *p, int n)
*** 17,21 ****
    return s;
  }
  
! /* { dg-final { scan-tree-dump "appears to be a join point for if-convertable" "split-paths" } } */
  
--- 17,21 ----
    return s;
  }
  
! /* { dg-final { scan-tree-dump "appears to be a join point for if-convertible" "split-paths" } } */
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/split-path-5.c	Sun May 31 22:32:09 2026
*************** bmhi_init (const signed char *pattern)
*** 41,44 ****
      }
  }
  
! /* { dg-final { scan-tree-dump-times "join point for if-convertable" 1 "split-paths" } } */
--- 41,44 ----
      }
  }
  
! /* { dg-final { scan-tree-dump-times "join point for if-convertible" 1 "split-paths" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-half-float.c	Sun May 31 22:32:09 2026
***************
*** 12,14 ****
--- 12,17 ----
  
  /* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT270" "slp1" { xfail *-*-* } } } */
  /* { dg-final { scan-tree-dump "add new stmt: \[^\n\r]*COMPLEX_ADD_ROT90" "slp1" { xfail *-*-* } } } */
+ 
+ /* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT90" "slp1" { xfail arm*-*-* } } } */
+ /* { dg-final { scan-tree-dump "Found COMPLEX_ADD_ROT270" "slp1" { xfail arm*-*-* } } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mla-half-float.c	Sun May 31 22:32:09 2026
***************
*** 8,12 ****
  #define N 16
  #include "complex-mla-template.c"
  
  /* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "slp1" { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "slp1"  { xfail *-*-* } } } */
--- 8,14 ----
  #define N 16
  #include "complex-mla-template.c"
  
+ /* { dg-final { scan-tree-dump-times "add new stmt:\[^\n\r]*COMPLEX_FMA" 1 "slp1" { xfail *-*-* } } } */
+ 
  /* { dg-final { scan-tree-dump "Found COMPLEX_FMA_CONJ" "slp1" { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump "Found COMPLEX_FMA" "slp1" { xfail arm*-*-* } } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c	Sun May 24 22:32:09 2026
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-mul-half-float.c	Sun May 31 22:32:09 2026
***************
*** 8,12 ****
  #define N 16
  #include "complex-mul-template.c"
  
! /* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "slp1"  { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "slp1"  { xfail *-*-* } } } */
--- 8,15 ----
  #define N 16
  #include "complex-mul-template.c"
  
! /* { dg-final { scan-tree-dump-times "add new stmt:\[^\n\r]*COMPLEX_MUL_CONJ" 1 "slp1" { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump-times "add new stmt:\[^\n\r]*COMPLEX_MUL" 1 "slp1" { xfail *-*-* } } } */
! 
! /* { dg-final { scan-tree-dump "Found COMPLEX_MUL_CONJ" "slp1" { xfail arm*-*-* } } } */
! /* { dg-final { scan-tree-dump "Found COMPLEX_MUL" "slp1" { xfail arm*-*-* } } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_1.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_1.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 4
+ int a[N] = {0, 0, 0, 1};
+ int b[N] = {0, 0, 0, 1};
+ 
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_10.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_10.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_10.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_10.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 8
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ short foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_11.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_11.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_11.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_11.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do run } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_long } */
+ 
+ /* { dg-additional-options "-mavx512f" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-require-effective-target avx512f_runtime { target i?86-*-* x86_64-*-* } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f1 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 0;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 1;
+ }
+ 
+ __attribute__ ((noipa))
+ int f2 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 1;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ int main (void)
+ {
+   check_vect ();
+ 
+   static unsigned long a[3] __attribute__ ((aligned (16))) = {10, 1, 0};
+   static unsigned long b[3] __attribute__ ((aligned (16))) = {9, 2, 0};
+ 
+   if (f1 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   if (f2 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_2.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_2.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_2.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_3.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_3.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_3.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_4.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_4.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_4.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ int foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_5.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_5.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_5.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_6.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_6.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_6.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_6.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return a[i];
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_7.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_7.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_7.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ /* { dg-additional-options "-march=armv8-a+sve" { target { aarch64*-*-* } } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ int foo (void)
+ {
+   for (int i = 0; i < (N / 2); i += 2)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+ 
+       if (a[i + 1] > b[i + 1])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { aarch64*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" { target { aarch64*-*-* } } } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_8.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_8.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_8.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ void
+ add (int n, int *__restrict a, int *__restrict b, int *__restrict c)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       c[i] = a[i] + b[i];
+       if (i > 1000)
+ 	break;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_9.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_9.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_9.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-early-break-no-epilog_9.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ int c[N] = {0};
+ 
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i] && a[i] > c[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump "early break does not require epilog" "vect" { xfail *-*-* } } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-prefetch-drop_2.c gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-prefetch-drop_2.c
*** gcc-17-20260524/gcc/testsuite/gcc.dg/vect/vect-prefetch-drop_2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.dg/vect/vect-prefetch-drop_2.c	Sun May 31 22:32:09 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ void foo(int *restrict a, int *b, int n)
+ {
+   for(int i=0; i<n; ++i){
+     a[i] = a[i] + b[i];
+     if (a[i] > 0)
+       __builtin_prefetch(&(b[i+8]));
+   }
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/chkfeat-1.c	Sun May 31 22:32:10 2026
***************
*** 8,14 ****
  /*
  ** test_chkfeat:
  ** ...
! **	mov	x16, 1
  **	hint	40 // chkfeat x16
  **	eor	x0, x16, 1
  **	ret
--- 8,14 ----
  /*
  ** test_chkfeat:
  ** ...
! **	mov	w16, 1
  **	hint	40 // chkfeat x16
  **	eor	x0, x16, 1
  **	ret
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c	Sun May 31 22:32:10 2026
*************** test_gcspr ()
*** 18,24 ****
  
  /*
  **test_gcspopm:
! **	mov	x0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
--- 18,24 ----
  
  /*
  **test_gcspopm:
! **	mov	w0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
*************** test_gcspopm ()
*** 31,37 ****
  /*
  **test_gcsss:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	x0, 0
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
--- 31,37 ----
  /*
  **test_gcsss:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	w0, 0
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/acle/pr110100.c	Sun May 31 22:32:10 2026
***************
*** 4,7 ****
  void do_st64b(data512_t data) {
    __arm_st64b((void*)0x10000000, data);
  }
! /* { dg-final { scan-assembler {mov\tx([123])?[0-9], 268435456} } } */
--- 4,7 ----
  void do_st64b(data512_t data) {
    __arm_st64b((void*)0x10000000, data);
  }
! /* { dg-final { scan-assembler {mov\tw([123])?[0-9], 268435456} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align16.c	Sun May 31 22:32:10 2026
***************
*** 57,63 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f1
  */
  
--- 57,63 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f1
  */
  
***************
*** 67,73 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f8
  */
  /*
--- 67,73 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f8
  */
  /*
***************
*** 76,82 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f16
  */
  
--- 76,82 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f16
  */
  
***************
*** 91,97 ****
  **	mov	(w[0-9]+), 0
  **	bfi	\3, w\2, 0, 1
  **	and	x3, x\2, 9223372036854775807
! **	mov	x2, 0
  **	str	xzr, \[sp\]
  **	strb	\3, \[sp\]
  **	ldr	x1, \[sp\]
--- 91,97 ----
  **	mov	(w[0-9]+), 0
  **	bfi	\3, w\2, 0, 1
  **	and	x3, x\2, 9223372036854775807
! **	mov	w2, 0
  **	str	xzr, \[sp\]
  **	strb	\3, \[sp\]
  **	ldr	x1, \[sp\]
***************
*** 106,112 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f1p
  */
--- 106,112 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f1p
  */
***************
*** 115,121 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f8p
  */
--- 115,121 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f8p
  */
***************
*** 125,131 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f16p
  */
  
--- 125,131 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f16p
  */
  
***************
*** 209,218 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\3, \4, 0, 1
! **	stp	\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
--- 209,218 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\3, \4, 0, 1
! **	stp	x\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
***************
*** 234,243 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\3, \4, 0, 1
! **	stp	\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
--- 234,243 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\3, \4, 0, 1
! **	stp	x\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
***************
*** 258,267 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	(x[0-9]+), \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\4, \5, 0, 1
! **	stp	\4, xzr, \[sp, 16\]
  **	mov	x6, \3
  **	mov	x5, \3
  **	mov	x4, \3
--- 258,267 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	(x[0-9]+), \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\4, \5, 0, 1
! **	stp	x\4, xzr, \[sp, 16\]
  **	mov	x6, \3
  **	mov	x5, \3
  **	mov	x4, \3
***************
*** 323,329 ****
  /*
  ** g1_stdarg:
  **	and	x2, x0, 1
! **	mov	x3, 0
  **	mov	w0, w1
  **	b	f1_stdarg
  */
--- 323,329 ----
  /*
  ** g1_stdarg:
  **	and	x2, x0, 1
! **	mov	w3, 0
  **	mov	w0, w1
  **	b	f1_stdarg
  */
***************
*** 331,337 ****
  /*
  ** g16_stdarg:
  **	and	x2, x0, 1
! **	mov	x3, 0
  **	mov	w0, w1
  **	b	f16_stdarg
  */
--- 331,337 ----
  /*
  ** g16_stdarg:
  **	and	x2, x0, 1
! **	mov	w3, 0
  **	mov	w0, w1
  **	b	f16_stdarg
  */
***************
*** 343,349 ****
  **	mov	w0, w1
  **	mov	(w[0-9]+), 0
  **	bfi	\2, w\1, 0, 1
! **	mov	x2, 0
  **	str	xzr, \[sp\]
  **	strb	\2, \[sp\]
  **	ldr	x1, \[sp\]
--- 343,349 ----
  **	mov	w0, w1
  **	mov	(w[0-9]+), 0
  **	bfi	\2, w\1, 0, 1
! **	mov	w2, 0
  **	str	xzr, \[sp\]
  **	strb	\2, \[sp\]
  **	ldr	x1, \[sp\]
***************
*** 356,362 ****
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	x2, 0
  **	b	f1p_stdarg
  */
  
--- 356,362 ----
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	w2, 0
  **	b	f1p_stdarg
  */
  
***************
*** 365,378 ****
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	x2, 0
  **	b	f8p_stdarg
  */
  
  /*
  ** g16p_stdarg:
  **	and	x2, x0, 1
! **	mov	x3, 0
  **	mov	w0, w1
  **	b	f16p_stdarg
  */
--- 365,378 ----
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	w2, 0
  **	b	f8p_stdarg
  */
  
  /*
  ** g16p_stdarg:
  **	and	x2, x0, 1
! **	mov	w3, 0
  **	mov	w0, w1
  **	b	f16p_stdarg
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/bitfield-bitint-abi-align8.c	Sun May 31 22:32:10 2026
***************
*** 56,62 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f1
  */
--- 56,62 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f1
  */
***************
*** 66,72 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f8
  */
--- 66,72 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f8
  */
***************
*** 76,82 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f16
  */
  
--- 76,82 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f16
  */
  
***************
*** 91,97 ****
  **	mov	(w[0-9]+), 0
  **	bfi	\3, w\2, 0, 1
  **	and	x3, x\2, 9223372036854775807
! **	mov	x2, 0
  **	str	xzr, \[sp\]
  **	strb	\3, \[sp\]
  **	ldr	x1, \[sp\]
--- 91,97 ----
  **	mov	(w[0-9]+), 0
  **	bfi	\3, w\2, 0, 1
  **	and	x3, x\2, 9223372036854775807
! **	mov	w2, 0
  **	str	xzr, \[sp\]
  **	strb	\3, \[sp\]
  **	ldr	x1, \[sp\]
***************
*** 106,112 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f1p
  */
--- 106,112 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f1p
  */
***************
*** 115,121 ****
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	x2, 0
  **	mov	w0, \1
  **	b	f8p
  */
--- 115,121 ----
  **	mov	(w[0-9]+), w1
  **	and	x3, x0, 9223372036854775807
  **	and	x1, x0, 1
! **	mov	w2, 0
  **	mov	w0, \1
  **	b	f8p
  */
***************
*** 125,131 ****
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	x3, 0
  **	b	f16p
  */
  
--- 125,131 ----
  **	mov	w0, w1
  **	and	x4, \1, 9223372036854775807
  **	and	x2, \1, 1
! **	mov	w3, 0
  **	b	f16p
  */
  
***************
*** 211,219 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\3, \4, 0, 1
  **	stp	x7, x1, \[sp\]
  **	mov	x6, x7
  **	mov	x5, x7
--- 211,219 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\3, \4, 0, 1
  **	stp	x7, x1, \[sp\]
  **	mov	x6, x7
  **	mov	x5, x7
***************
*** 235,243 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\3, \4, 0, 1
  **	stp	x7, x1, \[sp\]
  **	mov	x6, x7
  **	mov	x5, x7
--- 235,243 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\3, \4, 0, 1
  **	stp	x7, x1, \[sp\]
  **	mov	x6, x7
  **	mov	x5, x7
***************
*** 259,268 ****
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	(x[0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	\3, \4, 0, 1
! **	stp	\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
--- 259,268 ----
  **	sxtw	(x[0-9]+), w1
  **	mov	x0, \2
  **	and	x7, \2, 9223372036854775807
! **	mov	w([0-9]+), 0
  **	sbfx	(x[0-9]+), \1, 0, 63
! **	bfi	x\3, \4, 0, 1
! **	stp	x\3, xzr, \[sp, 16\]
  **	mov	x6, x7
  **	mov	x5, x7
  **	mov	x4, x7
***************
*** 326,339 ****
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	x2, 0
  **	b	f1_stdarg
  */
  
  /*
  ** g16_stdarg:
  **	and	x2, x0, 1
! **	mov	x3, 0
  **	mov	w0, w1
  **	b	f16_stdarg
  */
--- 326,339 ----
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	w2, 0
  **	b	f1_stdarg
  */
  
  /*
  ** g16_stdarg:
  **	and	x2, x0, 1
! **	mov	w3, 0
  **	mov	w0, w1
  **	b	f16_stdarg
  */
***************
*** 345,351 ****
  **	mov	w0, w1
  **	mov	(w[0-9]+), 0
  **	bfi	\2, w\1, 0, 1
! **	mov	x2, 0
  **	str	xzr, \[sp\]
  **	strb	\2, \[sp\]
  **	ldr	x1, \[sp\]
--- 345,351 ----
  **	mov	w0, w1
  **	mov	(w[0-9]+), 0
  **	bfi	\2, w\1, 0, 1
! **	mov	w2, 0
  **	str	xzr, \[sp\]
  **	strb	\2, \[sp\]
  **	ldr	x1, \[sp\]
***************
*** 358,364 ****
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	x2, 0
  **	b	f1p_stdarg
  */
  
--- 358,364 ----
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	w2, 0
  **	b	f1p_stdarg
  */
  
***************
*** 367,380 ****
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	x2, 0
  **	b	f8p_stdarg
  */
  
  /*
  ** g16p_stdarg:
  **	and	x2, x0, 1
! **	mov	x3, 0
  **	mov	w0, w1
  **	b	f16p_stdarg
  */
--- 367,380 ----
  **	mov	(x[0-9]+), x0
  **	mov	w0, w1
  **	and	x1, \1, 1
! **	mov	w2, 0
  **	b	f8p_stdarg
  */
  
  /*
  ** g16p_stdarg:
  **	and	x2, x0, 1
! **	mov	w3, 0
  **	mov	w0, w1
  **	b	f16p_stdarg
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/chkfeat-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/chkfeat-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/chkfeat-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/chkfeat-1.c	Sun May 31 22:32:10 2026
***************
*** 4,10 ****
  
  /*
  **foo1:
! **	mov	x16, 1
  **	hint	40 // chkfeat x16
  **	mov	x0, x16
  **	ret
--- 4,10 ----
  
  /*
  **foo1:
! **	mov	w16, 1
  **	hint	40 // chkfeat x16
  **	mov	x0, x16
  **	ret
*************** foo1 (void)
*** 17,23 ****
  
  /*
  **foo2:
! **	mov	x16, 1
  **	movk	x16, 0x5678, lsl 32
  **	movk	x16, 0x1234, lsl 48
  **	hint	40 // chkfeat x16
--- 17,23 ----
  
  /*
  **foo2:
! **	mov	w16, 1
  **	movk	x16, 0x5678, lsl 32
  **	movk	x16, 0x1234, lsl 48
  **	hint	40 // chkfeat x16
*************** foo4 (unsigned long long *p)
*** 58,64 ****
  
  /*
  **foo5:
! **	mov	x16, 1
  **	hint	40 // chkfeat x16
  **	cmp	x16, 0
  **(
--- 58,64 ----
  
  /*
  **foo5:
! **	mov	w16, 1
  **	hint	40 // chkfeat x16
  **	cmp	x16, 0
  **(
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/chkfeat-2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/chkfeat-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/chkfeat-2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/chkfeat-2.c	Sun May 31 22:32:10 2026
*************** void bar (void);
*** 9,21 ****
  /*
  ** foo:
  **	...
! **	mov	x16, 1
  **	...
  **	hint	40 // chkfeat x16
  **	...
  **	bl	bar
  **	...
! **	mov	x16, 1
  **	...
  **	hint	40 // chkfeat x16
  **	...
--- 9,21 ----
  /*
  ** foo:
  **	...
! **	mov	w16, 1
  **	...
  **	hint	40 // chkfeat x16
  **	...
  **	bl	bar
  **	...
! **	mov	w16, 1
  **	...
  **	hint	40 // chkfeat x16
  **	...
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/cmpbr.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/cmpbr.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/cmpbr.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/cmpbr.c	Sun May 31 22:32:10 2026
*************** FAR_BRANCH(u64, 42);
*** 1612,1618 ****
  
  /*
  ** u64_x0_eq_4098:
! **	mov	x([0-9]+), 4098
  **	cbeq	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
--- 1612,1618 ----
  
  /*
  ** u64_x0_eq_4098:
! **	mov	w([0-9]+), 4098
  **	cbeq	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
*************** FAR_BRANCH(u64, 42);
*** 1621,1628 ****
  
  /*
  ** u64_x0_ne_4098:
! **	mov	(x[0-9]+), 4098
! **	cbne	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1621,1628 ----
  
  /*
  ** u64_x0_ne_4098:
! **	mov	w([0-9]+), 4098
! **	cbne	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1630,1637 ****
  
  /*
  ** u64_x0_ult_4098:
! **	mov	(x[0-9]+), 4097
! **	cbls	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1630,1637 ----
  
  /*
  ** u64_x0_ult_4098:
! **	mov	w([0-9]+), 4097
! **	cbls	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1639,1646 ****
  
  /*
  ** u64_x0_ule_4098:
! **	mov	(x[0-9]+), 4098
! **	cbls	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1639,1646 ----
  
  /*
  ** u64_x0_ule_4098:
! **	mov	w([0-9]+), 4098
! **	cbls	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1648,1655 ****
  
  /*
  ** u64_x0_ugt_4098:
! **	mov	(x[0-9]+), 4098
! **	cbhi	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1648,1655 ----
  
  /*
  ** u64_x0_ugt_4098:
! **	mov	w([0-9]+), 4098
! **	cbhi	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1657,1664 ****
  
  /*
  ** u64_x0_uge_4098:
! **	mov	(x[0-9]+), 4097
! **	cbhi	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1657,1664 ----
  
  /*
  ** u64_x0_uge_4098:
! **	mov	w([0-9]+), 4097
! **	cbhi	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1666,1673 ****
  
  /*
  ** i64_x0_slt_4098:
! **	mov	(x[0-9]+), 4097
! **	cble	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1666,1673 ----
  
  /*
  ** i64_x0_slt_4098:
! **	mov	w([0-9]+), 4097
! **	cble	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1675,1682 ****
  
  /*
  ** i64_x0_sle_4098:
! **	mov	(x[0-9]+), 4098
! **	cble	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1675,1682 ----
  
  /*
  ** i64_x0_sle_4098:
! **	mov	w([0-9]+), 4098
! **	cble	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1684,1691 ****
  
  /*
  ** i64_x0_sgt_4098:
! **	mov	(x[0-9]+), 4098
! **	cbgt	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1684,1691 ----
  
  /*
  ** i64_x0_sgt_4098:
! **	mov	w([0-9]+), 4098
! **	cbgt	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
*************** FAR_BRANCH(u64, 42);
*** 1693,1700 ****
  
  /*
  ** i64_x0_sge_4098:
! **	mov	(x[0-9]+), 4097
! **	cbgt	x0, \1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
--- 1693,1700 ----
  
  /*
  ** i64_x0_sge_4098:
! **	mov	w([0-9]+), 4097
! **	cbgt	x0, x\1, .L([0-9]+)
  **	b	not_taken
  ** .L\2:
  **	b	taken
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/eh_return-3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/eh_return-3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/eh_return-3.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/eh_return-3.c	Sun May 31 22:32:10 2026
***************
*** 7,13 ****
  **	hint	25 // paciasp
  **	...
  **	cbz	w2, .*
! **	mov	x4, 0
  **	...
  **	cbz	x4, .*
  **	add	sp, sp, x5
--- 7,13 ----
  **	hint	25 // paciasp
  **	...
  **	cbz	w2, .*
! **	mov	w4, 0
  **	...
  **	cbz	x4, .*
  **	add	sp, sp, x5
***************
*** 19,25 ****
  **	retaa
  ** )
  **	mov	x5, x0
! **	mov	x4, 1
  **	mov	x6, x1
  **	b	.*
  */
--- 19,25 ----
  **	retaa
  ** )
  **	mov	x5, x0
! **	mov	w4, 1
  **	mov	x6, x1
  **	b	.*
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/ext-dce-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/ext-dce-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/ext-dce-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/ext-dce-1.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,58 ----
+ /* Verify that ext-dce narrows sign-extending loads to zero-extending loads
+    when the upper bits are dead.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** test_half:
+ **	...
+ **	ldrh	.*
+ **	...
+ */
+ /* Positive: halfword load-modify-store — sign bits are dead.  */
+ void
+ test_half (signed short *p)
+ {
+   *p = (*p & 0xff00) | (0x00ff & (*p >> 8));
+ }
+ 
+ /*
+ ** test_byte:
+ **	...
+ **	ldrb	.*
+ **	...
+ */
+ /* Positive: byte load-modify-store — sign bits are dead.  */
+ void
+ test_byte (signed char *p)
+ {
+   *p = (*p & 0xf0) | (0x0f & (*p >> 4));
+ }
+ 
+ /*
+ ** test_half_sign_needed:
+ **	...
+ **	ldrsb	.*
+ **	...
+ */
+ /* Negative: arithmetic right shift needs the sign extension.  */
+ int
+ test_half_sign_needed (signed short *p)
+ {
+   return *p >> 8;
+ }
+ 
+ /*
+ ** test_half_compare:
+ **	...
+ **	ldrsh	.*
+ **	...
+ */
+ /* Negative: sign-dependent comparison.  */
+ int
+ test_half_compare (signed short *p)
+ {
+   return *p < 0;
+ }
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/gcspopm-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/gcspopm-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/gcspopm-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/gcspopm-1.c	Sun May 31 22:32:10 2026
*************** foo1 (void)
*** 15,21 ****
  
  /*
  **foo2:
! **	mov	x0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
--- 15,21 ----
  
  /*
  **foo2:
! **	mov	w0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
*************** foo2 (void)
*** 27,37 ****
  
  /*
  **foo3:
! **	mov	x16, 1
  **	hint	40 // chkfeat x16
  **	cbz	x16, .*
  **	ret
! **	mov	x0, (0|x16)
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
--- 27,37 ----
  
  /*
  **foo3:
! **	mov	w16, 1
  **	hint	40 // chkfeat x16
  **	cbz	x16, .*
  **	ret
! **	mov	[wx]0, (0|x16)
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	ret
  */
*************** foo3 (unsigned long long x)
*** 46,52 ****
  /*
  **foo4:
  **	sysl	xzr, #3, c7, c7, #1 // gcspopm
! **	mov	x0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	sysl	xzr, #3, c7, c7, #1 // gcspopm
  **	ret
--- 46,52 ----
  /*
  **foo4:
  **	sysl	xzr, #3, c7, c7, #1 // gcspopm
! **	mov	w0, 0
  **	sysl	x0, #3, c7, c7, #1 // gcspopm
  **	sysl	xzr, #3, c7, c7, #1 // gcspopm
  **	ret
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/gcsss-1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/gcsss-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/gcsss-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/gcsss-1.c	Sun May 31 22:32:10 2026
***************
*** 5,12 ****
  /*
  **foo1:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	(x[0-9]*), 0
! **	sysl	\1, #3, c7, c7, #3 // gcsss2
  **	ret
  */
  void
--- 5,12 ----
  /*
  **foo1:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	w([0-9]*), 0
! **	sysl	x\1, #3, c7, c7, #3 // gcsss2
  **	ret
  */
  void
*************** foo1 (void *p)
*** 18,24 ****
  /*
  **foo2:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	x0, 0
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
--- 18,24 ----
  /*
  **foo2:
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	w0, 0
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
*************** foo2 (void *p)
*** 30,41 ****
  
  /*
  **foo3:
! **	mov	x16, 1
  **	hint	40 // chkfeat x16
  **	cbz	x16, .*
  **	ret
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	x0, (0|x16)
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
--- 30,41 ----
  
  /*
  **foo3:
! **	mov	w16, 1
  **	hint	40 // chkfeat x16
  **	cbz	x16, .*
  **	ret
  **	sys	#3, c7, c7, #2, x0 // gcsss1
! **	mov	[wx]0, (0|x16)
  **	sysl	x0, #3, c7, c7, #3 // gcsss2
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c	Sun May 31 22:32:10 2026
*************** long f8(void)
*** 48,54 ****
  /* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 1718026239"  1 } } */
  /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -2576941057" 1 } } */
  /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -39322"      1 } } */
! /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, 26214"       1 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0xf00, lsl 48" 1 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1111, lsl 48" 2 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1000, lsl 32" 1 } } */
--- 48,54 ----
  /* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 1718026239"  1 } } */
  /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -2576941057" 1 } } */
  /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, -39322"      1 } } */
! /* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, 26214"       1 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0xf00, lsl 48" 1 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1111, lsl 48" 2 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x1000, lsl 32" 1 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c	Sun May 31 22:32:10 2026
*************** CONS2_FN (4, float);
*** 96,104 ****
  
  /*
  ** cons2_8_float:
! **	dup	v[0-9]+\.2s, v[0-9]+\.s\[0\]
! **	dup	v[0-9]+\.2s, v[0-9]+\.s\[0\]
! **	zip1	v([0-9]+)\.4s, v[0-9]+\.4s, v[0-9]+\.4s
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
  **	ret
--- 96,103 ----
  
  /*
  ** cons2_8_float:
! **	uzp1	v1\.2s, v0\.2s, v1\.2s
! **	dup	v([0-9]+)\.2d, v1\.d\[0\]
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
  **	ret
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/memset-corner-cases-2.c	Sun May 31 22:32:10 2026
***************
*** 6,12 ****
  
  /* 127 bytes should use libcall for size.
  **set127byte:
! **	mov	x2, 127
  **	b	memset
  */
  void __attribute__((__noinline__))
--- 6,12 ----
  
  /* 127 bytes should use libcall for size.
  **set127byte:
! **	mov	w2, 127
  **	b	memset
  */
  void __attribute__((__noinline__))
*************** set127byte (int64_t *src, int c)
*** 17,23 ****
  
  /* 128 bytes should use libcall for size.
  **set128byte:
! **	mov	x2, 128
  **	b	memset
  */
  void __attribute__((__noinline__))
--- 17,23 ----
  
  /* 128 bytes should use libcall for size.
  **set128byte:
! **	mov	w2, 128
  **	b	memset
  */
  void __attribute__((__noinline__))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/memset-corner-cases.c	Sun May 31 22:32:10 2026
*************** set256byte (int64_t *src, char c)
*** 75,81 ****
  
  /* More than 256 bytes goes to memset
  **set257byte:
! **	mov	x2, 257
  **	mov	w1, 99
  **	b	memset
  */
--- 75,81 ----
  
  /* More than 256 bytes goes to memset
  **set257byte:
! **	mov	w2, 257
  **	mov	w1, 99
  **	b	memset
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_1.c	Sun May 31 22:32:10 2026
*************** void do_it_cpy (char * in, char * out, s
*** 18,24 ****
  
  /*
  ** do_it_cpy_large:
! **	mov	x2, 1024
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
--- 18,24 ----
  
  /*
  ** do_it_cpy_large:
! **	mov	w2, 1024
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
*************** void do_it_cpy_large (char * in, char *
*** 31,37 ****
  
  /*
  ** do_it_cpy_127:
! **	mov	x2, 127
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
--- 31,37 ----
  
  /*
  ** do_it_cpy_127:
! **	mov	w2, 127
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
*************** void do_it_cpy_127 (char * in, char * ou
*** 44,50 ****
  
  /*
  ** do_it_cpy_128:
! **	mov	x2, 128
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
--- 44,50 ----
  
  /*
  ** do_it_cpy_128:
! **	mov	w2, 128
  **	cpyfp	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfm	\[x1\]\!, \[x0\]!, x2\!
  **	cpyfe	\[x1\]\!, \[x0\]\!, x2\!
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_2.c	Sun May 31 22:32:10 2026
*************** void do_it_mov (char * in, char * out, s
*** 18,24 ****
  
  /*
  ** do_it_mov_large:
! **	mov	x2, 1024
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
--- 18,24 ----
  
  /*
  ** do_it_mov_large:
! **	mov	w2, 1024
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
*************** void do_it_mov_large (char * in, char *
*** 31,37 ****
  
  /*
  ** do_it_mov_127:
! **	mov	x2, 127
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
--- 31,37 ----
  
  /*
  ** do_it_mov_127:
! **	mov	w2, 127
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
*************** void do_it_mov_127 (char * in, char * ou
*** 44,50 ****
  
  /*
  ** do_it_mov_128:
! **	mov	x2, 128
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
--- 44,50 ----
  
  /*
  ** do_it_mov_128:
! **	mov	w2, 128
  **	cpyp	\[x1\]\!, \[x0\]!, x2\!
  **	cpym	\[x1\]\!, \[x0\]!, x2\!
  **	cpye	\[x1\]\!, \[x0\]\!, x2\!
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/mops_3.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/mops_3.c	Sun May 31 22:32:10 2026
*************** void do_it_set (char * out, int n, size_
*** 19,25 ****
  /*
  ** do_it_set_large:
  **	mov	w2, 1
! **	mov	x1, 1024
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
--- 19,25 ----
  /*
  ** do_it_set_large:
  **	mov	w2, 1
! **	mov	w1, 1024
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
*************** void do_it_set_large (char * out)
*** 33,39 ****
  /*
  ** do_it_set_256:
  **	mov	w2, 1
! **	mov	x1, 256
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
--- 33,39 ----
  /*
  ** do_it_set_256:
  **	mov	w2, 1
! **	mov	w1, 256
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
*************** void do_it_set_256 (char * out)
*** 47,53 ****
  /*
  ** do_it_set_255:
  **	mov	w2, 1
! **	mov	x1, 255
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
--- 47,53 ----
  /*
  ** do_it_set_255:
  **	mov	w2, 1
! **	mov	w1, 255
  **	setp	\[x0\]\!, x1\!, x2
  **	setm	\[x0\]\!, x1\!, x2
  **	sete	\[x0\]\!, x1\!, x2
*************** void do_it_set_0 (char * out, size_t n)
*** 72,78 ****
  
  /*
  ** do_it_set_0_255:
! **	mov	x1, 255
  **	setp	\[x0\]\!, x1\!, xzr
  **	setm	\[x0\]\!, x1\!, xzr
  **	sete	\[x0\]\!, x1\!, xzr
--- 72,78 ----
  
  /*
  ** do_it_set_0_255:
! **	mov	w1, 255
  **	setp	\[x0\]\!, x1\!, xzr
  **	setm	\[x0\]\!, x1\!, xzr
  **	sete	\[x0\]\!, x1\!, xzr
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movk_3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movk_3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movk_3.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movk_3.c	Sun May 31 22:32:10 2026
*************** void f48_3 (long *p)
*** 51,56 ****
    p[2] = 0x123456789abc + 0x1666666;
  }
  
! /* { dg-final { scan-assembler-times "mov\tx\[0-9\]+, \[0-9\]+" 10 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x\[0-9a-f\]+" 12 } } */
  /* { dg-final { scan-assembler-times "add\tx\[0-9\]+, x\[0-9\]+, \[0-9\]+" 5 } } */
--- 51,56 ----
    p[2] = 0x123456789abc + 0x1666666;
  }
  
! /* { dg-final { scan-assembler-times "mov\tw\[0-9\]+, \[0-9\]+" 10 } } */
  /* { dg-final { scan-assembler-times "movk\tx\[0-9\]+, 0x\[0-9a-f\]+" 12 } } */
  /* { dg-final { scan-assembler-times "add\tx\[0-9\]+, x\[0-9\]+, \[0-9\]+" 5 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movtf_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movtf_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movtf_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movtf_1.c	Sun May 31 22:32:10 2026
*************** store_q (_Float128 *ptr)
*** 44,54 ****
  /*
  ** zero_x:
  ** (
! **	mov	x0, #?0
! **	mov	x1, #?0
  ** |
! **	mov	x1, #?0
! **	mov	x0, #?0
  ** )
  **	ret
  */
--- 44,54 ----
  /*
  ** zero_x:
  ** (
! **	mov	w0, 0
! **	mov	w1, 0
  ** |
! **	mov	w1, 0
! **	mov	w0, 0
  ** )
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movti_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movti_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/movti_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/movti_1.c	Sun May 31 22:32:10 2026
*************** store_q (__int128_t *ptr)
*** 44,54 ****
  /*
  ** zero_x:
  ** (
! **	mov	x0, #?0
! **	mov	x1, #?0
  ** |
! **	mov	x1, #?0
! **	mov	x0, #?0
  ** )
  **	ret
  */
--- 44,54 ----
  /*
  ** zero_x:
  ** (
! **	mov	w0, 0
! **	mov	w1, 0
  ** |
! **	mov	w1, 0
! **	mov	w0, 0
  ** )
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 4
+ int a[N] = {0, 0, 0, 1};
+ int b[N] = {0, 0, 0, 1};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldr	q[0-9]+, \[x[0-9]+, #:lo12:\.LANCHOR0\]
+ **	ldr	q[0-9]+, \[x[0-9]+, 16\]
+ **	cmgt	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	fmov	x[0-9]+, d[0-9]+
+ **	cmp	x[0-9]+, 0
+ **	cset	w0, ne
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect10.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect10.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect10.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect10.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 8
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldr	q[0-9]+, \[x[0-9]+, #:lo12:\.LANCHOR0\]
+ **	ldr	q[0-9]+, \[x[0-9]+, 16\]
+ **	cmgt	v[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	fmov	x[0-9]+, d[0-9]+
+ **	cmp	x[0-9]+, 0
+ **	cset	w0, ne
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect11.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect11.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect11.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect11.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,70 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ /*
+ ** f1:
+ **	...
+ **	cmhi	v[0-9]+\.2d, v[0-9]+\.2d, v[0-9]+\.2d
+ **	...
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	cmp	x[0-9]+, x[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa))
+ int f1 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 0;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 1;
+ }
+ 
+ /*
+ ** f2:
+ **	...
+ **	cmhi	v[0-9]+\.2d, v[0-9]+\.2d, v[0-9]+\.2d
+ **	...
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	cmp	x[0-9]+, x[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa))
+ int f2 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 1;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ int main (void)
+ {
+   static unsigned long a[3] __attribute__ ((aligned (16))) = {10, 1, 0};
+   static unsigned long b[3] __attribute__ ((aligned (16))) = {9, 2, 0};
+ 
+   if (f1 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   if (f2 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect2.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldr	q[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldr	q[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	add	x[0-9]+, x[0-9]+, 16
+ **	cmgt	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	fmov	x[0-9]+, d[0-9]+
+ **	cbz	x[0-9]+, \.L[0-9]+
+ **	mov	w0, 1
+ **	ret
+ **	mov	w0, 0
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect3.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	cmgt	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+, w[0-9]+, sxtw 2\]
+ **	ldr	w[0-9]+, \[x[0-9]+, w[0-9]+, sxtw 2\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect4.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	cmgt	v[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect5.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect5.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect5.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	cmgt	v[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect6.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect6.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect6.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect6.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	cmgt	v[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	ldrsh	w[0-9]+, \[[^\n]+\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return a[i];
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect7.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect7.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect7.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	add	x[0-9]+, x[0-9]+, 4000
+ **	add	x[0-9]+, x[0-9]+, 2000
+ **	b	\.L[0-9]+
+ **	ldr	w[0-9]+, \[x[0-9]+[^\n]*\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	mov	w0, 1
+ **	ret
+ **	mov	w0, 0
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < (N / 2); i += 2)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+ 
+       if (a[i + 1] > b[i + 1])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ /*
+ ** add:
+ **	...
+ **	cmeq	v[0-9]+\.4s, v[0-9]+\.4s, #0
+ **	umaxp	v[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s
+ **	...
+ **	ldr	q[0-9]+, \[x[0-9]+[^\n]*\]
+ **	...
+ **	str	q[0-9]+, \[x[0-9]+[^\n]*\]
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	add	w[0-9]+, w[0-9]+, w[0-9]+
+ **	str	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	...
+ **	ret
+ **	...
+ */
+ void
+ add (int n, int *__restrict a, int *__restrict b, int *__restrict c)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       c[i] = a[i] + b[i];
+       if (i > 1000)
+ 	break;
+     }
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect9.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect9.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/noeffect9.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/noeffect9.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ int c[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	add	x[0-9]+, x[0-9]+, 4000
+ **	add	x[0-9]+, x[0-9]+, 3648
+ **	mov	w0, 0
+ **	b	\.L[0-9]+
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+[^\n]*\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	mov	w0, 1
+ **	ret
+ **	mov	w0, 0
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i] && a[i] > c[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pr71727.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr71727.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pr71727.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr71727.c	Sun May 31 22:32:10 2026
*************** _start (void)
*** 29,33 ****
    return;
  }
  
! /* { dg-final { scan-assembler-times "mov\tx" 5 {target lp64} } } */
  /* { dg-final { scan-assembler-not {st[rp]\tq[0-9]+} {target lp64} } } */
--- 29,33 ----
    return;
  }
  
! /* { dg-final { scan-assembler-times "mov\tw\[0-9\]" 5 {target lp64} } } */
  /* { dg-final { scan-assembler-not {st[rp]\tq[0-9]+} {target lp64} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pr84882.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr84882.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pr84882.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr84882.c	Sun May 31 22:32:10 2026
*************** _start (void)
*** 30,34 ****
    return;
  }
  /* Should have only 1 mov instead of 5 and should not use stp (store pair).  */
! /* { dg-final { scan-assembler-times "mov\tx" 1 {target lp64} } } */
  /* { dg-final { scan-assembler-not "stp\tx\[0-9\]+, x\[0-9\]+," {target lp64} } } */
--- 30,34 ----
    return;
  }
  /* Should have only 1 mov instead of 5 and should not use stp (store pair).  */
! /* { dg-final { scan-assembler-times "mov\tw\[0-9\]" 1 {target lp64} } } */
  /* { dg-final { scan-assembler-not "stp\tx\[0-9\]+, x\[0-9\]+," {target lp64} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c	Sun May 31 22:32:10 2026
***************
*** 32,37 ****
--- 32,41 ----
  #error "__ARM_FEATURE_SVE2p1 is defined but should not be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
  #pragma GCC push_options
  #pragma GCC target ("arch=armv8.2-a+sve")
  
***************
*** 63,68 ****
--- 67,76 ----
  #error "__ARM_FEATURE_SVE2p1 is defined but should not be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
  #pragma GCC pop_options
  
  #pragma GCC push_options
***************
*** 96,101 ****
--- 104,113 ----
  #error "__ARM_FEATURE_SVE2p1 is defined but should not be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
  #pragma GCC pop_options
  
  #pragma GCC push_options
***************
*** 287,292 ****
--- 299,345 ----
  #error "__ARM_FEATURE_SVE2p1 is not defined but should be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("arch=armv9-a+sve2p2")
+ 
+ #ifndef __ARM_FEATURE_SVE
+ #error "__ARM_FEATURE_SVE is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2
+ #error "__ARM_FEATURE_SVE2 is not defined but should be!"
+ #endif
+ 
+ #ifdef __ARM_FEATURE_SVE2_AES
+ #error "__ARM_FEATURE_SVE2_AES is defined but should not be!"
+ #endif
+ 
+ #ifdef __ARM_FEATURE_SVE2_BITPERM
+ #error "__ARM_FEATURE_SVE2_BITPERM is defined but should not be!"
+ #endif
+ 
+ #ifdef __ARM_FEATURE_SVE2_SHA3
+ #error "__ARM_FEATURE_SVE2_SHA3 is defined but should not be!"
+ #endif
+ 
+ #ifdef __ARM_FEATURE_SVE2_SM4
+ #error "__ARM_FEATURE_SVE2_SM4 is defined but should not be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2p1
+ #error "__ARM_FEATURE_SVE2p1 is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is not defined but should be!"
+ #endif
+ 
  #pragma GCC pop_options
  
  #pragma GCC push_options
***************
*** 320,325 ****
--- 373,420 ----
  #error "__ARM_FEATURE_SVE2p1 is not defined but should be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("arch=armv9-a+sve2-aes+sve2-bitperm+sve2-sha3+sve2-sm4+sve2p1+sve2p2")
+ 
+ #ifndef __ARM_FEATURE_SVE
+ #error "__ARM_FEATURE_SVE is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2
+ #error "__ARM_FEATURE_SVE2 is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2_AES
+ #error "__ARM_FEATURE_SVE2_AES is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2_BITPERM
+ #error "__ARM_FEATURE_SVE2_BITPERM is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2_SHA3
+ #error "__ARM_FEATURE_SVE2_SHA3 is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2_SM4
+ #error "__ARM_FEATURE_SVE2_SM4 is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2p1
+ #error "__ARM_FEATURE_SVE2p1 is not defined but should be!"
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is not defined but should be!"
+ #endif
+ 
+ 
  #pragma GCC push_options
  #pragma GCC target ("general-regs-only")
  
***************
*** 351,356 ****
--- 446,456 ----
  #error "__ARM_FEATURE_SVE2p1 is defined but should not be!"
  #endif
  
+ #ifdef __ARM_FEATURE_SVE2p2
+ #error "__ARM_FEATURE_SVE2p2 is defined but should not be!"
+ #endif
+ 
+ 
  #pragma GCC pop_options
  
  #pragma GCC pop_options
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun May 31 22:32:10 2026
***************
*** 218,223 ****
--- 218,237 ----
  #error Foo
  #endif
  
+ #pragma GCC target "+nothing+sve2+sme2p2"
+ #ifndef __ARM_FEATURE_SME
+ #error Foo
+ #endif
+ #ifndef __ARM_FEATURE_SME2
+ #error Foo
+ #endif
+ #ifndef __ARM_FEATURE_SME2p1
+ #error Foo
+ #endif
+ #ifndef __ARM_FEATURE_SME2p2
+ #error Foo
+ #endif
+ 
  #pragma GCC target "branch-protection=standard"
  #ifndef __ARM_FEATURE_BTI_DEFAULT
  #error Foo
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1.c	Sun May 31 22:32:10 2026
*************** n_ls_v32 ()
*** 415,422 ****
  /*
  ** n_ls_v33:
  **	rdsvl	(x[0-9]+), #1
! **	mov	(x[0-9]+), #?33
! **	mul	(x[0-9]+), (?:\1, \2|\2, \1)
  **	sub	sp, sp, \3
  **	...
  **	smstart	sm
--- 415,422 ----
  /*
  ** n_ls_v33:
  **	rdsvl	(x[0-9]+), #1
! **	mov	w([0-9]+), 33
! **	mul	(x[0-9]+), (?:\1, x\2|x\2, \1)
  **	sub	sp, sp, \3
  **	...
  **	smstart	sm
*************** n_ls_v32 ()
*** 424,431 ****
  **	smstop	sm
  **	...
  **	rdsvl	(x[0-9]+), #1
! **	mov	(x[0-9]+), #?33
! **	mul	(x[0-9]+), (?:\4, \5|\5, \4)
  **	add	sp, sp, \6
  **	...
  */
--- 424,431 ----
  **	smstop	sm
  **	...
  **	rdsvl	(x[0-9]+), #1
! **	mov	w([0-9]+), 33
! **	mul	(x[0-9]+), (?:\4, x\5|x\5, \4)
  **	add	sp, sp, \6
  **	...
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/locally_streaming_1_nosve.c	Sun May 31 22:32:10 2026
*************** n_ls_v32 ()
*** 415,422 ****
  /*
  ** n_ls_v33:
  **	rdsvl	(x[0-9]+), #1
! **	mov	(x[0-9]+), #?33
! **	mul	(x[0-9]+), (?:\1, \2|\2, \1)
  **	sub	sp, sp, \3
  **	...
  **	smstart	sm
--- 415,422 ----
  /*
  ** n_ls_v33:
  **	rdsvl	(x[0-9]+), #1
! **	mov	w([0-9]+), 33
! **	mul	(x[0-9]+), (?:\1, x\2|x\2, \1)
  **	sub	sp, sp, \3
  **	...
  **	smstart	sm
*************** n_ls_v32 ()
*** 424,431 ****
  **	smstop	sm
  **	...
  **	rdsvl	(x[0-9]+), #1
! **	mov	(x[0-9]+), #?33
! **	mul	(x[0-9]+), (?:\4, \5|\5, \4)
  **	add	sp, sp, \6
  **	...
  */
--- 424,431 ----
  **	smstop	sm
  **	...
  **	rdsvl	(x[0-9]+), #1
! **	mov	w([0-9]+), 33
! **	mul	(x[0-9]+), (?:\4, x\5|x\5, \4)
  **	add	sp, sp, \6
  **	...
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x2.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,193 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.h - z1\.h}, {z0\.h - z1\.h}, {z4\.h - z5\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat16x2_t, z0,
+ 	 svmul_f16_x2 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.h - z1\.h}, {z4\.h - z5\.h}, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat16x2_t, z0,
+ 	 svmul_f16_x2 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.h - z1\.h}, {z4\.h - z5\.h}, {z28\.h - z29\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat16x2_t, z0,
+ 	 svmul_f16_x2 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	fmul	{z18\.h - z19\.h}, {z18\.h - z19\.h}, {z4\.h - z5\.h}
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat16x2_t, z18,
+ 	 svmul_f16_x2 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z18:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z18\.h - z19\.h}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z18, svfloat16x2_t, z23,
+ 	 svmul_f16_x2 (z23, z18),
+ 	 svmul (z23, z18))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.h - z29\.h}, {z28\.h - z29\.h}, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat16x2_t, z28,
+ 	 svmul_f16_x2 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ **	fmul	{z0\.h - z1\.h}, {z0\.h - z1\.h}, {z18\.h - z19\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat16x2_t, z0,
+ 	 svmul_f16_x2 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.h - z5\.h}, {z4\.h - z5\.h}, [^\n]+
+ ** |
+ **	fmul	{z4\.h - z5\.h}, {z4\.h - z5\.h}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat16x2_t, z4,
+ 	 svmul_f16_x2 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.h - z25\.h}, {z24\.h - z25\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat16x2_t, svfloat16_t, z24,
+ 		svmul_single_f16_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.h - z25\.h}, {z28\.h - z29\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat16x2_t, svfloat16_t, z24,
+ 		svmul_single_f16_x2 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ ** (
+ **	mov	z30\.d, z1\.d
+ **	mov	z31\.d, z2\.d
+ ** |
+ **	mov	z31\.d, z2\.d
+ **	mov	z30\.d, z1\.d
+ ** )
+ **	fmul	{z24\.h - z25\.h}, {z30\.h - z31\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat16x2_t, svfloat16_t, z24,
+ 		svmul_single_f16_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z30\.h - z31\.h}, {z24\.h - z25\.h}, z0\.h
+ ** (
+ **	mov	z2\.d, z31\.d
+ **	mov	z1\.d, z30\.d
+ ** |
+ **	mov	z1\.d, z30\.d
+ **	mov	z2\.d, z31\.d
+ ** )
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat16x2_t, svfloat16_t, z1,
+ 		svmul_single_f16_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.h - z[0-9]+\.h}), \1, z0\.h
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat16x2_t, svfloat16_t, z1,
+ 		svmul_single_f16_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	fmul	{z18\.h - z19\.h}, {z18\.h - z19\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat16x2_t, svfloat16_t, z18,
+ 		svmul_single_f16_x2 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.h - z1\.h}, {z30\.h - z31\.h}, z[0-9]+\.h
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat16x2_t, svfloat16_t,
+ 			z0_res = svmul_single_f16_x2 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.h - z1\.h}, {z0\.h - z1\.h}, z15\.h
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat16x2_t, svfloat16_t,
+ 		    z0 = svmul_single_f16_x2 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.h - z25\.h}, {z24\.h - z25\.h}, \1\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat16x2_t, svfloat16_t, z24,
+ 		svmul_single_f16_x2 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f16_x4.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,227 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.h - z3\.h}, {z0\.h - z3\.h}, {z4\.h - z7\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat16x4_t, z0,
+ 	 svmul_f16_x4 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.h - z3\.h}, {z4\.h - z7\.h}, {z0\.h - z3\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat16x4_t, z0,
+ 	 svmul_f16_x4 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.h - z3\.h}, {z4\.h - z7\.h}, {z28\.h - z31\.h}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat16x4_t, z0,
+ 	 svmul_f16_x4 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z4\.h - z7\.h}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat16x4_t, z18,
+ 	 svmul_f16_x4 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z28:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z28\.h - z31\.h}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z28, svfloat16x4_t, z23,
+ 	 svmul_f16_x4 (z23, z28),
+ 	 svmul (z23, z28))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.h - z31\.h}, {z28\.h - z31\.h}, {z0\.h - z3\.h}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat16x4_t, z28,
+ 	 svmul_f16_x4 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z0\.h - z3\.h}, {z0\.h - z3\.h}, [^\n]+
+ ** |
+ **	fmul	{z0\.h - z3\.h}, {z0\.h - z3\.h}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat16x4_t, z0,
+ 	 svmul_f16_x4 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.h - z7\.h}, {z4\.h - z7\.h}, [^\n]+
+ ** |
+ **	fmul	{z4\.h - z7\.h}, {z4\.h - z7\.h}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat16x4_t, z4,
+ 	 svmul_f16_x4 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.h - z27\.h}, {z24\.h - z27\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat16x4_t, svfloat16_t, z24,
+ 		svmul_single_f16_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.h - z27\.h}, {z28\.h - z31\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat16x4_t, svfloat16_t, z24,
+ 		svmul_single_f16_x4 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z24\.h - z27\.h}, {z28\.h - z31\.h}, z0\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat16x4_t, svfloat16_t, z24,
+ 		svmul_single_f16_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z28\.h - z31\.h}, {z24\.h - z27\.h}, z0\.h
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat16x4_t, svfloat16_t, z1,
+ 		svmul_single_f16_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.h - z[0-9]+\.h}), \1, z0\.h
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat16x4_t, svfloat16_t, z1,
+ 		svmul_single_f16_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, z0\.h
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat16x4_t, svfloat16_t, z18,
+ 		svmul_single_f16_x4 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.h - z3\.h}, {z[0-9]+\.h - z[0-9]+\.h}, z[0-9]+\.h
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat16x4_t, svfloat16_t,
+ 			z0_res = svmul_single_f16_x4 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.h - z3\.h}, {z0\.h - z3\.h}, z15\.h
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat16x4_t, svfloat16_t,
+ 		    z0 = svmul_single_f16_x4 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.h - z27\.h}, {z24\.h - z27\.h}, \1\.h
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat16x4_t, svfloat16_t, z24,
+ 		svmul_single_f16_x4 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x2.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,193 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.s - z1\.s}, {z0\.s - z1\.s}, {z4\.s - z5\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat32x2_t, z0,
+ 	 svmul_f32_x2 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.s - z1\.s}, {z4\.s - z5\.s}, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat32x2_t, z0,
+ 	 svmul_f32_x2 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.s - z1\.s}, {z4\.s - z5\.s}, {z28\.s - z29\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat32x2_t, z0,
+ 	 svmul_f32_x2 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	fmul	{z18\.s - z19\.s}, {z18\.s - z19\.s}, {z4\.s - z5\.s}
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat32x2_t, z18,
+ 	 svmul_f32_x2 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z18:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z18\.s - z19\.s}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z18, svfloat32x2_t, z23,
+ 	 svmul_f32_x2 (z23, z18),
+ 	 svmul (z23, z18))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.s - z29\.s}, {z28\.s - z29\.s}, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat32x2_t, z28,
+ 	 svmul_f32_x2 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ **	fmul	{z0\.s - z1\.s}, {z0\.s - z1\.s}, {z18\.s - z19\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat32x2_t, z0,
+ 	 svmul_f32_x2 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.s - z5\.s}, {z4\.s - z5\.s}, [^\n]+
+ ** |
+ **	fmul	{z4\.s - z5\.s}, {z4\.s - z5\.s}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat32x2_t, z4,
+ 	 svmul_f32_x2 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.s - z25\.s}, {z24\.s - z25\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat32x2_t, svfloat32_t, z24,
+ 		svmul_single_f32_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.s - z25\.s}, {z28\.s - z29\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat32x2_t, svfloat32_t, z24,
+ 		svmul_single_f32_x2 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ ** (
+ **	mov	z30\.d, z1\.d
+ **	mov	z31\.d, z2\.d
+ ** |
+ **	mov	z31\.d, z2\.d
+ **	mov	z30\.d, z1\.d
+ ** )
+ **	fmul	{z24\.s - z25\.s}, {z30\.s - z31\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat32x2_t, svfloat32_t, z24,
+ 		svmul_single_f32_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z30\.s - z31\.s}, {z24\.s - z25\.s}, z0\.s
+ ** (
+ **	mov	z2\.d, z31\.d
+ **	mov	z1\.d, z30\.d
+ ** |
+ **	mov	z1\.d, z30\.d
+ **	mov	z2\.d, z31\.d
+ ** )
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat32x2_t, svfloat32_t, z1,
+ 		svmul_single_f32_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.s - z[0-9]+\.s}), \1, z0\.s
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat32x2_t, svfloat32_t, z1,
+ 		svmul_single_f32_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	fmul	{z18\.s - z19\.s}, {z18\.s - z19\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat32x2_t, svfloat32_t, z18,
+ 		svmul_single_f32_x2 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.s - z1\.s}, {z30\.s - z31\.s}, z[0-9]+\.s
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat32x2_t, svfloat32_t,
+ 			z0_res = svmul_single_f32_x2 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.s - z1\.s}, {z0\.s - z1\.s}, z15\.s
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat32x2_t, svfloat32_t,
+ 		    z0 = svmul_single_f32_x2 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.s - z25\.s}, {z24\.s - z25\.s}, \1\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat32x2_t, svfloat32_t, z24,
+ 		svmul_single_f32_x2 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f32_x4.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,227 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.s - z3\.s}, {z0\.s - z3\.s}, {z4\.s - z7\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat32x4_t, z0,
+ 	 svmul_f32_x4 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.s - z3\.s}, {z4\.s - z7\.s}, {z0\.s - z3\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat32x4_t, z0,
+ 	 svmul_f32_x4 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.s - z3\.s}, {z4\.s - z7\.s}, {z28\.s - z31\.s}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat32x4_t, z0,
+ 	 svmul_f32_x4 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z4\.s - z7\.s}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat32x4_t, z18,
+ 	 svmul_f32_x4 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z28:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z28\.s - z31\.s}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z28, svfloat32x4_t, z23,
+ 	 svmul_f32_x4 (z23, z28),
+ 	 svmul (z23, z28))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.s - z31\.s}, {z28\.s - z31\.s}, {z0\.s - z3\.s}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat32x4_t, z28,
+ 	 svmul_f32_x4 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z0\.s - z3\.s}, {z0\.s - z3\.s}, [^\n]+
+ ** |
+ **	fmul	{z0\.s - z3\.s}, {z0\.s - z3\.s}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat32x4_t, z0,
+ 	 svmul_f32_x4 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.s - z7\.s}, {z4\.s - z7\.s}, [^\n]+
+ ** |
+ **	fmul	{z4\.s - z7\.s}, {z4\.s - z7\.s}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat32x4_t, z4,
+ 	 svmul_f32_x4 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.s - z27\.s}, {z24\.s - z27\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat32x4_t, svfloat32_t, z24,
+ 		svmul_single_f32_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.s - z27\.s}, {z28\.s - z31\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat32x4_t, svfloat32_t, z24,
+ 		svmul_single_f32_x4 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z24\.s - z27\.s}, {z28\.s - z31\.s}, z0\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat32x4_t, svfloat32_t, z24,
+ 		svmul_single_f32_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z28\.s - z31\.s}, {z24\.s - z27\.s}, z0\.s
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat32x4_t, svfloat32_t, z1,
+ 		svmul_single_f32_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.s - z[0-9]+\.s}), \1, z0\.s
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat32x4_t, svfloat32_t, z1,
+ 		svmul_single_f32_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, z0\.s
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat32x4_t, svfloat32_t, z18,
+ 		svmul_single_f32_x4 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.s - z3\.s}, {z[0-9]+\.s - z[0-9]+\.s}, z[0-9]+\.s
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat32x4_t, svfloat32_t,
+ 			z0_res = svmul_single_f32_x4 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.s - z3\.s}, {z0\.s - z3\.s}, z15\.s
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat32x4_t, svfloat32_t,
+ 		    z0 = svmul_single_f32_x4 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.s - z27\.s}, {z24\.s - z27\.s}, \1\.s
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat32x4_t, svfloat32_t, z24,
+ 		svmul_single_f32_x4 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x2.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,193 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.d - z1\.d}, {z0\.d - z1\.d}, {z4\.d - z5\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat64x2_t, z0,
+ 	 svmul_f64_x2 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.d - z1\.d}, {z4\.d - z5\.d}, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat64x2_t, z0,
+ 	 svmul_f64_x2 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.d - z1\.d}, {z4\.d - z5\.d}, {z28\.d - z29\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat64x2_t, z0,
+ 	 svmul_f64_x2 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	fmul	{z18\.d - z19\.d}, {z18\.d - z19\.d}, {z4\.d - z5\.d}
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat64x2_t, z18,
+ 	 svmul_f64_x2 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z18:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z18\.d - z19\.d}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z18, svfloat64x2_t, z23,
+ 	 svmul_f64_x2 (z23, z18),
+ 	 svmul (z23, z18))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.d - z29\.d}, {z28\.d - z29\.d}, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat64x2_t, z28,
+ 	 svmul_f64_x2 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ **	fmul	{z0\.d - z1\.d}, {z0\.d - z1\.d}, {z18\.d - z19\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat64x2_t, z0,
+ 	 svmul_f64_x2 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.d - z5\.d}, {z4\.d - z5\.d}, [^\n]+
+ ** |
+ **	fmul	{z4\.d - z5\.d}, {z4\.d - z5\.d}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat64x2_t, z4,
+ 	 svmul_f64_x2 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.d - z25\.d}, {z24\.d - z25\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat64x2_t, svfloat64_t, z24,
+ 		svmul_single_f64_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.d - z25\.d}, {z28\.d - z29\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat64x2_t, svfloat64_t, z24,
+ 		svmul_single_f64_x2 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ ** (
+ **	mov	z30\.d, z1\.d
+ **	mov	z31\.d, z2\.d
+ ** |
+ **	mov	z31\.d, z2\.d
+ **	mov	z30\.d, z1\.d
+ ** )
+ **	fmul	{z24\.d - z25\.d}, {z30\.d - z31\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat64x2_t, svfloat64_t, z24,
+ 		svmul_single_f64_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z30\.d - z31\.d}, {z24\.d - z25\.d}, z0\.d
+ ** (
+ **	mov	z2\.d, z31\.d
+ **	mov	z1\.d, z30\.d
+ ** |
+ **	mov	z1\.d, z30\.d
+ **	mov	z2\.d, z31\.d
+ ** )
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat64x2_t, svfloat64_t, z1,
+ 		svmul_single_f64_x2 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.d - z[0-9]+\.d}), \1, z0\.d
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat64x2_t, svfloat64_t, z1,
+ 		svmul_single_f64_x2 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	fmul	{z18\.d - z19\.d}, {z18\.d - z19\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat64x2_t, svfloat64_t, z18,
+ 		svmul_single_f64_x2 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.d - z1\.d}, {z30\.d - z31\.d}, z[0-9]+\.d
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat64x2_t, svfloat64_t,
+ 			z0_res = svmul_single_f64_x2 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.d - z1\.d}, {z0\.d - z1\.d}, z15\.d
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat64x2_t, svfloat64_t,
+ 		    z0 = svmul_single_f64_x2 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.d - z25\.d}, {z24\.d - z25\.d}, \1\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat64x2_t, svfloat64_t, z24,
+ 		svmul_single_f64_x2 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_f64_x4.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,227 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p2"
+ 
+ /*
+ ** mul_z0_z0_z4:
+ **	fmul	{z0\.d - z3\.d}, {z0\.d - z3\.d}, {z4\.d - z7\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z4, svfloat64x4_t, z0,
+ 	 svmul_f64_x4 (z0, z4),
+ 	 svmul (z0, z4))
+ 
+ /*
+ ** mul_z0_z4_z0:
+ **	fmul	{z0\.d - z3\.d}, {z4\.d - z7\.d}, {z0\.d - z3\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z0, svfloat64x4_t, z0,
+ 	 svmul_f64_x4 (z4, z0),
+ 	 svmul (z4, z0))
+ 
+ /*
+ ** mul_z0_z4_z28:
+ **	fmul	{z0\.d - z3\.d}, {z4\.d - z7\.d}, {z28\.d - z31\.d}
+ **	ret
+ */
+ TEST_XN (mul_z0_z4_z28, svfloat64x4_t, z0,
+ 	 svmul_f64_x4 (z4, z28),
+ 	 svmul (z4, z28))
+ 
+ /*
+ ** mul_z18_z18_z4:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z4\.d - z7\.d}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z18_z18_z4, svfloat64x4_t, z18,
+ 	 svmul_f64_x4 (z18, z4),
+ 	 svmul (z18, z4))
+ 
+ /*
+ ** mul_z23_z23_z28:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, {z28\.d - z31\.d}
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN (mul_z23_z23_z28, svfloat64x4_t, z23,
+ 	 svmul_f64_x4 (z23, z28),
+ 	 svmul (z23, z28))
+ 
+ /*
+ ** mul_z28_z28_z0:
+ **	fmul	{z28\.d - z31\.d}, {z28\.d - z31\.d}, {z0\.d - z3\.d}
+ **	ret
+ */
+ TEST_XN (mul_z28_z28_z0, svfloat64x4_t, z28,
+ 	 svmul_f64_x4 (z28, z0),
+ 	 svmul (z28, z0))
+ 
+ /*
+ ** mul_z0_z0_z18:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z0\.d - z3\.d}, {z0\.d - z3\.d}, [^\n]+
+ ** |
+ **	fmul	{z0\.d - z3\.d}, {z0\.d - z3\.d}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z0_z0_z18, svfloat64x4_t, z0,
+ 	 svmul_f64_x4 (z0, z18),
+ 	 svmul (z0, z18))
+ 
+ /*
+ ** mul_z4_z4_z23:
+ ** (
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z4\.d - z7\.d}, {z4\.d - z7\.d}, [^\n]+
+ ** |
+ **	fmul	{z4\.d - z7\.d}, {z4\.d - z7\.d}, [^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ ** )
+ **	ret
+ */
+ TEST_XN (mul_z4_z4_z23, svfloat64x4_t, z4,
+ 	 svmul_f64_x4 (z4, z23),
+ 	 svmul (z4, z23))
+ 
+ /*
+ ** mul_single_z24_z24_z0:
+ **	fmul	{z24\.d - z27\.d}, {z24\.d - z27\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z0, svfloat64x4_t, svfloat64_t, z24,
+ 		svmul_single_f64_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z24_z28_z0:
+ **	fmul	{z24\.d - z27\.d}, {z28\.d - z31\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z28_z0, svfloat64x4_t, svfloat64_t, z24,
+ 		svmul_single_f64_x4 (z28, z0),
+ 		svmul (z28, z0))
+ 
+ /*
+ ** mul_single_z24_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	{z24\.d - z27\.d}, {z28\.d - z31\.d}, z0\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z1_z0, svfloat64x4_t, svfloat64_t, z24,
+ 		svmul_single_f64_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z1_z24_z0:
+ **	fmul	{z28\.d - z31\.d}, {z24\.d - z27\.d}, z0\.d
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z24_z0, svfloat64x4_t, svfloat64_t, z1,
+ 		svmul_single_f64_x4 (z24, z0),
+ 		svmul (z24, z0))
+ 
+ /*
+ ** mul_single_z1_z1_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	({z[0-9]+\.d - z[0-9]+\.d}), \1, z0\.d
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z1_z1_z0, svfloat64x4_t, svfloat64_t, z1,
+ 		svmul_single_f64_x4 (z1, z0),
+ 		svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z18_z18_z0:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fmul	[^\n]+, z0\.d
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z18_z18_z0, svfloat64x4_t, svfloat64_t, z18,
+ 		svmul_single_f64_x4 (z18, z0),
+ 		svmul (z18, z0))
+ 
+ /*
+ ** mul_single_awkward:
+ **	...
+ **	fmul	{z0\.d - z3\.d}, {z[0-9]+\.d - z[0-9]+\.d}, z[0-9]+\.d
+ **	ret
+ */
+ TEST_XN_SINGLE_AWKWARD (mul_single_awkward, svfloat64x4_t, svfloat64_t,
+ 			z0_res = svmul_single_f64_x4 (z1, z0),
+ 			z0_res = svmul (z1, z0))
+ 
+ /*
+ ** mul_single_z0_z0_z15:
+ **	...
+ **	fmul	{z0\.d - z3\.d}, {z0\.d - z3\.d}, z15\.d
+ **	...
+ **	ret
+ */
+ TEST_XN_SINGLE_Z15 (mul_single_z0_z0_z15, svfloat64x4_t, svfloat64_t,
+ 		    z0 = svmul_single_f64_x4 (z0, z15),
+ 		    z0 = svmul (z0, z15))
+ 
+ /*
+ ** mul_single_z24_z24_z16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	fmul	{z24\.d - z27\.d}, {z24\.d - z27\.d}, \1\.d
+ **	ret
+ */
+ TEST_XN_SINGLE (mul_single_z24_z24_z16, svfloat64x4_t, svfloat64_t, z24,
+ 		svmul_single_f64_x4 (z24, z16),
+ 		svmul (z24, z16))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilege_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilegt_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilele_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 53,60 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 53,60 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 72,79 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 72,79 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 100,107 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 100,107 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 110,117 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 110,117 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/whilelt_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 51,58 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 51,58 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 70,77 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 70,77 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 98,105 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 98,105 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 108,115 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 108,115 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntb_pat.c	Sun May 31 22:32:10 2026
*************** PROTO (cntb_pow2, uint64_t, ()) { return
*** 11,73 ****
  
  /*
  ** cntb_vl1:
! **	mov	x0, #?1
  **	ret
  */
  PROTO (cntb_vl1, uint64_t, ()) { return svcntb_pat (SV_VL1); }
  
  /*
  ** cntb_vl2:
! **	mov	x0, #?2
  **	ret
  */
  PROTO (cntb_vl2, uint64_t, ()) { return svcntb_pat (SV_VL2); }
  
  /*
  ** cntb_vl3:
! **	mov	x0, #?3
  **	ret
  */
  PROTO (cntb_vl3, uint64_t, ()) { return svcntb_pat (SV_VL3); }
  
  /*
  ** cntb_vl4:
! **	mov	x0, #?4
  **	ret
  */
  PROTO (cntb_vl4, uint64_t, ()) { return svcntb_pat (SV_VL4); }
  
  /*
  ** cntb_vl5:
! **	mov	x0, #?5
  **	ret
  */
  PROTO (cntb_vl5, uint64_t, ()) { return svcntb_pat (SV_VL5); }
  
  /*
  ** cntb_vl6:
! **	mov	x0, #?6
  **	ret
  */
  PROTO (cntb_vl6, uint64_t, ()) { return svcntb_pat (SV_VL6); }
  
  /*
  ** cntb_vl7:
! **	mov	x0, #?7
  **	ret
  */
  PROTO (cntb_vl7, uint64_t, ()) { return svcntb_pat (SV_VL7); }
  
  /*
  ** cntb_vl8:
! **	mov	x0, #?8
  **	ret
  */
  PROTO (cntb_vl8, uint64_t, ()) { return svcntb_pat (SV_VL8); }
  
  /*
  ** cntb_vl16:
! **	mov	x0, #?16
  **	ret
  */
  PROTO (cntb_vl16, uint64_t, ()) { return svcntb_pat (SV_VL16); }
--- 11,73 ----
  
  /*
  ** cntb_vl1:
! **	mov	w0, 1
  **	ret
  */
  PROTO (cntb_vl1, uint64_t, ()) { return svcntb_pat (SV_VL1); }
  
  /*
  ** cntb_vl2:
! **	mov	w0, 2
  **	ret
  */
  PROTO (cntb_vl2, uint64_t, ()) { return svcntb_pat (SV_VL2); }
  
  /*
  ** cntb_vl3:
! **	mov	w0, 3
  **	ret
  */
  PROTO (cntb_vl3, uint64_t, ()) { return svcntb_pat (SV_VL3); }
  
  /*
  ** cntb_vl4:
! **	mov	w0, 4
  **	ret
  */
  PROTO (cntb_vl4, uint64_t, ()) { return svcntb_pat (SV_VL4); }
  
  /*
  ** cntb_vl5:
! **	mov	w0, 5
  **	ret
  */
  PROTO (cntb_vl5, uint64_t, ()) { return svcntb_pat (SV_VL5); }
  
  /*
  ** cntb_vl6:
! **	mov	w0, 6
  **	ret
  */
  PROTO (cntb_vl6, uint64_t, ()) { return svcntb_pat (SV_VL6); }
  
  /*
  ** cntb_vl7:
! **	mov	w0, 7
  **	ret
  */
  PROTO (cntb_vl7, uint64_t, ()) { return svcntb_pat (SV_VL7); }
  
  /*
  ** cntb_vl8:
! **	mov	w0, 8
  **	ret
  */
  PROTO (cntb_vl8, uint64_t, ()) { return svcntb_pat (SV_VL8); }
  
  /*
  ** cntb_vl16:
! **	mov	w0, 16
  **	ret
  */
  PROTO (cntb_vl16, uint64_t, ()) { return svcntb_pat (SV_VL16); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntd_pat.c	Sun May 31 22:32:10 2026
*************** PROTO (cntd_pow2, uint64_t, ()) { return
*** 11,24 ****
  
  /*
  ** cntd_vl1:
! **	mov	x0, #?1
  **	ret
  */
  PROTO (cntd_vl1, uint64_t, ()) { return svcntd_pat (SV_VL1); }
  
  /*
  ** cntd_vl2:
! **	mov	x0, #?2
  **	ret
  */
  PROTO (cntd_vl2, uint64_t, ()) { return svcntd_pat (SV_VL2); }
--- 11,24 ----
  
  /*
  ** cntd_vl1:
! **	mov	w0, 1
  **	ret
  */
  PROTO (cntd_vl1, uint64_t, ()) { return svcntd_pat (SV_VL1); }
  
  /*
  ** cntd_vl2:
! **	mov	w0, 2
  **	ret
  */
  PROTO (cntd_vl2, uint64_t, ()) { return svcntd_pat (SV_VL2); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cnth_pat.c	Sun May 31 22:32:10 2026
*************** PROTO (cnth_pow2, uint64_t, ()) { return
*** 11,66 ****
  
  /*
  ** cnth_vl1:
! **	mov	x0, #?1
  **	ret
  */
  PROTO (cnth_vl1, uint64_t, ()) { return svcnth_pat (SV_VL1); }
  
  /*
  ** cnth_vl2:
! **	mov	x0, #?2
  **	ret
  */
  PROTO (cnth_vl2, uint64_t, ()) { return svcnth_pat (SV_VL2); }
  
  /*
  ** cnth_vl3:
! **	mov	x0, #?3
  **	ret
  */
  PROTO (cnth_vl3, uint64_t, ()) { return svcnth_pat (SV_VL3); }
  
  /*
  ** cnth_vl4:
! **	mov	x0, #?4
  **	ret
  */
  PROTO (cnth_vl4, uint64_t, ()) { return svcnth_pat (SV_VL4); }
  
  /*
  ** cnth_vl5:
! **	mov	x0, #?5
  **	ret
  */
  PROTO (cnth_vl5, uint64_t, ()) { return svcnth_pat (SV_VL5); }
  
  /*
  ** cnth_vl6:
! **	mov	x0, #?6
  **	ret
  */
  PROTO (cnth_vl6, uint64_t, ()) { return svcnth_pat (SV_VL6); }
  
  /*
  ** cnth_vl7:
! **	mov	x0, #?7
  **	ret
  */
  PROTO (cnth_vl7, uint64_t, ()) { return svcnth_pat (SV_VL7); }
  
  /*
  ** cnth_vl8:
! **	mov	x0, #?8
  **	ret
  */
  PROTO (cnth_vl8, uint64_t, ()) { return svcnth_pat (SV_VL8); }
--- 11,66 ----
  
  /*
  ** cnth_vl1:
! **	mov	w0, 1
  **	ret
  */
  PROTO (cnth_vl1, uint64_t, ()) { return svcnth_pat (SV_VL1); }
  
  /*
  ** cnth_vl2:
! **	mov	w0, 2
  **	ret
  */
  PROTO (cnth_vl2, uint64_t, ()) { return svcnth_pat (SV_VL2); }
  
  /*
  ** cnth_vl3:
! **	mov	w0, 3
  **	ret
  */
  PROTO (cnth_vl3, uint64_t, ()) { return svcnth_pat (SV_VL3); }
  
  /*
  ** cnth_vl4:
! **	mov	w0, 4
  **	ret
  */
  PROTO (cnth_vl4, uint64_t, ()) { return svcnth_pat (SV_VL4); }
  
  /*
  ** cnth_vl5:
! **	mov	w0, 5
  **	ret
  */
  PROTO (cnth_vl5, uint64_t, ()) { return svcnth_pat (SV_VL5); }
  
  /*
  ** cnth_vl6:
! **	mov	w0, 6
  **	ret
  */
  PROTO (cnth_vl6, uint64_t, ()) { return svcnth_pat (SV_VL6); }
  
  /*
  ** cnth_vl7:
! **	mov	w0, 7
  **	ret
  */
  PROTO (cnth_vl7, uint64_t, ()) { return svcnth_pat (SV_VL7); }
  
  /*
  ** cnth_vl8:
! **	mov	w0, 8
  **	ret
  */
  PROTO (cnth_vl8, uint64_t, ()) { return svcnth_pat (SV_VL8); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/cntw_pat.c	Sun May 31 22:32:10 2026
*************** PROTO (cntw_pow2, uint64_t, ()) { return
*** 11,38 ****
  
  /*
  ** cntw_vl1:
! **	mov	x0, #?1
  **	ret
  */
  PROTO (cntw_vl1, uint64_t, ()) { return svcntw_pat (SV_VL1); }
  
  /*
  ** cntw_vl2:
! **	mov	x0, #?2
  **	ret
  */
  PROTO (cntw_vl2, uint64_t, ()) { return svcntw_pat (SV_VL2); }
  
  /*
  ** cntw_vl3:
! **	mov	x0, #?3
  **	ret
  */
  PROTO (cntw_vl3, uint64_t, ()) { return svcntw_pat (SV_VL3); }
  
  /*
  ** cntw_vl4:
! **	mov	x0, #?4
  **	ret
  */
  PROTO (cntw_vl4, uint64_t, ()) { return svcntw_pat (SV_VL4); }
--- 11,38 ----
  
  /*
  ** cntw_vl1:
! **	mov	w0, 1
  **	ret
  */
  PROTO (cntw_vl1, uint64_t, ()) { return svcntw_pat (SV_VL1); }
  
  /*
  ** cntw_vl2:
! **	mov	w0, 2
  **	ret
  */
  PROTO (cntw_vl2, uint64_t, ()) { return svcntw_pat (SV_VL2); }
  
  /*
  ** cntw_vl3:
! **	mov	w0, 3
  **	ret
  */
  PROTO (cntw_vl3, uint64_t, ()) { return svcntw_pat (SV_VL3); }
  
  /*
  ** cntw_vl4:
! **	mov	w0, 4
  **	ret
  */
  PROTO (cntw_vl4, uint64_t, ()) { return svcntw_pat (SV_VL4); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c	Sun May 31 22:32:10 2026
*************** TEST_UNIFORM_Z (dup_128_s64, svint64_t,
*** 31,38 ****
  
  /*
  ** dup_129_s64:
! **	mov	(x[0-9]+), 129
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_s64, svint64_t,
--- 31,38 ----
  
  /*
  ** dup_129_s64:
! **	mov	w([0-9]+), 129
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_s64, svint64_t,
*************** TEST_UNIFORM_Z (dup_129_s64, svint64_t,
*** 41,48 ****
  
  /*
  ** dup_253_s64:
! **	mov	(x[0-9]+), 253
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_s64, svint64_t,
--- 41,48 ----
  
  /*
  ** dup_253_s64:
! **	mov	w([0-9]+), 253
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_s64, svint64_t,
*************** TEST_UNIFORM_Z (dup_256_s64, svint64_t,
*** 78,85 ****
  
  /*
  ** dup_257_s64:
! **	mov	(x[0-9]+), 257
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_s64, svint64_t,
--- 78,85 ----
  
  /*
  ** dup_257_s64:
! **	mov	w([0-9]+), 257
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_s64, svint64_t,
*************** TEST_UNIFORM_Z (dup_7f00_s64, svint64_t,
*** 106,113 ****
  
  /*
  ** dup_7f01_s64:
! **	mov	(x[0-9]+), 32513
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_s64, svint64_t,
--- 106,113 ----
  
  /*
  ** dup_7f01_s64:
! **	mov	w([0-9]+), 32513
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_s64, svint64_t,
*************** TEST_UNIFORM_Z (dup_7f01_s64, svint64_t,
*** 116,123 ****
  
  /*
  ** dup_7ffd_s64:
! **	mov	(x[0-9]+), 32765
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_s64, svint64_t,
--- 116,123 ----
  
  /*
  ** dup_7ffd_s64:
! **	mov	w([0-9]+), 32765
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_s64, svint64_t,
*************** TEST_UNIFORM_Z (dup_128_s64_x, svint64_t
*** 955,962 ****
  
  /*
  ** dup_129_s64_x:
! **	mov	(x[0-9]+), 129
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_s64_x, svint64_t,
--- 955,962 ----
  
  /*
  ** dup_129_s64_x:
! **	mov	w([0-9]+), 129
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_s64_x, svint64_t,
*************** TEST_UNIFORM_Z (dup_129_s64_x, svint64_t
*** 965,972 ****
  
  /*
  ** dup_253_s64_x:
! **	mov	(x[0-9]+), 253
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_s64_x, svint64_t,
--- 965,972 ----
  
  /*
  ** dup_253_s64_x:
! **	mov	w([0-9]+), 253
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_s64_x, svint64_t,
*************** TEST_UNIFORM_Z (dup_256_s64_x, svint64_t
*** 1002,1009 ****
  
  /*
  ** dup_257_s64_x:
! **	mov	(x[0-9]+), 257
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_s64_x, svint64_t,
--- 1002,1009 ----
  
  /*
  ** dup_257_s64_x:
! **	mov	w([0-9]+), 257
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_s64_x, svint64_t,
*************** TEST_UNIFORM_Z (dup_7f00_s64_x, svint64_
*** 1030,1037 ****
  
  /*
  ** dup_7f01_s64_x:
! **	mov	(x[0-9]+), 32513
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_s64_x, svint64_t,
--- 1030,1037 ----
  
  /*
  ** dup_7f01_s64_x:
! **	mov	w([0-9]+), 32513
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_s64_x, svint64_t,
*************** TEST_UNIFORM_Z (dup_7f01_s64_x, svint64_
*** 1040,1047 ****
  
  /*
  ** dup_7ffd_s64_x:
! **	mov	(x[0-9]+), 32765
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_s64_x, svint64_t,
--- 1040,1047 ----
  
  /*
  ** dup_7ffd_s64_x:
! **	mov	w([0-9]+), 32765
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_s64_x, svint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c	Sun May 31 22:32:10 2026
*************** TEST_UNIFORM_Z (dup_128_u64, svuint64_t,
*** 31,38 ****
  
  /*
  ** dup_129_u64:
! **	mov	(x[0-9]+), 129
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_u64, svuint64_t,
--- 31,38 ----
  
  /*
  ** dup_129_u64:
! **	mov	w([0-9]+), 129
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_u64, svuint64_t,
*************** TEST_UNIFORM_Z (dup_129_u64, svuint64_t,
*** 41,48 ****
  
  /*
  ** dup_253_u64:
! **	mov	(x[0-9]+), 253
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_u64, svuint64_t,
--- 41,48 ----
  
  /*
  ** dup_253_u64:
! **	mov	w([0-9]+), 253
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_u64, svuint64_t,
*************** TEST_UNIFORM_Z (dup_256_u64, svuint64_t,
*** 78,85 ****
  
  /*
  ** dup_257_u64:
! **	mov	(x[0-9]+), 257
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_u64, svuint64_t,
--- 78,85 ----
  
  /*
  ** dup_257_u64:
! **	mov	w([0-9]+), 257
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_u64, svuint64_t,
*************** TEST_UNIFORM_Z (dup_7f00_u64, svuint64_t
*** 106,113 ****
  
  /*
  ** dup_7f01_u64:
! **	mov	(x[0-9]+), 32513
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_u64, svuint64_t,
--- 106,113 ----
  
  /*
  ** dup_7f01_u64:
! **	mov	w([0-9]+), 32513
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_u64, svuint64_t,
*************** TEST_UNIFORM_Z (dup_7f01_u64, svuint64_t
*** 116,123 ****
  
  /*
  ** dup_7ffd_u64:
! **	mov	(x[0-9]+), 32765
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_u64, svuint64_t,
--- 116,123 ----
  
  /*
  ** dup_7ffd_u64:
! **	mov	w([0-9]+), 32765
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_u64, svuint64_t,
*************** TEST_UNIFORM_Z (dup_128_u64_x, svuint64_
*** 955,962 ****
  
  /*
  ** dup_129_u64_x:
! **	mov	(x[0-9]+), 129
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_u64_x, svuint64_t,
--- 955,962 ----
  
  /*
  ** dup_129_u64_x:
! **	mov	w([0-9]+), 129
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_129_u64_x, svuint64_t,
*************** TEST_UNIFORM_Z (dup_129_u64_x, svuint64_
*** 965,972 ****
  
  /*
  ** dup_253_u64_x:
! **	mov	(x[0-9]+), 253
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_u64_x, svuint64_t,
--- 965,972 ----
  
  /*
  ** dup_253_u64_x:
! **	mov	w([0-9]+), 253
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_253_u64_x, svuint64_t,
*************** TEST_UNIFORM_Z (dup_256_u64_x, svuint64_
*** 1002,1009 ****
  
  /*
  ** dup_257_u64_x:
! **	mov	(x[0-9]+), 257
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_u64_x, svuint64_t,
--- 1002,1009 ----
  
  /*
  ** dup_257_u64_x:
! **	mov	w([0-9]+), 257
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_257_u64_x, svuint64_t,
*************** TEST_UNIFORM_Z (dup_7f00_u64_x, svuint64
*** 1030,1037 ****
  
  /*
  ** dup_7f01_u64_x:
! **	mov	(x[0-9]+), 32513
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_u64_x, svuint64_t,
--- 1030,1037 ----
  
  /*
  ** dup_7f01_u64_x:
! **	mov	w([0-9]+), 32513
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7f01_u64_x, svuint64_t,
*************** TEST_UNIFORM_Z (dup_7f01_u64_x, svuint64
*** 1040,1047 ****
  
  /*
  ** dup_7ffd_u64_x:
! **	mov	(x[0-9]+), 32765
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_u64_x, svuint64_t,
--- 1040,1047 ----
  
  /*
  ** dup_7ffd_u64_x:
! **	mov	w([0-9]+), 32765
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dup_7ffd_u64_x, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_f32.c	Sun May 31 22:32:10 2026
*************** TEST_UNIFORM_Z (dupq_5ic_f32, svfloat32_
*** 24,31 ****
  
  /*
  ** dupq_m1c_f32:
! **	mov	(x[0-9]+), 3212836864
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_m1c_f32, svfloat32_t,
--- 24,31 ----
  
  /*
  ** dupq_m1c_f32:
! **	mov	w([0-9]+), 3212836864
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_m1c_f32, svfloat32_t,
*************** TEST_UNIFORM_Z (dupq_m1c_f32, svfloat32_
*** 34,41 ****
  
  /*
  ** dupq_40p5c_f32:
! **	mov	(x[0-9]+), 1109524480
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_40p5c_f32, svfloat32_t,
--- 34,41 ----
  
  /*
  ** dupq_40p5c_f32:
! **	mov	w([0-9]+), 1109524480
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_40p5c_f32, svfloat32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_s32.c	Sun May 31 22:32:10 2026
*************** TEST_UNIFORM_Z (dupq_ff00ffffff00d_s32,
*** 32,39 ****
  
  /*
  ** dupq_fedcd_s32:
! **	mov	(x[0-9]+), 65244
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_fedcd_s32, svint32_t,
--- 32,39 ----
  
  /*
  ** dupq_fedcd_s32:
! **	mov	w([0-9]+), 65244
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_fedcd_s32, svint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_u32.c	Sun May 31 22:32:10 2026
*************** TEST_UNIFORM_Z (dupq_ff00ffffff00d_u32,
*** 32,39 ****
  
  /*
  ** dupq_fedcd_u32:
! **	mov	(x[0-9]+), 65244
! **	mov	z0\.d, \1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_fedcd_u32, svuint32_t,
--- 32,39 ----
  
  /*
  ** dupq_fedcd_u32:
! **	mov	w([0-9]+), 65244
! **	mov	z0\.d, x\1
  **	ret
  */
  TEST_UNIFORM_Z (dupq_fedcd_u32, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_s64.c	Sun May 31 22:32:10 2026
*************** TEST_S (index_s64_x0_2, svint64_t, int64
*** 20,27 ****
  
  /*
  ** index_s64_50_2:
! **	mov	(x[0-9]+), 50
! **	index	z0\.d, \1, #2
  **	ret
  */
  TEST_S (index_s64_50_2, svint64_t, int64_t,
--- 20,27 ----
  
  /*
  ** index_s64_50_2:
! **	mov	w([0-9]+), 50
! **	index	z0\.d, x\1, #2
  **	ret
  */
  TEST_S (index_s64_50_2, svint64_t, int64_t,
*************** TEST_S (index_s64_0_15, svint64_t, int64
*** 62,69 ****
  
  /*
  ** index_s64_0_16:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, #0, \1
  **	ret
  */
  TEST_S (index_s64_0_16, svint64_t, int64_t,
--- 62,69 ----
  
  /*
  ** index_s64_0_16:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, #0, x\1
  **	ret
  */
  TEST_S (index_s64_0_16, svint64_t, int64_t,
*************** TEST_S (index_s64_15_1, svint64_t, int64
*** 112,119 ****
  
  /*
  ** index_s64_16_1:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, \1, #1
  **	ret
  */
  TEST_S (index_s64_16_1, svint64_t, int64_t,
--- 112,119 ----
  
  /*
  ** index_s64_16_1:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x\1, #1
  **	ret
  */
  TEST_S (index_s64_16_1, svint64_t, int64_t,
*************** TEST_S (index_s64_15_x0, svint64_t, int6
*** 170,177 ****
  
  /*
  ** index_s64_16_x0:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, \1, x0
  **	ret
  */
  TEST_S (index_s64_16_x0, svint64_t, int64_t,
--- 170,177 ----
  
  /*
  ** index_s64_16_x0:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x\1, x0
  **	ret
  */
  TEST_S (index_s64_16_x0, svint64_t, int64_t,
*************** TEST_S (index_s64_x0_15, svint64_t, int6
*** 212,219 ****
  
  /*
  ** index_s64_x0_16:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, x0, \1
  **	ret
  */
  TEST_S (index_s64_x0_16, svint64_t, int64_t,
--- 212,219 ----
  
  /*
  ** index_s64_x0_16:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x0, x\1
  **	ret
  */
  TEST_S (index_s64_x0_16, svint64_t, int64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/index_u64.c	Sun May 31 22:32:10 2026
*************** TEST_S (index_u64_x0_2, svuint64_t, uint
*** 20,27 ****
  
  /*
  ** index_u64_50_2:
! **	mov	(x[0-9]+), 50
! **	index	z0\.d, \1, #2
  **	ret
  */
  TEST_S (index_u64_50_2, svuint64_t, uint64_t,
--- 20,27 ----
  
  /*
  ** index_u64_50_2:
! **	mov	w([0-9]+), 50
! **	index	z0\.d, x\1, #2
  **	ret
  */
  TEST_S (index_u64_50_2, svuint64_t, uint64_t,
*************** TEST_S (index_u64_0_15, svuint64_t, uint
*** 62,69 ****
  
  /*
  ** index_u64_0_16:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, #0, \1
  **	ret
  */
  TEST_S (index_u64_0_16, svuint64_t, uint64_t,
--- 62,69 ----
  
  /*
  ** index_u64_0_16:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, #0, x\1
  **	ret
  */
  TEST_S (index_u64_0_16, svuint64_t, uint64_t,
*************** TEST_S (index_u64_15_1, svuint64_t, uint
*** 112,119 ****
  
  /*
  ** index_u64_16_1:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, \1, #1
  **	ret
  */
  TEST_S (index_u64_16_1, svuint64_t, uint64_t,
--- 112,119 ----
  
  /*
  ** index_u64_16_1:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x\1, #1
  **	ret
  */
  TEST_S (index_u64_16_1, svuint64_t, uint64_t,
*************** TEST_S (index_u64_15_x0, svuint64_t, uin
*** 170,177 ****
  
  /*
  ** index_u64_16_x0:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, \1, x0
  **	ret
  */
  TEST_S (index_u64_16_x0, svuint64_t, uint64_t,
--- 170,177 ----
  
  /*
  ** index_u64_16_x0:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x\1, x0
  **	ret
  */
  TEST_S (index_u64_16_x0, svuint64_t, uint64_t,
*************** TEST_S (index_u64_x0_15, svuint64_t, uin
*** 212,219 ****
  
  /*
  ** index_u64_x0_16:
! **	mov	(x[0-9]+), 16
! **	index	z0\.d, x0, \1
  **	ret
  */
  TEST_S (index_u64_x0_16, svuint64_t, uint64_t,
--- 212,219 ----
  
  /*
  ** index_u64_x0_16:
! **	mov	w([0-9]+), 16
! **	index	z0\.d, x0, x\1
  **	ret
  */
  TEST_S (index_u64_x0_16, svuint64_t, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_f32_of
*** 51,58 ****
  
  /*
  ** ld1_gather_5_f32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_f32_offset, svfloat32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_5_f32_offset:
! **	mov	w([0-9]+), 5
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_5_f32_of
*** 61,68 ****
  
  /*
  ** ld1_gather_6_f32_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_f32_offset, svfloat32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_6_f32_offset:
! **	mov	w([0-9]+), 6
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_6_f32_of
*** 71,78 ****
  
  /*
  ** ld1_gather_7_f32_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_f32_offset, svfloat32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_7_f32_offset:
! **	mov	w([0-9]+), 7
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_124_f32_
*** 99,106 ****
  
  /*
  ** ld1_gather_128_f32_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_f32_offset, svfloat32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ld1_gather_128_f32_offset:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_f32_i
*** 156,163 ****
  
  /*
  ** ld1_gather_32_f32_index:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_f32_index, svfloat32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ld1_gather_32_f32_index:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_f32_index, svfloat32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_f64_of
*** 51,58 ****
  
  /*
  ** ld1_gather_9_f64_offset:
! **	mov	(x[0-9]+), #?9
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_f64_offset, svfloat64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_9_f64_offset:
! **	mov	w([0-9]+), 9
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_9_f64_of
*** 61,68 ****
  
  /*
  ** ld1_gather_10_f64_offset:
! **	mov	(x[0-9]+), #?10
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_f64_offset, svfloat64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_10_f64_offset:
! **	mov	w([0-9]+), 10
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_10_f64_o
*** 71,78 ****
  
  /*
  ** ld1_gather_11_f64_offset:
! **	mov	(x[0-9]+), #?11
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_f64_offset, svfloat64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_11_f64_offset:
! **	mov	w([0-9]+), 11
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_11_f64_o
*** 81,88 ****
  
  /*
  ** ld1_gather_12_f64_offset:
! **	mov	(x[0-9]+), #?12
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_f64_offset, svfloat64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ld1_gather_12_f64_offset:
! **	mov	w([0-9]+), 12
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_12_f64_o
*** 91,98 ****
  
  /*
  ** ld1_gather_13_f64_offset:
! **	mov	(x[0-9]+), #?13
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_f64_offset, svfloat64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ld1_gather_13_f64_offset:
! **	mov	w([0-9]+), 13
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_13_f64_o
*** 101,108 ****
  
  /*
  ** ld1_gather_14_f64_offset:
! **	mov	(x[0-9]+), #?14
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_f64_offset, svfloat64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ld1_gather_14_f64_offset:
! **	mov	w([0-9]+), 14
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_14_f64_o
*** 111,118 ****
  
  /*
  ** ld1_gather_15_f64_offset:
! **	mov	(x[0-9]+), #?15
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_f64_offset, svfloat64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ld1_gather_15_f64_offset:
! **	mov	w([0-9]+), 15
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_248_f64_
*** 139,146 ****
  
  /*
  ** ld1_gather_256_f64_offset:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_f64_offset, svfloat64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ld1_gather_256_f64_offset:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_f64_i
*** 196,203 ****
  
  /*
  ** ld1_gather_32_f64_index:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_f64_index, svfloat64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ld1_gather_32_f64_index:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_s32_of
*** 51,58 ****
  
  /*
  ** ld1_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_5_s32_of
*** 61,68 ****
  
  /*
  ** ld1_gather_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_6_s32_of
*** 71,78 ****
  
  /*
  ** ld1_gather_7_s32_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_7_s32_offset:
! **	mov	w([0-9]+), 7
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_124_s32_
*** 99,106 ****
  
  /*
  ** ld1_gather_128_s32_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_s32_offset, svint32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ld1_gather_128_s32_offset:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_s32_i
*** 156,163 ****
  
  /*
  ** ld1_gather_32_s32_index:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_s32_index, svint32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ld1_gather_32_s32_index:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_s64_of
*** 51,58 ****
  
  /*
  ** ld1_gather_9_s64_offset:
! **	mov	(x[0-9]+), #?9
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_9_s64_offset:
! **	mov	w([0-9]+), 9
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_9_s64_of
*** 61,68 ****
  
  /*
  ** ld1_gather_10_s64_offset:
! **	mov	(x[0-9]+), #?10
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_10_s64_offset:
! **	mov	w([0-9]+), 10
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_10_s64_o
*** 71,78 ****
  
  /*
  ** ld1_gather_11_s64_offset:
! **	mov	(x[0-9]+), #?11
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_11_s64_offset:
! **	mov	w([0-9]+), 11
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_11_s64_o
*** 81,88 ****
  
  /*
  ** ld1_gather_12_s64_offset:
! **	mov	(x[0-9]+), #?12
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ld1_gather_12_s64_offset:
! **	mov	w([0-9]+), 12
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_12_s64_o
*** 91,98 ****
  
  /*
  ** ld1_gather_13_s64_offset:
! **	mov	(x[0-9]+), #?13
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_s64_offset, svint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ld1_gather_13_s64_offset:
! **	mov	w([0-9]+), 13
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_13_s64_o
*** 101,108 ****
  
  /*
  ** ld1_gather_14_s64_offset:
! **	mov	(x[0-9]+), #?14
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_s64_offset, svint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ld1_gather_14_s64_offset:
! **	mov	w([0-9]+), 14
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_14_s64_o
*** 111,118 ****
  
  /*
  ** ld1_gather_15_s64_offset:
! **	mov	(x[0-9]+), #?15
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_s64_offset, svint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ld1_gather_15_s64_offset:
! **	mov	w([0-9]+), 15
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_248_s64_
*** 139,146 ****
  
  /*
  ** ld1_gather_256_s64_offset:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_s64_offset, svint64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ld1_gather_256_s64_offset:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_s64_i
*** 196,203 ****
  
  /*
  ** ld1_gather_32_s64_index:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_s64_index, svint64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ld1_gather_32_s64_index:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_u32_of
*** 51,58 ****
  
  /*
  ** ld1_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_5_u32_of
*** 61,68 ****
  
  /*
  ** ld1_gather_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_6_u32_of
*** 71,78 ****
  
  /*
  ** ld1_gather_7_u32_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_7_u32_offset:
! **	mov	w([0-9]+), 7
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_7_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_124_u32_
*** 99,106 ****
  
  /*
  ** ld1_gather_128_u32_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_u32_offset, svuint32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ld1_gather_128_u32_offset:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_128_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_u32_i
*** 156,163 ****
  
  /*
  ** ld1_gather_32_u32_index:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_u32_index, svuint32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ld1_gather_32_u32_index:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1_gather_0_u64_of
*** 51,58 ****
  
  /*
  ** ld1_gather_9_u64_offset:
! **	mov	(x[0-9]+), #?9
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1_gather_9_u64_offset:
! **	mov	w([0-9]+), 9
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_9_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_9_u64_of
*** 61,68 ****
  
  /*
  ** ld1_gather_10_u64_offset:
! **	mov	(x[0-9]+), #?10
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1_gather_10_u64_offset:
! **	mov	w([0-9]+), 10
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_10_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_10_u64_o
*** 71,78 ****
  
  /*
  ** ld1_gather_11_u64_offset:
! **	mov	(x[0-9]+), #?11
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1_gather_11_u64_offset:
! **	mov	w([0-9]+), 11
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_11_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_11_u64_o
*** 81,88 ****
  
  /*
  ** ld1_gather_12_u64_offset:
! **	mov	(x[0-9]+), #?12
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ld1_gather_12_u64_offset:
! **	mov	w([0-9]+), 12
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_12_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_12_u64_o
*** 91,98 ****
  
  /*
  ** ld1_gather_13_u64_offset:
! **	mov	(x[0-9]+), #?13
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_u64_offset, svuint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ld1_gather_13_u64_offset:
! **	mov	w([0-9]+), 13
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_13_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_13_u64_o
*** 101,108 ****
  
  /*
  ** ld1_gather_14_u64_offset:
! **	mov	(x[0-9]+), #?14
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_u64_offset, svuint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ld1_gather_14_u64_offset:
! **	mov	w([0-9]+), 14
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_14_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_14_u64_o
*** 111,118 ****
  
  /*
  ** ld1_gather_15_u64_offset:
! **	mov	(x[0-9]+), #?15
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_u64_offset, svuint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ld1_gather_15_u64_offset:
! **	mov	w([0-9]+), 15
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_15_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_248_u64_
*** 139,146 ****
  
  /*
  ** ld1_gather_256_u64_offset:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_u64_offset, svuint64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ld1_gather_256_u64_offset:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_256_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1_gather_31_u64_i
*** 196,203 ****
  
  /*
  ** ld1_gather_32_u64_index:
! **	mov	(x[0-9]+), #?256
! **	ld1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_u64_index, svuint64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ld1_gather_32_u64_index:
! **	mov	w([0-9]+), 256
! **	ld1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sb_gather_31_s32
*** 69,76 ****
  
  /*
  ** ld1sb_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_s32_offset, svint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ld1sb_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ld1sb	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sb_gather_31_s64
*** 69,76 ****
  
  /*
  ** ld1sb_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1sb	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_s64_offset, svint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ld1sb_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ld1sb	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sb_gather_31_u32
*** 69,76 ****
  
  /*
  ** ld1sb_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ld1sb_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ld1sb	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sb_gather_31_u64
*** 69,76 ****
  
  /*
  ** ld1sb_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1sb	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ld1sb_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ld1sb	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_0_s32_
*** 51,58 ****
  
  /*
  ** ld1sh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1sh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_62_s32
*** 79,86 ****
  
  /*
  ** ld1sh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ld1sh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_31_s32
*** 136,143 ****
  
  /*
  ** ld1sh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_s32_index, svint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ld1sh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ld1sh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1sh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_62_s64
*** 79,86 ****
  
  /*
  ** ld1sh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ld1sh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_31_s64
*** 136,143 ****
  
  /*
  ** ld1sh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_s64_index, svint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ld1sh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_0_u32_
*** 51,58 ****
  
  /*
  ** ld1sh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1sh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_62_u32
*** 79,86 ****
  
  /*
  ** ld1sh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ld1sh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_31_u32
*** 136,143 ****
  
  /*
  ** ld1sh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ld1sh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ld1sh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1sh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_62_u64
*** 79,86 ****
  
  /*
  ** ld1sh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ld1sh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sh_gather_31_u64
*** 136,143 ****
  
  /*
  ** ld1sh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ld1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ld1sh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ld1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ld1sw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1sw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_5_s64_
*** 61,68 ****
  
  /*
  ** ld1sw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1sw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_6_s64_
*** 71,78 ****
  
  /*
  ** ld1sw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1sw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_124_s6
*** 99,106 ****
  
  /*
  ** ld1sw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ld1sw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_31_s64
*** 156,163 ****
  
  /*
  ** ld1sw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_32_s64_index, svint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ld1sw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ld1sw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1sw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_5_u64_
*** 61,68 ****
  
  /*
  ** ld1sw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1sw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_6_u64_
*** 71,78 ****
  
  /*
  ** ld1sw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1sw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_124_u6
*** 99,106 ****
  
  /*
  ** ld1sw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ld1sw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1sw_gather_31_u64
*** 156,163 ****
  
  /*
  ** ld1sw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ld1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ld1sw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ld1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1sw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1ub_gather_31_s32
*** 69,76 ****
  
  /*
  ** ld1ub_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1b	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_s32_offset, svint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ld1ub_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ld1b	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1ub_gather_31_s64
*** 69,76 ****
  
  /*
  ** ld1ub_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1b	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_s64_offset, svint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ld1ub_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ld1b	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1ub_gather_31_u32
*** 69,76 ****
  
  /*
  ** ld1ub_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1b	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ld1ub_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ld1b	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1ub_gather_31_u64
*** 69,76 ****
  
  /*
  ** ld1ub_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ld1b	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ld1ub_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ld1b	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_0_s32_
*** 51,58 ****
  
  /*
  ** ld1uh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1uh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_62_s32
*** 79,86 ****
  
  /*
  ** ld1uh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ld1uh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_31_s32
*** 136,143 ****
  
  /*
  ** ld1uh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_s32_index, svint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ld1uh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ld1uh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1uh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_62_s64
*** 79,86 ****
  
  /*
  ** ld1uh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ld1uh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_31_s64
*** 136,143 ****
  
  /*
  ** ld1uh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_s64_index, svint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ld1uh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_0_u32_
*** 51,58 ****
  
  /*
  ** ld1uh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ld1uh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_62_u32
*** 79,86 ****
  
  /*
  ** ld1uh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ld1uh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_31_u32
*** 136,143 ****
  
  /*
  ** ld1uh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ld1uh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ld1uh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1uh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_62_u64
*** 79,86 ****
  
  /*
  ** ld1uh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ld1uh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uh_gather_31_u64
*** 136,143 ****
  
  /*
  ** ld1uh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ld1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ld1uh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ld1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ld1uw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1uw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_5_s64_
*** 61,68 ****
  
  /*
  ** ld1uw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1uw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_6_s64_
*** 71,78 ****
  
  /*
  ** ld1uw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1uw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_124_s6
*** 99,106 ****
  
  /*
  ** ld1uw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ld1uw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_31_s64
*** 156,163 ****
  
  /*
  ** ld1uw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_32_s64_index, svint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ld1uw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ld1uw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ld1uw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_5_u64_
*** 61,68 ****
  
  /*
  ** ld1uw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ld1uw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_6_u64_
*** 71,78 ****
  
  /*
  ** ld1uw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ld1uw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_124_u6
*** 99,106 ****
  
  /*
  ** ld1uw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ld1uw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1uw_gather_31_u64
*** 156,163 ****
  
  /*
  ** ld1uw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ld1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ld1uw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ld1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1uw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_f32_
*** 51,58 ****
  
  /*
  ** ldff1_gather_5_f32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_f32_offset, svfloat32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_5_f32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_5_f32_
*** 61,68 ****
  
  /*
  ** ldff1_gather_6_f32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_f32_offset, svfloat32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_6_f32_offset:
! **	mov	w([0-9]+), 6
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_6_f32_
*** 71,78 ****
  
  /*
  ** ldff1_gather_7_f32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_f32_offset, svfloat32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_7_f32_offset:
! **	mov	w([0-9]+), 7
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_124_f3
*** 99,106 ****
  
  /*
  ** ldff1_gather_128_f32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_f32_offset, svfloat32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ldff1_gather_128_f32_offset:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_f32
*** 156,163 ****
  
  /*
  ** ldff1_gather_32_f32_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_f32_index, svfloat32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ldff1_gather_32_f32_index:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_f32_index, svfloat32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_f64_
*** 51,58 ****
  
  /*
  ** ldff1_gather_9_f64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_f64_offset, svfloat64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_9_f64_offset:
! **	mov	w([0-9]+), 9
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_9_f64_
*** 61,68 ****
  
  /*
  ** ldff1_gather_10_f64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_f64_offset, svfloat64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_10_f64_offset:
! **	mov	w([0-9]+), 10
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_10_f64
*** 71,78 ****
  
  /*
  ** ldff1_gather_11_f64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_f64_offset, svfloat64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_11_f64_offset:
! **	mov	w([0-9]+), 11
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_11_f64
*** 81,88 ****
  
  /*
  ** ldff1_gather_12_f64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_f64_offset, svfloat64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldff1_gather_12_f64_offset:
! **	mov	w([0-9]+), 12
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_12_f64
*** 91,98 ****
  
  /*
  ** ldff1_gather_13_f64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_f64_offset, svfloat64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldff1_gather_13_f64_offset:
! **	mov	w([0-9]+), 13
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_13_f64
*** 101,108 ****
  
  /*
  ** ldff1_gather_14_f64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_f64_offset, svfloat64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldff1_gather_14_f64_offset:
! **	mov	w([0-9]+), 14
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_14_f64
*** 111,118 ****
  
  /*
  ** ldff1_gather_15_f64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_f64_offset, svfloat64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldff1_gather_15_f64_offset:
! **	mov	w([0-9]+), 15
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_248_f6
*** 139,146 ****
  
  /*
  ** ldff1_gather_256_f64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_f64_offset, svfloat64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ldff1_gather_256_f64_offset:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_f64
*** 196,203 ****
  
  /*
  ** ldff1_gather_32_f64_index:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_f64_index, svfloat64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ldff1_gather_32_f64_index:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_s32_
*** 51,58 ****
  
  /*
  ** ldff1_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_5_s32_
*** 61,68 ****
  
  /*
  ** ldff1_gather_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_6_s32_
*** 71,78 ****
  
  /*
  ** ldff1_gather_7_s32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_7_s32_offset:
! **	mov	w([0-9]+), 7
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_124_s3
*** 99,106 ****
  
  /*
  ** ldff1_gather_128_s32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_s32_offset, svint32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ldff1_gather_128_s32_offset:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_s32
*** 156,163 ****
  
  /*
  ** ldff1_gather_32_s32_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_s32_index, svint32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ldff1_gather_32_s32_index:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ldff1_gather_9_s64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_9_s64_offset:
! **	mov	w([0-9]+), 9
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_9_s64_
*** 61,68 ****
  
  /*
  ** ldff1_gather_10_s64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_10_s64_offset:
! **	mov	w([0-9]+), 10
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_10_s64
*** 71,78 ****
  
  /*
  ** ldff1_gather_11_s64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_11_s64_offset:
! **	mov	w([0-9]+), 11
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_11_s64
*** 81,88 ****
  
  /*
  ** ldff1_gather_12_s64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldff1_gather_12_s64_offset:
! **	mov	w([0-9]+), 12
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_12_s64
*** 91,98 ****
  
  /*
  ** ldff1_gather_13_s64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_s64_offset, svint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldff1_gather_13_s64_offset:
! **	mov	w([0-9]+), 13
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_13_s64
*** 101,108 ****
  
  /*
  ** ldff1_gather_14_s64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_s64_offset, svint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldff1_gather_14_s64_offset:
! **	mov	w([0-9]+), 14
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_14_s64
*** 111,118 ****
  
  /*
  ** ldff1_gather_15_s64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_s64_offset, svint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldff1_gather_15_s64_offset:
! **	mov	w([0-9]+), 15
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_248_s6
*** 139,146 ****
  
  /*
  ** ldff1_gather_256_s64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_s64_offset, svint64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ldff1_gather_256_s64_offset:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_s64
*** 196,203 ****
  
  /*
  ** ldff1_gather_32_s64_index:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_s64_index, svint64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ldff1_gather_32_s64_index:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_u32_
*** 51,58 ****
  
  /*
  ** ldff1_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_5_u32_
*** 61,68 ****
  
  /*
  ** ldff1_gather_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_6_u32_
*** 71,78 ****
  
  /*
  ** ldff1_gather_7_u32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_7_u32_offset:
! **	mov	w([0-9]+), 7
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_7_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_124_u3
*** 99,106 ****
  
  /*
  ** ldff1_gather_128_u32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_u32_offset, svuint32_t, svuint32_t,
--- 99,106 ----
  
  /*
  ** ldff1_gather_128_u32_offset:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_128_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_u32
*** 156,163 ****
  
  /*
  ** ldff1_gather_32_u32_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_u32_index, svuint32_t, svuint32_t,
--- 156,163 ----
  
  /*
  ** ldff1_gather_32_u32_index:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ldff1_gather_9_u64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1_gather_9_u64_offset:
! **	mov	w([0-9]+), 9
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_9_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_9_u64_
*** 61,68 ****
  
  /*
  ** ldff1_gather_10_u64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1_gather_10_u64_offset:
! **	mov	w([0-9]+), 10
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_10_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_10_u64
*** 71,78 ****
  
  /*
  ** ldff1_gather_11_u64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1_gather_11_u64_offset:
! **	mov	w([0-9]+), 11
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_11_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_11_u64
*** 81,88 ****
  
  /*
  ** ldff1_gather_12_u64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldff1_gather_12_u64_offset:
! **	mov	w([0-9]+), 12
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_12_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_12_u64
*** 91,98 ****
  
  /*
  ** ldff1_gather_13_u64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_u64_offset, svuint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldff1_gather_13_u64_offset:
! **	mov	w([0-9]+), 13
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_13_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_13_u64
*** 101,108 ****
  
  /*
  ** ldff1_gather_14_u64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_u64_offset, svuint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldff1_gather_14_u64_offset:
! **	mov	w([0-9]+), 14
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_14_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_14_u64
*** 111,118 ****
  
  /*
  ** ldff1_gather_15_u64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_u64_offset, svuint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldff1_gather_15_u64_offset:
! **	mov	w([0-9]+), 15
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_15_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_248_u6
*** 139,146 ****
  
  /*
  ** ldff1_gather_256_u64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_u64_offset, svuint64_t, svuint64_t,
--- 139,146 ----
  
  /*
  ** ldff1_gather_256_u64_offset:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_256_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1_gather_31_u64
*** 196,203 ****
  
  /*
  ** ldff1_gather_32_u64_index:
! **	mov	(x[0-9]+), #?256
! **	ldff1d	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_u64_index, svuint64_t, svuint64_t,
--- 196,203 ----
  
  /*
  ** ldff1_gather_32_u64_index:
! **	mov	w([0-9]+), 256
! **	ldff1d	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sb_gather_31_s
*** 69,76 ****
  
  /*
  ** ldff1sb_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_s32_offset, svint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ldff1sb_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ldff1sb	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sb_gather_31_s
*** 69,76 ****
  
  /*
  ** ldff1sb_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1sb	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_s64_offset, svint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ldff1sb_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ldff1sb	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sb_gather_31_u
*** 69,76 ****
  
  /*
  ** ldff1sb_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ldff1sb_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ldff1sb	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sb_gather_31_u
*** 69,76 ****
  
  /*
  ** ldff1sb_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1sb	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ldff1sb_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ldff1sb	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldff1sh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1sh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_62_s
*** 79,86 ****
  
  /*
  ** ldff1sh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ldff1sh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_31_s
*** 136,143 ****
  
  /*
  ** ldff1sh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_s32_index, svint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ldff1sh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldff1sh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1sh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_62_s
*** 79,86 ****
  
  /*
  ** ldff1sh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ldff1sh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_31_s
*** 136,143 ****
  
  /*
  ** ldff1sh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_s64_index, svint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ldff1sh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_x0_u
*** 32,38 ****
  
  /*
  ** ldff1sh_gather_m2_u32_offset:
! **	mov	(x[0-9]+), #?-2
  **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
--- 32,38 ----
  
  /*
  ** ldff1sh_gather_m2_u32_offset:
! **	mov	(x[0-9]+), -2
  **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldff1sh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1sh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_62_u
*** 79,86 ****
  
  /*
  ** ldff1sh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ldff1sh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_31_u
*** 136,143 ****
  
  /*
  ** ldff1sh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ldff1sh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldff1sh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1sh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_62_u
*** 79,86 ****
  
  /*
  ** ldff1sh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ldff1sh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sh_gather_31_u
*** 136,143 ****
  
  /*
  ** ldff1sh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1sh	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ldff1sh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ldff1sh	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldff1sw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1sw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldff1sw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1sw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldff1sw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1sw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_124_
*** 99,106 ****
  
  /*
  ** ldff1sw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ldff1sw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_31_s
*** 156,163 ****
  
  /*
  ** ldff1sw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_32_s64_index, svint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ldff1sw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldff1sw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1sw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldff1sw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1sw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldff1sw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1sw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_124_
*** 99,106 ****
  
  /*
  ** ldff1sw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ldff1sw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1sw_gather_31_u
*** 156,163 ****
  
  /*
  ** ldff1sw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ldff1sw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ldff1sw	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1sw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1ub_gather_31_s
*** 69,76 ****
  
  /*
  ** ldff1ub_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1b	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_s32_offset, svint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ldff1ub_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ldff1b	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1ub_gather_31_s
*** 69,76 ****
  
  /*
  ** ldff1ub_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1b	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_s64_offset, svint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ldff1ub_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ldff1b	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1ub_gather_31_u
*** 69,76 ****
  
  /*
  ** ldff1ub_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1b	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 69,76 ----
  
  /*
  ** ldff1ub_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ldff1b	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1ub_gather_31_u
*** 69,76 ****
  
  /*
  ** ldff1ub_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldff1b	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 69,76 ----
  
  /*
  ** ldff1ub_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ldff1b	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldff1uh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1uh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_62_s
*** 79,86 ****
  
  /*
  ** ldff1uh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ldff1uh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_31_s
*** 136,143 ****
  
  /*
  ** ldff1uh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_s32_index, svint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ldff1uh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldff1uh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1uh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_62_s
*** 79,86 ****
  
  /*
  ** ldff1uh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ldff1uh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_31_s
*** 136,143 ****
  
  /*
  ** ldff1uh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_s64_index, svint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ldff1uh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldff1uh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldff1uh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_62_u
*** 79,86 ****
  
  /*
  ** ldff1uh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 79,86 ----
  
  /*
  ** ldff1uh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_31_u
*** 136,143 ****
  
  /*
  ** ldff1uh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 136,143 ----
  
  /*
  ** ldff1uh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.s, p0/z, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldff1uh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1uh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_62_u
*** 79,86 ****
  
  /*
  ** ldff1uh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 79,86 ----
  
  /*
  ** ldff1uh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uh_gather_31_u
*** 136,143 ****
  
  /*
  ** ldff1uh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ldff1h	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 136,143 ----
  
  /*
  ** ldff1uh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ldff1h	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldff1uw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1uw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldff1uw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1uw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldff1uw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1uw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_124_
*** 99,106 ****
  
  /*
  ** ldff1uw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ldff1uw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_31_s
*** 156,163 ****
  
  /*
  ** ldff1uw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_s64_index, svint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ldff1uw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldff1uw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldff1uw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldff1uw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldff1uw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldff1uw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldff1uw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_124_
*** 99,106 ****
  
  /*
  ** ldff1uw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 99,106 ----
  
  /*
  ** ldff1uw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldff1uw_gather_31_u
*** 156,163 ****
  
  /*
  ** ldff1uw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ldff1w	z0\.d, p0/z, \[\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 156,163 ----
  
  /*
  ** ldff1uw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ldff1w	z0\.d, p0/z, \[x\1, z0\.d\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldff1uw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb_gather.c	Sun May 31 22:32:10 2026
*************** TEST_PREFETCH_GATHER_ZS (prfb_gather_31_
*** 69,76 ****
  
  /*
  ** prfb_gather_32_u32base_offset:
! **	mov	(x[0-9]+), #?32
! **	prfb	pstl1strm, p0, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfb_gather_32_u32base_offset, svuint32_t,
--- 69,76 ----
  
  /*
  ** prfb_gather_32_u32base_offset:
! **	mov	w([0-9]+), 32
! **	prfb	pstl1strm, p0, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfb_gather_32_u32base_offset, svuint32_t,
*************** TEST_PREFETCH_GATHER_ZS (prfb_gather_31_
*** 125,132 ****
  
  /*
  ** prfb_gather_32_u64base_offset:
! **	mov	(x[0-9]+), #?32
! **	prfb	pldl1strm, p0, \[\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfb_gather_32_u64base_offset, svuint64_t,
--- 125,132 ----
  
  /*
  ** prfb_gather_32_u64base_offset:
! **	mov	w([0-9]+), 32
! **	prfb	pldl1strm, p0, \[x\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfb_gather_32_u64base_offset, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd_gather.c	Sun May 31 22:32:10 2026
*************** TEST_PREFETCH_GATHER_ZS (prfd_gather_31_
*** 70,77 ****
  
  /*
  ** prfd_gather_32_u32base_index:
! **	mov	(x[0-9]+), #?256
! **	prfb	pstl1strm, p0, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfd_gather_32_u32base_index, svuint32_t,
--- 70,77 ----
  
  /*
  ** prfd_gather_32_u32base_index:
! **	mov	w([0-9]+), 256
! **	prfb	pstl1strm, p0, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfd_gather_32_u32base_index, svuint32_t,
*************** TEST_PREFETCH_GATHER_ZS (prfd_gather_31_
*** 127,134 ****
  
  /*
  ** prfd_gather_32_u64base_index:
! **	mov	(x[0-9]+), #?256
! **	prfb	pldl1strm, p0, \[\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfd_gather_32_u64base_index, svuint64_t,
--- 127,134 ----
  
  /*
  ** prfd_gather_32_u64base_index:
! **	mov	w([0-9]+), 256
! **	prfb	pldl1strm, p0, \[x\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfd_gather_32_u64base_index, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh_gather.c	Sun May 31 22:32:10 2026
*************** TEST_PREFETCH_GATHER_ZS (prfh_gather_31_
*** 70,77 ****
  
  /*
  ** prfh_gather_32_u32base_index:
! **	mov	(x[0-9]+), #?64
! **	prfb	pstl1strm, p0, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfh_gather_32_u32base_index, svuint32_t,
--- 70,77 ----
  
  /*
  ** prfh_gather_32_u32base_index:
! **	mov	w([0-9]+), 64
! **	prfb	pstl1strm, p0, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfh_gather_32_u32base_index, svuint32_t,
*************** TEST_PREFETCH_GATHER_ZS (prfh_gather_31_
*** 127,134 ****
  
  /*
  ** prfh_gather_32_u64base_index:
! **	mov	(x[0-9]+), #?64
! **	prfb	pldl1strm, p0, \[\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfh_gather_32_u64base_index, svuint64_t,
--- 127,134 ----
  
  /*
  ** prfh_gather_32_u64base_index:
! **	mov	w([0-9]+), 64
! **	prfb	pldl1strm, p0, \[x\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfh_gather_32_u64base_index, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw_gather.c	Sun May 31 22:32:10 2026
*************** TEST_PREFETCH_GATHER_ZS (prfw_gather_31_
*** 70,77 ****
  
  /*
  ** prfw_gather_32_u32base_index:
! **	mov	(x[0-9]+), #?128
! **	prfb	pstl1strm, p0, \[\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u32base_index, svuint32_t,
--- 70,77 ----
  
  /*
  ** prfw_gather_32_u32base_index:
! **	mov	w([0-9]+), 128
! **	prfb	pstl1strm, p0, \[x\1, z0\.s, uxtw\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u32base_index, svuint32_t,
*************** TEST_PREFETCH_GATHER_ZS (prfw_gather_31_
*** 127,134 ****
  
  /*
  ** prfw_gather_32_u64base_index:
! **	mov	(x[0-9]+), #?128
! **	prfb	pldl1strm, p0, \[\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u64base_index, svuint64_t,
--- 127,134 ----
  
  /*
  ** prfw_gather_32_u64base_index:
! **	mov	w([0-9]+), 128
! **	prfb	pldl1strm, p0, \[x\1, z0\.d\]
  **	ret
  */
  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u64base_index, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_f32
*** 42,49 ****
  
  /*
  ** st1_scatter_5_f32_offset:
! **	mov	(x[0-9]+), #?5
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_f32_offset, svfloat32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_5_f32_offset:
! **	mov	w([0-9]+), 5
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_5_f32
*** 52,59 ****
  
  /*
  ** st1_scatter_6_f32_offset:
! **	mov	(x[0-9]+), #?6
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_f32_offset, svfloat32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_6_f32_offset:
! **	mov	w([0-9]+), 6
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_6_f32
*** 62,69 ****
  
  /*
  ** st1_scatter_7_f32_offset:
! **	mov	(x[0-9]+), #?7
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_f32_offset, svfloat32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_7_f32_offset:
! **	mov	w([0-9]+), 7
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_124_f
*** 90,97 ****
  
  /*
  ** st1_scatter_128_f32_offset:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_f32_offset, svfloat32_t, svuint32_t,
--- 90,97 ----
  
  /*
  ** st1_scatter_128_f32_offset:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_f3
*** 147,154 ****
  
  /*
  ** st1_scatter_32_f32_index:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_f32_index, svfloat32_t, svuint32_t,
--- 147,154 ----
  
  /*
  ** st1_scatter_32_f32_index:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_f32_index, svfloat32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_f64
*** 42,49 ****
  
  /*
  ** st1_scatter_9_f64_offset:
! **	mov	(x[0-9]+), #?9
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_f64_offset, svfloat64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_9_f64_offset:
! **	mov	w([0-9]+), 9
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_9_f64
*** 52,59 ****
  
  /*
  ** st1_scatter_10_f64_offset:
! **	mov	(x[0-9]+), #?10
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_f64_offset, svfloat64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_10_f64_offset:
! **	mov	w([0-9]+), 10
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_10_f6
*** 62,69 ****
  
  /*
  ** st1_scatter_11_f64_offset:
! **	mov	(x[0-9]+), #?11
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_f64_offset, svfloat64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_11_f64_offset:
! **	mov	w([0-9]+), 11
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_11_f6
*** 72,79 ****
  
  /*
  ** st1_scatter_12_f64_offset:
! **	mov	(x[0-9]+), #?12
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_f64_offset, svfloat64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** st1_scatter_12_f64_offset:
! **	mov	w([0-9]+), 12
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_12_f6
*** 82,89 ****
  
  /*
  ** st1_scatter_13_f64_offset:
! **	mov	(x[0-9]+), #?13
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_f64_offset, svfloat64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** st1_scatter_13_f64_offset:
! **	mov	w([0-9]+), 13
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_13_f6
*** 92,99 ****
  
  /*
  ** st1_scatter_14_f64_offset:
! **	mov	(x[0-9]+), #?14
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_f64_offset, svfloat64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** st1_scatter_14_f64_offset:
! **	mov	w([0-9]+), 14
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_14_f6
*** 102,109 ****
  
  /*
  ** st1_scatter_15_f64_offset:
! **	mov	(x[0-9]+), #?15
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_f64_offset, svfloat64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** st1_scatter_15_f64_offset:
! **	mov	w([0-9]+), 15
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_248_f
*** 130,137 ****
  
  /*
  ** st1_scatter_256_f64_offset:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_f64_offset, svfloat64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** st1_scatter_256_f64_offset:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_f6
*** 187,194 ****
  
  /*
  ** st1_scatter_32_f64_index:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_f64_index, svfloat64_t, svuint64_t,
--- 187,194 ----
  
  /*
  ** st1_scatter_32_f64_index:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_s32
*** 42,49 ****
  
  /*
  ** st1_scatter_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_s32_offset, svint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_5_s32
*** 52,59 ****
  
  /*
  ** st1_scatter_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_s32_offset, svint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_6_s32
*** 62,69 ****
  
  /*
  ** st1_scatter_7_s32_offset:
! **	mov	(x[0-9]+), #?7
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_s32_offset, svint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_7_s32_offset:
! **	mov	w([0-9]+), 7
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_124_s
*** 90,97 ****
  
  /*
  ** st1_scatter_128_s32_offset:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_s32_offset, svint32_t, svuint32_t,
--- 90,97 ----
  
  /*
  ** st1_scatter_128_s32_offset:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_s3
*** 147,154 ****
  
  /*
  ** st1_scatter_32_s32_index:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_s32_index, svint32_t, svuint32_t,
--- 147,154 ----
  
  /*
  ** st1_scatter_32_s32_index:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_s64
*** 42,49 ****
  
  /*
  ** st1_scatter_9_s64_offset:
! **	mov	(x[0-9]+), #?9
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_9_s64_offset:
! **	mov	w([0-9]+), 9
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_9_s64
*** 52,59 ****
  
  /*
  ** st1_scatter_10_s64_offset:
! **	mov	(x[0-9]+), #?10
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_10_s64_offset:
! **	mov	w([0-9]+), 10
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_10_s6
*** 62,69 ****
  
  /*
  ** st1_scatter_11_s64_offset:
! **	mov	(x[0-9]+), #?11
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_11_s64_offset:
! **	mov	w([0-9]+), 11
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_11_s6
*** 72,79 ****
  
  /*
  ** st1_scatter_12_s64_offset:
! **	mov	(x[0-9]+), #?12
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_s64_offset, svint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** st1_scatter_12_s64_offset:
! **	mov	w([0-9]+), 12
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_12_s6
*** 82,89 ****
  
  /*
  ** st1_scatter_13_s64_offset:
! **	mov	(x[0-9]+), #?13
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_s64_offset, svint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** st1_scatter_13_s64_offset:
! **	mov	w([0-9]+), 13
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_13_s6
*** 92,99 ****
  
  /*
  ** st1_scatter_14_s64_offset:
! **	mov	(x[0-9]+), #?14
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_s64_offset, svint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** st1_scatter_14_s64_offset:
! **	mov	w([0-9]+), 14
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_14_s6
*** 102,109 ****
  
  /*
  ** st1_scatter_15_s64_offset:
! **	mov	(x[0-9]+), #?15
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_s64_offset, svint64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** st1_scatter_15_s64_offset:
! **	mov	w([0-9]+), 15
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_248_s
*** 130,137 ****
  
  /*
  ** st1_scatter_256_s64_offset:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_s64_offset, svint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** st1_scatter_256_s64_offset:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_s6
*** 187,194 ****
  
  /*
  ** st1_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_s64_index, svint64_t, svuint64_t,
--- 187,194 ----
  
  /*
  ** st1_scatter_32_s64_index:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_u32
*** 42,49 ****
  
  /*
  ** st1_scatter_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_u32_offset, svuint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_5_u32
*** 52,59 ****
  
  /*
  ** st1_scatter_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_u32_offset, svuint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_6_u32
*** 62,69 ****
  
  /*
  ** st1_scatter_7_u32_offset:
! **	mov	(x[0-9]+), #?7
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_u32_offset, svuint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_7_u32_offset:
! **	mov	w([0-9]+), 7
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_7_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_124_u
*** 90,97 ****
  
  /*
  ** st1_scatter_128_u32_offset:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_u32_offset, svuint32_t, svuint32_t,
--- 90,97 ----
  
  /*
  ** st1_scatter_128_u32_offset:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_128_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_u3
*** 147,154 ****
  
  /*
  ** st1_scatter_32_u32_index:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_u32_index, svuint32_t, svuint32_t,
--- 147,154 ----
  
  /*
  ** st1_scatter_32_u32_index:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1_scatter_0_u64
*** 42,49 ****
  
  /*
  ** st1_scatter_9_u64_offset:
! **	mov	(x[0-9]+), #?9
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1_scatter_9_u64_offset:
! **	mov	w([0-9]+), 9
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_9_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_9_u64
*** 52,59 ****
  
  /*
  ** st1_scatter_10_u64_offset:
! **	mov	(x[0-9]+), #?10
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** st1_scatter_10_u64_offset:
! **	mov	w([0-9]+), 10
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_10_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_10_u6
*** 62,69 ****
  
  /*
  ** st1_scatter_11_u64_offset:
! **	mov	(x[0-9]+), #?11
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** st1_scatter_11_u64_offset:
! **	mov	w([0-9]+), 11
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_11_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_11_u6
*** 72,79 ****
  
  /*
  ** st1_scatter_12_u64_offset:
! **	mov	(x[0-9]+), #?12
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_u64_offset, svuint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** st1_scatter_12_u64_offset:
! **	mov	w([0-9]+), 12
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_12_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_12_u6
*** 82,89 ****
  
  /*
  ** st1_scatter_13_u64_offset:
! **	mov	(x[0-9]+), #?13
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_u64_offset, svuint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** st1_scatter_13_u64_offset:
! **	mov	w([0-9]+), 13
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_13_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_13_u6
*** 92,99 ****
  
  /*
  ** st1_scatter_14_u64_offset:
! **	mov	(x[0-9]+), #?14
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_u64_offset, svuint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** st1_scatter_14_u64_offset:
! **	mov	w([0-9]+), 14
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_14_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_14_u6
*** 102,109 ****
  
  /*
  ** st1_scatter_15_u64_offset:
! **	mov	(x[0-9]+), #?15
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_u64_offset, svuint64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** st1_scatter_15_u64_offset:
! **	mov	w([0-9]+), 15
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_15_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_248_u
*** 130,137 ****
  
  /*
  ** st1_scatter_256_u64_offset:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_u64_offset, svuint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** st1_scatter_256_u64_offset:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_256_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1_scatter_31_u6
*** 187,194 ****
  
  /*
  ** st1_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?256
! **	st1d	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 187,194 ----
  
  /*
  ** st1_scatter_32_u64_index:
! **	mov	w([0-9]+), 256
! **	st1d	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1b_scatter_31_s
*** 60,67 ****
  
  /*
  ** st1b_scatter_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	st1b	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_s32_offset, svint32_t, svuint32_t,
--- 60,67 ----
  
  /*
  ** st1b_scatter_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	st1b	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1b_scatter_31_s
*** 60,67 ****
  
  /*
  ** st1b_scatter_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	st1b	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_s64_offset, svint64_t, svuint64_t,
--- 60,67 ----
  
  /*
  ** st1b_scatter_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	st1b	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1b_scatter_31_u
*** 60,67 ****
  
  /*
  ** st1b_scatter_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	st1b	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_u32_offset, svuint32_t, svuint32_t,
--- 60,67 ----
  
  /*
  ** st1b_scatter_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	st1b	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1b_scatter_31_u
*** 60,67 ****
  
  /*
  ** st1b_scatter_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	st1b	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_u64_offset, svuint64_t, svuint64_t,
--- 60,67 ----
  
  /*
  ** st1b_scatter_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	st1b	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1b_scatter_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_0_s3
*** 42,49 ****
  
  /*
  ** st1h_scatter_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_s32_offset, svint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** st1h_scatter_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_62_s
*** 70,77 ****
  
  /*
  ** st1h_scatter_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_s32_offset, svint32_t, svuint32_t,
--- 70,77 ----
  
  /*
  ** st1h_scatter_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_31_s
*** 127,134 ****
  
  /*
  ** st1h_scatter_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_s32_index, svint32_t, svuint32_t,
--- 127,134 ----
  
  /*
  ** st1h_scatter_32_s32_index:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_0_s6
*** 42,49 ****
  
  /*
  ** st1h_scatter_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1h_scatter_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_62_s
*** 70,77 ****
  
  /*
  ** st1h_scatter_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_s64_offset, svint64_t, svuint64_t,
--- 70,77 ----
  
  /*
  ** st1h_scatter_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_31_s
*** 127,134 ****
  
  /*
  ** st1h_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_s64_index, svint64_t, svuint64_t,
--- 127,134 ----
  
  /*
  ** st1h_scatter_32_s64_index:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_0_u3
*** 42,49 ****
  
  /*
  ** st1h_scatter_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_u32_offset, svuint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** st1h_scatter_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_62_u
*** 70,77 ****
  
  /*
  ** st1h_scatter_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_u32_offset, svuint32_t, svuint32_t,
--- 70,77 ----
  
  /*
  ** st1h_scatter_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_31_u
*** 127,134 ****
  
  /*
  ** st1h_scatter_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.s, p0, \[\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_u32_index, svuint32_t, svuint32_t,
--- 127,134 ----
  
  /*
  ** st1h_scatter_32_u32_index:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.s, p0, \[x\1, z1\.s, uxtw\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_0_u6
*** 42,49 ****
  
  /*
  ** st1h_scatter_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1h_scatter_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_62_u
*** 70,77 ****
  
  /*
  ** st1h_scatter_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_u64_offset, svuint64_t, svuint64_t,
--- 70,77 ----
  
  /*
  ** st1h_scatter_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1h_scatter_31_u
*** 127,134 ****
  
  /*
  ** st1h_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	st1h	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 127,134 ----
  
  /*
  ** st1h_scatter_32_u64_index:
! **	mov	w([0-9]+), 64
! **	st1h	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1h_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_0_s6
*** 42,49 ****
  
  /*
  ** st1w_scatter_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_5_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1w_scatter_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_5_s6
*** 52,59 ****
  
  /*
  ** st1w_scatter_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_6_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** st1w_scatter_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_6_s6
*** 62,69 ****
  
  /*
  ** st1w_scatter_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_7_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** st1w_scatter_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_124_
*** 90,97 ****
  
  /*
  ** st1w_scatter_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_128_s64_offset, svint64_t, svuint64_t,
--- 90,97 ----
  
  /*
  ** st1w_scatter_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_31_s
*** 147,154 ****
  
  /*
  ** st1w_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_32_s64_index, svint64_t, svuint64_t,
--- 147,154 ----
  
  /*
  ** st1w_scatter_32_s64_index:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_0_u6
*** 42,49 ****
  
  /*
  ** st1w_scatter_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_5_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** st1w_scatter_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_5_u6
*** 52,59 ****
  
  /*
  ** st1w_scatter_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_6_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** st1w_scatter_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_6_u6
*** 62,69 ****
  
  /*
  ** st1w_scatter_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_7_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** st1w_scatter_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_124_
*** 90,97 ****
  
  /*
  ** st1w_scatter_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_128_u64_offset, svuint64_t, svuint64_t,
--- 90,97 ----
  
  /*
  ** st1w_scatter_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1w_scatter_31_u
*** 147,154 ****
  
  /*
  ** st1w_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	st1w	z0\.d, p0, \[\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 147,154 ----
  
  /*
  ** st1w_scatter_32_u64_index:
! **	mov	w([0-9]+), 128
! **	st1w	z0\.d, p0, \[x\1, z1\.d\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1w_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilele_0r_b16_s64, int6
*** 69,76 ****
  
  /*
  ** whilele_5r_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b16_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilele_5r_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilele_r0_b16_s64, int6
*** 88,95 ****
  
  /*
  ** whilele_r5_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b16_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilele_r5_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilele_0r_b16_u64, uint
*** 154,161 ****
  
  /*
  ** whilele_5r_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b16_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilele_5r_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b16_u64, uint64_t,
*************** TEST_COMPARE_S (whilele_5r_b16_u64, uint
*** 164,171 ****
  
  /*
  ** whilele_r5_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b16_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilele_r5_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b16_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilele_0r_b32_s64, int6
*** 69,76 ****
  
  /*
  ** whilele_5r_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b32_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilele_5r_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilele_r0_b32_s64, int6
*** 88,95 ****
  
  /*
  ** whilele_r5_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b32_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilele_r5_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilele_0r_b32_u64, uint
*** 154,161 ****
  
  /*
  ** whilele_5r_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b32_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilele_5r_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b32_u64, uint64_t,
*************** TEST_COMPARE_S (whilele_5r_b32_u64, uint
*** 164,171 ****
  
  /*
  ** whilele_r5_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b32_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilele_r5_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b32_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilele_0r_b64_s64, int6
*** 69,76 ****
  
  /*
  ** whilele_5r_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b64_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilele_5r_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilele_r0_b64_s64, int6
*** 88,95 ****
  
  /*
  ** whilele_r5_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b64_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilele_r5_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilele_0r_b64_u64, uint
*** 154,161 ****
  
  /*
  ** whilele_5r_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b64_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilele_5r_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b64_u64, uint64_t,
*************** TEST_COMPARE_S (whilele_5r_b64_u64, uint
*** 164,171 ****
  
  /*
  ** whilele_r5_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b64_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilele_r5_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b64_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilele_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilele_0r_b8_s64, int64
*** 69,76 ****
  
  /*
  ** whilele_5r_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b8_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilele_5r_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilele_r0_b8_s64, int64
*** 88,95 ****
  
  /*
  ** whilele_r5_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b8_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilele_r5_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilele	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilele_0r_b8_u64, uint6
*** 154,161 ****
  
  /*
  ** whilele_5r_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b8_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilele_5r_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilele_5r_b8_u64, uint64_t,
*************** TEST_COMPARE_S (whilele_5r_b8_u64, uint6
*** 164,171 ****
  
  /*
  ** whilele_r5_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b8_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilele_r5_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilels	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilele_r5_b8_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilelt_0r_b16_s64, int6
*** 69,76 ****
  
  /*
  ** whilelt_5r_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b16_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilelt_5r_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_r0_b16_s64, int6
*** 88,95 ****
  
  /*
  ** whilelt_r5_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b16_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilelt_r5_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_0r_b16_u64, uint
*** 154,161 ****
  
  /*
  ** whilelt_5r_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b16_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilelt_5r_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b16_u64, uint64_t,
*************** TEST_COMPARE_S (whilelt_5r_b16_u64, uint
*** 164,171 ****
  
  /*
  ** whilelt_r5_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b16_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilelt_r5_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b16_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilelt_0r_b32_s64, int6
*** 69,76 ****
  
  /*
  ** whilelt_5r_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b32_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilelt_5r_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_r0_b32_s64, int6
*** 88,95 ****
  
  /*
  ** whilelt_r5_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b32_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilelt_r5_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_0r_b32_u64, uint
*** 154,161 ****
  
  /*
  ** whilelt_5r_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b32_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilelt_5r_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b32_u64, uint64_t,
*************** TEST_COMPARE_S (whilelt_5r_b32_u64, uint
*** 164,171 ****
  
  /*
  ** whilelt_r5_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b32_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilelt_r5_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b32_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilelt_0r_b64_s64, int6
*** 69,76 ****
  
  /*
  ** whilelt_5r_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b64_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilelt_5r_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_r0_b64_s64, int6
*** 88,95 ****
  
  /*
  ** whilelt_r5_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b64_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilelt_r5_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_0r_b64_u64, uint
*** 154,161 ****
  
  /*
  ** whilelt_5r_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b64_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilelt_5r_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b64_u64, uint64_t,
*************** TEST_COMPARE_S (whilelt_5r_b64_u64, uint
*** 164,171 ****
  
  /*
  ** whilelt_r5_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b64_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilelt_r5_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b64_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/whilelt_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilelt_0r_b8_s64, int64
*** 69,76 ****
  
  /*
  ** whilelt_5r_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b8_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilelt_5r_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_r0_b8_s64, int64
*** 88,95 ****
  
  /*
  ** whilelt_r5_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b8_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilelt_r5_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilelt_0r_b8_u64, uint6
*** 154,161 ****
  
  /*
  ** whilelt_5r_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b8_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilelt_5r_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilelt_5r_b8_u64, uint64_t,
*************** TEST_COMPARE_S (whilelt_5r_b8_u64, uint6
*** 164,171 ****
  
  /*
  ** whilelt_r5_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b8_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilelt_r5_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilelt_r5_b8_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntb_pat_1.c	Sun May 31 22:32:10 2026
*************** extern "C" {
*** 10,128 ****
  
  /*
  ** cntb_pow2:
! **	mov	x0, #?32
  **	ret
  */
  uint64_t cntb_pow2 () { return svcntb_pat (SV_POW2); }
  
  /*
  ** cntb_vl1:
! **	mov	x0, #?1
  **	ret
  */
  uint64_t cntb_vl1 () { return svcntb_pat (SV_VL1); }
  
  /*
  ** cntb_vl2:
! **	mov	x0, #?2
  **	ret
  */
  uint64_t cntb_vl2 () { return svcntb_pat (SV_VL2); }
  
  /*
  ** cntb_vl3:
! **	mov	x0, #?3
  **	ret
  */
  uint64_t cntb_vl3 () { return svcntb_pat (SV_VL3); }
  
  /*
  ** cntb_vl4:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntb_vl4 () { return svcntb_pat (SV_VL4); }
  
  /*
  ** cntb_vl5:
! **	mov	x0, #?5
  **	ret
  */
  uint64_t cntb_vl5 () { return svcntb_pat (SV_VL5); }
  
  /*
  ** cntb_vl6:
! **	mov	x0, #?6
  **	ret
  */
  uint64_t cntb_vl6 () { return svcntb_pat (SV_VL6); }
  
  /*
  ** cntb_vl7:
! **	mov	x0, #?7
  **	ret
  */
  uint64_t cntb_vl7 () { return svcntb_pat (SV_VL7); }
  
  /*
  ** cntb_vl8:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cntb_vl8 () { return svcntb_pat (SV_VL8); }
  
  /*
  ** cntb_vl16:
! **	mov	x0, #?16
  **	ret
  */
  uint64_t cntb_vl16 () { return svcntb_pat (SV_VL16); }
  
  /*
  ** cntb_vl32:
! **	mov	x0, #?32
  **	ret
  */
  uint64_t cntb_vl32 () { return svcntb_pat (SV_VL32); }
  
  /*
  ** cntb_vl64:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntb_vl64 () { return svcntb_pat (SV_VL64); }
  
  /*
  ** cntb_vl128:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntb_vl128 () { return svcntb_pat (SV_VL128); }
  
  /*
  ** cntb_vl256:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntb_vl256 () { return svcntb_pat (SV_VL256); }
  
  /*
  ** cntb_mul3:
! **	mov	x0, #?30
  **	ret
  */
  uint64_t cntb_mul3 () { return svcntb_pat (SV_MUL3); }
  
  /*
  ** cntb_mul4:
! **	mov	x0, #?32
  **	ret
  */
  uint64_t cntb_mul4 () { return svcntb_pat (SV_MUL4); }
  
  /*
  ** cntb_all:
! **	mov	x0, #?32
  **	ret
  */
  uint64_t cntb_all () { return svcntb_pat (SV_ALL); }
--- 10,128 ----
  
  /*
  ** cntb_pow2:
! **	mov	w0, 32
  **	ret
  */
  uint64_t cntb_pow2 () { return svcntb_pat (SV_POW2); }
  
  /*
  ** cntb_vl1:
! **	mov	w0, 1
  **	ret
  */
  uint64_t cntb_vl1 () { return svcntb_pat (SV_VL1); }
  
  /*
  ** cntb_vl2:
! **	mov	w0, 2
  **	ret
  */
  uint64_t cntb_vl2 () { return svcntb_pat (SV_VL2); }
  
  /*
  ** cntb_vl3:
! **	mov	w0, 3
  **	ret
  */
  uint64_t cntb_vl3 () { return svcntb_pat (SV_VL3); }
  
  /*
  ** cntb_vl4:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntb_vl4 () { return svcntb_pat (SV_VL4); }
  
  /*
  ** cntb_vl5:
! **	mov	w0, 5
  **	ret
  */
  uint64_t cntb_vl5 () { return svcntb_pat (SV_VL5); }
  
  /*
  ** cntb_vl6:
! **	mov	w0, 6
  **	ret
  */
  uint64_t cntb_vl6 () { return svcntb_pat (SV_VL6); }
  
  /*
  ** cntb_vl7:
! **	mov	w0, 7
  **	ret
  */
  uint64_t cntb_vl7 () { return svcntb_pat (SV_VL7); }
  
  /*
  ** cntb_vl8:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cntb_vl8 () { return svcntb_pat (SV_VL8); }
  
  /*
  ** cntb_vl16:
! **	mov	w0, 16
  **	ret
  */
  uint64_t cntb_vl16 () { return svcntb_pat (SV_VL16); }
  
  /*
  ** cntb_vl32:
! **	mov	w0, 32
  **	ret
  */
  uint64_t cntb_vl32 () { return svcntb_pat (SV_VL32); }
  
  /*
  ** cntb_vl64:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntb_vl64 () { return svcntb_pat (SV_VL64); }
  
  /*
  ** cntb_vl128:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntb_vl128 () { return svcntb_pat (SV_VL128); }
  
  /*
  ** cntb_vl256:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntb_vl256 () { return svcntb_pat (SV_VL256); }
  
  /*
  ** cntb_mul3:
! **	mov	w0, 30
  **	ret
  */
  uint64_t cntb_mul3 () { return svcntb_pat (SV_MUL3); }
  
  /*
  ** cntb_mul4:
! **	mov	w0, 32
  **	ret
  */
  uint64_t cntb_mul4 () { return svcntb_pat (SV_MUL4); }
  
  /*
  ** cntb_all:
! **	mov	w0, 32
  **	ret
  */
  uint64_t cntb_all () { return svcntb_pat (SV_ALL); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntd_pat_1.c	Sun May 31 22:32:10 2026
*************** extern "C" {
*** 10,128 ****
  
  /*
  ** cntd_pow2:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntd_pow2 () { return svcntd_pat (SV_POW2); }
  
  /*
  ** cntd_vl1:
! **	mov	x0, #?1
  **	ret
  */
  uint64_t cntd_vl1 () { return svcntd_pat (SV_VL1); }
  
  /*
  ** cntd_vl2:
! **	mov	x0, #?2
  **	ret
  */
  uint64_t cntd_vl2 () { return svcntd_pat (SV_VL2); }
  
  /*
  ** cntd_vl3:
! **	mov	x0, #?3
  **	ret
  */
  uint64_t cntd_vl3 () { return svcntd_pat (SV_VL3); }
  
  /*
  ** cntd_vl4:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntd_vl4 () { return svcntd_pat (SV_VL4); }
  
  /*
  ** cntd_vl5:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl5 () { return svcntd_pat (SV_VL5); }
  
  /*
  ** cntd_vl6:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl6 () { return svcntd_pat (SV_VL6); }
  
  /*
  ** cntd_vl7:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl7 () { return svcntd_pat (SV_VL7); }
  
  /*
  ** cntd_vl8:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl8 () { return svcntd_pat (SV_VL8); }
  
  /*
  ** cntd_vl16:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl16 () { return svcntd_pat (SV_VL16); }
  
  /*
  ** cntd_vl32:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl32 () { return svcntd_pat (SV_VL32); }
  
  /*
  ** cntd_vl64:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl64 () { return svcntd_pat (SV_VL64); }
  
  /*
  ** cntd_vl128:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl128 () { return svcntd_pat (SV_VL128); }
  
  /*
  ** cntd_vl256:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntd_vl256 () { return svcntd_pat (SV_VL256); }
  
  /*
  ** cntd_mul3:
! **	mov	x0, #?3
  **	ret
  */
  uint64_t cntd_mul3 () { return svcntd_pat (SV_MUL3); }
  
  /*
  ** cntd_mul4:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntd_mul4 () { return svcntd_pat (SV_MUL4); }
  
  /*
  ** cntd_all:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntd_all () { return svcntd_pat (SV_ALL); }
--- 10,128 ----
  
  /*
  ** cntd_pow2:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntd_pow2 () { return svcntd_pat (SV_POW2); }
  
  /*
  ** cntd_vl1:
! **	mov	w0, 1
  **	ret
  */
  uint64_t cntd_vl1 () { return svcntd_pat (SV_VL1); }
  
  /*
  ** cntd_vl2:
! **	mov	w0, 2
  **	ret
  */
  uint64_t cntd_vl2 () { return svcntd_pat (SV_VL2); }
  
  /*
  ** cntd_vl3:
! **	mov	w0, 3
  **	ret
  */
  uint64_t cntd_vl3 () { return svcntd_pat (SV_VL3); }
  
  /*
  ** cntd_vl4:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntd_vl4 () { return svcntd_pat (SV_VL4); }
  
  /*
  ** cntd_vl5:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl5 () { return svcntd_pat (SV_VL5); }
  
  /*
  ** cntd_vl6:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl6 () { return svcntd_pat (SV_VL6); }
  
  /*
  ** cntd_vl7:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl7 () { return svcntd_pat (SV_VL7); }
  
  /*
  ** cntd_vl8:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl8 () { return svcntd_pat (SV_VL8); }
  
  /*
  ** cntd_vl16:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl16 () { return svcntd_pat (SV_VL16); }
  
  /*
  ** cntd_vl32:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl32 () { return svcntd_pat (SV_VL32); }
  
  /*
  ** cntd_vl64:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl64 () { return svcntd_pat (SV_VL64); }
  
  /*
  ** cntd_vl128:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl128 () { return svcntd_pat (SV_VL128); }
  
  /*
  ** cntd_vl256:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntd_vl256 () { return svcntd_pat (SV_VL256); }
  
  /*
  ** cntd_mul3:
! **	mov	w0, 3
  **	ret
  */
  uint64_t cntd_mul3 () { return svcntd_pat (SV_MUL3); }
  
  /*
  ** cntd_mul4:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntd_mul4 () { return svcntd_pat (SV_MUL4); }
  
  /*
  ** cntd_all:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntd_all () { return svcntd_pat (SV_ALL); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c	Sun May 31 22:32:10 2026
*************** extern "C" {
*** 10,128 ****
  
  /*
  ** cnth_pow2:
! **	mov	x0, #?16
  **	ret
  */
  uint64_t cnth_pow2 () { return svcnth_pat (SV_POW2); }
  
  /*
  ** cnth_vl1:
! **	mov	x0, #?1
  **	ret
  */
  uint64_t cnth_vl1 () { return svcnth_pat (SV_VL1); }
  
  /*
  ** cnth_vl2:
! **	mov	x0, #?2
  **	ret
  */
  uint64_t cnth_vl2 () { return svcnth_pat (SV_VL2); }
  
  /*
  ** cnth_vl3:
! **	mov	x0, #?3
  **	ret
  */
  uint64_t cnth_vl3 () { return svcnth_pat (SV_VL3); }
  
  /*
  ** cnth_vl4:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cnth_vl4 () { return svcnth_pat (SV_VL4); }
  
  /*
  ** cnth_vl5:
! **	mov	x0, #?5
  **	ret
  */
  uint64_t cnth_vl5 () { return svcnth_pat (SV_VL5); }
  
  /*
  ** cnth_vl6:
! **	mov	x0, #?6
  **	ret
  */
  uint64_t cnth_vl6 () { return svcnth_pat (SV_VL6); }
  
  /*
  ** cnth_vl7:
! **	mov	x0, #?7
  **	ret
  */
  uint64_t cnth_vl7 () { return svcnth_pat (SV_VL7); }
  
  /*
  ** cnth_vl8:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cnth_vl8 () { return svcnth_pat (SV_VL8); }
  
  /*
  ** cnth_vl16:
! **	mov	x0, #?16
  **	ret
  */
  uint64_t cnth_vl16 () { return svcnth_pat (SV_VL16); }
  
  /*
  ** cnth_vl32:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cnth_vl32 () { return svcnth_pat (SV_VL32); }
  
  /*
  ** cnth_vl64:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cnth_vl64 () { return svcnth_pat (SV_VL64); }
  
  /*
  ** cnth_vl128:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cnth_vl128 () { return svcnth_pat (SV_VL128); }
  
  /*
  ** cnth_vl256:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cnth_vl256 () { return svcnth_pat (SV_VL256); }
  
  /*
  ** cnth_mul3:
! **	mov	x0, #?15
  **	ret
  */
  uint64_t cnth_mul3 () { return svcnth_pat (SV_MUL3); }
  
  /*
  ** cnth_mul4:
! **	mov	x0, #?16
  **	ret
  */
  uint64_t cnth_mul4 () { return svcnth_pat (SV_MUL4); }
  
  /*
  ** cnth_all:
! **	mov	x0, #?16
  **	ret
  */
  uint64_t cnth_all () { return svcnth_pat (SV_ALL); }
--- 10,128 ----
  
  /*
  ** cnth_pow2:
! **	mov	w0, 16
  **	ret
  */
  uint64_t cnth_pow2 () { return svcnth_pat (SV_POW2); }
  
  /*
  ** cnth_vl1:
! **	mov	w0, 1
  **	ret
  */
  uint64_t cnth_vl1 () { return svcnth_pat (SV_VL1); }
  
  /*
  ** cnth_vl2:
! **	mov	w0, 2
  **	ret
  */
  uint64_t cnth_vl2 () { return svcnth_pat (SV_VL2); }
  
  /*
  ** cnth_vl3:
! **	mov	w0, 3
  **	ret
  */
  uint64_t cnth_vl3 () { return svcnth_pat (SV_VL3); }
  
  /*
  ** cnth_vl4:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cnth_vl4 () { return svcnth_pat (SV_VL4); }
  
  /*
  ** cnth_vl5:
! **	mov	w0, 5
  **	ret
  */
  uint64_t cnth_vl5 () { return svcnth_pat (SV_VL5); }
  
  /*
  ** cnth_vl6:
! **	mov	w0, 6
  **	ret
  */
  uint64_t cnth_vl6 () { return svcnth_pat (SV_VL6); }
  
  /*
  ** cnth_vl7:
! **	mov	w0, 7
  **	ret
  */
  uint64_t cnth_vl7 () { return svcnth_pat (SV_VL7); }
  
  /*
  ** cnth_vl8:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cnth_vl8 () { return svcnth_pat (SV_VL8); }
  
  /*
  ** cnth_vl16:
! **	mov	w0, 16
  **	ret
  */
  uint64_t cnth_vl16 () { return svcnth_pat (SV_VL16); }
  
  /*
  ** cnth_vl32:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cnth_vl32 () { return svcnth_pat (SV_VL32); }
  
  /*
  ** cnth_vl64:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cnth_vl64 () { return svcnth_pat (SV_VL64); }
  
  /*
  ** cnth_vl128:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cnth_vl128 () { return svcnth_pat (SV_VL128); }
  
  /*
  ** cnth_vl256:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cnth_vl256 () { return svcnth_pat (SV_VL256); }
  
  /*
  ** cnth_mul3:
! **	mov	w0, 15
  **	ret
  */
  uint64_t cnth_mul3 () { return svcnth_pat (SV_MUL3); }
  
  /*
  ** cnth_mul4:
! **	mov	w0, 16
  **	ret
  */
  uint64_t cnth_mul4 () { return svcnth_pat (SV_MUL4); }
  
  /*
  ** cnth_all:
! **	mov	w0, 16
  **	ret
  */
  uint64_t cnth_all () { return svcnth_pat (SV_ALL); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c	Sun May 31 22:32:10 2026
*************** extern "C" {
*** 10,128 ****
  
  /*
  ** cntw_pow2:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cntw_pow2 () { return svcntw_pat (SV_POW2); }
  
  /*
  ** cntw_vl1:
! **	mov	x0, #?1
  **	ret
  */
  uint64_t cntw_vl1 () { return svcntw_pat (SV_VL1); }
  
  /*
  ** cntw_vl2:
! **	mov	x0, #?2
  **	ret
  */
  uint64_t cntw_vl2 () { return svcntw_pat (SV_VL2); }
  
  /*
  ** cntw_vl3:
! **	mov	x0, #?3
  **	ret
  */
  uint64_t cntw_vl3 () { return svcntw_pat (SV_VL3); }
  
  /*
  ** cntw_vl4:
! **	mov	x0, #?4
  **	ret
  */
  uint64_t cntw_vl4 () { return svcntw_pat (SV_VL4); }
  
  /*
  ** cntw_vl5:
! **	mov	x0, #?5
  **	ret
  */
  uint64_t cntw_vl5 () { return svcntw_pat (SV_VL5); }
  
  /*
  ** cntw_vl6:
! **	mov	x0, #?6
  **	ret
  */
  uint64_t cntw_vl6 () { return svcntw_pat (SV_VL6); }
  
  /*
  ** cntw_vl7:
! **	mov	x0, #?7
  **	ret
  */
  uint64_t cntw_vl7 () { return svcntw_pat (SV_VL7); }
  
  /*
  ** cntw_vl8:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cntw_vl8 () { return svcntw_pat (SV_VL8); }
  
  /*
  ** cntw_vl16:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntw_vl16 () { return svcntw_pat (SV_VL16); }
  
  /*
  ** cntw_vl32:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntw_vl32 () { return svcntw_pat (SV_VL32); }
  
  /*
  ** cntw_vl64:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntw_vl64 () { return svcntw_pat (SV_VL64); }
  
  /*
  ** cntw_vl128:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntw_vl128 () { return svcntw_pat (SV_VL128); }
  
  /*
  ** cntw_vl256:
! **	mov	x0, #?0
  **	ret
  */
  uint64_t cntw_vl256 () { return svcntw_pat (SV_VL256); }
  
  /*
  ** cntw_mul3:
! **	mov	x0, #?6
  **	ret
  */
  uint64_t cntw_mul3 () { return svcntw_pat (SV_MUL3); }
  
  /*
  ** cntw_mul4:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cntw_mul4 () { return svcntw_pat (SV_MUL4); }
  
  /*
  ** cntw_all:
! **	mov	x0, #?8
  **	ret
  */
  uint64_t cntw_all () { return svcntw_pat (SV_ALL); }
--- 10,128 ----
  
  /*
  ** cntw_pow2:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cntw_pow2 () { return svcntw_pat (SV_POW2); }
  
  /*
  ** cntw_vl1:
! **	mov	w0, 1
  **	ret
  */
  uint64_t cntw_vl1 () { return svcntw_pat (SV_VL1); }
  
  /*
  ** cntw_vl2:
! **	mov	w0, 2
  **	ret
  */
  uint64_t cntw_vl2 () { return svcntw_pat (SV_VL2); }
  
  /*
  ** cntw_vl3:
! **	mov	w0, 3
  **	ret
  */
  uint64_t cntw_vl3 () { return svcntw_pat (SV_VL3); }
  
  /*
  ** cntw_vl4:
! **	mov	w0, 4
  **	ret
  */
  uint64_t cntw_vl4 () { return svcntw_pat (SV_VL4); }
  
  /*
  ** cntw_vl5:
! **	mov	w0, 5
  **	ret
  */
  uint64_t cntw_vl5 () { return svcntw_pat (SV_VL5); }
  
  /*
  ** cntw_vl6:
! **	mov	w0, 6
  **	ret
  */
  uint64_t cntw_vl6 () { return svcntw_pat (SV_VL6); }
  
  /*
  ** cntw_vl7:
! **	mov	w0, 7
  **	ret
  */
  uint64_t cntw_vl7 () { return svcntw_pat (SV_VL7); }
  
  /*
  ** cntw_vl8:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cntw_vl8 () { return svcntw_pat (SV_VL8); }
  
  /*
  ** cntw_vl16:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntw_vl16 () { return svcntw_pat (SV_VL16); }
  
  /*
  ** cntw_vl32:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntw_vl32 () { return svcntw_pat (SV_VL32); }
  
  /*
  ** cntw_vl64:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntw_vl64 () { return svcntw_pat (SV_VL64); }
  
  /*
  ** cntw_vl128:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntw_vl128 () { return svcntw_pat (SV_VL128); }
  
  /*
  ** cntw_vl256:
! **	mov	w0, 0
  **	ret
  */
  uint64_t cntw_vl256 () { return svcntw_pat (SV_VL256); }
  
  /*
  ** cntw_mul3:
! **	mov	w0, 6
  **	ret
  */
  uint64_t cntw_mul3 () { return svcntw_pat (SV_MUL3); }
  
  /*
  ** cntw_mul4:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cntw_mul4 () { return svcntw_pat (SV_MUL4); }
  
  /*
  ** cntw_all:
! **	mov	w0, 8
  **	ret
  */
  uint64_t cntw_all () { return svcntw_pat (SV_ALL); }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c	Sun May 31 22:32:10 2026
*************** load_vl8 (int16_t *ptr)
*** 121,128 ****
  
  /*
  ** load_vl9:
! **	mov	(x[0-9]+), #?9
! **	whilelo	(p[0-7])\.h, xzr, \1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
--- 121,128 ----
  
  /*
  ** load_vl9:
! **	mov	w([0-9]+), 9
! **	whilelo	(p[0-7])\.h, xzr, x\1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
*************** load_vl9 (int16_t *ptr)
*** 134,141 ****
  
  /*
  ** load_vl15:
! **	mov	(x[0-9]+), #?15
! **	whilelo	(p[0-7])\.h, xzr, \1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
--- 134,141 ----
  
  /*
  ** load_vl15:
! **	mov	w([0-9]+), 15
! **	whilelo	(p[0-7])\.h, xzr, x\1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
*************** load_vl16 (int16_t *ptr)
*** 159,166 ****
  
  /*
  ** load_vl17:
! **	mov	(x[0-9]+), #?17
! **	whilelo	(p[0-7])\.h, xzr, \1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
--- 159,166 ----
  
  /*
  ** load_vl17:
! **	mov	w([0-9]+), 17
! **	whilelo	(p[0-7])\.h, xzr, x\1
  **	ld1h	z0\.h, \2/z, \[x0\]
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/const_2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/const_2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/const_2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/const_2.c	Sun May 31 22:32:10 2026
*************** TEST (uint64_t, 129)
*** 17,20 ****
  
  /* { dg-final { scan-assembler {\tmovi\tv([0-9]+)\.8h, 0x81\n[^:]*\tdup\tz[0-9]+\.q, z\1\.q\[0\]\n} } } */
  /* { dg-final { scan-assembler {\tmovi\tv([0-9]+)\.4s, 0x81\n[^:]*\tdup\tz[0-9]+\.q, z\1\.q\[0\]\n} } } */
! /* { dg-final { scan-assembler {\tmov\t(x[0-9]+), 129\n[^:]*\tmov\tz[0-9]+\.d, \1\n} } } */
--- 17,20 ----
  
  /* { dg-final { scan-assembler {\tmovi\tv([0-9]+)\.8h, 0x81\n[^:]*\tdup\tz[0-9]+\.q, z\1\.q\[0\]\n} } } */
  /* { dg-final { scan-assembler {\tmovi\tv([0-9]+)\.4s, 0x81\n[^:]*\tdup\tz[0-9]+\.q, z\1\.q\[0\]\n} } } */
! /* { dg-final { scan-assembler {\tmov\tw([0-9]+), 129\n[^:]*\tmov\tz[0-9]+\.d, x\1\n} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/const_3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/const_3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/const_3.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/const_3.c	Sun May 31 22:32:10 2026
*************** TEST (uint64_t, 0x1234)
*** 17,20 ****
  
  /* { dg-final { scan-assembler {\tmov\t(w[0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.h, \1\n} } } */
  /* { dg-final { scan-assembler {\tmov\t(w[0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.s, \1\n} } } */
! /* { dg-final { scan-assembler {\tmov\t(x[0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.d, \1\n} } } */
--- 17,20 ----
  
  /* { dg-final { scan-assembler {\tmov\t(w[0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.h, \1\n} } } */
  /* { dg-final { scan-assembler {\tmov\t(w[0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.s, \1\n} } } */
! /* { dg-final { scan-assembler {\tmov\tw([0-9]+), 4660\n[^:]*\tmov\tz[0-9]+\.d, x\1\n} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c	Sun May 31 22:32:10 2026
*************** foo (uint64_t *restrict x, uint64_t *res
*** 11,17 ****
      x[i] += y[index[i]];
  }
  
! /* { dg-final { scan-assembler-times {\tldr\td[0-9]+, \[x[0-9]+, x[0-9]+, lsl #?3\]} 2 } } */
  /* { dg-final { scan-assembler-not {\tshl\tv[0-9]+\.2d,} } } */
  /* { dg-final { scan-assembler-not {\tumov\t} } } */
  /* { dg-final { scan-assembler {\tadd\tv[0-9]+\.2d,} } } */
--- 11,18 ----
      x[i] += y[index[i]];
  }
  
! /* { dg-final { scan-assembler-times {\tldr\td[0-9]+, \[x[0-9]+, x[0-9]+, lsl #?3\]} 1 } } */
! /* { dg-final { scan-assembler-times {\tld1\t{v[0-9]+\.d}\[1\], \[x[0-9]+\]} 1 } } */
  /* { dg-final { scan-assembler-not {\tshl\tv[0-9]+\.2d,} } } */
  /* { dg-final { scan-assembler-not {\tumov\t} } } */
  /* { dg-final { scan-assembler {\tadd\tv[0-9]+\.2d,} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_sve.h>
+ 
+ extern void abort (void) __attribute__ ((noreturn));
+ 
+ volatile int cond = 1;
+ 
+ int __attribute__ ((noipa))
+ a (void)
+ {
+   return cond;
+ }
+ 
+ #define TEST_LOAD(TYPE, NAME, BITS)					\
+   int __attribute__ ((noipa))						\
+   test_##NAME (void)							\
+   {									\
+     TYPE *g = __builtin_malloc (sizeof (TYPE));				\
+     int c = 0;								\
+     if (!g)								\
+       abort ();								\
+     g[0] = 0;								\
+     if (a ())								\
+       {									\
+ 	g[0] = 1;							\
+ 	c = 2;								\
+       }									\
+     svint##BITS##_t d						\
+       = svld1_s##BITS (svptrue_pat_b##BITS (SV_VL1), g);		\
+     svbool_t e = svcmpgt_s##BITS (svptrue_b##BITS (), d,		\
+ 				  svdup_n_s##BITS (0));		\
+     int f = svptest_any (svptrue_pat_b##BITS (SV_VL1), e);		\
+     if (f && c != 2)							\
+       abort ();								\
+     return f;								\
+   }
+ 
+ TEST_LOAD (signed char, byte, 8)
+ TEST_LOAD (short, short, 16)
+ TEST_LOAD (int, int, 32)
+ TEST_LOAD (long, long, 64)
+ 
+ int
+ main (void)
+ {
+   if (!test_byte ()
+       || !test_short ()
+       || !test_int ()
+       || !test_long ())
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 4
+ int a[N] = {0, 0, 0, 1};
+ int b[N] = {0, 0, 0, 1};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\]
+ **	cmplt	p[0-9]+\.s, p[0-9]+/z, z[0-9]+\.s, z[0-9]+\.s
+ **	ptest	p[0-9]+, p[0-9]+\.b
+ **	cset	w0, any
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect10.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect10.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect10.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect10.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 8
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\]
+ **	cmplt	p[0-9]+\.h, p[0-9]+/z, z[0-9]+\.h, z[0-9]+\.h
+ **	ptest	p[0-9]+, p[0-9]+\.b
+ **	cset	w0, any
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect11.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ /*
+ ** f1:
+ **	...
+ **	whilelo	p[0-9]+\.d, x[0-9]+, x[0-9]+
+ **	...
+ **	ld1d	z[0-9]+\.d, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	ld1d	z[0-9]+\.d, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	cmplo	p[0-9]+\.d, p[0-9]+/z, z[0-9]+\.d, z[0-9]+\.d
+ **	...
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	...
+ **	cmp	x[0-9]+, x[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa))
+ int f1 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 0;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 1;
+ }
+ 
+ /*
+ ** f2:
+ **	...
+ **	whilelo	p[0-9]+\.d, x[0-9]+, x[0-9]+
+ **	...
+ **	ld1d	z[0-9]+\.d, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	ld1d	z[0-9]+\.d, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	cmplo	p[0-9]+\.d, p[0-9]+/z, z[0-9]+\.d, z[0-9]+\.d
+ **	...
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	ldr	x[0-9]+, \[x[0-9]+, x[0-9]+, lsl 3\]
+ **	...
+ **	cmp	x[0-9]+, x[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa))
+ int f2 (const unsigned long *restrict a, const unsigned long *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       if (a[i] < b[i])
+ 	return 1;
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
+ 
+ int main (void)
+ {
+   static unsigned long a[3] __attribute__ ((aligned (16))) = {10, 1, 0};
+   static unsigned long b[3] __attribute__ ((aligned (16))) = {9, 2, 0};
+ 
+   if (f1 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   if (f2 (a, b, 3) != 1)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect2.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	whilelo	p[0-9]+\.s, w[0-9]+, w[0-9]+
+ **	...
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	cmpgt	p[0-9]+\.s, p[0-9]+/z, z[0-9]+\.s, z[0-9]+\.s
+ **	b\.none	\.L[0-9]+
+ **	mov	w0, 1
+ **	ret
+ **	mov	w0, 0
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect3.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect3.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	whilelo	p[0-9]+\.s, w[0-9]+, w[0-9]+
+ **	...
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	cmpgt	p[0-9]+\.s, p[0-9]+/z, z[0-9]+\.s, z[0-9]+\.s
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect4.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect4.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ld1h	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	ld1h	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	cmpgt	p[0-9]+\.h, p[0-9]+/z, z[0-9]+\.h, z[0-9]+\.h
+ **	...
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect5.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect5.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect5.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ld1h	z[0-9]+\.h, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	ld1h	z[0-9]+\.h, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	cmpgt	p[0-9]+\.h, p[0-9]+/z, z[0-9]+\.h, z[0-9]+\.h
+ **	...
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return i;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect6.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect6.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect6.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect6.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ short a[N] = {0};
+ short b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ld1h	z[0-9]+\.h, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	ld1h	z[0-9]+\.h, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 1\]
+ **	cmpgt	p[0-9]+\.h, p[0-9]+/z, z[0-9]+\.h, z[0-9]+\.h
+ **	...
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	ldrsh	w[0-9]+, \[x[0-9]+, x[0-9]+\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa, noinline))
+ short foo (void)
+ {
+   for (unsigned short i = 0; i < N; i++)
+     {
+       if (a[i] > b[i])
+ 	return a[i];
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect7.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect7.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect7.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	ld2w	\{z[0-9]+\.s - z[0-9]+\.s\}, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	...
+ **	cmpgt	p[0-9]+\.s, p[0-9]+/z, z[0-9]+\.s, z[0-9]+\.s
+ **	ptest	p[0-9]+, p[0-9]+\.b
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	ret
+ **	...
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < (N / 2); i += 2)
+     {
+       if (a[i] > b[i])
+ 	return 1;
+ 
+       if (a[i + 1] > b[i + 1])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ /*
+ ** add:
+ **	...
+ **	cmpeq	p[0-9]+\.s, p[0-9]+/z, z[0-9]+\.s, #1
+ **	...
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ld1w	z[0-9]+\.s, p[0-9]+/z, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	add	z[0-9]+\.s, z[0-9]+\.s, z[0-9]+\.s
+ **	st1w	z[0-9]+\.s, p[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	ldr	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	add	w[0-9]+, w[0-9]+, w[0-9]+
+ **	str	w[0-9]+, \[x[0-9]+, x[0-9]+, lsl 2\]
+ **	...
+ **	ret
+ **	...
+ */
+ void
+ add (int n, int *__restrict a, int *__restrict b, int *__restrict c)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       c[i] = a[i] + b[i];
+       if (i > 1000)
+ 	break;
+     }
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect9.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect9.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/noeffect9.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/noeffect9.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve --param=aarch64-autovec-preference=sve-only -msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define N 1000
+ int a[N] = {0};
+ int b[N] = {0};
+ int c[N] = {0};
+ 
+ /*
+ ** foo:
+ **	...
+ **	add	x[0-9]+, x[0-9]+, 4000
+ **	add	x[0-9]+, x[0-9]+, 3648
+ **	mov	w0, 0
+ **	b	\.L[0-9]+
+ **	...
+ **	ldr	w[0-9]+, \[x[0-9]+[^\n]*\]
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	...
+ **	mov	w0, 1
+ **	ret
+ **	mov	w0, 0
+ **	ret
+ */
+ __attribute__ ((noipa, noinline))
+ int foo (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       if (a[i] > b[i] && a[i] > c[i])
+ 	return 1;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c	Sun May 31 22:32:10 2026
***************
*** 6,12 ****
  
  /*
  ** test_1:
! **	mov	x12, #?4608
  **	sub	sp, sp, x12
  **	str	p4, \[sp\]
  **	str	p5, \[sp, #1, mul vl\]
--- 6,12 ----
  
  /*
  ** test_1:
! **	mov	w12, 4608
  **	sub	sp, sp, x12
  **	str	p4, \[sp\]
  **	str	p5, \[sp, #1, mul vl\]
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 58,64 ****
  /*
  ** test_3:
  **	cntb	x12
! **	mov	x13, #?4128
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
--- 58,64 ----
  /*
  ** test_3:
  **	cntb	x12
! **	mov	w13, 4128
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
*************** test_2 (void)
*** 73,79 ****
  **	addvl	sp, sp, #1
  **	ldp	x24, x25, \[sp\]
  **	ldr	x26, \[sp, 16\]
! **	mov	x12, #?4128
  **	add	sp, sp, x12
  **	ret
  */
--- 73,79 ----
  **	addvl	sp, sp, #1
  **	ldp	x24, x25, \[sp\]
  **	ldr	x26, \[sp, 16\]
! **	mov	w12, 4128
  **	add	sp, sp, x12
  **	ret
  */
*************** test_6 (void)
*** 166,172 ****
  /*
  ** test_7:
  **	cntb	x12
! **	mov	x13, #?4112
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
--- 166,172 ----
  /*
  ** test_7:
  **	cntb	x12
! **	mov	w13, 4112
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
*************** test_6 (void)
*** 182,188 ****
  **	ldr	p4, \[sp\]
  **	addvl	sp, sp, #1
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 182,188 ----
  **	ldr	p4, \[sp\]
  **	addvl	sp, sp, #1
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 198,204 ****
  /*
  ** test_8:
  **	cntb	x12
! **	mov	x13, #?4144
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
--- 198,204 ----
  /*
  ** test_8:
  **	cntb	x12
! **	mov	w13, 4144
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
*************** test_7 (void)
*** 218,224 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 218,224 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 234,240 ****
  /*
  ** test_9:
  **	cntb	x12
! **	mov	x13, #?4112
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
--- 234,240 ----
  /*
  ** test_9:
  **	cntb	x12
! **	mov	w13, 4112
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
*************** test_8 (void)
*** 250,256 ****
  **	ldr	p4, \[sp\]
  **	addvl	sp, sp, #1
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 250,256 ----
  **	ldr	p4, \[sp\]
  **	addvl	sp, sp, #1
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 266,272 ****
  /*
  ** test_10:
  **	cntb	x12
! **	mov	x13, #?4144
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
--- 266,272 ----
  /*
  ** test_10:
  **	cntb	x12
! **	mov	w13, 4144
  **	add	x12, x12, x13
  **	mov	x11, sp
  **	...
*************** test_9 (int n)
*** 286,292 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 286,292 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 49,55 ****
  
  /*
  ** test_3:
! **	mov	x12, #?4256
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 128\]
  **	str	x26, \[sp, 144\]
--- 49,55 ----
  
  /*
  ** test_3:
! **	mov	w12, 4256
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 128\]
  **	str	x26, \[sp, 144\]
*************** test_6 (void)
*** 136,142 ****
  
  /*
  ** test_7:
! **	mov	x12, #?4240
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
--- 136,142 ----
  
  /*
  ** test_7:
! **	mov	w12, 4240
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
*************** test_6 (void)
*** 148,154 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?128
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 148,154 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?128
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 163,169 ****
  
  /*
  ** test_8:
! **	mov	x12, #?4272
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
--- 163,169 ----
  
  /*
  ** test_8:
! **	mov	w12, 4272
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
*************** test_7 (void)
*** 179,185 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 179,185 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 194,200 ****
  
  /*
  ** test_9:
! **	mov	x12, #?4240
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
--- 194,200 ----
  
  /*
  ** test_9:
! **	mov	w12, 4240
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
*************** test_8 (void)
*** 206,212 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?128
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 206,212 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?128
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 221,227 ****
  
  /*
  ** test_10:
! **	mov	x12, #?4272
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
--- 221,227 ----
  
  /*
  ** test_10:
! **	mov	w12, 4272
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 128\]
  **	add	x29, sp, #?128
*************** test_9 (int n)
*** 237,243 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 237,243 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_10 (int n)
*** 254,260 ****
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	x12, #?64576
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 128\]
--- 254,260 ----
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	w12, 64576
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 128\]
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 49,55 ****
  
  /*
  ** test_3:
! **	mov	x12, #?4144
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 16\]
  **	str	x26, \[sp, 32\]
--- 49,55 ----
  
  /*
  ** test_3:
! **	mov	w12, 4144
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 16\]
  **	str	x26, \[sp, 32\]
*************** test_6 (void)
*** 136,142 ****
  
  /*
  ** test_7:
! **	mov	x12, #?4128
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
--- 136,142 ----
  
  /*
  ** test_7:
! **	mov	w12, 4128
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
*************** test_6 (void)
*** 148,154 ****
  **	ldr	p4, \[sp\]
  **	add	sp, sp, #?16
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 148,154 ----
  **	ldr	p4, \[sp\]
  **	add	sp, sp, #?16
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 163,169 ****
  
  /*
  ** test_8:
! **	mov	x12, #?4160
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
--- 163,169 ----
  
  /*
  ** test_8:
! **	mov	w12, 4160
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
*************** test_7 (void)
*** 179,185 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 179,185 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 194,200 ****
  
  /*
  ** test_9:
! **	mov	x12, #?4128
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
--- 194,200 ----
  
  /*
  ** test_9:
! **	mov	w12, 4128
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
*************** test_8 (void)
*** 206,212 ****
  **	ldr	p4, \[sp\]
  **	add	sp, sp, #?16
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 206,212 ----
  **	ldr	p4, \[sp\]
  **	add	sp, sp, #?16
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 221,227 ****
  
  /*
  ** test_10:
! **	mov	x12, #?4160
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
--- 221,227 ----
  
  /*
  ** test_10:
! **	mov	w12, 4160
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
*************** test_9 (int n)
*** 237,243 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 237,243 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_10 (int n)
*** 254,260 ****
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	x12, #?64464
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
--- 254,260 ----
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	w12, 64464
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 16\]
  **	add	x29, sp, #?16
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 49,55 ****
  
  /*
  ** test_3:
! **	mov	x12, #?4384
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 256\]
  **	str	x26, \[sp, 272\]
--- 49,55 ----
  
  /*
  ** test_3:
! **	mov	w12, 4384
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 256\]
  **	str	x26, \[sp, 272\]
*************** test_6 (void)
*** 136,142 ****
  
  /*
  ** test_7:
! **	mov	x12, #?4368
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
--- 136,142 ----
  
  /*
  ** test_7:
! **	mov	w12, 4368
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
*************** test_6 (void)
*** 148,154 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?256
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 148,154 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?256
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 163,169 ****
  
  /*
  ** test_8:
! **	mov	x12, #?4400
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
--- 163,169 ----
  
  /*
  ** test_8:
! **	mov	w12, 4400
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
*************** test_7 (void)
*** 179,185 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 179,185 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 194,200 ****
  
  /*
  ** test_9:
! **	mov	x12, #?4368
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
--- 194,200 ----
  
  /*
  ** test_9:
! **	mov	w12, 4368
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
*************** test_8 (void)
*** 206,212 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?256
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 206,212 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?256
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 221,227 ****
  
  /*
  ** test_10:
! **	mov	x12, #?4400
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
--- 221,227 ----
  
  /*
  ** test_10:
! **	mov	w12, 4400
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 256\]
  **	add	x29, sp, #?256
*************** test_9 (int n)
*** 237,243 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 237,243 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_10 (int n)
*** 254,260 ****
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	x12, #?64704
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 256\]
--- 254,260 ----
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	w12, 64704
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 256\]
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_256.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 49,55 ****
  
  /*
  ** test_3:
! **	mov	x12, #?4160
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 32\]
  **	str	x26, \[sp, 48\]
--- 49,55 ----
  
  /*
  ** test_3:
! **	mov	w12, 4160
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 32\]
  **	str	x26, \[sp, 48\]
*************** test_6 (void)
*** 136,142 ****
  
  /*
  ** test_7:
! **	mov	x12, #?4144
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
--- 136,142 ----
  
  /*
  ** test_7:
! **	mov	w12, 4144
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
*************** test_6 (void)
*** 148,154 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?32
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 148,154 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?32
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 163,169 ****
  
  /*
  ** test_8:
! **	mov	x12, #?4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
--- 163,169 ----
  
  /*
  ** test_8:
! **	mov	w12, 4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
*************** test_7 (void)
*** 179,185 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 179,185 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 194,200 ****
  
  /*
  ** test_9:
! **	mov	x12, #?4144
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
--- 194,200 ----
  
  /*
  ** test_9:
! **	mov	w12, 4144
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
*************** test_8 (void)
*** 206,212 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?32
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 206,212 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?32
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 221,227 ****
  
  /*
  ** test_10:
! **	mov	x12, #?4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
--- 221,227 ----
  
  /*
  ** test_10:
! **	mov	w12, 4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
*************** test_9 (int n)
*** 237,243 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 237,243 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_10 (int n)
*** 254,260 ****
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	x12, #?64480
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
--- 254,260 ----
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	w12, 64480
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 32\]
  **	add	x29, sp, #?32
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_512.c	Sun May 31 22:32:10 2026
*************** test_2 (void)
*** 49,55 ****
  
  /*
  ** test_3:
! **	mov	x12, #?4192
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 64\]
  **	str	x26, \[sp, 80\]
--- 49,55 ----
  
  /*
  ** test_3:
! **	mov	w12, 4192
  **	sub	sp, sp, x12
  **	stp	x24, x25, \[sp, 64\]
  **	str	x26, \[sp, 80\]
*************** test_6 (void)
*** 136,142 ****
  
  /*
  ** test_7:
! **	mov	x12, #?4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
--- 136,142 ----
  
  /*
  ** test_7:
! **	mov	w12, 4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
*************** test_6 (void)
*** 148,154 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?64
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 148,154 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?64
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_7 (void)
*** 163,169 ****
  
  /*
  ** test_8:
! **	mov	x12, #?4208
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
--- 163,169 ----
  
  /*
  ** test_8:
! **	mov	w12, 4208
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
*************** test_7 (void)
*** 179,185 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 179,185 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_8 (void)
*** 194,200 ****
  
  /*
  ** test_9:
! **	mov	x12, #?4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
--- 194,200 ----
  
  /*
  ** test_9:
! **	mov	w12, 4176
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
*************** test_8 (void)
*** 206,212 ****
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?64
  **	ldp	x29, x30, \[sp\]
! **	mov	x12, #?4112
  **	add	sp, sp, x12
  **	ret
  */
--- 206,212 ----
  **	ldr	z16, \[sp\]
  **	add	sp, sp, #?64
  **	ldp	x29, x30, \[sp\]
! **	mov	w12, 4112
  **	add	sp, sp, x12
  **	ret
  */
*************** test_9 (int n)
*** 221,227 ****
  
  /*
  ** test_10:
! **	mov	x12, #?4208
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
--- 221,227 ----
  
  /*
  ** test_10:
! **	mov	w12, 4208
  **	sub	sp, sp, x12
  **	stp	x29, x30, \[sp, 64\]
  **	add	x29, sp, #?64
*************** test_9 (int n)
*** 237,243 ****
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	x12, #?4144
  **	add	sp, sp, x12
  **	ret
  */
--- 237,243 ----
  **	ldp	x29, x30, \[sp\]
  **	ldp	x24, x25, \[sp, 16\]
  **	ldr	x26, \[sp, 32\]
! **	mov	w12, 4144
  **	add	sp, sp, x12
  **	ret
  */
*************** test_10 (int n)
*** 254,260 ****
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	x12, #?64512
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 64\]
--- 254,260 ----
  ** test_11:
  **	sub	sp, sp, #65536
  **	str	xzr, \[sp, 1024\]
! **	mov	w12, 64512
  **	sub	sp, sp, x12
  **	str	xzr, \[sp, 1024\]
  **	stp	x29, x30, \[sp, 64\]
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c	Sun May 31 22:32:10 2026
*************** test_nonpst2 (union nonpst2 x)
*** 895,903 ****
  
  /*
  ** ret_nonpst2:
! **	mov	x0, #?1
  **	movk	x0, #?0x3, lsl #?32
! **	mov	x1, #?5
  **	movk	x1, #?0x7, lsl #?32
  **	ret
  */
--- 895,903 ----
  
  /*
  ** ret_nonpst2:
! **	mov	w0, #?1
  **	movk	x0, #?0x3, lsl #?32
! **	mov	w1, #?5
  **	movk	x1, #?0x7, lsl #?32
  **	ret
  */
*************** test_nonpst4 (union nonpst4 x)
*** 973,980 ****
  
  /*
  ** ret_nonpst4:
! **	mov	x0, 1
! **	mov	x1, 2
  **	ret
  */
  /* { dg-final { scan-assembler-not {\t\.variant_pcs\tret_nonpst4\n} } } */
--- 973,980 ----
  
  /*
  ** ret_nonpst4:
! **	mov	w0, 1
! **	mov	w1, 2
  **	ret
  */
  /* { dg-final { scan-assembler-not {\t\.variant_pcs\tret_nonpst4\n} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c	Sun May 31 22:32:10 2026
***************
*** 6,10 ****
  
  ALL_PRED_UINT64 (cntp, IMPLICIT)
  
! /* { dg-final { scan-assembler-times {\t.cfi_startproc\n\tmov\tx0, 0\n\tret\n} 4 } } */
  /* { dg-final { scan-assembler-times {\t.cfi_startproc\n} 4 } } */
--- 6,10 ----
  
  ALL_PRED_UINT64 (cntp, IMPLICIT)
  
! /* { dg-final { scan-assembler-times {\t.cfi_startproc\n\tmov\tw0, 0\n\tret\n} 4 } } */
  /* { dg-final { scan-assembler-times {\t.cfi_startproc\n} 4 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/slp_1.c	Sun May 31 22:32:10 2026
*************** vec_slp_##TYPE (TYPE *restrict a, TYPE b
*** 30,41 ****
  TEST_ALL (VEC_PERM)
  
  /* We should use one DUP for each of the 8-, 16- and 32-bit types,
!    although we currently use LD1RW for _Float16.  We should use two
     DUPs for each of the three 64-bit types.  */
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.h, [hw]} 2 } } */
! /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.s, [sw]} 2 } } */
! /* { dg-final { scan-assembler-times {\tld1rw\tz[0-9]+\.s, } 1 } } */
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.d, [dx]} 9 } } */
  /* { dg-final { scan-assembler-times {\tzip1\tz[0-9]+\.d, z[0-9]+\.d, z[0-9]+\.d\n} 3 } } */
  /* { dg-final { scan-assembler-not {\tzip2\t} } } */
  
--- 30,42 ----
  TEST_ALL (VEC_PERM)
  
  /* We should use one DUP for each of the 8-, 16- and 32-bit types,
!    (and we now use fmov + ins for _Float16).  We should use two
     DUPs for each of the three 64-bit types.  */
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.h, [hw]} 2 } } */
! /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.s, [sw]} 3 } } */
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.d, [dx]} 9 } } */
+ /* { dg-final { scan-assembler-times {\tfmov\th[0-9]+, h} 1 } } */
+ /* { dg-final { scan-assembler-times {\tins\tv[0-9]+\.h\[1\], v[0-9]+\.h\[0\]} 1 } } */
  /* { dg-final { scan-assembler-times {\tzip1\tz[0-9]+\.d, z[0-9]+\.d, z[0-9]+\.d\n} 3 } } */
  /* { dg-final { scan-assembler-not {\tzip2\t} } } */
  
*************** TEST_ALL (VEC_PERM)
*** 53,59 ****
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 6 } } */
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 6 } } */
  /* { dg-final { scan-assembler-not {\tldr} } } */
! /* { dg-final { scan-assembler-times {\tstr} 2 } } */
! /* { dg-final { scan-assembler-times {\tstr\th[0-9]+} 2 } } */
  
  /* { dg-final { scan-assembler-not {\tuqdec} } } */
--- 54,59 ----
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 6 } } */
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 6 } } */
  /* { dg-final { scan-assembler-not {\tldr} } } */
! /* { dg-final { scan-assembler-not {\tstr} } } */
  
  /* { dg-final { scan-assembler-not {\tuqdec} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,382 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ #define TESTCASE(TYPE, ETYPE, T, SZ, NUM, MULT, ...)\
+   sv##TYPE##SZ##_t test_##TYPE##SZ##_##NUM (ETYPE x0, ETYPE x1, ETYPE x2, ETYPE x3,\
+ 					    ETYPE x4, ETYPE x5, ETYPE x6, ETYPE x7)\
+   {\
+     return svdupq_n_##T##SZ (__VA_ARGS__);\
+   }
+ 
+ #include "../vec-init-23.c"
+ 
+ /*
+ ** test_int8_1:
+ **	mov	z0\.b, w0
+ **	ret
+ */
+ 	
+ /*
+ ** test_int8_2:
+ **	bfi	w0, w1, 8, 8
+ **	mov	z0\.h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_3:
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w0, w2, 16, 8
+ **	bfi	w0, w3, 24, 8
+ **	mov	z0\.s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_4:
+ **	bfi	w0, w2, 8, 8
+ **	bfi	w1, w3, 8, 8
+ **	bfi	w0, w4, 16, 8
+ **	bfi	w1, w5, 16, 8
+ **	bfi	w0, w6, 24, 8
+ **	bfi	w1, w7, 24, 8
+ **	dup	v31\.2s, w0
+ **	dup	v30\.2s, w1
+ **	zip1	v31\.16b, v31\.16b, v30\.16b
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_5:
+ **	uxtb	w0, w0
+ **	mov	z0\.h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_6:
+ **	mov	w1, 0
+ **	bfi	w1, w0, 8, 8
+ **	mov	z0\.h, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_7:
+ **	mov	w2, 16777472
+ **	bfi	w2, w0, 0, 8
+ **	bfi	w2, w1, 8, 8
+ **	mov	z0\.s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_8:
+ **	mov	w2, 16777472
+ **	bfi	w2, w0, 16, 8
+ **	bfi	w2, w1, 24, 8
+ **	mov	z0\.s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_9:
+ **	mov	w2, 16777216
+ **	bfi	w2, w0, 0, 8
+ **	bfi	w2, w1, 16, 8
+ **	mov	z0.s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_10:
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w0, w2, 16, 8
+ **	bfi	w0, w3, 24, 8
+ **	dup	v31\.2s, w0
+ **	adrp	x0, .LANCHOR[0-9]+
+ **	ldr	d30, \[x0, #:lo12:.LANCHOR[0-9]+\]
+ **	zip1	v31\.16b, v31\.16b, v30\.16b
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_11:
+ **	bfi	w0, w1, 8, 8
+ **	adrp	x4, .LANCHOR[0-9]+
+ **	bfi	w0, w2, 16, 8
+ **	ldr	d31, \[x4, #:lo12:\.LANCHOR[0-9]+\]
+ **	bfi	w0, w3, 24, 8
+ **	dup	v30\.2s, w0
+ **	zip1	v31\.16b, v31\.16b, v30\.16b
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_12:
+ **	mov	w4, 255
+ **	movk	w4, 0x201, lsl 16
+ **	bfi	w4, w0, 0, 8
+ **	mov	w0, 256
+ **	movk	w0, 0x302, lsl 16
+ **	bfi	w0, w1, 0, 8
+ **	bfi	w4, w2, 16, 8
+ **	bfi	w0, w3, 16, 8
+ **	dup	v31\.2s, w4
+ **	dup	v30\.2s, w0
+ **	zip1	v31\.16b, v31\.16b, v30\.16b
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_13:
+ **	mov	w4, 256
+ **	movk	w4, 0x302, lsl 16
+ **	bfi	w4, w0, 8, 8
+ **	mov	w0, 513
+ **	movk	w0, 0x403, lsl 16
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w4, w2, 24, 8
+ **	bfi	w0, w3, 24, 8
+ **	dup	v31\.2s, w4
+ **	dup	v30\.2s, w0
+ **	zip1	v31\.16b, v31\.16b, v30\.16b
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_1:
+ **	fcvt	h0, s0
+ **	mov	z0\.h, h0
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_2:
+ **	fcvt	h1, s1
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	mov	z0\.s, s0
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_3:
+ **	uzp1	v2\.2s, v0\.2s, v2\.2s
+ **	uzp1	v3\.2s, v1\.2s, v3\.2s
+ **	zip1	v3\.4s, v2\.4s, v3\.4s
+ **	fcvtn	v3\.4h, v3\.4s
+ **	mov	z0\.d, d3
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_4:
+ **	fcvt	h0, s0
+ **	fmov	h0, h0
+ **	mov	z0\.s, s0
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_5:
+ **	movi	v31\.4h, #0
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v31\.4h, v0\.4h
+ **	mov	z0\.s, s0
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_6:
+ **	fcvt	h2, s0
+ **	fcvt	h1, s1
+ **	fmov	h31, 1.0e\+0
+ **	fmov	h2, h2
+ **	uzp1	v1\.4h, v1\.4h, v31\.4h
+ **	dup	v0\.2s, v2\.s\[0\]
+ **	dup	v1\.2s, v1\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	dup	z0\.q, z0\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_7:
+ **	fcvt	h3, s0
+ **	fcvt	h2, s1
+ **	movi	v0\.4h, #0
+ **	fmov	h1, 1.0e\+0
+ **	uzp1	v1\.4h, v1\.4h, v2\.4h
+ **	uzp1	v0\.4h, v0\.4h, v3\.4h
+ **	dup	v1\.2s, v1\.s\[0\]
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	dup	z0\.q, z0\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_8:
+ **	fcvt	h1, s1
+ **	fcvt	h0, s0
+ **	movi	v31\.2s, 0x3c, lsl 24
+ **	uzp1	v0\.4h, v0\.4h, v1.4h
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	dup	z0\.q, z0\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_1:
+ **	mov	z0\.h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_2:
+ **	bfi	w0, w1, 16, 16
+ **	mov	z0\.s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_3:
+ **	bfi	w0, w2, 16, 16
+ **	bfi	w1, w3, 16, 16
+ **	dup	v31\.2s, w0
+ **	dup	v30\.2s, w1
+ **	zip1	v31\.8h, v31\.8h, v30\.8h
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_4:
+ **	uxth	w0, w0
+ **	mov	z0\.s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_5:
+ **	mov	w1, 0
+ **	bfi	w1, w0, 16, 16
+ **	mov	z0\.s, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_6:
+ **	uxth	w0, w0
+ **	dup	v31\.2s, w0
+ **	mov	w0, 1
+ **	bfi	w1, w0, 16, 16
+ **	dup	v30\.2s, w1
+ **	zip1	v31\.8h, v31\.8h, v30\.8h
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_7:
+ **	mov	w2, 0
+ **	bfi	w2, w0, 16, 16
+ **	mov	w0, 65537
+ **	bfi	w0, w1, 16, 16
+ **	dup	v31\.2s, w2
+ **	dup	v30\.2s, w0
+ **	zip1	v31\.8h, v31\.8h, v30\.8h
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_8:
+ **	bfi	w0, w1, 16, 16
+ **	movi	v31\.2s, 0x1, lsl 16
+ **	dup	v30\.2s, w0
+ **	zip1	v31\.8h, v31\.8h, v30\.8h
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_1:
+ **	mov	z0\.s, s0
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_2:
+ **	uzp1	v0\.2s, v0\.2s, v1\.2s
+ **	mov	z0\.d, d0
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_3:
+ **	fmov	s0, s0
+ **	mov	z0\.d, d0
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_4:
+ **	movi	v31\.2s, #0
+ **	uzp1	v0\.2s, v31\.2s, v0\.2s
+ **	mov	z0\.d, d0
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_1:
+ **	mov	z0\.s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_2:
+ **	fmov	s0, w0
+ **	ins	v0\.s\[1\], w1
+ **	mov	z0\.d, d0
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_3:
+ **	fmov	s0, w0
+ **	mov	z0\.d, d0
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_4:
+ **	dup	v30\.2s, w0
+ **	movi	v31\.2s, 0
+ **	zip1	v31\.4s, v31\.4s, v30\.4s
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int64_1:
+ **	mov	z0\.d, x0	
+ **	ret
+ */
+ 
+ /*
+ ** test_float64_1:
+ **	mov	z0\.d, d0	
+ **	ret
+ */
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fabs	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f16_z_tied1, svfloat16_t,
+ 		z0 = svabs_f16_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_f16_z_untied:
+ **	fabs	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f16_z_untied, svfloat16_t,
+ 		z0 = svabs_f16_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fabs	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f32_z_tied1, svfloat32_t,
+ 		z0 = svabs_f32_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_f32_z_untied:
+ **	fabs	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f32_z_untied, svfloat32_t,
+ 		z0 = svabs_f32_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_f64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fabs	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f64_z_tied1, svfloat64_t,
+ 		z0 = svabs_f64_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_f64_z_untied:
+ **	fabs	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_f64_z_untied, svfloat64_t,
+ 		z0 = svabs_f64_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	abs	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s16_z_tied1, svint16_t,
+ 		z0 = svabs_s16_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_s16_z_untied:
+ **	abs	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s16_z_untied, svint16_t,
+ 		z0 = svabs_s16_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	abs	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s32_z_tied1, svint32_t,
+ 		z0 = svabs_s32_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_s32_z_untied:
+ **	abs	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s32_z_untied, svint32_t,
+ 		z0 = svabs_s32_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	abs	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s64_z_tied1, svint64_t,
+ 		z0 = svabs_s64_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_s64_z_untied:
+ **	abs	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s64_z_untied, svint64_t,
+ 		z0 = svabs_s64_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abs_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** abs_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	abs	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s8_z_tied1, svint8_t,
+ 		z0 = svabs_s8_z (p0, z0),
+ 		z0 = svabs_z (p0, z0))
+ 
+ /*
+ ** abs_s8_z_untied:
+ **	abs	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (abs_s8_z_untied, svint8_t,
+ 		z0 = svabs_s8_z (p0, z1),
+ 		z0 = svabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cls_s16_z:
+ **	cls	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cls_s16_z, svuint16_t, svint16_t,
+ 	     z0 = svcls_s16_z (p0, z4),
+ 	     z0 = svcls_z (p0, z4))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cls_s32_z:
+ **	cls	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cls_s32_z, svuint32_t, svint32_t,
+ 	     z0 = svcls_s32_z (p0, z4),
+ 	     z0 = svcls_z (p0, z4))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cls_s64_z:
+ **	cls	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cls_s64_z, svuint64_t, svint64_t,
+ 	     z0 = svcls_s64_z (p0, z4),
+ 	     z0 = svcls_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cls_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cls_s8_z:
+ **	cls	z0\.b, p0/z, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cls_s8_z, svuint8_t, svint8_t,
+ 	     z0 = svcls_s8_z (p0, z4),
+ 	     z0 = svcls_z (p0, z4))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_s16_z:
+ **	clz	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (clz_s16_z, svuint16_t, svint16_t,
+ 	     z0 = svclz_s16_z (p0, z4),
+ 	     z0 = svclz_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_s32_z:
+ **	clz	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (clz_s32_z, svuint32_t, svint32_t,
+ 	     z0 = svclz_s32_z (p0, z4),
+ 	     z0 = svclz_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_s64_z:
+ **	clz	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (clz_s64_z, svuint64_t, svint64_t,
+ 	     z0 = svclz_s64_z (p0, z4),
+ 	     z0 = svclz_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_s8_z:
+ **	clz	z0\.b, p0/z, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (clz_s8_z, svuint8_t, svint8_t,
+ 	     z0 = svclz_s8_z (p0, z4),
+ 	     z0 = svclz_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	clz	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u16_z_tied1, svuint16_t,
+ 		z0 = svclz_u16_z (p0, z0),
+ 		z0 = svclz_z (p0, z0))
+ 
+ /*
+ ** clz_u16_z_untied:
+ **	clz	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u16_z_untied, svuint16_t,
+ 		z0 = svclz_u16_z (p0, z1),
+ 		z0 = svclz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	clz	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u32_z_tied1, svuint32_t,
+ 		z0 = svclz_u32_z (p0, z0),
+ 		z0 = svclz_z (p0, z0))
+ 
+ /*
+ ** clz_u32_z_untied:
+ **	clz	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u32_z_untied, svuint32_t,
+ 		z0 = svclz_u32_z (p0, z1),
+ 		z0 = svclz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_u64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	clz	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u64_z_tied1, svuint64_t,
+ 		z0 = svclz_u64_z (p0, z0),
+ 		z0 = svclz_z (p0, z0))
+ 
+ /*
+ ** clz_u64_z_untied:
+ **	clz	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u64_z_untied, svuint64_t,
+ 		z0 = svclz_u64_z (p0, z1),
+ 		z0 = svclz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/clz_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** clz_u8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	clz	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u8_z_tied1, svuint8_t,
+ 		z0 = svclz_u8_z (p0, z0),
+ 		z0 = svclz_z (p0, z0))
+ 
+ /*
+ ** clz_u8_z_untied:
+ **	clz	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (clz_u8_z_untied, svuint8_t,
+ 		z0 = svclz_u8_z (p0, z1),
+ 		z0 = svclz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s16_z_tied1, svint16_t,
+ 		z0 = svcnot_s16_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_s16_z_untied:
+ **	cnot	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s16_z_untied, svint16_t,
+ 		z0 = svcnot_s16_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s32_z_tied1, svint32_t,
+ 		z0 = svcnot_s32_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_s32_z_untied:
+ **	cnot	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s32_z_untied, svint32_t,
+ 		z0 = svcnot_s32_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_s64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s64_z_tied1, svint64_t,
+ 		z0 = svcnot_s64_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_s64_z_untied:
+ **	cnot	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s64_z_untied, svint64_t,
+ 		z0 = svcnot_s64_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s8_z_tied1, svint8_t,
+ 		z0 = svcnot_s8_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_s8_z_untied:
+ **	cnot	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_s8_z_untied, svint8_t,
+ 		z0 = svcnot_s8_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u16_z_tied1, svuint16_t,
+ 		z0 = svcnot_u16_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_u16_z_untied:
+ **	cnot	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u16_z_untied, svuint16_t,
+ 		z0 = svcnot_u16_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u32_z_tied1, svuint32_t,
+ 		z0 = svcnot_u32_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_u32_z_untied:
+ **	cnot	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u32_z_untied, svuint32_t,
+ 		z0 = svcnot_u32_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_u64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u64_z_tied1, svuint64_t,
+ 		z0 = svcnot_u64_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_u64_z_untied:
+ **	cnot	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u64_z_untied, svuint64_t,
+ 		z0 = svcnot_u64_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnot_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnot_u8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnot	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u8_z_tied1, svuint8_t,
+ 		z0 = svcnot_u8_z (p0, z0),
+ 		z0 = svcnot_z (p0, z0))
+ 
+ /*
+ ** cnot_u8_z_untied:
+ **	cnot	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnot_u8_z_untied, svuint8_t,
+ 		z0 = svcnot_u8_z (p0, z1),
+ 		z0 = svcnot_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_bf16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_bf16_z:
+ **	cnt	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_bf16_z, svuint16_t, svbfloat16_t,
+ 	     z0 = svcnt_bf16_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_f16_z:
+ **	cnt	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_f16_z, svuint16_t, svfloat16_t,
+ 	     z0 = svcnt_f16_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_f32_z:
+ **	cnt	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_f32_z, svuint32_t, svfloat32_t,
+ 	     z0 = svcnt_f32_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_f64_z:
+ **	cnt	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_f64_z, svuint64_t, svfloat64_t,
+ 	     z0 = svcnt_f64_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_s16_z:
+ **	cnt	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_s16_z, svuint16_t, svint16_t,
+ 	     z0 = svcnt_s16_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_s32_z:
+ **	cnt	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_s32_z, svuint32_t, svint32_t,
+ 	     z0 = svcnt_s32_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_s64_z:
+ **	cnt	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_s64_z, svuint64_t, svint64_t,
+ 	     z0 = svcnt_s64_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_s8_z:
+ **	cnt	z0\.b, p0/z, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cnt_s8_z, svuint8_t, svint8_t,
+ 	     z0 = svcnt_s8_z (p0, z4),
+ 	     z0 = svcnt_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnt	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u16_z_tied1, svuint16_t,
+ 		z0 = svcnt_u16_z (p0, z0),
+ 		z0 = svcnt_z (p0, z0))
+ 
+ /*
+ ** cnt_u16_z_untied:
+ **	cnt	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u16_z_untied, svuint16_t,
+ 		z0 = svcnt_u16_z (p0, z1),
+ 		z0 = svcnt_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnt	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u32_z_tied1, svuint32_t,
+ 		z0 = svcnt_u32_z (p0, z0),
+ 		z0 = svcnt_z (p0, z0))
+ 
+ /*
+ ** cnt_u32_z_untied:
+ **	cnt	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u32_z_untied, svuint32_t,
+ 		z0 = svcnt_u32_z (p0, z1),
+ 		z0 = svcnt_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_u64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnt	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u64_z_tied1, svuint64_t,
+ 		z0 = svcnt_u64_z (p0, z0),
+ 		z0 = svcnt_z (p0, z0))
+ 
+ /*
+ ** cnt_u64_z_untied:
+ **	cnt	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u64_z_untied, svuint64_t,
+ 		z0 = svcnt_u64_z (p0, z1),
+ 		z0 = svcnt_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cnt_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cnt_u8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	cnt	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u8_z_tied1, svuint8_t,
+ 		z0 = svcnt_u8_z (p0, z0),
+ 		z0 = svcnt_z (p0, z0))
+ 
+ /*
+ ** cnt_u8_z_untied:
+ **	cnt	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (cnt_u8_z_untied, svuint8_t,
+ 		z0 = svcnt_u8_z (p0, z1),
+ 		z0 = svcnt_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_bf16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_bf16_tied1:
+ **	compact	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_bf16_tied1, svbfloat16_t,
+ 		z0 = svcompact_bf16 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_bf16_untied:
+ **	compact	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_bf16_untied, svbfloat16_t,
+ 		z0 = svcompact_bf16 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_f32.c"
+ 
+ /*
+ ** compact_f32_tied1:
+ **	compact	z0\.s, p0, z0\.s
+ **	ret
+ */
+ 
+ /*
+ ** compact_f32_untied:
+ **	compact	z0\.s, p0, z1\.s
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_f64.c"
+ 
+ /*
+ ** compact_f64_tied1:
+ **	compact	z0\.d, p0, z0\.d
+ **	ret
+ */
+ 
+ /*
+ ** compact_f64_untied:
+ **	compact	z0\.d, p0, z1\.d
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_mf8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_mf8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_mf8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_mf8_tied1:
+ **	compact	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_mf8_tied1, svmfloat8_t,
+ 		z0 = svcompact_mf8 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_mf8_untied:
+ **	compact	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_mf8_untied, svmfloat8_t,
+ 		z0 = svcompact_mf8 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_s16_tied1:
+ **	compact	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_s16_tied1, svint16_t,
+ 		z0 = svcompact_s16 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_s16_untied:
+ **	compact	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_s16_untied, svint16_t,
+ 		z0 = svcompact_s16 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_s32.c"
+ 
+ /*
+ ** compact_s32_tied1:
+ **	compact	z0\.s, p0, z0\.s
+ **	ret
+ */
+ 
+ /*
+ ** compact_s32_untied:
+ **	compact	z0\.s, p0, z1\.s
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_s64.c"
+ 
+ /*
+ ** compact_s64_tied1:
+ **	compact	z0\.d, p0, z0\.d
+ **	ret
+ */
+ 
+ /*
+ ** compact_s64_untied:
+ **	compact	z0\.d, p0, z1\.d
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_s8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_s8_tied1:
+ **	compact	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_s8_tied1, svint8_t,
+ 		z0 = svcompact_s8 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_s8_untied:
+ **	compact	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_s8_untied, svint8_t,
+ 		z0 = svcompact_s8 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_u16_tied1:
+ **	compact	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_u16_tied1, svuint16_t,
+ 		z0 = svcompact_u16 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_u16_untied:
+ **	compact	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_u16_untied, svuint16_t,
+ 		z0 = svcompact_u16 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_u32.c"
+ 
+ /*
+ ** compact_u32_tied1:
+ **	compact	z0\.s, p0, z0\.s
+ **	ret
+ */
+ 
+ /*
+ ** compact_u32_untied:
+ **	compact	z0\.s, p0, z1\.s
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-skip-if "" { *-*-* } { "" } { "-DSTREAMING_COMPATIBLE" } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sme2p2"
+ 
+ #include "../../../sve/acle/asm/compact_u64.c"
+ 
+ /*
+ ** compact_u64_tied1:
+ **	compact	z0\.d, p0, z0\.d
+ **	ret
+ */
+ 
+ /*
+ ** compact_u64_untied:
+ **	compact	z0\.d, p0, z1\.d
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/compact_u8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** compact_u8_tied1:
+ **	compact	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_u8_tied1, svuint8_t,
+ 		z0 = svcompact_u8 (p0, z0),
+ 		z0 = svcompact (p0, z0))
+ 
+ /*
+ ** compact_u8_untied:
+ **	compact	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (compact_u8_untied, svuint8_t,
+ 		z0 = svcompact_u8 (p0, z1),
+ 		z0 = svcompact (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_bf16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2+bf16"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_bf16_f32_z_tied1:
+ **	bfcvt	z0\.h, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_bf16_f32_z_tied1, svbfloat16_t, svfloat32_t,
+ 		 z0_res = svcvt_bf16_f32_z (p0, z0),
+ 		 z0_res = svcvt_bf16_z (p0, z0))
+ 
+ /*
+ ** cvt_bf16_f32_z_untied:
+ **	bfcvt	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_bf16_f32_z_untied, svbfloat16_t, svfloat32_t,
+ 	     z0 = svcvt_bf16_f32_z (p0, z4),
+ 	     z0 = svcvt_bf16_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,160 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_f16_f32_z_tied1:
+ **	fcvt	z0\.h, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_f32_z_tied1, svfloat16_t, svfloat32_t,
+ 		 z0_res = svcvt_f16_f32_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_f32_z_untied:
+ **	fcvt	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_f32_z_untied, svfloat16_t, svfloat32_t,
+ 	     z0 = svcvt_f16_f32_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_f64_z_tied1:
+ **	fcvt	z0\.h, p0/z, z0\.d 
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_f64_z_tied1, svfloat16_t, svfloat64_t,
+ 		 z0_res = svcvt_f16_f64_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_f64_z_untied:
+ **	fcvt	z0\.h, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_f64_z_untied, svfloat16_t, svfloat64_t,
+ 	     z0 = svcvt_f16_f64_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	scvtf	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_s16_z_tied1, svfloat16_t, svint16_t,
+ 		 z0_res = svcvt_f16_s16_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_s16_z_untied:
+ **	scvtf	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_s16_z_untied, svfloat16_t, svint16_t,
+ 	     z0 = svcvt_f16_s16_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	scvtf	z0\.h, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_s32_z_tied1, svfloat16_t, svint32_t,
+ 		 z0_res = svcvt_f16_s32_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_s32_z_untied:
+ **	scvtf	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_s32_z_untied, svfloat16_t, svint32_t,
+ 	     z0 = svcvt_f16_s32_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	scvtf	z0\.h, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_s64_z_tied1, svfloat16_t, svint64_t,
+ 		 z0_res = svcvt_f16_s64_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_s64_z_untied:
+ **	scvtf	z0\.h, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_s64_z_untied, svfloat16_t, svint64_t,
+ 	     z0 = svcvt_f16_s64_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	ucvtf	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_u16_z_tied1, svfloat16_t, svuint16_t,
+ 		 z0_res = svcvt_f16_u16_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_u16_z_untied:
+ **	ucvtf	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_u16_z_untied, svfloat16_t, svuint16_t,
+ 	     z0 = svcvt_f16_u16_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	ucvtf	z0\.h, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_u32_z_tied1, svfloat16_t, svuint32_t,
+ 		 z0_res = svcvt_f16_u32_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_u32_z_untied:
+ **	ucvtf	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_u32_z_untied, svfloat16_t, svuint32_t,
+ 	     z0 = svcvt_f16_u32_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
+ 
+ /*
+ ** cvt_f16_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	ucvtf	z0\.h, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f16_u64_z_tied1, svfloat16_t, svuint64_t,
+ 		 z0_res = svcvt_f16_u64_z (p0, z0),
+ 		 z0_res = svcvt_f16_z (p0, z0))
+ 
+ /*
+ ** cvt_f16_u64_z_untied:
+ **	ucvtf	z0\.h, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f16_u64_z_untied, svfloat16_t, svuint64_t,
+ 	     z0 = svcvt_f16_u64_z (p0, z4),
+ 	     z0 = svcvt_f16_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,122 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_f32_f16_z_tied1:
+ **	fcvt	z0\.s, p0/z, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_f16_z_tied1, svfloat32_t, svfloat16_t,
+ 		 z0_res = svcvt_f32_f16_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_f16_z_untied:
+ **	fcvt	z0\.s, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_f16_z_untied, svfloat32_t, svfloat16_t,
+ 	     z0 = svcvt_f32_f16_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
+ 
+ /*
+ ** cvt_f32_f64_z_tied1:
+ **	fcvt	z0\.s, p0/z, z0\.d
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_f64_z_tied1, svfloat32_t, svfloat64_t,
+ 		 z0_res = svcvt_f32_f64_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_f64_z_untied:
+ **	fcvt	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_f64_z_untied, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvt_f32_f64_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
+ 
+ /*
+ ** cvt_f32_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	scvtf	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_s32_z_tied1, svfloat32_t, svint32_t,
+ 		 z0_res = svcvt_f32_s32_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_s32_z_untied:
+ **	scvtf	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_s32_z_untied, svfloat32_t, svint32_t,
+ 	     z0 = svcvt_f32_s32_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
+ 
+ /*
+ ** cvt_f32_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	scvtf	z0\.s, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_s64_z_tied1, svfloat32_t, svint64_t,
+ 		 z0_res = svcvt_f32_s64_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_s64_z_untied:
+ **	scvtf	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_s64_z_untied, svfloat32_t, svint64_t,
+ 	     z0 = svcvt_f32_s64_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
+ 
+ /*
+ ** cvt_f32_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	ucvtf	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_u32_z_tied1, svfloat32_t, svuint32_t,
+ 		 z0_res = svcvt_f32_u32_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_u32_z_untied:
+ **	ucvtf	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_u32_z_untied, svfloat32_t, svuint32_t,
+ 	     z0 = svcvt_f32_u32_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
+ 
+ /*
+ ** cvt_f32_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	ucvtf	z0\.s, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f32_u64_z_tied1, svfloat32_t, svuint64_t,
+ 		 z0_res = svcvt_f32_u64_z (p0, z0),
+ 		 z0_res = svcvt_f32_z (p0, z0))
+ 
+ /*
+ ** cvt_f32_u64_z_untied:
+ **	ucvtf	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f32_u64_z_untied, svfloat32_t, svuint64_t,
+ 	     z0 = svcvt_f32_u64_z (p0, z4),
+ 	     z0 = svcvt_f32_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,120 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_f64_f16_z_tied1:
+ **	fcvt	z0\.d, p0/z, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_f16_z_tied1, svfloat64_t, svfloat16_t,
+ 		 z0_res = svcvt_f64_f16_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_f16_z_untied:
+ **	fcvt	z0\.d, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_f16_z_untied, svfloat64_t, svfloat16_t,
+ 	     z0 = svcvt_f64_f16_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
+ 
+ /*
+ ** cvt_f64_f32_z_tied1:
+ **	fcvt	z0\.d, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_f32_z_tied1, svfloat64_t, svfloat32_t,
+ 		 z0_res = svcvt_f64_f32_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_f32_z_untied:
+ **	fcvt	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_f32_z_untied, svfloat64_t, svfloat32_t,
+ 	     z0 = svcvt_f64_f32_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
+ 
+ /*
+ ** cvt_f64_s32_z_tied1:
+ **	scvtf	z0\.d, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_s32_z_tied1, svfloat64_t, svint32_t,
+ 		 z0_res = svcvt_f64_s32_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_s32_z_untied:
+ **	scvtf	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_s32_z_untied, svfloat64_t, svint32_t,
+ 	     z0 = svcvt_f64_s32_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
+ 
+ /*
+ ** cvt_f64_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	scvtf	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_s64_z_tied1, svfloat64_t, svint64_t,
+ 		 z0_res = svcvt_f64_s64_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_s64_z_untied:
+ **	scvtf	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_s64_z_untied, svfloat64_t, svint64_t,
+ 	     z0 = svcvt_f64_s64_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
+ 
+ /*
+ ** cvt_f64_u32_z_tied1:
+ **	ucvtf	z0\.d, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_u32_z_tied1, svfloat64_t, svuint32_t,
+ 		 z0_res = svcvt_f64_u32_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_u32_z_untied:
+ **	ucvtf	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_u32_z_untied, svfloat64_t, svuint32_t,
+ 	     z0 = svcvt_f64_u32_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
+ 
+ /*
+ ** cvt_f64_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	ucvtf	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_f64_u64_z_tied1, svfloat64_t, svuint64_t,
+ 		 z0_res = svcvt_f64_u64_z (p0, z0),
+ 		 z0_res = svcvt_f64_z (p0, z0))
+ 
+ /*
+ ** cvt_f64_u64_z_untied:
+ **	ucvtf	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_f64_u64_z_untied, svfloat64_t, svuint64_t,
+ 	     z0 = svcvt_f64_u64_z (p0, z4),
+ 	     z0 = svcvt_f64_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_s16_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzs	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s16_f16_z_tied1, svint16_t, svfloat16_t,
+ 		 z0_res = svcvt_s16_f16_z (p0, z0),
+ 		 z0_res = svcvt_s16_z (p0, z0))
+ 
+ /*
+ ** cvt_s16_f16_z_untied:
+ **	fcvtzs	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s16_f16_z_untied, svint16_t, svfloat16_t,
+ 	     z0 = svcvt_s16_f16_z (p0, z4),
+ 	     z0 = svcvt_s16_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_s32_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzs	z0\.s, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s32_f16_z_tied1, svint32_t, svfloat16_t,
+ 		 z0_res = svcvt_s32_f16_z (p0, z0),
+ 		 z0_res = svcvt_s32_z (p0, z0))
+ 
+ /*
+ ** cvt_s32_f16_z_untied:
+ **	fcvtzs	z0\.s, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s32_f16_z_untied, svint32_t, svfloat16_t,
+ 	     z0 = svcvt_s32_f16_z (p0, z4),
+ 	     z0 = svcvt_s32_z (p0, z4))
+ 
+ /*
+ ** cvt_s32_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzs	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s32_f32_z_tied1, svint32_t, svfloat32_t,
+ 		 z0_res = svcvt_s32_f32_z (p0, z0),
+ 		 z0_res = svcvt_s32_z (p0, z0))
+ 
+ /*
+ ** cvt_s32_f32_z_untied:
+ **	fcvtzs	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s32_f32_z_untied, svint32_t, svfloat32_t,
+ 	     z0 = svcvt_s32_f32_z (p0, z4),
+ 	     z0 = svcvt_s32_z (p0, z4))
+ 
+ /*
+ ** cvt_s32_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fcvtzs	z0\.s, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s32_f64_z_tied1, svint32_t, svfloat64_t,
+ 		 z0_res = svcvt_s32_f64_z (p0, z0),
+ 		 z0_res = svcvt_s32_z (p0, z0))
+ 
+ /*
+ ** cvt_s32_f64_z_untied:
+ **	fcvtzs	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s32_f64_z_untied, svint32_t, svfloat64_t,
+ 	     z0 = svcvt_s32_f64_z (p0, z4),
+ 	     z0 = svcvt_s32_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_s64_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzs	z0\.d, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s64_f16_z_tied1, svint64_t, svfloat16_t,
+ 		 z0_res = svcvt_s64_f16_z (p0, z0),
+ 		 z0_res = svcvt_s64_z (p0, z0))
+ 
+ /*
+ ** cvt_s64_f16_z_untied:
+ **	fcvtzs	z0\.d, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s64_f16_z_untied, svint64_t, svfloat16_t,
+ 	     z0 = svcvt_s64_f16_z (p0, z4),
+ 	     z0 = svcvt_s64_z (p0, z4))
+ 
+ /*
+ ** cvt_s64_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzs	z0\.d, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s64_f32_z_tied1, svint64_t, svfloat32_t,
+ 		 z0_res = svcvt_s64_f32_z (p0, z0),
+ 		 z0_res = svcvt_s64_z (p0, z0))
+ 
+ /*
+ ** cvt_s64_f32_z_untied:
+ **	fcvtzs	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s64_f32_z_untied, svint64_t, svfloat32_t,
+ 	     z0 = svcvt_s64_f32_z (p0, z4),
+ 	     z0 = svcvt_s64_z (p0, z4))
+ 
+ /*
+ ** cvt_s64_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fcvtzs	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_s64_f64_z_tied1, svint64_t, svfloat64_t,
+ 		 z0_res = svcvt_s64_f64_z (p0, z0),
+ 		 z0_res = svcvt_s64_z (p0, z0))
+ 
+ /*
+ ** cvt_s64_f64_z_untied:
+ **	fcvtzs	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_s64_f64_z_untied, svint64_t, svfloat64_t,
+ 	     z0 = svcvt_s64_f64_z (p0, z4),
+ 	     z0 = svcvt_s64_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_u16_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzu	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u16_f16_z_tied1, svuint16_t, svfloat16_t,
+ 		 z0_res = svcvt_u16_f16_z (p0, z0),
+ 		 z0_res = svcvt_u16_z (p0, z0))
+ 
+ /*
+ ** cvt_u16_f16_z_untied:
+ **	fcvtzu	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u16_f16_z_untied, svuint16_t, svfloat16_t,
+ 	     z0 = svcvt_u16_f16_z (p0, z4),
+ 	     z0 = svcvt_u16_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_u32_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzu	z0\.s, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u32_f16_z_tied1, svuint32_t, svfloat16_t,
+ 		 z0_res = svcvt_u32_f16_z (p0, z0),
+ 		 z0_res = svcvt_u32_z (p0, z0))
+ 
+ /*
+ ** cvt_u32_f16_z_untied:
+ **	fcvtzu	z0\.s, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u32_f16_z_untied, svuint32_t, svfloat16_t,
+ 	     z0 = svcvt_u32_f16_z (p0, z4),
+ 	     z0 = svcvt_u32_z (p0, z4))
+ 
+ /*
+ ** cvt_u32_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzu	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u32_f32_z_tied1, svuint32_t, svfloat32_t,
+ 		 z0_res = svcvt_u32_f32_z (p0, z0),
+ 		 z0_res = svcvt_u32_z (p0, z0))
+ 
+ /*
+ ** cvt_u32_f32_z_untied:
+ **	fcvtzu	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u32_f32_z_untied, svuint32_t, svfloat32_t,
+ 	     z0 = svcvt_u32_f32_z (p0, z4),
+ 	     z0 = svcvt_u32_z (p0, z4))
+ 
+ /*
+ ** cvt_u32_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fcvtzu	z0\.s, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u32_f64_z_tied1, svuint32_t, svfloat64_t,
+ 		 z0_res = svcvt_u32_f64_z (p0, z0),
+ 		 z0_res = svcvt_u32_z (p0, z0))
+ 
+ /*
+ ** cvt_u32_f64_z_untied:
+ **	fcvtzu	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u32_f64_z_untied, svuint32_t, svfloat64_t,
+ 	     z0 = svcvt_u32_f64_z (p0, z4),
+ 	     z0 = svcvt_u32_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvt_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvt_u64_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzu	z0\.d, p0/z, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u64_f16_z_tied1, svuint64_t, svfloat16_t,
+ 		 z0_res = svcvt_u64_f16_z (p0, z0),
+ 		 z0_res = svcvt_u64_z (p0, z0))
+ 
+ /*
+ ** cvt_u64_f16_z_untied:
+ **	fcvtzu	z0\.d, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u64_f16_z_untied, svuint64_t, svfloat16_t,
+ 	     z0 = svcvt_u64_f16_z (p0, z4),
+ 	     z0 = svcvt_u64_z (p0, z4))
+ 
+ /*
+ ** cvt_u64_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fcvtzu	z0\.d, p0/z, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u64_f32_z_tied1, svuint64_t, svfloat32_t,
+ 		 z0_res = svcvt_u64_f32_z (p0, z0),
+ 		 z0_res = svcvt_u64_z (p0, z0))
+ 
+ /*
+ ** cvt_u64_f32_z_untied:
+ **	fcvtzu	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u64_f32_z_untied, svuint64_t, svfloat32_t,
+ 	     z0 = svcvt_u64_f32_z (p0, z4),
+ 	     z0 = svcvt_u64_z (p0, z4))
+ 
+ /*
+ ** cvt_u64_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fcvtzu	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvt_u64_f64_z_tied1, svuint64_t, svfloat64_t,
+ 		 z0_res = svcvt_u64_f64_z (p0, z0),
+ 		 z0_res = svcvt_u64_z (p0, z0))
+ 
+ /*
+ ** cvt_u64_f64_z_untied:
+ **	fcvtzu	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvt_u64_f64_z_untied, svuint64_t, svfloat64_t,
+ 	     z0 = svcvt_u64_f64_z (p0, z4),
+ 	     z0 = svcvt_u64_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtlt_f32_f16_z_tied1:
+ **	fcvtlt	z0\.s, p0/z, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtlt_f32_f16_z_tied1, svfloat32_t, svfloat16_t,
+ 		 z0_res = svcvtlt_f32_f16_z (p0, z0),
+ 		 z0_res = svcvtlt_f32_z (p0, z0))
+ 
+ /*
+ ** cvtlt_f32_f16_z_untied:
+ **	fcvtlt	z0\.s, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvtlt_f32_f16_z_untied, svfloat32_t, svfloat16_t,
+ 		 z0 = svcvtlt_f32_f16_z (p0, z4),
+ 		 z0 = svcvtlt_f32_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtlt_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtlt_f64_f32_z_tied1:
+ **	fcvtlt	z0\.d, p0/z, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtlt_f64_f32_z_tied1, svfloat64_t, svfloat32_t,
+ 		 z0_res = svcvtlt_f64_f32_z (p0, z0),
+ 		 z0_res = svcvtlt_f64_z (p0, z0))
+ 
+ /*
+ ** cvtlt_f64_f32_z_untied:
+ **	fcvtlt	z0\.d, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtlt_f64_f32_z_untied, svfloat64_t, svfloat32_t,
+ 		 z0 = svcvtlt_f64_f32_z (p0, z4),
+ 		 z0 = svcvtlt_f64_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_bf16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2+bf16"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtnt_bf16_f32_z_tied1:
+ **	bfcvtnt	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_bf16_f32_z_tied1, svbfloat16_t, svfloat32_t,
+ 		 z0 = svcvtnt_bf16_f32_z (z0, p0, z4),
+ 		 z0 = svcvtnt_bf16_z (z0, p0, z4))
+ 
+ /*
+ ** cvtnt_bf16_f32_z_untied:
+ ** (
+ **	mov	z0\.d, z1\.d
+ **	bfcvtnt	z0\.h, p0/z, z4\.s
+ ** |
+ **	bfcvtnt	z1\.h, p0/z, z4\.s
+ **	mov	z0\.d, z1\.d
+ ** )
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_bf16_f32_z_untied, svbfloat16_t, svfloat32_t,
+ 	     z0 = svcvtnt_bf16_f32_z (z1, p0, z4),
+ 	     z0 = svcvtnt_bf16_z (z1, p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtnt_f16_f32_z_tied1:
+ **	fcvtnt	z0\.h, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_f16_f32_z_tied1, svfloat16_t, svfloat32_t,
+ 	     z0 = svcvtnt_f16_f32_z (z0, p0, z4),
+ 	     z0 = svcvtnt_f16_z (z0, p0, z4))
+ 
+ /*
+ ** cvtnt_f16_f32_z_untied:
+ ** (
+ **	mov	z0\.d, z1\.d
+ **	fcvtnt	z0\.h, p0/z, z4\.s
+ ** |
+ **	fcvtnt	z1\.h, p0/z, z4\.s
+ **	mov	z0\.d, z1\.d
+ ** )
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_f16_f32_z_untied, svfloat16_t, svfloat32_t,
+ 	     z0 = svcvtnt_f16_f32_z (z1, p0, z4),
+ 	     z0 = svcvtnt_f16_z (z1, p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtnt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtnt_f32_f64_z_tied1:
+ **	fcvtnt	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_f32_f64_z_tied1, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvtnt_f32_f64_z (z0, p0, z4),
+ 	     z0 = svcvtnt_f32_z (z0, p0, z4))
+ 
+ /*
+ ** cvtnt_f32_f64_z_untied:
+ ** (
+ **	mov	z0\.d, z1\.d
+ **	fcvtnt	z0\.s, p0/z, z4\.d
+ ** |
+ **	fcvtnt	z1\.s, p0/z, z4\.d
+ **	mov	z0\.d, z1\.d
+ ** )
+ **	ret
+ */
+ TEST_DUAL_Z (cvtnt_f32_f64_z_untied, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvtnt_f32_f64_z (z1, p0, z4),
+ 	     z0 = svcvtnt_f32_z (z1, p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtx_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtx_f32_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fcvtx	z0\.s, p0/z, \1
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtx_f32_f64_z_tied1, svfloat32_t, svfloat64_t,
+ 		 z0_res = svcvtx_f32_f64_z (p0, z0),
+ 		 z0_res = svcvtx_f32_z (p0, z0))
+ 
+ /*
+ ** cvtx_f32_f64_z_untied:
+ **	fcvtx	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvtx_f32_f64_z_untied, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvtx_f32_f64_z (p0, z4),
+ 	     z0 = svcvtx_f32_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/cvtxnt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** cvtxnt_f32_f64_z_tied1:
+ **	fcvtxnt	z0\.s, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (cvtxnt_f32_f64_z_tied1, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvtxnt_f32_f64_z (z0, p0, z4),
+ 	     z0 = svcvtxnt_f32_z (z0, p0, z4))
+ 
+ /*
+ ** cvtxnt_f32_f64_z_untied:
+ ** (
+ **	mov	z0\.d, z1\.d
+ **	fcvtxnt	z0\.s, p0/z, z4\.d
+ ** |
+ **	fcvtxnt	z1\.s, p0/z, z4\.d
+ **	mov	z0\.d, z1\.d
+ ** )
+ **	ret
+ */
+ TEST_DUAL_Z (cvtxnt_f32_f64_z_untied, svfloat32_t, svfloat64_t,
+ 	     z0 = svcvtxnt_f32_f64_z (z1, p0, z4),
+ 	     z0 = svcvtxnt_f32_z (z1, p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_bf16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_bf16_tied1:
+ **	expand	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_bf16_tied1, svbfloat16_t,
+ 		z0 = svexpand_bf16 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_bf16_untied:
+ **	expand	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_bf16_untied, svbfloat16_t,
+ 		z0 = svexpand_bf16 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_f32_tied1:
+ **	expand	z0\.s, p0, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_f32_tied1, svfloat32_t,
+ 		z0 = svexpand_f32 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_f32_untied:
+ **	expand	z0\.s, p0, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_f32_untied, svfloat32_t,
+ 		z0 = svexpand_f32 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_f64_tied1:
+ **	expand	z0\.d, p0, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_f64_tied1, svfloat64_t,
+ 		z0 = svexpand_f64 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_f64_untied:
+ **	expand	z0\.d, p0, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_f64_untied, svfloat64_t,
+ 		z0 = svexpand_f64 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_mf8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_mf8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_mf8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_mf8_tied1:
+ **	expand	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_mf8_tied1, svmfloat8_t,
+ 		z0 = svexpand_mf8 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_mf8_untied:
+ **	expand	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_mf8_untied, svmfloat8_t,
+ 		z0 = svexpand_mf8 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_s16_tied1:
+ **	expand	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s16_tied1, svint16_t,
+ 		z0 = svexpand_s16 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_s16_untied:
+ **	expand	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s16_untied, svint16_t,
+ 		z0 = svexpand_s16 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_s32_tied1:
+ **	expand	z0\.s, p0, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s32_tied1, svint32_t,
+ 		z0 = svexpand_s32 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_s32_untied:
+ **	expand	z0\.s, p0, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s32_untied, svint32_t,
+ 		z0 = svexpand_s32 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_s64_tied1:
+ **	expand	z0\.d, p0, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s64_tied1, svint64_t,
+ 		z0 = svexpand_s64 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_s64_untied:
+ **	expand	z0\.d, p0, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s64_untied, svint64_t,
+ 		z0 = svexpand_s64 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_s8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_s8_tied1:
+ **	expand	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s8_tied1, svint8_t,
+ 		z0 = svexpand_s8 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_s8_untied:
+ **	expand	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_s8_untied, svint8_t,
+ 		z0 = svexpand_s8 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_u16_tied1:
+ **	expand	z0\.h, p0, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u16_tied1, svuint16_t,
+ 		z0 = svexpand_u16 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_u16_untied:
+ **	expand	z0\.h, p0, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u16_untied, svuint16_t,
+ 		z0 = svexpand_u16 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_u32_tied1:
+ **	expand	z0\.s, p0, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u32_tied1, svuint32_t,
+ 		z0 = svexpand_u32 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_u32_untied:
+ **	expand	z0\.s, p0, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u32_untied, svuint32_t,
+ 		z0 = svexpand_u32 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_u64_tied1:
+ **	expand	z0\.d, p0, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u64_tied1, svuint64_t,
+ 		z0 = svexpand_u64 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_u64_untied:
+ **	expand	z0\.d, p0, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u64_untied, svuint64_t,
+ 		z0 = svexpand_u64 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/expand_u8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** expand_u8_tied1:
+ **	expand	z0\.b, p0, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u8_tied1, svuint8_t,
+ 		z0 = svexpand_u8 (p0, z0),
+ 		z0 = svexpand (p0, z0))
+ 
+ /*
+ ** expand_u8_untied:
+ **	expand	z0\.b, p0, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (expand_u8_untied, svuint8_t,
+ 		z0 = svexpand_u8 (p0, z1),
+ 		z0 = svexpand (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_s16_z_tied1:
+ **	sxtb	z0\.h, p0/z, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s16_z_tied1, svint16_t,
+ 		z0 = svextb_s16_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_s16_z_untied:
+ **	sxtb	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s16_z_untied, svint16_t,
+ 		z0 = svextb_s16_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_s32_z_tied1:
+ **	sxtb	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s32_z_tied1, svint32_t,
+ 		z0 = svextb_s32_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_s32_z_untied:
+ **	sxtb	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s32_z_untied, svint32_t,
+ 		z0 = svextb_s32_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_s64_z_tied1:
+ **	sxtb	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s64_z_tied1, svint64_t,
+ 		z0 = svextb_s64_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_s64_z_untied:
+ **	sxtb	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_s64_z_untied, svint64_t,
+ 		z0 = svextb_s64_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	uxtb	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u16_z_tied1, svuint16_t,
+ 		z0 = svextb_u16_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_u16_z_untied:
+ **	uxtb	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u16_z_untied, svuint16_t,
+ 		z0 = svextb_u16_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	uxtb	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u32_z_tied1, svuint32_t,
+ 		z0 = svextb_u32_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_u32_z_untied:
+ **	uxtb	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u32_z_untied, svuint32_t,
+ 		z0 = svextb_u32_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extb_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extb_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	uxtb	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u64_z_tied1, svuint64_t,
+ 		z0 = svextb_u64_z (p0, z0),
+ 		z0 = svextb_z (p0, z0))
+ 
+ /*
+ ** extb_u64_z_untied:
+ **	uxtb	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extb_u64_z_untied, svuint64_t,
+ 		z0 = svextb_u64_z (p0, z1),
+ 		z0 = svextb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** exth_s32_z_tied1:
+ **	sxth	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_s32_z_tied1, svint32_t,
+ 		z0 = svexth_s32_z (p0, z0),
+ 		z0 = svexth_z (p0, z0))
+ 
+ /*
+ ** exth_s32_z_untied:
+ **	sxth	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_s32_z_untied, svint32_t,
+ 		z0 = svexth_s32_z (p0, z1),
+ 		z0 = svexth_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** exth_s64_z_tied1:
+ **	sxth	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_s64_z_tied1, svint64_t,
+ 		z0 = svexth_s64_z (p0, z0),
+ 		z0 = svexth_z (p0, z0))
+ 
+ /*
+ ** exth_s64_z_untied:
+ **	sxth	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_s64_z_untied, svint64_t,
+ 		z0 = svexth_s64_z (p0, z1),
+ 		z0 = svexth_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** exth_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	uxth	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_u32_z_tied1, svuint32_t,
+ 		z0 = svexth_u32_z (p0, z0),
+ 		z0 = svexth_z (p0, z0))
+ 
+ /*
+ ** exth_u32_z_untied:
+ **	uxth	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_u32_z_untied, svuint32_t,
+ 		z0 = svexth_u32_z (p0, z1),
+ 		z0 = svexth_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/exth_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** exth_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	uxth	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_u64_z_tied1, svuint64_t,
+ 		z0 = svexth_u64_z (p0, z0),
+ 		z0 = svexth_z (p0, z0))
+ 
+ /*
+ ** exth_u64_z_untied:
+ **	uxth	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (exth_u64_z_untied, svuint64_t,
+ 		z0 = svexth_u64_z (p0, z1),
+ 		z0 = svexth_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extw_s64_z_tied1:
+ **	sxtw	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extw_s64_z_tied1, svint64_t,
+ 		z0 = svextw_s64_z (p0, z0),
+ 		z0 = svextw_z (p0, z0))
+ 
+ /*
+ ** extw_s64_z_untied:
+ **	sxtw	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extw_s64_z_untied, svint64_t,
+ 		z0 = svextw_s64_z (p0, z1),
+ 		z0 = svextw_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/extw_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** extw_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	uxtw	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (extw_u64_z_tied1, svuint64_t,
+ 		z0 = svextw_u64_z (p0, z0),
+ 		z0 = svextw_z (p0, z0))
+ 
+ /*
+ ** extw_u64_z_untied:
+ **	uxtw	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (extw_u64_z_untied, svuint64_t,
+ 		z0 = svextw_u64_z (p0, z1),
+ 		z0 = svextw_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** firstp_b16_32:
+ **	firstp	x0, p0, p1\.h
+ **	ret
+ */
+ TEST_PTEST (firstp_b16_32, uint32_t,
+ 	    x0 = svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_b16_64:
+ **	firstp	x0, p0, p1\.h
+ **	ret
+ */
+ TEST_PTEST (firstp_b16_64, uint64_t,
+ 	    x0 = svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b16_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b16_32_general_x0, uint32_t,
+ 	    x0 += svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b16_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b16_32_general_x1, uint32_t,
+ 	    x0 = x1 + svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b16_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.h
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b16_64_general_x0, uint64_t,
+ 	    x0 += svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b16_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.h
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b16_64_general_x1, uint64_t,
+ 	    x0 = x1 + svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b16_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b16_32_general_x0, uint32_t,
+ 	    x0 -= svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b16_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b16_32_general_x1, uint32_t,
+ 	    x0 = x1 - svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b16_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.h
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b16_64_general_x0, uint64_t,
+ 	    x0 -= svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b16_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.h
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b16_64_general_x1, uint64_t,
+ 	    x0 = x1 - svfirstp_b16 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b16_u16_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	add	z0\.h, (z0\.h, \2|\2, z0\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b16_u16_general_z0, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z0, svfirstp_b16 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b16 (), z0, svfirstp_b16 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b16_u16_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	add	z0\.h, (z1\.h, \2|\2, z1\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b16_u16_general_z1, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z1, svfirstp_b16 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b16 (), z1, svfirstp_b16 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b16_u16_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	add	z0\.h, (z0\.h, \3|\3, z0\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b16_u16_ptrue_z0, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z0, svfirstp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svadd_x (svptrue_b16 (), z0, svfirstp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** firstp_inc_b16_u16_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	add	z0\.h, (z1\.h, \3|\3, z1\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b16_u16_ptrue_z1, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z1, svfirstp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svadd_x (svptrue_b16 (), z1, svfirstp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** firstp_dec_b16_u16_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	sub	z0\.h, z0\.h, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b16_u16_general_z0, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z0, svfirstp_b16 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b16 (), z0, svfirstp_b16 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b16_u16_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	sub	z0\.h, z1\.h, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b16_u16_general_z1, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z1, svfirstp_b16 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b16 (), z1, svfirstp_b16 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b16_u16_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	sub	z0\.h, z0\.h, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b16_u16_ptrue_z0, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z0, svfirstp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svsub_x (svptrue_b16 (), z0, svfirstp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** firstp_dec_b16_u16_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	sub	z0\.h, z1\.h, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b16_u16_ptrue_z1, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z1, svfirstp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svsub_x (svptrue_b16 (), z1, svfirstp_b16 (svptrue_b16 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** firstp_b32_32:
+ **	firstp	x0, p0, p1\.s
+ **	ret
+ */
+ TEST_PTEST (firstp_b32_32, uint32_t,
+ 	    x0 = svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_b32_64:
+ **	firstp	x0, p0, p1\.s
+ **	ret
+ */
+ TEST_PTEST (firstp_b32_64, uint64_t,
+ 	    x0 = svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b32_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b32_32_general_x0, uint32_t,
+ 	    x0 += svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b32_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b32_32_general_x1, uint32_t,
+ 	    x0 = x1 + svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b32_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.s
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b32_64_general_x0, uint64_t,
+ 	    x0 += svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b32_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.s
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b32_64_general_x1, uint64_t,
+ 	    x0 = x1 + svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b32_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b32_32_general_x0, uint32_t,
+ 	    x0 -= svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b32_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b32_32_general_x1, uint32_t,
+ 	    x0 = x1 - svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b32_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.s
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b32_64_general_x0, uint64_t,
+ 	    x0 -= svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b32_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.s
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b32_64_general_x1, uint64_t,
+ 	    x0 = x1 - svfirstp_b32 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b32_u32_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	add	z0\.s, (z0\.s, \2|\2, z0\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b32_u32_general_z0, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z0, svfirstp_b32 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b32 (), z0, svfirstp_b32 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b32_u32_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	add	z0\.s, (z1\.s, \2|\2, z1\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b32_u32_general_z1, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z1, svfirstp_b32 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b32 (), z1, svfirstp_b32 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b32_u32_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	add	z0\.s, (z0\.s, \3|\3, z0\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b32_u32_ptrue_z0, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z0, svfirstp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svadd_x (svptrue_b32 (), z0, svfirstp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** firstp_inc_b32_u32_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	add	z0\.s, (z1\.s, \3|\3, z1\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b32_u32_ptrue_z1, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z1, svfirstp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svadd_x (svptrue_b32 (), z1, svfirstp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** firstp_dec_b32_u32_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	sub	z0\.s, z0\.s, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b32_u32_general_z0, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z0, svfirstp_b32 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b32 (), z0, svfirstp_b32 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b32_u32_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	sub	z0\.s, z1\.s, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b32_u32_general_z1, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z1, svfirstp_b32 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b32 (), z1, svfirstp_b32 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b32_u32_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	sub	z0\.s, z0\.s, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b32_u32_ptrue_z0, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z0, svfirstp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svsub_x (svptrue_b32 (), z0, svfirstp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** firstp_dec_b32_u32_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	sub	z0\.s, z1\.s, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b32_u32_ptrue_z1, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z1, svfirstp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svsub_x (svptrue_b32 (), z1, svfirstp_b32 (svptrue_b32 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** firstp_b64_32:
+ **	firstp	x0, p0, p1\.d
+ **	ret
+ */
+ TEST_PTEST (firstp_b64_32, uint32_t,
+ 	    x0 = svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_b64_64:
+ **	firstp	x0, p0, p1\.d
+ **	ret
+ */
+ TEST_PTEST (firstp_b64_64, uint64_t,
+ 	    x0 = svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b64_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.d
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b64_32_general_x0, uint32_t,
+ 	    x0 += svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b64_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.d
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b64_32_general_x1, uint32_t,
+ 	    x0 = x1 + svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b64_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b64_64_general_x0, uint64_t,
+ 	    x0 += svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b64_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b64_64_general_x1, uint64_t,
+ 	    x0 = x1 + svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b64_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.d
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b64_32_general_x0, uint32_t,
+ 	    x0 -= svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b64_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.d
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b64_32_general_x1, uint32_t,
+ 	    x0 = x1 - svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b64_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b64_64_general_x0, uint64_t,
+ 	    x0 -= svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b64_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b64_64_general_x1, uint64_t,
+ 	    x0 = x1 - svfirstp_b64 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b64_u64_general_z0:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	add	z0\.d, (z0\.d, \2|\2, z0\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b64_u64_general_z0, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z0, svfirstp_b64 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b64 (), z0, svfirstp_b64 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b64_u64_general_z1:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	add	z0\.d, (z1\.d, \2|\2, z1\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b64_u64_general_z1, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z1, svfirstp_b64 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b64 (), z1, svfirstp_b64 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b64_u64_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	add	z0\.d, (z0\.d, \3|\3, z0\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b64_u64_ptrue_z0, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z0, svfirstp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svadd_x (svptrue_b64 (), z0, svfirstp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** firstp_inc_b64_u64_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	add	z0\.d, (z1\.d, \3|\3, z1\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b64_u64_ptrue_z1, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z1, svfirstp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svadd_x (svptrue_b64 (), z1, svfirstp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** firstp_dec_b64_u64_general_z0:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	sub	z0\.d, z0\.d, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b64_u64_general_z0, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z0, svfirstp_b64 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b64 (), z0, svfirstp_b64 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b64_u64_general_z1:
+ **	firstp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	sub	z0\.d, z1\.d, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b64_u64_general_z1, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z1, svfirstp_b64 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b64 (), z1, svfirstp_b64 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b64_u64_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	sub	z0\.d, z0\.d, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b64_u64_ptrue_z0, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z0, svfirstp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svsub_x (svptrue_b64 (), z0, svfirstp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** firstp_dec_b64_u64_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	sub	z0\.d, z1\.d, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b64_u64_ptrue_z1, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z1, svfirstp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svsub_x (svptrue_b64 (), z1, svfirstp_b64 (svptrue_b64 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/firstp_b8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** firstp_b8_32:
+ **	firstp	x0, p0, p1\.b
+ **	ret
+ */
+ TEST_PTEST (firstp_b8_32, uint32_t,
+ 	    x0 = svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_b8_64:
+ **	firstp	x0, p0, p1\.b
+ **	ret
+ */
+ TEST_PTEST (firstp_b8_64, uint64_t,
+ 	    x0 = svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b8_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b8_32_general_x0, uint32_t,
+ 	    x0 += svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b8_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b8_32_general_x1, uint32_t,
+ 	    x0 = x1 + svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b8_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.b
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b8_64_general_x0, uint64_t,
+ 	    x0 += svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b8_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.b
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (firstp_inc_b8_64_general_x1, uint64_t,
+ 	    x0 = x1 + svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b8_32_general_x0:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b8_32_general_x0, uint32_t,
+ 	    x0 -= svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b8_32_general_x1:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b8_32_general_x1, uint32_t,
+ 	    x0 = x1 - svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b8_64_general_x0:
+ **	firstp	(x[0-9]+), p0, p1\.b
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b8_64_general_x0, uint64_t,
+ 	    x0 -= svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_dec_b8_64_general_x1:
+ **	firstp	(x[0-9]+), p0, p1\.b
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (firstp_dec_b8_64_general_x1, uint64_t,
+ 	    x0 = x1 - svfirstp_b8 (p0, p1));
+ 
+ /*
+ ** firstp_inc_b8_u8_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	add	z0\.b, (z0\.b, \2|\2, z0\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b8_u8_general_z0, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z0, svfirstp_b8 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b8 (), z0, svfirstp_b8 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b8_u8_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	add	z0\.b, (z1\.b, \2|\2, z1\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b8_u8_general_z1, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z1, svfirstp_b8 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b8 (), z1, svfirstp_b8 (p0, p1)));
+ 
+ /*
+ ** firstp_inc_b8_u8_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	add	z0\.b, (z0\.b, \3|\3, z0\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b8_u8_ptrue_z0, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z0, svfirstp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svadd_x (svptrue_b8 (), z0, svfirstp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** firstp_inc_b8_u8_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	add	z0\.b, (z1\.b, \3|\3, z1\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_inc_b8_u8_ptrue_z1, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z1, svfirstp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svadd_x (svptrue_b8 (), z1, svfirstp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** firstp_dec_b8_u8_general_z0:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	sub	z0\.b, z0\.b, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b8_u8_general_z0, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z0, svfirstp_b8 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b8 (), z0, svfirstp_b8 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b8_u8_general_z1:
+ **	firstp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	sub	z0\.b, z1\.b, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b8_u8_general_z1, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z1, svfirstp_b8 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b8 (), z1, svfirstp_b8 (p0, p1)));
+ 
+ /*
+ ** firstp_dec_b8_u8_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	sub	z0\.b, z0\.b, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b8_u8_ptrue_z0, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z0, svfirstp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svsub_x (svptrue_b8 (), z0, svfirstp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** firstp_dec_b8_u8_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	firstp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	sub	z0\.b, z1\.b, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (firstp_dec_b8_u8_ptrue_z1, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z1, svfirstp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svsub_x (svptrue_b8 (), z1, svfirstp_b8 (svptrue_b8 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b16.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** lastp_b16_32:
+ **	lastp	x0, p0, p1\.h
+ **	ret
+ */
+ TEST_PTEST (lastp_b16_32, uint32_t,
+ 	    x0 = svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_b16_64:
+ **	lastp	x0, p0, p1\.h
+ **	ret
+ */
+ TEST_PTEST (lastp_b16_64, uint64_t,
+ 	    x0 = svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b16_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b16_32_general_x0, uint32_t,
+ 	    x0 += svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b16_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b16_32_general_x1, uint32_t,
+ 	    x0 = x1 + svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b16_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.h
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b16_64_general_x0, uint64_t,
+ 	    x0 += svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b16_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.h
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b16_64_general_x1, uint64_t,
+ 	    x0 = x1 + svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b16_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b16_32_general_x0, uint32_t,
+ 	    x0 -= svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b16_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b16_32_general_x1, uint32_t,
+ 	    x0 = x1 - svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b16_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.h
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b16_64_general_x0, uint64_t,
+ 	    x0 -= svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b16_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.h
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b16_64_general_x1, uint64_t,
+ 	    x0 = x1 - svlastp_b16 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b16_u16_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	add	z0\.h, (z0\.h, \2|\2, z0\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b16_u16_general_z0, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z0, svlastp_b16 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b16 (), z0, svlastp_b16 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b16_u16_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	add	z0\.h, (z1\.h, \2|\2, z1\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b16_u16_general_z1, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z1, svlastp_b16 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b16 (), z1, svlastp_b16 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b16_u16_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	add	z0\.h, (z0\.h, \3|\3, z0\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b16_u16_ptrue_z0, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z0, svlastp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svadd_x (svptrue_b16 (), z0, svlastp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** lastp_inc_b16_u16_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	add	z0\.h, (z1\.h, \3|\3, z1\.h)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b16_u16_ptrue_z1, svuint16_t,
+ 		z0 = svadd_n_u16_x (svptrue_b16 (), z1, svlastp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svadd_x (svptrue_b16 (), z1, svlastp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** lastp_dec_b16_u16_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	sub	z0\.h, z0\.h, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b16_u16_general_z0, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z0, svlastp_b16 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b16 (), z0, svlastp_b16 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b16_u16_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.h
+ **	mov	(z[0-9]+\.h), w\1
+ **	sub	z0\.h, z1\.h, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b16_u16_general_z1, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z1, svlastp_b16 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b16 (), z1, svlastp_b16 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b16_u16_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	sub	z0\.h, z0\.h, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b16_u16_ptrue_z0, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z0, svlastp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svsub_x (svptrue_b16 (), z0, svlastp_b16 (svptrue_b16 (), p0)));
+ 
+ /*
+ ** lastp_dec_b16_u16_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.h
+ **	mov	(z[0-9]+\.h), w\2
+ **	sub	z0\.h, z1\.h, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b16_u16_ptrue_z1, svuint16_t,
+ 		z0 = svsub_n_u16_x (svptrue_b16 (), z1, svlastp_b16 (svptrue_b16 (), p0)),
+ 		z0 = svsub_x (svptrue_b16 (), z1, svlastp_b16 (svptrue_b16 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** lastp_b32_32:
+ **	lastp	x0, p0, p1\.s
+ **	ret
+ */
+ TEST_PTEST (lastp_b32_32, uint32_t,
+ 	    x0 = svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_b32_64:
+ **	lastp	x0, p0, p1\.s
+ **	ret
+ */
+ TEST_PTEST (lastp_b32_64, uint64_t,
+ 	    x0 = svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b32_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b32_32_general_x0, uint32_t,
+ 	    x0 += svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b32_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b32_32_general_x1, uint32_t,
+ 	    x0 = x1 + svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b32_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.s
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b32_64_general_x0, uint64_t,
+ 	    x0 += svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b32_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.s
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b32_64_general_x1, uint64_t,
+ 	    x0 = x1 + svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b32_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b32_32_general_x0, uint32_t,
+ 	    x0 -= svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b32_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b32_32_general_x1, uint32_t,
+ 	    x0 = x1 - svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b32_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.s
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b32_64_general_x0, uint64_t,
+ 	    x0 -= svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b32_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.s
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b32_64_general_x1, uint64_t,
+ 	    x0 = x1 - svlastp_b32 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b32_u32_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	add	z0\.s, (z0\.s, \2|\2, z0\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b32_u32_general_z0, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z0, svlastp_b32 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b32 (), z0, svlastp_b32 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b32_u32_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	add	z0\.s, (z1\.s, \2|\2, z1\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b32_u32_general_z1, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z1, svlastp_b32 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b32 (), z1, svlastp_b32 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b32_u32_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	add	z0\.s, (z0\.s, \3|\3, z0\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b32_u32_ptrue_z0, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z0, svlastp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svadd_x (svptrue_b32 (), z0, svlastp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** lastp_inc_b32_u32_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	add	z0\.s, (z1\.s, \3|\3, z1\.s)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b32_u32_ptrue_z1, svuint32_t,
+ 		z0 = svadd_n_u32_x (svptrue_b32 (), z1, svlastp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svadd_x (svptrue_b32 (), z1, svlastp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** lastp_dec_b32_u32_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	sub	z0\.s, z0\.s, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b32_u32_general_z0, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z0, svlastp_b32 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b32 (), z0, svlastp_b32 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b32_u32_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.s
+ **	mov	(z[0-9]+\.s), w\1
+ **	sub	z0\.s, z1\.s, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b32_u32_general_z1, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z1, svlastp_b32 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b32 (), z1, svlastp_b32 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b32_u32_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	sub	z0\.s, z0\.s, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b32_u32_ptrue_z0, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z0, svlastp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svsub_x (svptrue_b32 (), z0, svlastp_b32 (svptrue_b32 (), p0)));
+ 
+ /*
+ ** lastp_dec_b32_u32_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.s
+ **	mov	(z[0-9]+\.s), w\2
+ **	sub	z0\.s, z1\.s, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b32_u32_ptrue_z1, svuint32_t,
+ 		z0 = svsub_n_u32_x (svptrue_b32 (), z1, svlastp_b32 (svptrue_b32 (), p0)),
+ 		z0 = svsub_x (svptrue_b32 (), z1, svlastp_b32 (svptrue_b32 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** lastp_b64_32:
+ **	lastp	x0, p0, p1\.d
+ **	ret
+ */
+ TEST_PTEST (lastp_b64_32, uint32_t,
+ 	    x0 = svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_b64_64:
+ **	lastp	x0, p0, p1\.d
+ **	ret
+ */
+ TEST_PTEST (lastp_b64_64, uint64_t,
+ 	    x0 = svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b64_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.d
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b64_32_general_x0, uint32_t,
+ 	    x0 += svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b64_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.d
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b64_32_general_x1, uint32_t,
+ 	    x0 = x1 + svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b64_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b64_64_general_x0, uint64_t,
+ 	    x0 += svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b64_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b64_64_general_x1, uint64_t,
+ 	    x0 = x1 + svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b64_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.d
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b64_32_general_x0, uint32_t,
+ 	    x0 -= svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b64_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.d
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b64_32_general_x1, uint32_t,
+ 	    x0 = x1 - svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b64_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b64_64_general_x0, uint64_t,
+ 	    x0 -= svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b64_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b64_64_general_x1, uint64_t,
+ 	    x0 = x1 - svlastp_b64 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b64_u64_general_z0:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	add	z0\.d, (z0\.d, \2|\2, z0\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b64_u64_general_z0, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z0, svlastp_b64 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b64 (), z0, svlastp_b64 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b64_u64_general_z1:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	add	z0\.d, (z1\.d, \2|\2, z1\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b64_u64_general_z1, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z1, svlastp_b64 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b64 (), z1, svlastp_b64 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b64_u64_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	add	z0\.d, (z0\.d, \3|\3, z0\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b64_u64_ptrue_z0, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z0, svlastp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svadd_x (svptrue_b64 (), z0, svlastp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** lastp_inc_b64_u64_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	add	z0\.d, (z1\.d, \3|\3, z1\.d)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b64_u64_ptrue_z1, svuint64_t,
+ 		z0 = svadd_n_u64_x (svptrue_b64 (), z1, svlastp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svadd_x (svptrue_b64 (), z1, svlastp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** lastp_dec_b64_u64_general_z0:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	sub	z0\.d, z0\.d, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b64_u64_general_z0, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z0, svlastp_b64 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b64 (), z0, svlastp_b64 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b64_u64_general_z1:
+ **	lastp	(x[0-9]+), p0, p1\.d
+ **	mov	(z[0-9]+\.d), \1
+ **	sub	z0\.d, z1\.d, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b64_u64_general_z1, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z1, svlastp_b64 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b64 (), z1, svlastp_b64 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b64_u64_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	sub	z0\.d, z0\.d, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b64_u64_ptrue_z0, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z0, svlastp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svsub_x (svptrue_b64 (), z0, svlastp_b64 (svptrue_b64 (), p0)));
+ 
+ /*
+ ** lastp_dec_b64_u64_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	(x[0-9]+), \1, p0\.d
+ **	mov	(z[0-9]+\.d), \2
+ **	sub	z0\.d, z1\.d, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b64_u64_ptrue_z1, svuint64_t,
+ 		z0 = svsub_n_u64_x (svptrue_b64 (), z1, svlastp_b64 (svptrue_b64 (), p0)),
+ 		z0 = svsub_x (svptrue_b64 (), z1, svlastp_b64 (svptrue_b64 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/lastp_b8.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,192 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #include <stdbool.h>
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** lastp_b8_32:
+ **	lastp	x0, p0, p1\.b
+ **	ret
+ */
+ TEST_PTEST (lastp_b8_32, uint32_t,
+ 	    x0 = svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_b8_64:
+ **	lastp	x0, p0, p1\.b
+ **	ret
+ */
+ TEST_PTEST (lastp_b8_64, uint64_t,
+ 	    x0 = svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b8_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	add	w0, (w0, w\1|w\1, w0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b8_32_general_x0, uint32_t,
+ 	    x0 += svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b8_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	add	w0, (w1, w\1|w\1, w1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b8_32_general_x1, uint32_t,
+ 	    x0 = x1 + svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b8_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.b
+ **	add	x0, (x0, \1|\1, x0)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b8_64_general_x0, uint64_t,
+ 	    x0 += svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b8_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.b
+ **	add	x0, (x1, \1|\1, x1)
+ **	ret
+ */
+ TEST_PTEST (lastp_inc_b8_64_general_x1, uint64_t,
+ 	    x0 = x1 + svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b8_32_general_x0:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	sub	w0, w0, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b8_32_general_x0, uint32_t,
+ 	    x0 -= svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b8_32_general_x1:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	sub	w0, w1, w\1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b8_32_general_x1, uint32_t,
+ 	    x0 = x1 - svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b8_64_general_x0:
+ **	lastp	(x[0-9]+), p0, p1\.b
+ **	sub	x0, x0, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b8_64_general_x0, uint64_t,
+ 	    x0 -= svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_dec_b8_64_general_x1:
+ **	lastp	(x[0-9]+), p0, p1\.b
+ **	sub	x0, x1, \1
+ **	ret
+ */
+ TEST_PTEST (lastp_dec_b8_64_general_x1, uint64_t,
+ 	    x0 = x1 - svlastp_b8 (p0, p1));
+ 
+ /*
+ ** lastp_inc_b8_u8_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	add	z0\.b, (z0\.b, \2|\2, z0\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b8_u8_general_z0, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z0, svlastp_b8 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b8 (), z0, svlastp_b8 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b8_u8_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	add	z0\.b, (z1\.b, \2|\2, z1\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b8_u8_general_z1, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z1, svlastp_b8 (p0, p1)),
+ 		z0 = svadd_x (svptrue_b8 (), z1, svlastp_b8 (p0, p1)));
+ 
+ /*
+ ** lastp_inc_b8_u8_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	add	z0\.b, (z0\.b, \3|\3, z0\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b8_u8_ptrue_z0, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z0, svlastp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svadd_x (svptrue_b8 (), z0, svlastp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** lastp_inc_b8_u8_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	add	z0\.b, (z1\.b, \3|\3, z1\.b)
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_inc_b8_u8_ptrue_z1, svuint8_t,
+ 		z0 = svadd_n_u8_x (svptrue_b8 (), z1, svlastp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svadd_x (svptrue_b8 (), z1, svlastp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** lastp_dec_b8_u8_general_z0:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	sub	z0\.b, z0\.b, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b8_u8_general_z0, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z0, svlastp_b8 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b8 (), z0, svlastp_b8 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b8_u8_general_z1:
+ **	lastp	x([0-9]+), p0, p1\.b
+ **	mov	(z[0-9]+\.b), w\1
+ **	sub	z0\.b, z1\.b, \2
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b8_u8_general_z1, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z1, svlastp_b8 (p0, p1)),
+ 		z0 = svsub_x (svptrue_b8 (), z1, svlastp_b8 (p0, p1)));
+ 
+ /*
+ ** lastp_dec_b8_u8_ptrue_z0:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	sub	z0\.b, z0\.b, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b8_u8_ptrue_z0, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z0, svlastp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svsub_x (svptrue_b8 (), z0, svlastp_b8 (svptrue_b8 (), p0)));
+ 
+ /*
+ ** lastp_dec_b8_u8_ptrue_z1:
+ **	ptrue	(p[0-7])\.b, all
+ **	lastp	x([0-9]+), \1, p0\.b
+ **	mov	(z[0-9]+\.b), w\2
+ **	sub	z0\.b, z1\.b, \3
+ **	ret
+ */
+ TEST_UNIFORM_Z (lastp_dec_b8_u8_ptrue_z1, svuint8_t,
+ 		z0 = svsub_n_u8_x (svptrue_b8 (), z1, svlastp_b8 (svptrue_b8 (), p0)),
+ 		z0 = svsub_x (svptrue_b8 (), z1, svlastp_b8 (svptrue_b8 (), p0)));
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_bf16.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svbfloat16_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	w([0-9]+), 6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svbfloat16_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svbfloat16_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svbfloat16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f16.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svfloat16_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	w([0-9]+), 6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svfloat16_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat16_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svfloat32_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	w([0-9]+), 7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svfloat32_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat32_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_f64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svfloat64_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	w([0-9]+), 5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat64_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s16.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_x0_offs
*** 36,42 ****
  
  /*
  ** ld1q_gather_m2_offset:
! **	mov	(x[0-9]+), #?-2
  **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
--- 36,42 ----
  
  /*
  ** ld1q_gather_m2_offset:
! **	mov	(x[0-9]+), -2
  **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svint16_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	w([0-9]+), 6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svint16_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint16_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svint32_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	w([0-9]+), 7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svint32_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint32_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svint64_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	w([0-9]+), 5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint64_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_s8.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 64,71 ****
  
  /*
  ** ld1q_gather_16_offset:
! **	mov	(x[0-9]+), #?16
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_16_offset, svint8_t, svuint64_t,
--- 64,71 ----
  
  /*
  ** ld1q_gather_16_offset:
! **	mov	w([0-9]+), 16
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_16_offset, svint8_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u16.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	(x[0-9]+), #?6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svuint16_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_6_offset:
! **	mov	w([0-9]+), 6
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_6_offset, svuint16_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint16_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 10
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	(x[0-9]+), #?7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svuint32_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_7_offset:
! **	mov	w([0-9]+), 7
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_7_offset, svuint32_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint32_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 20
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 55,62 ****
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	(x[0-9]+), #?5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svuint64_t, svuint64_t,
--- 55,62 ----
  
  /*
  ** ld1q_gather_5_offset:
! **	mov	w([0-9]+), 5
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_index
*** 94,101 ****
  
  /*
  ** ld1q_gather_5_index:
! **	mov	(x[0-9]+), #?40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint64_t, svuint64_t,
--- 94,101 ----
  
  /*
  ** ld1q_gather_5_index:
! **	mov	w([0-9]+), 40
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_5_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ld1q_gather_u8.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ld1q_gather_0_offse
*** 64,71 ****
  
  /*
  ** ld1q_gather_16_offset:
! **	mov	(x[0-9]+), #?16
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_16_offset, svuint8_t, svuint64_t,
--- 64,71 ----
  
  /*
  ** ld1q_gather_16_offset:
! **	mov	w([0-9]+), 16
! **	ld1q	{z0\.q}, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ld1q_gather_16_offset, svuint8_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_f32_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_5_f32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_offset, svfloat32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_5_f32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_6_f32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_f32_offset, svfloat32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_6_f32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_6_f32_
*** 71,78 ****
  
  /*
  ** ldnt1_gather_7_f32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_f32_offset, svfloat32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_7_f32_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_7_f32_
*** 81,88 ****
  
  /*
  ** ldnt1_gather_8_f32_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_f32_offset, svfloat32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_8_f32_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_8_f32_
*** 91,98 ****
  
  /*
  ** ldnt1_gather_124_f32_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_f32_offset, svfloat32_t, svuint32_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_124_f32_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_124_f3
*** 101,108 ****
  
  /*
  ** ldnt1_gather_128_f32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_f32_offset, svfloat32_t, svuint32_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_128_f32_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_f32_
*** 140,147 ****
  
  /*
  ** ldnt1_gather_5_f32_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_index, svfloat32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1_gather_5_f32_index:
! **	mov	w([0-9]+), 20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_index, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f32_
*** 150,157 ****
  
  /*
  ** ldnt1_gather_31_f32_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f32_index, svfloat32_t, svuint32_t,
--- 150,157 ----
  
  /*
  ** ldnt1_gather_31_f32_index:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f32_index, svfloat32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f32
*** 160,167 ****
  
  /*
  ** ldnt1_gather_32_f32_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_f32_index, svfloat32_t, svuint32_t,
--- 160,167 ----
  
  /*
  ** ldnt1_gather_32_f32_index:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_f32_index, svfloat32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_f64_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_9_f64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_f64_offset, svfloat64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_9_f64_offset:
! **	mov	w([0-9]+), 9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_9_f64_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_10_f64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_f64_offset, svfloat64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_10_f64_offset:
! **	mov	w([0-9]+), 10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_10_f64
*** 71,78 ****
  
  /*
  ** ldnt1_gather_11_f64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_f64_offset, svfloat64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_11_f64_offset:
! **	mov	w([0-9]+), 11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_11_f64
*** 81,88 ****
  
  /*
  ** ldnt1_gather_12_f64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_f64_offset, svfloat64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_12_f64_offset:
! **	mov	w([0-9]+), 12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_12_f64
*** 91,98 ****
  
  /*
  ** ldnt1_gather_13_f64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_f64_offset, svfloat64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_13_f64_offset:
! **	mov	w([0-9]+), 13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_13_f64
*** 101,108 ****
  
  /*
  ** ldnt1_gather_14_f64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_f64_offset, svfloat64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_14_f64_offset:
! **	mov	w([0-9]+), 14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_14_f64
*** 111,118 ****
  
  /*
  ** ldnt1_gather_15_f64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_f64_offset, svfloat64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldnt1_gather_15_f64_offset:
! **	mov	w([0-9]+), 15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_15_f64
*** 121,128 ****
  
  /*
  ** ldnt1_gather_16_f64_offset:
! **	mov	(x[0-9]+), #?16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_f64_offset, svfloat64_t, svuint64_t,
--- 121,128 ----
  
  /*
  ** ldnt1_gather_16_f64_offset:
! **	mov	w([0-9]+), 16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_16_f64
*** 131,138 ****
  
  /*
  ** ldnt1_gather_248_f64_offset:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_f64_offset, svfloat64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** ldnt1_gather_248_f64_offset:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_248_f6
*** 141,148 ****
  
  /*
  ** ldnt1_gather_256_f64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_f64_offset, svfloat64_t, svuint64_t,
--- 141,148 ----
  
  /*
  ** ldnt1_gather_256_f64_offset:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_f64_
*** 180,187 ****
  
  /*
  ** ldnt1_gather_5_f64_index:
! **	mov	(x[0-9]+), #?40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f64_index, svfloat64_t, svuint64_t,
--- 180,187 ----
  
  /*
  ** ldnt1_gather_5_f64_index:
! **	mov	w([0-9]+), 40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f64_index, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_f64_
*** 190,197 ****
  
  /*
  ** ldnt1_gather_31_f64_index:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f64_index, svfloat64_t, svuint64_t,
--- 190,197 ----
  
  /*
  ** ldnt1_gather_31_f64_index:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f64_index, svfloat64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_f64
*** 200,207 ****
  
  /*
  ** ldnt1_gather_32_f64_index:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_f64_index, svfloat64_t, svuint64_t,
--- 200,207 ----
  
  /*
  ** ldnt1_gather_32_f64_index:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_s32_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_6_s32_
*** 71,78 ****
  
  /*
  ** ldnt1_gather_7_s32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_7_s32_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_7_s32_
*** 81,88 ****
  
  /*
  ** ldnt1_gather_8_s32_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_s32_offset, svint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_8_s32_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_8_s32_
*** 91,98 ****
  
  /*
  ** ldnt1_gather_124_s32_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_s32_offset, svint32_t, svuint32_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_124_s32_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_124_s3
*** 101,108 ****
  
  /*
  ** ldnt1_gather_128_s32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_s32_offset, svint32_t, svuint32_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_128_s32_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_s32_
*** 140,147 ****
  
  /*
  ** ldnt1_gather_5_s32_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_index, svint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1_gather_5_s32_index:
! **	mov	w([0-9]+), 20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s32_
*** 150,157 ****
  
  /*
  ** ldnt1_gather_31_s32_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s32_index, svint32_t, svuint32_t,
--- 150,157 ----
  
  /*
  ** ldnt1_gather_31_s32_index:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s32
*** 160,167 ****
  
  /*
  ** ldnt1_gather_32_s32_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_s32_index, svint32_t, svuint32_t,
--- 160,167 ----
  
  /*
  ** ldnt1_gather_32_s32_index:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_s64_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_9_s64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_9_s64_offset:
! **	mov	w([0-9]+), 9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_9_s64_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_10_s64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_10_s64_offset:
! **	mov	w([0-9]+), 10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_10_s64
*** 71,78 ****
  
  /*
  ** ldnt1_gather_11_s64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_11_s64_offset:
! **	mov	w([0-9]+), 11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_11_s64
*** 81,88 ****
  
  /*
  ** ldnt1_gather_12_s64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_12_s64_offset:
! **	mov	w([0-9]+), 12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_12_s64
*** 91,98 ****
  
  /*
  ** ldnt1_gather_13_s64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_s64_offset, svint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_13_s64_offset:
! **	mov	w([0-9]+), 13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_13_s64
*** 101,108 ****
  
  /*
  ** ldnt1_gather_14_s64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_s64_offset, svint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_14_s64_offset:
! **	mov	w([0-9]+), 14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_14_s64
*** 111,118 ****
  
  /*
  ** ldnt1_gather_15_s64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_s64_offset, svint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldnt1_gather_15_s64_offset:
! **	mov	w([0-9]+), 15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_15_s64
*** 121,128 ****
  
  /*
  ** ldnt1_gather_16_s64_offset:
! **	mov	(x[0-9]+), #?16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_s64_offset, svint64_t, svuint64_t,
--- 121,128 ----
  
  /*
  ** ldnt1_gather_16_s64_offset:
! **	mov	w([0-9]+), 16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_16_s64
*** 131,138 ****
  
  /*
  ** ldnt1_gather_248_s64_offset:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_s64_offset, svint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** ldnt1_gather_248_s64_offset:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_248_s6
*** 141,148 ****
  
  /*
  ** ldnt1_gather_256_s64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_s64_offset, svint64_t, svuint64_t,
--- 141,148 ----
  
  /*
  ** ldnt1_gather_256_s64_offset:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_s64_
*** 180,187 ****
  
  /*
  ** ldnt1_gather_5_s64_index:
! **	mov	(x[0-9]+), #?40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s64_index, svint64_t, svuint64_t,
--- 180,187 ----
  
  /*
  ** ldnt1_gather_5_s64_index:
! **	mov	w([0-9]+), 40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_s64_
*** 190,197 ****
  
  /*
  ** ldnt1_gather_31_s64_index:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s64_index, svint64_t, svuint64_t,
--- 190,197 ----
  
  /*
  ** ldnt1_gather_31_s64_index:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_s64
*** 200,207 ****
  
  /*
  ** ldnt1_gather_32_s64_index:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_s64_index, svint64_t, svuint64_t,
--- 200,207 ----
  
  /*
  ** ldnt1_gather_32_s64_index:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_u32_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_6_u32_
*** 71,78 ****
  
  /*
  ** ldnt1_gather_7_u32_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_7_u32_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_7_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_7_u32_
*** 81,88 ****
  
  /*
  ** ldnt1_gather_8_u32_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_u32_offset, svuint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_8_u32_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_8_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_8_u32_
*** 91,98 ****
  
  /*
  ** ldnt1_gather_124_u32_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_u32_offset, svuint32_t, svuint32_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_124_u32_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_124_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_124_u3
*** 101,108 ****
  
  /*
  ** ldnt1_gather_128_u32_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_u32_offset, svuint32_t, svuint32_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_128_u32_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_128_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_u32_
*** 140,147 ****
  
  /*
  ** ldnt1_gather_5_u32_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_index, svuint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1_gather_5_u32_index:
! **	mov	w([0-9]+), 20
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u32_
*** 150,157 ****
  
  /*
  ** ldnt1_gather_31_u32_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u32_index, svuint32_t, svuint32_t,
--- 150,157 ----
  
  /*
  ** ldnt1_gather_31_u32_index:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u32
*** 160,167 ****
  
  /*
  ** ldnt1_gather_32_u32_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_u32_index, svuint32_t, svuint32_t,
--- 160,167 ----
  
  /*
  ** ldnt1_gather_32_u32_index:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_u64_
*** 51,58 ****
  
  /*
  ** ldnt1_gather_9_u64_offset:
! **	mov	(x[0-9]+), #?9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1_gather_9_u64_offset:
! **	mov	w([0-9]+), 9
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_9_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_9_u64_
*** 61,68 ****
  
  /*
  ** ldnt1_gather_10_u64_offset:
! **	mov	(x[0-9]+), #?10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1_gather_10_u64_offset:
! **	mov	w([0-9]+), 10
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_10_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_10_u64
*** 71,78 ****
  
  /*
  ** ldnt1_gather_11_u64_offset:
! **	mov	(x[0-9]+), #?11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1_gather_11_u64_offset:
! **	mov	w([0-9]+), 11
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_11_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_11_u64
*** 81,88 ****
  
  /*
  ** ldnt1_gather_12_u64_offset:
! **	mov	(x[0-9]+), #?12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1_gather_12_u64_offset:
! **	mov	w([0-9]+), 12
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_12_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_12_u64
*** 91,98 ****
  
  /*
  ** ldnt1_gather_13_u64_offset:
! **	mov	(x[0-9]+), #?13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_u64_offset, svuint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1_gather_13_u64_offset:
! **	mov	w([0-9]+), 13
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_13_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_13_u64
*** 101,108 ****
  
  /*
  ** ldnt1_gather_14_u64_offset:
! **	mov	(x[0-9]+), #?14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_u64_offset, svuint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1_gather_14_u64_offset:
! **	mov	w([0-9]+), 14
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_14_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_14_u64
*** 111,118 ****
  
  /*
  ** ldnt1_gather_15_u64_offset:
! **	mov	(x[0-9]+), #?15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_u64_offset, svuint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** ldnt1_gather_15_u64_offset:
! **	mov	w([0-9]+), 15
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_15_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_15_u64
*** 121,128 ****
  
  /*
  ** ldnt1_gather_16_u64_offset:
! **	mov	(x[0-9]+), #?16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_u64_offset, svuint64_t, svuint64_t,
--- 121,128 ----
  
  /*
  ** ldnt1_gather_16_u64_offset:
! **	mov	w([0-9]+), 16
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_16_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_16_u64
*** 131,138 ****
  
  /*
  ** ldnt1_gather_248_u64_offset:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_u64_offset, svuint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** ldnt1_gather_248_u64_offset:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_248_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_248_u6
*** 141,148 ****
  
  /*
  ** ldnt1_gather_256_u64_offset:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_u64_offset, svuint64_t, svuint64_t,
--- 141,148 ----
  
  /*
  ** ldnt1_gather_256_u64_offset:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_256_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_0_u64_
*** 180,187 ****
  
  /*
  ** ldnt1_gather_5_u64_index:
! **	mov	(x[0-9]+), #?40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u64_index, svuint64_t, svuint64_t,
--- 180,187 ----
  
  /*
  ** ldnt1_gather_5_u64_index:
! **	mov	w([0-9]+), 40
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_5_u64_
*** 190,197 ****
  
  /*
  ** ldnt1_gather_31_u64_index:
! **	mov	(x[0-9]+), #?248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u64_index, svuint64_t, svuint64_t,
--- 190,197 ----
  
  /*
  ** ldnt1_gather_31_u64_index:
! **	mov	w([0-9]+), 248
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1_gather_31_u64
*** 200,207 ****
  
  /*
  ** ldnt1_gather_32_u64_index:
! **	mov	(x[0-9]+), #?256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_u64_index, svuint64_t, svuint64_t,
--- 200,207 ----
  
  /*
  ** ldnt1_gather_32_u64_index:
! **	mov	w([0-9]+), 256
! **	ldnt1d	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldnt1sb_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1sb_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s3
*** 61,68 ****
  
  /*
  ** ldnt1sb_gather_31_s32_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1sb_gather_31_s32_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s
*** 71,78 ****
  
  /*
  ** ldnt1sb_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1sb_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1sb_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sb_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1sb_gather_31_s64_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sb_gather_31_s64_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_s
*** 71,78 ****
  
  /*
  ** ldnt1sb_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sb_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldnt1sb_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1sb_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u3
*** 61,68 ****
  
  /*
  ** ldnt1sb_gather_31_u32_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1sb_gather_31_u32_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u
*** 71,78 ****
  
  /*
  ** ldnt1sb_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1sb_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1sb	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1sb_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sb_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1sb_gather_31_u64_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sb_gather_31_u64_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sb_gather_31_u
*** 71,78 ****
  
  /*
  ** ldnt1sb_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sb_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1sb	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sb_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldnt1sh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1sh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s3
*** 61,68 ****
  
  /*
  ** ldnt1sh_gather_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1sh_gather_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s3
*** 71,78 ****
  
  /*
  ** ldnt1sh_gather_62_s32_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1sh_gather_62_s32_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s
*** 81,88 ****
  
  /*
  ** ldnt1sh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1sh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_s3
*** 120,127 ****
  
  /*
  ** ldnt1sh_gather_5_s32_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s32_index, svint32_t, svuint32_t,
--- 120,127 ----
  
  /*
  ** ldnt1sh_gather_5_s32_index:
! **	mov	w([0-9]+), 10
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s3
*** 130,137 ****
  
  /*
  ** ldnt1sh_gather_31_s32_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s32_index, svint32_t, svuint32_t,
--- 130,137 ----
  
  /*
  ** ldnt1sh_gather_31_s32_index:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s
*** 140,147 ****
  
  /*
  ** ldnt1sh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_s32_index, svint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1sh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1sh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1sh_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sh_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldnt1sh_gather_62_s64_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sh_gather_62_s64_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_s
*** 81,88 ****
  
  /*
  ** ldnt1sh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1sh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_s6
*** 120,127 ****
  
  /*
  ** ldnt1sh_gather_5_s64_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s64_index, svint64_t, svuint64_t,
--- 120,127 ----
  
  /*
  ** ldnt1sh_gather_5_s64_index:
! **	mov	w([0-9]+), 10
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_s6
*** 130,137 ****
  
  /*
  ** ldnt1sh_gather_31_s64_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s64_index, svint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** ldnt1sh_gather_31_s64_index:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_s
*** 140,147 ****
  
  /*
  ** ldnt1sh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_s64_index, svint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1sh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldnt1sh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1sh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u3
*** 61,68 ****
  
  /*
  ** ldnt1sh_gather_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1sh_gather_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u3
*** 71,78 ****
  
  /*
  ** ldnt1sh_gather_62_u32_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1sh_gather_62_u32_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u
*** 81,88 ****
  
  /*
  ** ldnt1sh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1sh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_u3
*** 120,127 ****
  
  /*
  ** ldnt1sh_gather_5_u32_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u32_index, svuint32_t, svuint32_t,
--- 120,127 ----
  
  /*
  ** ldnt1sh_gather_5_u32_index:
! **	mov	w([0-9]+), 10
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u3
*** 130,137 ****
  
  /*
  ** ldnt1sh_gather_31_u32_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u32_index, svuint32_t, svuint32_t,
--- 130,137 ----
  
  /*
  ** ldnt1sh_gather_31_u32_index:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u
*** 140,147 ****
  
  /*
  ** ldnt1sh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1sh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1sh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1sh_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sh_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldnt1sh_gather_62_u64_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sh_gather_62_u64_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_62_u
*** 81,88 ****
  
  /*
  ** ldnt1sh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1sh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_0_u6
*** 120,127 ****
  
  /*
  ** ldnt1sh_gather_5_u64_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u64_index, svuint64_t, svuint64_t,
--- 120,127 ----
  
  /*
  ** ldnt1sh_gather_5_u64_index:
! **	mov	w([0-9]+), 10
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_5_u6
*** 130,137 ****
  
  /*
  ** ldnt1sh_gather_31_u64_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u64_index, svuint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** ldnt1sh_gather_31_u64_index:
! **	mov	w([0-9]+), 62
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sh_gather_31_u
*** 140,147 ****
  
  /*
  ** ldnt1sh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1sh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ldnt1sh	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1sw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1sw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldnt1sw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_s6
*** 81,88 ****
  
  /*
  ** ldnt1sw_gather_8_s64_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1sw_gather_8_s64_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_s6
*** 91,98 ****
  
  /*
  ** ldnt1sw_gather_124_s64_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_s64_offset, svint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1sw_gather_124_s64_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_
*** 101,108 ****
  
  /*
  ** ldnt1sw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1sw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_0_s6
*** 140,147 ****
  
  /*
  ** ldnt1sw_gather_5_s64_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s64_index, svint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1sw_gather_5_s64_index:
! **	mov	w([0-9]+), 20
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_s6
*** 150,157 ****
  
  /*
  ** ldnt1sw_gather_31_s64_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_s64_index, svint64_t, svuint64_t,
--- 150,157 ----
  
  /*
  ** ldnt1sw_gather_31_s64_index:
! **	mov	w([0-9]+), 124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_s
*** 160,167 ****
  
  /*
  ** ldnt1sw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_32_s64_index, svint64_t, svuint64_t,
--- 160,167 ----
  
  /*
  ** ldnt1sw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1sw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1sw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1sw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1sw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldnt1sw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1sw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_7_u6
*** 81,88 ****
  
  /*
  ** ldnt1sw_gather_8_u64_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1sw_gather_8_u64_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_8_u6
*** 91,98 ****
  
  /*
  ** ldnt1sw_gather_124_u64_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_u64_offset, svuint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1sw_gather_124_u64_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_124_
*** 101,108 ****
  
  /*
  ** ldnt1sw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1sw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_0_u6
*** 140,147 ****
  
  /*
  ** ldnt1sw_gather_5_u64_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u64_index, svuint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1sw_gather_5_u64_index:
! **	mov	w([0-9]+), 20
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_5_u6
*** 150,157 ****
  
  /*
  ** ldnt1sw_gather_31_u64_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_u64_index, svuint64_t, svuint64_t,
--- 150,157 ----
  
  /*
  ** ldnt1sw_gather_31_u64_index:
! **	mov	w([0-9]+), 124
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1sw_gather_31_u
*** 160,167 ****
  
  /*
  ** ldnt1sw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 160,167 ----
  
  /*
  ** ldnt1sw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ldnt1sw	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1sw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldnt1ub_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1ub_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s3
*** 61,68 ****
  
  /*
  ** ldnt1ub_gather_31_s32_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1ub_gather_31_s32_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s
*** 71,78 ****
  
  /*
  ** ldnt1ub_gather_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1ub_gather_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1ub_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1ub_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1ub_gather_31_s64_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1ub_gather_31_s64_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_s
*** 71,78 ****
  
  /*
  ** ldnt1ub_gather_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1ub_gather_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldnt1ub_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1ub_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u3
*** 61,68 ****
  
  /*
  ** ldnt1ub_gather_31_u32_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1ub_gather_31_u32_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u
*** 71,78 ****
  
  /*
  ** ldnt1ub_gather_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1ub_gather_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1b	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1ub_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1ub_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1ub_gather_31_u64_offset:
! **	mov	(x[0-9]+), #?31
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1ub_gather_31_u64_offset:
! **	mov	w([0-9]+), 31
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1ub_gather_31_u
*** 71,78 ****
  
  /*
  ** ldnt1ub_gather_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1ub_gather_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	ldnt1b	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1ub_gather_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_s3
*** 51,58 ****
  
  /*
  ** ldnt1uh_gather_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s32_offset, svint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1uh_gather_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s3
*** 61,68 ****
  
  /*
  ** ldnt1uh_gather_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s32_offset, svint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1uh_gather_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s3
*** 71,78 ****
  
  /*
  ** ldnt1uh_gather_62_s32_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s32_offset, svint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1uh_gather_62_s32_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s
*** 81,88 ****
  
  /*
  ** ldnt1uh_gather_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_s32_offset, svint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1uh_gather_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_s3
*** 120,127 ****
  
  /*
  ** ldnt1uh_gather_5_s32_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s32_index, svint32_t, svuint32_t,
--- 120,127 ----
  
  /*
  ** ldnt1uh_gather_5_s32_index:
! **	mov	w([0-9]+), 10
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s3
*** 130,137 ****
  
  /*
  ** ldnt1uh_gather_31_s32_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s32_index, svint32_t, svuint32_t,
--- 130,137 ----
  
  /*
  ** ldnt1uh_gather_31_s32_index:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s32_index, svint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s
*** 140,147 ****
  
  /*
  ** ldnt1uh_gather_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_s32_index, svint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1uh_gather_32_s32_index:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1uh_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1uh_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1uh_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1uh_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldnt1uh_gather_62_s64_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1uh_gather_62_s64_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_s
*** 81,88 ****
  
  /*
  ** ldnt1uh_gather_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1uh_gather_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_s6
*** 120,127 ****
  
  /*
  ** ldnt1uh_gather_5_s64_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s64_index, svint64_t, svuint64_t,
--- 120,127 ----
  
  /*
  ** ldnt1uh_gather_5_s64_index:
! **	mov	w([0-9]+), 10
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_s6
*** 130,137 ****
  
  /*
  ** ldnt1uh_gather_31_s64_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s64_index, svint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** ldnt1uh_gather_31_s64_index:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_s
*** 140,147 ****
  
  /*
  ** ldnt1uh_gather_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_s64_index, svint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1uh_gather_32_s64_index:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_u3
*** 51,58 ****
  
  /*
  ** ldnt1uh_gather_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
--- 51,58 ----
  
  /*
  ** ldnt1uh_gather_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u3
*** 61,68 ****
  
  /*
  ** ldnt1uh_gather_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u32_offset, svuint32_t, svuint32_t,
--- 61,68 ----
  
  /*
  ** ldnt1uh_gather_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u3
*** 71,78 ****
  
  /*
  ** ldnt1uh_gather_62_u32_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u32_offset, svuint32_t, svuint32_t,
--- 71,78 ----
  
  /*
  ** ldnt1uh_gather_62_u32_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u
*** 81,88 ****
  
  /*
  ** ldnt1uh_gather_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
--- 81,88 ----
  
  /*
  ** ldnt1uh_gather_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_u3
*** 120,127 ****
  
  /*
  ** ldnt1uh_gather_5_u32_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u32_index, svuint32_t, svuint32_t,
--- 120,127 ----
  
  /*
  ** ldnt1uh_gather_5_u32_index:
! **	mov	w([0-9]+), 10
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u3
*** 130,137 ****
  
  /*
  ** ldnt1uh_gather_31_u32_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u32_index, svuint32_t, svuint32_t,
--- 130,137 ----
  
  /*
  ** ldnt1uh_gather_31_u32_index:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u32_index, svuint32_t, svuint32_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u
*** 140,147 ****
  
  /*
  ** ldnt1uh_gather_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_u32_index, svuint32_t, svuint32_t,
--- 140,147 ----
  
  /*
  ** ldnt1uh_gather_32_u32_index:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.s, p0/z, \[z0\.s, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1uh_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1uh_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1uh_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1uh_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldnt1uh_gather_62_u64_offset:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1uh_gather_62_u64_offset:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_62_u
*** 81,88 ****
  
  /*
  ** ldnt1uh_gather_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1uh_gather_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_0_u6
*** 120,127 ****
  
  /*
  ** ldnt1uh_gather_5_u64_index:
! **	mov	(x[0-9]+), #?10
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u64_index, svuint64_t, svuint64_t,
--- 120,127 ----
  
  /*
  ** ldnt1uh_gather_5_u64_index:
! **	mov	w([0-9]+), 10
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_5_u6
*** 130,137 ****
  
  /*
  ** ldnt1uh_gather_31_u64_index:
! **	mov	(x[0-9]+), #?62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u64_index, svuint64_t, svuint64_t,
--- 130,137 ----
  
  /*
  ** ldnt1uh_gather_31_u64_index:
! **	mov	w([0-9]+), 62
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uh_gather_31_u
*** 140,147 ****
  
  /*
  ** ldnt1uh_gather_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_u64_index, svuint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1uh_gather_32_u64_index:
! **	mov	w([0-9]+), 64
! **	ldnt1h	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uh_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_0_s6
*** 51,58 ****
  
  /*
  ** ldnt1uw_gather_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s64_offset, svint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1uw_gather_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s6
*** 61,68 ****
  
  /*
  ** ldnt1uw_gather_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_s64_offset, svint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1uw_gather_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_s6
*** 71,78 ****
  
  /*
  ** ldnt1uw_gather_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_s64_offset, svint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1uw_gather_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_s6
*** 81,88 ****
  
  /*
  ** ldnt1uw_gather_8_s64_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_s64_offset, svint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1uw_gather_8_s64_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_s6
*** 91,98 ****
  
  /*
  ** ldnt1uw_gather_124_s64_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_s64_offset, svint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1uw_gather_124_s64_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_
*** 101,108 ****
  
  /*
  ** ldnt1uw_gather_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_128_s64_offset, svint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1uw_gather_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_0_s6
*** 140,147 ****
  
  /*
  ** ldnt1uw_gather_5_s64_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s64_index, svint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1uw_gather_5_s64_index:
! **	mov	w([0-9]+), 20
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_s6
*** 150,157 ****
  
  /*
  ** ldnt1uw_gather_31_s64_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_s64_index, svint64_t, svuint64_t,
--- 150,157 ----
  
  /*
  ** ldnt1uw_gather_31_s64_index:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_s64_index, svint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_s
*** 160,167 ****
  
  /*
  ** ldnt1uw_gather_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_32_s64_index, svint64_t, svuint64_t,
--- 160,167 ----
  
  /*
  ** ldnt1uw_gather_32_s64_index:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c	Sun May 31 22:32:10 2026
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_0_u6
*** 51,58 ****
  
  /*
  ** ldnt1uw_gather_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
--- 51,58 ----
  
  /*
  ** ldnt1uw_gather_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u6
*** 61,68 ****
  
  /*
  ** ldnt1uw_gather_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
--- 61,68 ----
  
  /*
  ** ldnt1uw_gather_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_6_u6
*** 71,78 ****
  
  /*
  ** ldnt1uw_gather_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
--- 71,78 ----
  
  /*
  ** ldnt1uw_gather_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_7_u6
*** 81,88 ****
  
  /*
  ** ldnt1uw_gather_8_u64_offset:
! **	mov	(x[0-9]+), #?8
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_u64_offset, svuint64_t, svuint64_t,
--- 81,88 ----
  
  /*
  ** ldnt1uw_gather_8_u64_offset:
! **	mov	w([0-9]+), 8
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_8_u6
*** 91,98 ****
  
  /*
  ** ldnt1uw_gather_124_u64_offset:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_u64_offset, svuint64_t, svuint64_t,
--- 91,98 ----
  
  /*
  ** ldnt1uw_gather_124_u64_offset:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_124_
*** 101,108 ****
  
  /*
  ** ldnt1uw_gather_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
--- 101,108 ----
  
  /*
  ** ldnt1uw_gather_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_0_u6
*** 140,147 ****
  
  /*
  ** ldnt1uw_gather_5_u64_index:
! **	mov	(x[0-9]+), #?20
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u64_index, svuint64_t, svuint64_t,
--- 140,147 ----
  
  /*
  ** ldnt1uw_gather_5_u64_index:
! **	mov	w([0-9]+), 20
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_5_u6
*** 150,157 ****
  
  /*
  ** ldnt1uw_gather_31_u64_index:
! **	mov	(x[0-9]+), #?124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_u64_index, svuint64_t, svuint64_t,
--- 150,157 ----
  
  /*
  ** ldnt1uw_gather_31_u64_index:
! **	mov	w([0-9]+), 124
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_LOAD_GATHER_ZS (ldnt1uw_gather_31_u
*** 160,167 ****
  
  /*
  ** ldnt1uw_gather_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, \1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_32_u64_index, svuint64_t, svuint64_t,
--- 160,167 ----
  
  /*
  ** ldnt1uw_gather_32_u64_index:
! **	mov	w([0-9]+), 128
! **	ldnt1w	z0\.d, p0/z, \[z0\.d, x\1\]
  **	ret
  */
  TEST_LOAD_GATHER_ZS (ldnt1uw_gather_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** logb_f16_z:
+ **	flogb	z0\.h, p0/z, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (logb_f16_z, svint16_t, svfloat16_t,
+ 	     z0 = svlogb_f16_z (p0, z4),
+ 	     z0 = svlogb_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** logb_f32_z:
+ **	flogb	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (logb_f32_z, svint32_t, svfloat32_t,
+ 	     z0 = svlogb_f32_z (p0, z4),
+ 	     z0 = svlogb_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/logb_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** logb_f64_z:
+ **	flogb	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (logb_f64_z, svint64_t, svfloat64_t,
+ 	     z0 = svlogb_f64_z (p0, z4),
+ 	     z0 = svlogb_z (p0, z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fneg	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f16_z_tied1, svfloat16_t,
+ 		z0 = svneg_f16_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_f16_z_untied:
+ **	fneg	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f16_z_untied, svfloat16_t,
+ 		z0 = svneg_f16_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fneg	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f32_z_tied1, svfloat32_t,
+ 		z0 = svneg_f32_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_f32_z_untied:
+ **	fneg	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f32_z_untied, svfloat32_t,
+ 		z0 = svneg_f32_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_f64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fneg	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f64_z_tied1, svfloat64_t,
+ 		z0 = svneg_f64_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_f64_z_untied:
+ **	fneg	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_f64_z_untied, svfloat64_t,
+ 		z0 = svneg_f64_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	neg	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s16_z_tied1, svint16_t,
+ 		z0 = svneg_s16_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_s16_z_untied:
+ **	neg	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s16_z_untied, svint16_t,
+ 		z0 = svneg_s16_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	neg	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s32_z_tied1, svint32_t,
+ 		z0 = svneg_s32_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_s32_z_untied:
+ **	neg	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s32_z_untied, svint32_t,
+ 		z0 = svneg_s32_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	neg	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s64_z_tied1, svint64_t,
+ 		z0 = svneg_s64_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_s64_z_untied:
+ **	neg	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s64_z_untied, svint64_t,
+ 		z0 = svneg_s64_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/neg_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** neg_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	neg	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s8_z_tied1, svint8_t,
+ 		z0 = svneg_s8_z (p0, z0),
+ 		z0 = svneg_z (p0, z0))
+ 
+ /*
+ ** neg_s8_z_untied:
+ **	neg	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (neg_s8_z_untied, svint8_t,
+ 		z0 = svneg_s8_z (p0, z1),
+ 		z0 = svneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s16_z_tied1, svint16_t,
+ 		z0 = svnot_s16_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_s16_z_untied:
+ **	not	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s16_z_untied, svint16_t,
+ 		z0 = svnot_s16_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s32_z_tied1, svint32_t,
+ 		z0 = svnot_s32_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_s32_z_untied:
+ **	not	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s32_z_untied, svint32_t,
+ 		z0 = svnot_s32_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_s64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s64_z_tied1, svint64_t,
+ 		z0 = svnot_s64_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_s64_z_untied:
+ **	not	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s64_z_untied, svint64_t,
+ 		z0 = svnot_s64_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s8_z_tied1, svint8_t,
+ 		z0 = svnot_s8_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_s8_z_untied:
+ **	not	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_s8_z_untied, svint8_t,
+ 		z0 = svnot_s8_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u16_z_tied1, svuint16_t,
+ 		z0 = svnot_u16_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_u16_z_untied:
+ **	not	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u16_z_untied, svuint16_t,
+ 		z0 = svnot_u16_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u32_z_tied1, svuint32_t,
+ 		z0 = svnot_u32_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_u32_z_untied:
+ **	not	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u32_z_untied, svuint32_t,
+ 		z0 = svnot_u32_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_u64_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.d, p0/z, \1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u64_z_tied1, svuint64_t,
+ 		z0 = svnot_u64_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_u64_z_untied:
+ **	not	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u64_z_untied, svuint64_t,
+ 		z0 = svnot_u64_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/not_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** not_u8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	not	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u8_z_tied1, svuint8_t,
+ 		z0 = svnot_u8_z (p0, z0),
+ 		z0 = svnot_z (p0, z0))
+ 
+ /*
+ ** not_u8_z_untied:
+ **	not	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (not_u8_z_untied, svuint8_t,
+ 		z0 = svnot_u8_z (p0, z1),
+ 		z0 = svnot_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qabs_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqabs	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s16_z_tied1, svint16_t,
+ 		z0 = svqabs_s16_z (p0, z0),
+ 		z0 = svqabs_z (p0, z0))
+ 
+ /*
+ ** qabs_s16_z_untied:
+ **	sqabs	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s16_z_untied, svint16_t,
+ 		z0 = svqabs_s16_z (p0, z1),
+ 		z0 = svqabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qabs_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqabs	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s32_z_tied1, svint32_t,
+ 		z0 = svqabs_s32_z (p0, z0),
+ 		z0 = svqabs_z (p0, z0))
+ 
+ /*
+ ** qabs_s32_z_untied:
+ **	sqabs	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s32_z_untied, svint32_t,
+ 		z0 = svqabs_s32_z (p0, z1),
+ 		z0 = svqabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qabs_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	sqabs	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s64_z_tied1, svint64_t,
+ 		z0 = svqabs_s64_z (p0, z0),
+ 		z0 = svqabs_z (p0, z0))
+ 
+ /*
+ ** qabs_s64_z_untied:
+ **	sqabs	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s64_z_untied, svint64_t,
+ 		z0 = svqabs_s64_z (p0, z1),
+ 		z0 = svqabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qabs_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qabs_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqabs	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s8_z_tied1, svint8_t,
+ 		z0 = svqabs_s8_z (p0, z0),
+ 		z0 = svqabs_z (p0, z0))
+ 
+ /*
+ ** qabs_s8_z_untied:
+ **	sqabs	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (qabs_s8_z_untied, svint8_t,
+ 		z0 = svqabs_s8_z (p0, z1),
+ 		z0 = svqabs_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qneg_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqneg	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s16_z_tied1, svint16_t,
+ 		z0 = svqneg_s16_z (p0, z0),
+ 		z0 = svqneg_z (p0, z0))
+ 
+ /*
+ ** qneg_s16_z_untied:
+ **	sqneg	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s16_z_untied, svint16_t,
+ 		z0 = svqneg_s16_z (p0, z1),
+ 		z0 = svqneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qneg_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqneg	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s32_z_tied1, svint32_t,
+ 		z0 = svqneg_s32_z (p0, z0),
+ 		z0 = svqneg_z (p0, z0))
+ 
+ /*
+ ** qneg_s32_z_untied:
+ **	sqneg	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s32_z_untied, svint32_t,
+ 		z0 = svqneg_s32_z (p0, z1),
+ 		z0 = svqneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qneg_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	sqneg	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s64_z_tied1, svint64_t,
+ 		z0 = svqneg_s64_z (p0, z0),
+ 		z0 = svqneg_z (p0, z0))
+ 
+ /*
+ ** qneg_s64_z_untied:
+ **	sqneg	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s64_z_untied, svint64_t,
+ 		z0 = svqneg_s64_z (p0, z1),
+ 		z0 = svqneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/qneg_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** qneg_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	sqneg	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s8_z_tied1, svint8_t,
+ 		z0 = svqneg_s8_z (p0, z0),
+ 		z0 = svqneg_z (p0, z0))
+ 
+ /*
+ ** qneg_s8_z_untied:
+ **	sqneg	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (qneg_s8_z_untied, svint8_t,
+ 		z0 = svqneg_s8_z (p0, z1),
+ 		z0 = svqneg_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_s16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s16_z_tied1, svint16_t,
+ 		z0 = svrbit_s16_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_s16_z_untied:
+ **	rbit	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s16_z_untied, svint16_t,
+ 		z0 = svrbit_s16_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_s32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s32_z_tied1, svint32_t,
+ 		z0 = svrbit_s32_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_s32_z_untied:
+ **	rbit	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s32_z_untied, svint32_t,
+ 		z0 = svrbit_s32_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_s64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	rbit	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s64_z_tied1, svint64_t,
+ 		z0 = svrbit_s64_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_s64_z_untied:
+ **	rbit	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s64_z_untied, svint64_t,
+ 		z0 = svrbit_s64_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_s8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s8_z_tied1, svint8_t,
+ 		z0 = svrbit_s8_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_s8_z_untied:
+ **	rbit	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_s8_z_untied, svint8_t,
+ 		z0 = svrbit_s8_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_u16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u16_z_tied1, svuint16_t,
+ 		z0 = svrbit_u16_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_u16_z_untied:
+ **	rbit	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u16_z_untied, svuint16_t,
+ 		z0 = svrbit_u16_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_u32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u32_z_tied1, svuint32_t,
+ 		z0 = svrbit_u32_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_u32_z_untied:
+ **	rbit	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u32_z_untied, svuint32_t,
+ 		z0 = svrbit_u32_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_u64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	rbit	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u64_z_tied1, svuint64_t,
+ 		z0 = svrbit_u64_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_u64_z_untied:
+ **	rbit	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u64_z_untied, svuint64_t,
+ 		z0 = svrbit_u64_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rbit_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rbit_u8_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	rbit	z0\.b, p0/z, \1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u8_z_tied1, svuint8_t,
+ 		z0 = svrbit_u8_z (p0, z0),
+ 		z0 = svrbit_z (p0, z0))
+ 
+ /*
+ ** rbit_u8_z_untied:
+ **	rbit	z0\.b, p0/z, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (rbit_u8_z_untied, svuint8_t,
+ 		z0 = svrbit_u8_z (p0, z1),
+ 		z0 = svrbit_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpe_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */                                       
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** recpe_u32_z_tied1:
+ **	urecpe	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpe_u32_z_tied1, svuint32_t,
+ 		z0 = svrecpe_u32_z (p0, z0),
+ 		z0 = svrecpe_z (p0, z0))
+ 
+ /*
+ ** recpe_u32_z_untied:
+ **	urecpe	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpe_u32_z_untied, svuint32_t,
+ 		z0 = svrecpe_u32_z (p0, z1),
+ 		z0 = svrecpe_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** recpx_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frecpx	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f16_z_tied1, svfloat16_t,
+ 		z0 = svrecpx_f16_z (p0, z0),
+ 		z0 = svrecpx_z (p0, z0))
+ 
+ /*
+ ** recpx_f16_z_untied:
+ **	frecpx	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f16_z_untied, svfloat16_t,
+ 		z0 = svrecpx_f16_z (p0, z1),
+ 		z0 = svrecpx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** recpx_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frecpx	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f32_z_tied1, svfloat32_t,
+ 		z0 = svrecpx_f32_z (p0, z0),
+ 		z0 = svrecpx_z (p0, z0))
+ 
+ /*
+ ** recpx_f32_z_untied:
+ **	frecpx	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f32_z_untied, svfloat32_t,
+ 		z0 = svrecpx_f32_z (p0, z1),
+ 		z0 = svrecpx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/recpx_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** recpx_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frecpx	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f64_z_tied1, svfloat64_t,
+ 		z0 = svrecpx_f64_z (p0, z0),
+ 		z0 = svrecpx_z (p0, z0))
+ 
+ /*
+ ** recpx_f64_z_untied:
+ **	frecpx	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (recpx_f64_z_untied, svfloat64_t,
+ 		z0 = svrecpx_f64_z (p0, z1),
+ 		z0 = svrecpx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_s16_z_tied1:
+ **	revb	z0\.h, p0/z, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s16_z_tied1, svint16_t,
+ 		z0 = svrevb_s16_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_s16_z_untied:
+ **	revb	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s16_z_untied, svint16_t,
+ 		z0 = svrevb_s16_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
+ 
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_s32_z_tied1:
+ **	revb	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s32_z_tied1, svint32_t,
+ 		z0 = svrevb_s32_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_s32_z_untied:
+ **	revb	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s32_z_untied, svint32_t,
+ 		z0 = svrevb_s32_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_s64_z_tied1:
+ **	revb	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s64_z_tied1, svint64_t,
+ 		z0 = svrevb_s64_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_s64_z_untied:
+ **	revb	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_s64_z_untied, svint64_t,
+ 		z0 = svrevb_s64_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_u16_z_tied1:
+ **	revb	z0\.h, p0/z, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u16_z_tied1, svuint16_t,
+ 		z0 = svrevb_u16_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_u16_z_untied:
+ **	revb	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u16_z_untied, svuint16_t,
+ 		z0 = svrevb_u16_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_u32_z_tied1:
+ **	revb	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u32_z_tied1, svuint32_t,
+ 		z0 = svrevb_u32_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_u32_z_untied:
+ **	revb	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u32_z_untied, svuint32_t,
+ 		z0 = svrevb_u32_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revb_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revb_u64_z_tied1:
+ **	revb	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u64_z_tied1, svuint64_t,
+ 		z0 = svrevb_u64_z (p0, z0),
+ 		z0 = svrevb_z (p0, z0))
+ 
+ /*
+ ** revb_u64_z_untied:
+ **	revb	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revb_u64_z_untied, svuint64_t,
+ 		z0 = svrevb_u64_z (p0, z1),
+ 		z0 = svrevb_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_bf16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_bf16_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_bf16_z_tied1, svbfloat16_t,
+ 		z0 = svrevd_bf16_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_bf16_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_bf16_z_untied, svbfloat16_t,
+ 		z0 = svrevd_bf16_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_f16_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f16_z_tied1, svfloat16_t,
+ 		z0 = svrevd_f16_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_f16_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f16_z_untied, svfloat16_t,
+ 		z0 = svrevd_f16_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_f32_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f32_z_tied1, svfloat32_t,
+ 		z0 = svrevd_f32_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_f32_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f32_z_untied, svfloat32_t,
+ 		z0 = svrevd_f32_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_f64_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f64_z_tied1, svfloat64_t,
+ 		z0 = svrevd_f64_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_f64_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_f64_z_untied, svfloat64_t,
+ 		z0 = svrevd_f64_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_s16_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s16_z_tied1, svint16_t,
+ 		z0 = svrevd_s16_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_s16_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s16_z_untied, svint16_t,
+ 		z0 = svrevd_s16_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_s32_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s32_z_tied1, svint32_t,
+ 		z0 = svrevd_s32_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_s32_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s32_z_untied, svint32_t,
+ 		z0 = svrevd_s32_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_s64_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s64_z_tied1, svint64_t,
+ 		z0 = svrevd_s64_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_s64_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s64_z_untied, svint64_t,
+ 		z0 = svrevd_s64_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_s8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_s8_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s8_z_tied1, svint8_t,
+ 		z0 = svrevd_s8_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_s8_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_s8_z_untied, svint8_t,
+ 		z0 = svrevd_s8_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_u16_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u16_z_tied1, svuint16_t,
+ 		z0 = svrevd_u16_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_u16_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u16_z_untied, svuint16_t,
+ 		z0 = svrevd_u16_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_u32_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u32_z_tied1, svuint32_t,
+ 		z0 = svrevd_u32_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_u32_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u32_z_untied, svuint32_t,
+ 		z0 = svrevd_u32_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_u64_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u64_z_tied1, svuint64_t,
+ 		z0 = svrevd_u64_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_u64_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u64_z_untied, svuint64_t,
+ 		z0 = svrevd_u64_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revd_u8_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revd_u8_z_tied1:
+ **	revd	z0\.q, p0/z, z0\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u8_z_tied1, svuint8_t,
+ 		z0 = svrevd_u8_z (p0, z0),
+ 		z0 = svrevd_z (p0, z0))
+ 
+ /*
+ ** revd_u8_z_untied:
+ **	revd	z0\.q, p0/z, z1\.q
+ **	ret
+ */
+ TEST_UNIFORM_Z (revd_u8_z_untied, svuint8_t,
+ 		z0 = svrevd_u8_z (p0, z1),
+ 		z0 = svrevd_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revh_s32_z_tied1:
+ **	revh	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_s32_z_tied1, svint32_t,
+ 		z0 = svrevh_s32_z (p0, z0),
+ 		z0 = svrevh_z (p0, z0))
+ 
+ /*
+ ** revh_s32_z_untied:
+ **	revh	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_s32_z_untied, svint32_t,
+ 		z0 = svrevh_s32_z (p0, z1),
+ 		z0 = svrevh_z (p0, z1))
+ 
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revh_s64_z_tied1:
+ **	revh	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_s64_z_tied1, svint64_t,
+ 		z0 = svrevh_s64_z (p0, z0),
+ 		z0 = svrevh_z (p0, z0))
+ 
+ /*
+ ** revh_s64_z_untied:
+ **	revh	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_s64_z_untied, svint64_t,
+ 		z0 = svrevh_s64_z (p0, z1),
+ 		z0 = svrevh_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revh_u32_z_tied1:
+ **	revh	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_u32_z_tied1, svuint32_t,
+ 		z0 = svrevh_u32_z (p0, z0),
+ 		z0 = svrevh_z (p0, z0))
+ 
+ /*
+ ** revh_u32_z_untied:
+ **	revh	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_u32_z_untied, svuint32_t,
+ 		z0 = svrevh_u32_z (p0, z1),
+ 		z0 = svrevh_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revh_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revh_u64_z_tied1:
+ **	revh	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_u64_z_tied1, svuint64_t,
+ 		z0 = svrevh_u64_z (p0, z0),
+ 		z0 = svrevh_z (p0, z0))
+ 
+ /*
+ ** revh_u64_z_untied:
+ **	revh	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revh_u64_z_untied, svuint64_t,
+ 		z0 = svrevh_u64_z (p0, z1),
+ 		z0 = svrevh_z (p0, z1))
+ 
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_s64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revw_s64_z_tied1:
+ **	revw	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revw_s64_z_tied1, svint64_t,
+ 		z0 = svrevw_s64_z (p0, z0),
+ 		z0 = svrevw_z (p0, z0))
+ 
+ /*
+ ** revw_s64_z_untied:
+ **	revw	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revw_s64_z_untied, svint64_t,
+ 		z0 = svrevw_s64_z (p0, z1),
+ 		z0 = svrevw_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/revw_u64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** revw_u64_z_tied1:
+ **	revw	z0\.d, p0/z, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revw_u64_z_tied1, svuint64_t,
+ 		z0 = svrevw_u64_z (p0, z0),
+ 		z0 = svrevw_z (p0, z0))
+ 
+ /*
+ ** revw_u64_z_untied:
+ **	revw	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (revw_u64_z_untied, svuint64_t,
+ 		z0 = svrevw_u64_z (p0, z1),
+ 		z0 = svrevw_z (p0, z1))
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint32x_f32_m_tied1:
+ **	frint32x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f32_m_tied1, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32x_f32_m (z0, p0, z4),
+ 	     z0 = svrint32x_m (z0, p0, z4))
+ 
+ /*
+ ** rint32x_f32_m_untied:
+ **	movprfx	z0, z1
+ **	frint32x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f32_m_untied, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32x_f32_m (z1, p0, z4),
+ 	     z0 = svrint32x_m (z1, p0, z4))
+ 
+ /*
+ ** rint32x_f32_z:
+ **	frint32x	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f32_z, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32x_f32_z (p0, z4),
+ 	     z0 = svrint32x_z (p0, z4))
+ 
+ /*
+ ** rint32x_f32_x:
+ **	movprfx	z0, z4
+ **	frint32x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32x_f32_x (p0, z4),
+ 	     z0 = svrint32x_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint32x_f32_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint32x_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32x_f32_x (svptrue_b32 (), z4),
+ 	     z0 = svrint32x_x (svptrue_b32 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32x_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint32x_f64_m_tied1:
+ **	frint32x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f64_m_tied1, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32x_f64_m (z0, p0, z4),
+ 	     z0 = svrint32x_m (z0, p0, z4))
+ 
+ /*
+ ** rint32x_f64_m_untied:
+ **	movprfx	z0, z1
+ **	frint32x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f64_m_untied, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32x_f64_m (z1, p0, z4),
+ 	     z0 = svrint32x_m (z1, p0, z4))
+ 
+ /*
+ ** rint32x_f64_z:
+ **	frint32x	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f64_z, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32x_f64_z (p0, z4),
+ 	     z0 = svrint32x_z (p0, z4))
+ 
+ /*
+ ** rint32x_f64_x:
+ **	movprfx	z0, z4
+ **	frint32x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32x_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32x_f64_x (p0, z4),
+ 	     z0 = svrint32x_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint32x_f64_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint32x_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32x_f64_x (svptrue_b64 (), z4),
+ 	     z0 = svrint32x_x (svptrue_b64 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint32z_f32_m_tied1:
+ **	frint32z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f32_m_tied1, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32z_f32_m (z0, p0, z4),
+ 	     z0 = svrint32z_m (z0, p0, z4))
+ 
+ /*
+ ** rint32z_f32_m_untied:
+ **	movprfx	z0, z1
+ **	frint32z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f32_m_untied, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32z_f32_m (z1, p0, z4),
+ 	     z0 = svrint32z_m (z1, p0, z4))
+ 
+ /*
+ ** rint32z_f32_z:
+ **	frint32z	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f32_z, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32z_f32_z (p0, z4),
+ 	     z0 = svrint32z_z (p0, z4))
+ 
+ /*
+ ** rint32z_f32_x:
+ **	movprfx	z0, z4
+ **	frint32z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32z_f32_x (p0, z4),
+ 	     z0 = svrint32z_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint32z_f32_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint32z_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint32z_f32_x (svptrue_b32 (), z4),
+ 	     z0 = svrint32z_x (svptrue_b32 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint32z_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint32z_f64_m_tied1:
+ **	frint32z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f64_m_tied1, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32z_f64_m (z0, p0, z4),
+ 	     z0 = svrint32z_m (z0, p0, z4))
+ 
+ /*
+ ** rint32z_f64_m_untied:
+ **	movprfx	z0, z1
+ **	frint32z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f64_m_untied, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32z_f64_m (z1, p0, z4),
+ 	     z0 = svrint32z_m (z1, p0, z4))
+ 
+ /*
+ ** rint32z_f64_z:
+ **	frint32z	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f64_z, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32z_f64_z (p0, z4),
+ 	     z0 = svrint32z_z (p0, z4))
+ 
+ /*
+ ** rint32z_f64_x:
+ **	movprfx	z0, z4
+ **	frint32z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint32z_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32z_f64_x (p0, z4),
+ 	     z0 = svrint32z_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint32z_f64_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint32z_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint32z_f64_x (svptrue_b64 (), z4),
+ 	     z0 = svrint32z_x (svptrue_b64 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint64x_f32_m_tied1:
+ **	frint64x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f32_m_tied1, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64x_f32_m (z0, p0, z4),
+ 	     z0 = svrint64x_m (z0, p0, z4))
+ 
+ /*
+ ** rint64x_f32_m_untied:
+ **	movprfx	z0, z1
+ **	frint64x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f32_m_untied, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64x_f32_m (z1, p0, z4),
+ 	     z0 = svrint64x_m (z1, p0, z4))
+ 
+ /*
+ ** rint64x_f32_z:
+ **	frint64x	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f32_z, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64x_f32_z (p0, z4),
+ 	     z0 = svrint64x_z (p0, z4))
+ 
+ /*
+ ** rint64x_f32_x:
+ **	movprfx	z0, z4
+ **	frint64x	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64x_f32_x (p0, z4),
+ 	     z0 = svrint64x_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint64x_f32_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint64x_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64x_f32_x (svptrue_b32 (), z4),
+ 	     z0 = svrint64x_x (svptrue_b32 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64x_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint64x_f64_m_tied1:
+ **	frint64x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f64_m_tied1, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64x_f64_m (z0, p0, z4),
+ 	     z0 = svrint64x_m (z0, p0, z4))
+ 
+ /*
+ ** rint64x_f64_m_untied:
+ **	movprfx	z0, z1
+ **	frint64x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f64_m_untied, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64x_f64_m (z1, p0, z4),
+ 	     z0 = svrint64x_m (z1, p0, z4))
+ 
+ /*
+ ** rint64x_f64_z:
+ **	frint64x	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f64_z, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64x_f64_z (p0, z4),
+ 	     z0 = svrint64x_z (p0, z4))
+ 
+ /*
+ ** rint64x_f64_x:
+ **	movprfx	z0, z4
+ **	frint64x	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64x_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64x_f64_x (p0, z4),
+ 	     z0 = svrint64x_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint64x_f64_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint64x_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64x_f64_x (svptrue_b64 (), z4),
+ 	     z0 = svrint64x_x (svptrue_b64 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f32.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint64z_f32_m_tied1:
+ **	frint64z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f32_m_tied1, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64z_f32_m (z0, p0, z4),
+ 	     z0 = svrint64z_m (z0, p0, z4))
+ 
+ /*
+ ** rint64z_f32_m_untied:
+ **	movprfx	z0, z1
+ **	frint64z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f32_m_untied, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64z_f32_m (z1, p0, z4),
+ 	     z0 = svrint64z_m (z1, p0, z4))
+ 
+ /*
+ ** rint64z_f32_z:
+ **	frint64z	z0\.s, p0/z, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f32_z, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64z_f32_z (p0, z4),
+ 	     z0 = svrint64z_z (p0, z4))
+ 
+ /*
+ ** rint64z_f32_x:
+ **	movprfx	z0, z4
+ **	frint64z	z0\.s, p0/m, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64z_f32_x (p0, z4),
+ 	     z0 = svrint64z_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint64z_f32_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint64z_f32_x, svfloat32_t, svfloat32_t,
+ 	     z0 = svrint64z_f32_x (svptrue_b32 (), z4),
+ 	     z0 = svrint64z_x (svptrue_b32 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rint64z_f64.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rint64z_f64_m_tied1:
+ **	frint64z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f64_m_tied1, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64z_f64_m (z0, p0, z4),
+ 	     z0 = svrint64z_m (z0, p0, z4))
+ 
+ /*
+ ** rint64z_f64_m_untied:
+ **	movprfx	z0, z1
+ **	frint64z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f64_m_untied, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64z_f64_m (z1, p0, z4),
+ 	     z0 = svrint64z_m (z1, p0, z4))
+ 
+ /*
+ ** rint64z_f64_z:
+ **	frint64z	z0\.d, p0/z, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f64_z, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64z_f64_z (p0, z4),
+ 	     z0 = svrint64z_z (p0, z4))
+ 
+ /*
+ ** rint64z_f64_x:
+ **	movprfx	z0, z4
+ **	frint64z	z0\.d, p0/m, z4\.d
+ **	ret
+ */
+ TEST_DUAL_Z (rint64z_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64z_f64_x (p0, z4),
+ 	     z0 = svrint64z_x (p0, z4))
+ 
+ /*
+ ** ptrue_rint64z_f64_x:
+ **	...
+ **	ptrue	p[0-9]+\.b[^\n]*
+ **	...
+ **	ret
+ */
+ TEST_DUAL_Z (ptrue_rint64z_f64_x, svfloat64_t, svfloat64_t,
+ 	     z0 = svrint64z_f64_x (svptrue_b64 (), z4),
+ 	     z0 = svrint64z_x (svptrue_b64 (), z4))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinta_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frinta	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f16_z_tied1, svfloat16_t,
+ 		z0 = svrinta_f16_z (p0, z0),
+ 		z0 = svrinta_z (p0, z0))
+ 
+ /*
+ ** rinta_f16_z_untied:
+ **	frinta	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f16_z_untied, svfloat16_t,
+ 		z0 = svrinta_f16_z (p0, z1),
+ 		z0 = svrinta_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinta_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frinta	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f32_z_tied1, svfloat32_t,
+ 		z0 = svrinta_f32_z (p0, z0),
+ 		z0 = svrinta_z (p0, z0))
+ 
+ /*
+ ** rinta_f32_z_untied:
+ **	frinta	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f32_z_untied, svfloat32_t,
+ 		z0 = svrinta_f32_z (p0, z1),
+ 		z0 = svrinta_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinta_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinta_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frinta	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f64_z_tied1, svfloat64_t,
+ 		z0 = svrinta_f64_z (p0, z0),
+ 		z0 = svrinta_z (p0, z0))
+ 
+ /*
+ ** rinta_f64_z_untied:
+ **	frinta	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinta_f64_z_untied, svfloat64_t,
+ 		z0 = svrinta_f64_z (p0, z1),
+ 		z0 = svrinta_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinti_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frinti	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f16_z_tied1, svfloat16_t,
+ 		z0 = svrinti_f16_z (p0, z0),
+ 		z0 = svrinti_z (p0, z0))
+ 
+ /*
+ ** rinti_f16_z_untied:
+ **	frinti	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f16_z_untied, svfloat16_t,
+ 		z0 = svrinti_f16_z (p0, z1),
+ 		z0 = svrinti_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinti_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frinti	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f32_z_tied1, svfloat32_t,
+ 		z0 = svrinti_f32_z (p0, z0),
+ 		z0 = svrinti_z (p0, z0))
+ 
+ /*
+ ** rinti_f32_z_untied:
+ **	frinti	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f32_z_untied, svfloat32_t,
+ 		z0 = svrinti_f32_z (p0, z1),
+ 		z0 = svrinti_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rinti_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rinti_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frinti	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f64_z_tied1, svfloat64_t,
+ 		z0 = svrinti_f64_z (p0, z0),
+ 		z0 = svrinti_z (p0, z0))
+ 
+ /*
+ ** rinti_f64_z_untied:
+ **	frinti	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rinti_f64_z_untied, svfloat64_t,
+ 		z0 = svrinti_f64_z (p0, z1),
+ 		z0 = svrinti_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintm_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintm	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f16_z_tied1, svfloat16_t,
+ 		z0 = svrintm_f16_z (p0, z0),
+ 		z0 = svrintm_z (p0, z0))
+ 
+ /*
+ ** rintm_f16_z_untied:
+ **	frintm	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f16_z_untied, svfloat16_t,
+ 		z0 = svrintm_f16_z (p0, z1),
+ 		z0 = svrintm_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintm_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintm	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f32_z_tied1, svfloat32_t,
+ 		z0 = svrintm_f32_z (p0, z0),
+ 		z0 = svrintm_z (p0, z0))
+ 
+ /*
+ ** rintm_f32_z_untied:
+ **	frintm	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f32_z_untied, svfloat32_t,
+ 		z0 = svrintm_f32_z (p0, z1),
+ 		z0 = svrintm_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintm_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintm_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frintm	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f64_z_tied1, svfloat64_t,
+ 		z0 = svrintm_f64_z (p0, z0),
+ 		z0 = svrintm_z (p0, z0))
+ 
+ /*
+ ** rintm_f64_z_untied:
+ **	frintm	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintm_f64_z_untied, svfloat64_t,
+ 		z0 = svrintm_f64_z (p0, z1),
+ 		z0 = svrintm_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintn_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintn	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f16_z_tied1, svfloat16_t,
+ 		z0 = svrintn_f16_z (p0, z0),
+ 		z0 = svrintn_z (p0, z0))
+ 
+ /*
+ ** rintn_f16_z_untied:
+ **	frintn	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f16_z_untied, svfloat16_t,
+ 		z0 = svrintn_f16_z (p0, z1),
+ 		z0 = svrintn_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintn_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintn	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f32_z_tied1, svfloat32_t,
+ 		z0 = svrintn_f32_z (p0, z0),
+ 		z0 = svrintn_z (p0, z0))
+ 
+ /*
+ ** rintn_f32_z_untied:
+ **	frintn	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f32_z_untied, svfloat32_t,
+ 		z0 = svrintn_f32_z (p0, z1),
+ 		z0 = svrintn_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintn_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintn_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frintn	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f64_z_tied1, svfloat64_t,
+ 		z0 = svrintn_f64_z (p0, z0),
+ 		z0 = svrintn_z (p0, z0))
+ 
+ /*
+ ** rintn_f64_z_untied:
+ **	frintn	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintn_f64_z_untied, svfloat64_t,
+ 		z0 = svrintn_f64_z (p0, z1),
+ 		z0 = svrintn_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintp_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintp	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f16_z_tied1, svfloat16_t,
+ 		z0 = svrintp_f16_z (p0, z0),
+ 		z0 = svrintp_z (p0, z0))
+ 
+ /*
+ ** rintp_f16_z_untied:
+ **	frintp	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f16_z_untied, svfloat16_t,
+ 		z0 = svrintp_f16_z (p0, z1),
+ 		z0 = svrintp_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintp_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintp	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f32_z_tied1, svfloat32_t,
+ 		z0 = svrintp_f32_z (p0, z0),
+ 		z0 = svrintp_z (p0, z0))
+ 
+ /*
+ ** rintp_f32_z_untied:
+ **	frintp	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f32_z_untied, svfloat32_t,
+ 		z0 = svrintp_f32_z (p0, z1),
+ 		z0 = svrintp_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintp_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintp_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frintp	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f64_z_tied1, svfloat64_t,
+ 		z0 = svrintp_f64_z (p0, z0),
+ 		z0 = svrintp_z (p0, z0))
+ 
+ /*
+ ** rintp_f64_z_untied:
+ **	frintp	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintp_f64_z_untied, svfloat64_t,
+ 		z0 = svrintp_f64_z (p0, z1),
+ 		z0 = svrintp_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintx_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintx	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f16_z_tied1, svfloat16_t,
+ 		z0 = svrintx_f16_z (p0, z0),
+ 		z0 = svrintx_z (p0, z0))
+ 
+ /*
+ ** rintx_f16_z_untied:
+ **	frintx	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f16_z_untied, svfloat16_t,
+ 		z0 = svrintx_f16_z (p0, z1),
+ 		z0 = svrintx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintx_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintx	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f32_z_tied1, svfloat32_t,
+ 		z0 = svrintx_f32_z (p0, z0),
+ 		z0 = svrintx_z (p0, z0))
+ 
+ /*
+ ** rintx_f32_z_untied:
+ **	frintx	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f32_z_untied, svfloat32_t,
+ 		z0 = svrintx_f32_z (p0, z1),
+ 		z0 = svrintx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintx_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintx_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frintx	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f64_z_tied1, svfloat64_t,
+ 		z0 = svrintx_f64_z (p0, z0),
+ 		z0 = svrintx_z (p0, z0))
+ 
+ /*
+ ** rintx_f64_z_untied:
+ **	frintx	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintx_f64_z_untied, svfloat64_t,
+ 		z0 = svrintx_f64_z (p0, z1),
+ 		z0 = svrintx_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintz_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintz	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f16_z_tied1, svfloat16_t,
+ 		z0 = svrintz_f16_z (p0, z0),
+ 		z0 = svrintz_z (p0, z0))
+ 
+ /*
+ ** rintz_f16_z_untied:
+ **	frintz	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f16_z_untied, svfloat16_t,
+ 		z0 = svrintz_f16_z (p0, z1),
+ 		z0 = svrintz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintz_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	frintz	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f32_z_tied1, svfloat32_t,
+ 		z0 = svrintz_f32_z (p0, z0),
+ 		z0 = svrintz_z (p0, z0))
+ 
+ /*
+ ** rintz_f32_z_untied:
+ **	frintz	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f32_z_untied, svfloat32_t,
+ 		z0 = svrintz_f32_z (p0, z1),
+ 		z0 = svrintz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rintz_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rintz_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	frintz	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f64_z_tied1, svfloat64_t,
+ 		z0 = svrintz_f64_z (p0, z0),
+ 		z0 = svrintz_z (p0, z0))
+ 
+ /*
+ ** rintz_f64_z_untied:
+ **	frintz	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (rintz_f64_z_untied, svfloat64_t,
+ 		z0 = svrintz_f64_z (p0, z1),
+ 		z0 = svrintz_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/rsqrte_u32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** rsqrte_u32_z_tied1:
+ **	ursqrte	z0\.s, p0/z, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rsqrte_u32_z_tied1, svuint32_t,
+ 		z0 = svrsqrte_u32_z (p0, z0),
+ 		z0 = svrsqrte_z (p0, z0))
+ 
+ /*
+ ** rsqrte_u32_z_untied:
+ **	ursqrte	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (rsqrte_u32_z_untied, svuint32_t,
+ 		z0 = svrsqrte_u32_z (p0, z1),
+ 		z0 = svrsqrte_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f16_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** sqrt_f16_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fsqrt	z0\.h, p0/z, \1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f16_z_tied1, svfloat16_t,
+ 		z0 = svsqrt_f16_z (p0, z0),
+ 		z0 = svsqrt_z (p0, z0))
+ 
+ /*
+ ** sqrt_f16_z_untied:
+ **	fsqrt	z0\.h, p0/z, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f16_z_untied, svfloat16_t,
+ 		z0 = svsqrt_f16_z (p0, z1),
+ 		z0 = svsqrt_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f32_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** sqrt_f32_z_tied1:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	fsqrt	z0\.s, p0/z, \1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f32_z_tied1, svfloat32_t,
+ 		z0 = svsqrt_f32_z (p0, z0),
+ 		z0 = svsqrt_z (p0, z0))
+ 
+ /*
+ ** sqrt_f32_z_untied:
+ **	fsqrt	z0\.s, p0/z, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f32_z_untied, svfloat32_t,
+ 		z0 = svsqrt_f32_z (p0, z1),
+ 		z0 = svsqrt_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/sqrt_f64_z.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ 
+ #pragma GCC target "+sve2p2"
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sme2p2"
+ #endif
+ 
+ /*
+ ** sqrt_f64_z_tied1:
+ **	mov	(z[0-9]+\.d), z0\.d
+ **	fsqrt	z0\.d, p0/z, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f64_z_tied1, svfloat64_t,
+ 		z0 = svsqrt_f64_z (p0, z0),
+ 		z0 = svsqrt_z (p0, z0))
+ 
+ /*
+ ** sqrt_f64_z_untied:
+ **	fsqrt	z0\.d, p0/z, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (sqrt_f64_z_untied, svfloat64_t,
+ 		z0 = svsqrt_f64_z (p0, z1),
+ 		z0 = svsqrt_z (p0, z1))
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_bf16.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_bf
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_bf16_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_bf16_offset, svbfloat16_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_bf16_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_bf16_offset, svbfloat16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f16.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_f1
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_f16_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f16_offset, svfloat16_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_f16_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f16_offset, svfloat16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_f3
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_f32_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f32_offset, svfloat32_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_f32_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f32_offset, svfloat32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_f64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_f6
*** 75,82 ****
  
  /*
  ** st1q_scatter_1_f64_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f64_offset, svfloat64_t, svuint64_t,
--- 75,82 ----
  
  /*
  ** st1q_scatter_1_f64_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_1_f6
*** 85,92 ****
  
  /*
  ** st1q_scatter_1_f64_index:
! **	mov	(x[0-9]+), #?8
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f64_index, svfloat64_t, svuint64_t,
--- 85,92 ----
  
  /*
  ** st1q_scatter_1_f64_index:
! **	mov	w([0-9]+), 8
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s16.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_s1
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_s16_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s16_offset, svint16_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_s16_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s16_offset, svint16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_s3
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_s32_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s32_offset, svint32_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_s32_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s32_offset, svint32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_s6
*** 75,82 ****
  
  /*
  ** st1q_scatter_1_s64_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s64_offset, svint64_t, svuint64_t,
--- 75,82 ----
  
  /*
  ** st1q_scatter_1_s64_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_1_s6
*** 85,92 ****
  
  /*
  ** st1q_scatter_1_s64_index:
! **	mov	(x[0-9]+), #?8
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s64_index, svint64_t, svuint64_t,
--- 85,92 ----
  
  /*
  ** st1q_scatter_1_s64_index:
! **	mov	w([0-9]+), 8
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_s8.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_s8
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_s8_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s8_offset, svint8_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_s8_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_s8_offset, svint8_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u16.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_u1
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_u16_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u16_offset, svuint16_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_u16_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u16_offset, svuint16_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_u3
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_u32_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u32_offset, svuint32_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_u32_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u32_offset, svuint32_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_u6
*** 75,82 ****
  
  /*
  ** st1q_scatter_1_u64_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u64_offset, svuint64_t, svuint64_t,
--- 75,82 ----
  
  /*
  ** st1q_scatter_1_u64_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_1_u6
*** 85,92 ****
  
  /*
  ** st1q_scatter_1_u64_index:
! **	mov	(x[0-9]+), #?8
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u64_index, svuint64_t, svuint64_t,
--- 85,92 ----
  
  /*
  ** st1q_scatter_1_u64_index:
! **	mov	w([0-9]+), 8
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/st1q_scatter_u8.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (st1q_scatter_0_u8
*** 46,53 ****
  
  /*
  ** st1q_scatter_1_u8_offset:
! **	mov	(x[0-9]+), #?1
! **	st1q	{z0\.q}, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u8_offset, svuint8_t, svuint64_t,
--- 46,53 ----
  
  /*
  ** st1q_scatter_1_u8_offset:
! **	mov	w([0-9]+), 1
! **	st1q	{z0\.q}, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (st1q_scatter_1_u8_offset, svuint8_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_f
*** 42,49 ****
  
  /*
  ** stnt1_scatter_5_f32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f32_offset, svfloat32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_5_f32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f
*** 52,59 ****
  
  /*
  ** stnt1_scatter_6_f32_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_f32_offset, svfloat32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_6_f32_offset:
! **	mov	w([0-9]+), 6
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_6_f
*** 62,69 ****
  
  /*
  ** stnt1_scatter_7_f32_offset:
! **	mov	(x[0-9]+), #?7
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_f32_offset, svfloat32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_7_f32_offset:
! **	mov	w([0-9]+), 7
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_7_f
*** 72,79 ****
  
  /*
  ** stnt1_scatter_8_f32_offset:
! **	mov	(x[0-9]+), #?8
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_f32_offset, svfloat32_t, svuint32_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_8_f32_offset:
! **	mov	w([0-9]+), 8
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_8_f
*** 82,89 ****
  
  /*
  ** stnt1_scatter_124_f32_offset:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_f32_offset, svfloat32_t, svuint32_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_124_f32_offset:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_124
*** 92,99 ****
  
  /*
  ** stnt1_scatter_128_f32_offset:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_f32_offset, svfloat32_t, svuint32_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_128_f32_offset:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_f32_offset, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_f
*** 131,138 ****
  
  /*
  ** stnt1_scatter_5_f32_index:
! **	mov	(x[0-9]+), #?20
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f32_index, svfloat32_t, svuint32_t,
--- 131,138 ----
  
  /*
  ** stnt1_scatter_5_f32_index:
! **	mov	w([0-9]+), 20
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f32_index, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f
*** 141,148 ****
  
  /*
  ** stnt1_scatter_31_f32_index:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_f32_index, svfloat32_t, svuint32_t,
--- 141,148 ----
  
  /*
  ** stnt1_scatter_31_f32_index:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_f32_index, svfloat32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 151,158 ****
  
  /*
  ** stnt1_scatter_32_f32_index:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_f32_index, svfloat32_t, svuint32_t,
--- 151,158 ----
  
  /*
  ** stnt1_scatter_32_f32_index:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_f32_index, svfloat32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_f
*** 42,49 ****
  
  /*
  ** stnt1_scatter_9_f64_offset:
! **	mov	(x[0-9]+), #?9
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_f64_offset, svfloat64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_9_f64_offset:
! **	mov	w([0-9]+), 9
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_9_f
*** 52,59 ****
  
  /*
  ** stnt1_scatter_10_f64_offset:
! **	mov	(x[0-9]+), #?10
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_f64_offset, svfloat64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_10_f64_offset:
! **	mov	w([0-9]+), 10
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_10_
*** 62,69 ****
  
  /*
  ** stnt1_scatter_11_f64_offset:
! **	mov	(x[0-9]+), #?11
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_f64_offset, svfloat64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_11_f64_offset:
! **	mov	w([0-9]+), 11
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_11_
*** 72,79 ****
  
  /*
  ** stnt1_scatter_12_f64_offset:
! **	mov	(x[0-9]+), #?12
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_f64_offset, svfloat64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_12_f64_offset:
! **	mov	w([0-9]+), 12
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_12_
*** 82,89 ****
  
  /*
  ** stnt1_scatter_13_f64_offset:
! **	mov	(x[0-9]+), #?13
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_f64_offset, svfloat64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_13_f64_offset:
! **	mov	w([0-9]+), 13
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_13_
*** 92,99 ****
  
  /*
  ** stnt1_scatter_14_f64_offset:
! **	mov	(x[0-9]+), #?14
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_f64_offset, svfloat64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_14_f64_offset:
! **	mov	w([0-9]+), 14
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_14_
*** 102,109 ****
  
  /*
  ** stnt1_scatter_15_f64_offset:
! **	mov	(x[0-9]+), #?15
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_f64_offset, svfloat64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** stnt1_scatter_15_f64_offset:
! **	mov	w([0-9]+), 15
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_15_
*** 112,119 ****
  
  /*
  ** stnt1_scatter_16_f64_offset:
! **	mov	(x[0-9]+), #?16
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_f64_offset, svfloat64_t, svuint64_t,
--- 112,119 ----
  
  /*
  ** stnt1_scatter_16_f64_offset:
! **	mov	w([0-9]+), 16
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_16_
*** 122,129 ****
  
  /*
  ** stnt1_scatter_248_f64_offset:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_f64_offset, svfloat64_t, svuint64_t,
--- 122,129 ----
  
  /*
  ** stnt1_scatter_248_f64_offset:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_248
*** 132,139 ****
  
  /*
  ** stnt1_scatter_256_f64_offset:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_f64_offset, svfloat64_t, svuint64_t,
--- 132,139 ----
  
  /*
  ** stnt1_scatter_256_f64_offset:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_f64_offset, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_f
*** 171,178 ****
  
  /*
  ** stnt1_scatter_5_f64_index:
! **	mov	(x[0-9]+), #?40
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f64_index, svfloat64_t, svuint64_t,
--- 171,178 ----
  
  /*
  ** stnt1_scatter_5_f64_index:
! **	mov	w([0-9]+), 40
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f64_index, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_f
*** 181,188 ****
  
  /*
  ** stnt1_scatter_31_f64_index:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_f64_index, svfloat64_t, svuint64_t,
--- 181,188 ----
  
  /*
  ** stnt1_scatter_31_f64_index:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_f64_index, svfloat64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 191,198 ****
  
  /*
  ** stnt1_scatter_32_f64_index:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_f64_index, svfloat64_t, svuint64_t,
--- 191,198 ----
  
  /*
  ** stnt1_scatter_32_f64_index:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_f64_index, svfloat64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_s
*** 42,49 ****
  
  /*
  ** stnt1_scatter_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s32_offset, svint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s
*** 52,59 ****
  
  /*
  ** stnt1_scatter_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_s32_offset, svint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_6_s
*** 62,69 ****
  
  /*
  ** stnt1_scatter_7_s32_offset:
! **	mov	(x[0-9]+), #?7
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_s32_offset, svint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_7_s32_offset:
! **	mov	w([0-9]+), 7
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_7_s
*** 72,79 ****
  
  /*
  ** stnt1_scatter_8_s32_offset:
! **	mov	(x[0-9]+), #?8
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_s32_offset, svint32_t, svuint32_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_8_s32_offset:
! **	mov	w([0-9]+), 8
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_8_s
*** 82,89 ****
  
  /*
  ** stnt1_scatter_124_s32_offset:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_s32_offset, svint32_t, svuint32_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_124_s32_offset:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_124
*** 92,99 ****
  
  /*
  ** stnt1_scatter_128_s32_offset:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_s32_offset, svint32_t, svuint32_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_128_s32_offset:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_s
*** 131,138 ****
  
  /*
  ** stnt1_scatter_5_s32_index:
! **	mov	(x[0-9]+), #?20
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s32_index, svint32_t, svuint32_t,
--- 131,138 ----
  
  /*
  ** stnt1_scatter_5_s32_index:
! **	mov	w([0-9]+), 20
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s32_index, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s
*** 141,148 ****
  
  /*
  ** stnt1_scatter_31_s32_index:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_s32_index, svint32_t, svuint32_t,
--- 141,148 ----
  
  /*
  ** stnt1_scatter_31_s32_index:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_s32_index, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 151,158 ****
  
  /*
  ** stnt1_scatter_32_s32_index:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_s32_index, svint32_t, svuint32_t,
--- 151,158 ----
  
  /*
  ** stnt1_scatter_32_s32_index:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_s
*** 42,49 ****
  
  /*
  ** stnt1_scatter_9_s64_offset:
! **	mov	(x[0-9]+), #?9
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_9_s64_offset:
! **	mov	w([0-9]+), 9
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_9_s
*** 52,59 ****
  
  /*
  ** stnt1_scatter_10_s64_offset:
! **	mov	(x[0-9]+), #?10
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_10_s64_offset:
! **	mov	w([0-9]+), 10
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_10_
*** 62,69 ****
  
  /*
  ** stnt1_scatter_11_s64_offset:
! **	mov	(x[0-9]+), #?11
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_11_s64_offset:
! **	mov	w([0-9]+), 11
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_11_
*** 72,79 ****
  
  /*
  ** stnt1_scatter_12_s64_offset:
! **	mov	(x[0-9]+), #?12
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_s64_offset, svint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_12_s64_offset:
! **	mov	w([0-9]+), 12
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_12_
*** 82,89 ****
  
  /*
  ** stnt1_scatter_13_s64_offset:
! **	mov	(x[0-9]+), #?13
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_s64_offset, svint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_13_s64_offset:
! **	mov	w([0-9]+), 13
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_13_
*** 92,99 ****
  
  /*
  ** stnt1_scatter_14_s64_offset:
! **	mov	(x[0-9]+), #?14
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_s64_offset, svint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_14_s64_offset:
! **	mov	w([0-9]+), 14
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_14_
*** 102,109 ****
  
  /*
  ** stnt1_scatter_15_s64_offset:
! **	mov	(x[0-9]+), #?15
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_s64_offset, svint64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** stnt1_scatter_15_s64_offset:
! **	mov	w([0-9]+), 15
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_15_
*** 112,119 ****
  
  /*
  ** stnt1_scatter_16_s64_offset:
! **	mov	(x[0-9]+), #?16
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_s64_offset, svint64_t, svuint64_t,
--- 112,119 ----
  
  /*
  ** stnt1_scatter_16_s64_offset:
! **	mov	w([0-9]+), 16
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_16_
*** 122,129 ****
  
  /*
  ** stnt1_scatter_248_s64_offset:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_s64_offset, svint64_t, svuint64_t,
--- 122,129 ----
  
  /*
  ** stnt1_scatter_248_s64_offset:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_248
*** 132,139 ****
  
  /*
  ** stnt1_scatter_256_s64_offset:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_s64_offset, svint64_t, svuint64_t,
--- 132,139 ----
  
  /*
  ** stnt1_scatter_256_s64_offset:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_s
*** 171,178 ****
  
  /*
  ** stnt1_scatter_5_s64_index:
! **	mov	(x[0-9]+), #?40
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s64_index, svint64_t, svuint64_t,
--- 171,178 ----
  
  /*
  ** stnt1_scatter_5_s64_index:
! **	mov	w([0-9]+), 40
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_s
*** 181,188 ****
  
  /*
  ** stnt1_scatter_31_s64_index:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_s64_index, svint64_t, svuint64_t,
--- 181,188 ----
  
  /*
  ** stnt1_scatter_31_s64_index:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 191,198 ****
  
  /*
  ** stnt1_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_s64_index, svint64_t, svuint64_t,
--- 191,198 ----
  
  /*
  ** stnt1_scatter_32_s64_index:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_u
*** 42,49 ****
  
  /*
  ** stnt1_scatter_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u32_offset, svuint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u
*** 52,59 ****
  
  /*
  ** stnt1_scatter_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_u32_offset, svuint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_6_u
*** 62,69 ****
  
  /*
  ** stnt1_scatter_7_u32_offset:
! **	mov	(x[0-9]+), #?7
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_u32_offset, svuint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_7_u32_offset:
! **	mov	w([0-9]+), 7
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_7_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_7_u
*** 72,79 ****
  
  /*
  ** stnt1_scatter_8_u32_offset:
! **	mov	(x[0-9]+), #?8
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_u32_offset, svuint32_t, svuint32_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_8_u32_offset:
! **	mov	w([0-9]+), 8
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_8_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_8_u
*** 82,89 ****
  
  /*
  ** stnt1_scatter_124_u32_offset:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_u32_offset, svuint32_t, svuint32_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_124_u32_offset:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_124_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_124
*** 92,99 ****
  
  /*
  ** stnt1_scatter_128_u32_offset:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_u32_offset, svuint32_t, svuint32_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_128_u32_offset:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_128_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_u
*** 131,138 ****
  
  /*
  ** stnt1_scatter_5_u32_index:
! **	mov	(x[0-9]+), #?20
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u32_index, svuint32_t, svuint32_t,
--- 131,138 ----
  
  /*
  ** stnt1_scatter_5_u32_index:
! **	mov	w([0-9]+), 20
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u32_index, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u
*** 141,148 ****
  
  /*
  ** stnt1_scatter_31_u32_index:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_u32_index, svuint32_t, svuint32_t,
--- 141,148 ----
  
  /*
  ** stnt1_scatter_31_u32_index:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_u32_index, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 151,158 ****
  
  /*
  ** stnt1_scatter_32_u32_index:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_u32_index, svuint32_t, svuint32_t,
--- 151,158 ----
  
  /*
  ** stnt1_scatter_32_u32_index:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_u
*** 42,49 ****
  
  /*
  ** stnt1_scatter_9_u64_offset:
! **	mov	(x[0-9]+), #?9
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1_scatter_9_u64_offset:
! **	mov	w([0-9]+), 9
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_9_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_9_u
*** 52,59 ****
  
  /*
  ** stnt1_scatter_10_u64_offset:
! **	mov	(x[0-9]+), #?10
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1_scatter_10_u64_offset:
! **	mov	w([0-9]+), 10
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_10_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_10_
*** 62,69 ****
  
  /*
  ** stnt1_scatter_11_u64_offset:
! **	mov	(x[0-9]+), #?11
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1_scatter_11_u64_offset:
! **	mov	w([0-9]+), 11
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_11_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_11_
*** 72,79 ****
  
  /*
  ** stnt1_scatter_12_u64_offset:
! **	mov	(x[0-9]+), #?12
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_u64_offset, svuint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1_scatter_12_u64_offset:
! **	mov	w([0-9]+), 12
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_12_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_12_
*** 82,89 ****
  
  /*
  ** stnt1_scatter_13_u64_offset:
! **	mov	(x[0-9]+), #?13
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_u64_offset, svuint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** stnt1_scatter_13_u64_offset:
! **	mov	w([0-9]+), 13
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_13_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_13_
*** 92,99 ****
  
  /*
  ** stnt1_scatter_14_u64_offset:
! **	mov	(x[0-9]+), #?14
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_u64_offset, svuint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** stnt1_scatter_14_u64_offset:
! **	mov	w([0-9]+), 14
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_14_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_14_
*** 102,109 ****
  
  /*
  ** stnt1_scatter_15_u64_offset:
! **	mov	(x[0-9]+), #?15
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_u64_offset, svuint64_t, svuint64_t,
--- 102,109 ----
  
  /*
  ** stnt1_scatter_15_u64_offset:
! **	mov	w([0-9]+), 15
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_15_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_15_
*** 112,119 ****
  
  /*
  ** stnt1_scatter_16_u64_offset:
! **	mov	(x[0-9]+), #?16
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_u64_offset, svuint64_t, svuint64_t,
--- 112,119 ----
  
  /*
  ** stnt1_scatter_16_u64_offset:
! **	mov	w([0-9]+), 16
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_16_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_16_
*** 122,129 ****
  
  /*
  ** stnt1_scatter_248_u64_offset:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_u64_offset, svuint64_t, svuint64_t,
--- 122,129 ----
  
  /*
  ** stnt1_scatter_248_u64_offset:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_248_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_248
*** 132,139 ****
  
  /*
  ** stnt1_scatter_256_u64_offset:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_u64_offset, svuint64_t, svuint64_t,
--- 132,139 ----
  
  /*
  ** stnt1_scatter_256_u64_offset:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_256_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_0_u
*** 171,178 ****
  
  /*
  ** stnt1_scatter_5_u64_index:
! **	mov	(x[0-9]+), #?40
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u64_index, svuint64_t, svuint64_t,
--- 171,178 ----
  
  /*
  ** stnt1_scatter_5_u64_index:
! **	mov	w([0-9]+), 40
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_5_u
*** 181,188 ****
  
  /*
  ** stnt1_scatter_31_u64_index:
! **	mov	(x[0-9]+), #?248
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_u64_index, svuint64_t, svuint64_t,
--- 181,188 ----
  
  /*
  ** stnt1_scatter_31_u64_index:
! **	mov	w([0-9]+), 248
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1_scatter_31_
*** 191,198 ****
  
  /*
  ** stnt1_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?256
! **	stnt1d	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 191,198 ----
  
  /*
  ** stnt1_scatter_32_u64_index:
! **	mov	w([0-9]+), 256
! **	stnt1d	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1b_scatter_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_s32_offset, svint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1b_scatter_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1b_scatter_31_s32_offset:
! **	mov	(x[0-9]+), #?31
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_s32_offset, svint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1b_scatter_31_s32_offset:
! **	mov	w([0-9]+), 31
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_31
*** 62,69 ****
  
  /*
  ** stnt1b_scatter_32_s32_offset:
! **	mov	(x[0-9]+), #?32
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_s32_offset, svint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1b_scatter_32_s32_offset:
! **	mov	w([0-9]+), 32
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_s32_offset, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1b_scatter_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1b_scatter_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1b_scatter_31_s64_offset:
! **	mov	(x[0-9]+), #?31
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1b_scatter_31_s64_offset:
! **	mov	w([0-9]+), 31
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_31
*** 62,69 ****
  
  /*
  ** stnt1b_scatter_32_s64_offset:
! **	mov	(x[0-9]+), #?32
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1b_scatter_32_s64_offset:
! **	mov	w([0-9]+), 32
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_s64_offset, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1b_scatter_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_u32_offset, svuint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1b_scatter_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1b_scatter_31_u32_offset:
! **	mov	(x[0-9]+), #?31
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_u32_offset, svuint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1b_scatter_31_u32_offset:
! **	mov	w([0-9]+), 31
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_31
*** 62,69 ****
  
  /*
  ** stnt1b_scatter_32_u32_offset:
! **	mov	(x[0-9]+), #?32
! **	stnt1b	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_u32_offset, svuint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1b_scatter_32_u32_offset:
! **	mov	w([0-9]+), 32
! **	stnt1b	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_u32_offset, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1b_scatter_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1b_scatter_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1b_scatter_31_u64_offset:
! **	mov	(x[0-9]+), #?31
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1b_scatter_31_u64_offset:
! **	mov	w([0-9]+), 31
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_31_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1b_scatter_31
*** 62,69 ****
  
  /*
  ** stnt1b_scatter_32_u64_offset:
! **	mov	(x[0-9]+), #?32
! **	stnt1b	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1b_scatter_32_u64_offset:
! **	mov	w([0-9]+), 32
! **	stnt1b	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1b_scatter_32_u64_offset, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1h_scatter_5_s32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s32_offset, svint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1h_scatter_5_s32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1h_scatter_6_s32_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_s32_offset, svint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1h_scatter_6_s32_offset:
! **	mov	w([0-9]+), 6
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1h_scatter_62_s32_offset:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_s32_offset, svint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1h_scatter_62_s32_offset:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_62
*** 72,79 ****
  
  /*
  ** stnt1h_scatter_64_s32_offset:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_s32_offset, svint32_t, svuint32_t,
--- 72,79 ----
  
  /*
  ** stnt1h_scatter_64_s32_offset:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_s32_offset, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 111,118 ****
  
  /*
  ** stnt1h_scatter_5_s32_index:
! **	mov	(x[0-9]+), #?10
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s32_index, svint32_t, svuint32_t,
--- 111,118 ----
  
  /*
  ** stnt1h_scatter_5_s32_index:
! **	mov	w([0-9]+), 10
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s32_index, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 121,128 ****
  
  /*
  ** stnt1h_scatter_31_s32_index:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_s32_index, svint32_t, svuint32_t,
--- 121,128 ----
  
  /*
  ** stnt1h_scatter_31_s32_index:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_s32_index, svint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_31
*** 131,138 ****
  
  /*
  ** stnt1h_scatter_32_s32_index:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_s32_index, svint32_t, svuint32_t,
--- 131,138 ----
  
  /*
  ** stnt1h_scatter_32_s32_index:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_s32_index, svint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1h_scatter_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1h_scatter_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1h_scatter_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1h_scatter_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1h_scatter_62_s64_offset:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1h_scatter_62_s64_offset:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_62
*** 72,79 ****
  
  /*
  ** stnt1h_scatter_64_s64_offset:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_s64_offset, svint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1h_scatter_64_s64_offset:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 111,118 ****
  
  /*
  ** stnt1h_scatter_5_s64_index:
! **	mov	(x[0-9]+), #?10
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s64_index, svint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** stnt1h_scatter_5_s64_index:
! **	mov	w([0-9]+), 10
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 121,128 ****
  
  /*
  ** stnt1h_scatter_31_s64_index:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_s64_index, svint64_t, svuint64_t,
--- 121,128 ----
  
  /*
  ** stnt1h_scatter_31_s64_index:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_31
*** 131,138 ****
  
  /*
  ** stnt1h_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_s64_index, svint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** stnt1h_scatter_32_s64_index:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1h_scatter_5_u32_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u32_offset, svuint32_t, svuint32_t,
--- 42,49 ----
  
  /*
  ** stnt1h_scatter_5_u32_offset:
! **	mov	w([0-9]+), 5
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1h_scatter_6_u32_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_u32_offset, svuint32_t, svuint32_t,
--- 52,59 ----
  
  /*
  ** stnt1h_scatter_6_u32_offset:
! **	mov	w([0-9]+), 6
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1h_scatter_62_u32_offset:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_u32_offset, svuint32_t, svuint32_t,
--- 62,69 ----
  
  /*
  ** stnt1h_scatter_62_u32_offset:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_62
*** 72,79 ****
  
  /*
  ** stnt1h_scatter_64_u32_offset:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_u32_offset, svuint32_t, svuint32_t,
--- 72,79 ----
  
  /*
  ** stnt1h_scatter_64_u32_offset:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_u32_offset, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 111,118 ****
  
  /*
  ** stnt1h_scatter_5_u32_index:
! **	mov	(x[0-9]+), #?10
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u32_index, svuint32_t, svuint32_t,
--- 111,118 ----
  
  /*
  ** stnt1h_scatter_5_u32_index:
! **	mov	w([0-9]+), 10
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u32_index, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 121,128 ****
  
  /*
  ** stnt1h_scatter_31_u32_index:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_u32_index, svuint32_t, svuint32_t,
--- 121,128 ----
  
  /*
  ** stnt1h_scatter_31_u32_index:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_u32_index, svuint32_t, svuint32_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_31
*** 131,138 ****
  
  /*
  ** stnt1h_scatter_32_u32_index:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.s, p0, \[z1\.s, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_u32_index, svuint32_t, svuint32_t,
--- 131,138 ----
  
  /*
  ** stnt1h_scatter_32_u32_index:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.s, p0, \[z1\.s, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_u32_index, svuint32_t, svuint32_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1h_scatter_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1h_scatter_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1h_scatter_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1h_scatter_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1h_scatter_62_u64_offset:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1h_scatter_62_u64_offset:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_62_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_62
*** 72,79 ****
  
  /*
  ** stnt1h_scatter_64_u64_offset:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_u64_offset, svuint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1h_scatter_64_u64_offset:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_64_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_0_
*** 111,118 ****
  
  /*
  ** stnt1h_scatter_5_u64_index:
! **	mov	(x[0-9]+), #?10
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u64_index, svuint64_t, svuint64_t,
--- 111,118 ----
  
  /*
  ** stnt1h_scatter_5_u64_index:
! **	mov	w([0-9]+), 10
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_5_
*** 121,128 ****
  
  /*
  ** stnt1h_scatter_31_u64_index:
! **	mov	(x[0-9]+), #?62
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_u64_index, svuint64_t, svuint64_t,
--- 121,128 ----
  
  /*
  ** stnt1h_scatter_31_u64_index:
! **	mov	w([0-9]+), 62
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1h_scatter_31
*** 131,138 ****
  
  /*
  ** stnt1h_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?64
! **	stnt1h	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** stnt1h_scatter_32_u64_index:
! **	mov	w([0-9]+), 64
! **	stnt1h	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1h_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1w_scatter_5_s64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_s64_offset, svint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1w_scatter_5_s64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1w_scatter_6_s64_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_s64_offset, svint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1w_scatter_6_s64_offset:
! **	mov	w([0-9]+), 6
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1w_scatter_7_s64_offset:
! **	mov	(x[0-9]+), #?7
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_s64_offset, svint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1w_scatter_7_s64_offset:
! **	mov	w([0-9]+), 7
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_
*** 72,79 ****
  
  /*
  ** stnt1w_scatter_8_s64_offset:
! **	mov	(x[0-9]+), #?8
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_s64_offset, svint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1w_scatter_8_s64_offset:
! **	mov	w([0-9]+), 8
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_
*** 82,89 ****
  
  /*
  ** stnt1w_scatter_124_s64_offset:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_124_s64_offset, svint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** stnt1w_scatter_124_s64_offset:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_124_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_12
*** 92,99 ****
  
  /*
  ** stnt1w_scatter_128_s64_offset:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_128_s64_offset, svint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** stnt1w_scatter_128_s64_offset:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_128_s64_offset, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_0_
*** 131,138 ****
  
  /*
  ** stnt1w_scatter_5_s64_index:
! **	mov	(x[0-9]+), #?20
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_s64_index, svint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** stnt1w_scatter_5_s64_index:
! **	mov	w([0-9]+), 20
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_
*** 141,148 ****
  
  /*
  ** stnt1w_scatter_31_s64_index:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_31_s64_index, svint64_t, svuint64_t,
--- 141,148 ----
  
  /*
  ** stnt1w_scatter_31_s64_index:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_31_s64_index, svint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_31
*** 151,158 ****
  
  /*
  ** stnt1w_scatter_32_s64_index:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_32_s64_index, svint64_t, svuint64_t,
--- 151,158 ----
  
  /*
  ** stnt1w_scatter_32_s64_index:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_32_s64_index, svint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c	Sun May 31 22:32:10 2026
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_0_
*** 42,49 ****
  
  /*
  ** stnt1w_scatter_5_u64_offset:
! **	mov	(x[0-9]+), #?5
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_u64_offset, svuint64_t, svuint64_t,
--- 42,49 ----
  
  /*
  ** stnt1w_scatter_5_u64_offset:
! **	mov	w([0-9]+), 5
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_
*** 52,59 ****
  
  /*
  ** stnt1w_scatter_6_u64_offset:
! **	mov	(x[0-9]+), #?6
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_u64_offset, svuint64_t, svuint64_t,
--- 52,59 ----
  
  /*
  ** stnt1w_scatter_6_u64_offset:
! **	mov	w([0-9]+), 6
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_6_
*** 62,69 ****
  
  /*
  ** stnt1w_scatter_7_u64_offset:
! **	mov	(x[0-9]+), #?7
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_u64_offset, svuint64_t, svuint64_t,
--- 62,69 ----
  
  /*
  ** stnt1w_scatter_7_u64_offset:
! **	mov	w([0-9]+), 7
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_7_
*** 72,79 ****
  
  /*
  ** stnt1w_scatter_8_u64_offset:
! **	mov	(x[0-9]+), #?8
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_u64_offset, svuint64_t, svuint64_t,
--- 72,79 ----
  
  /*
  ** stnt1w_scatter_8_u64_offset:
! **	mov	w([0-9]+), 8
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_8_
*** 82,89 ****
  
  /*
  ** stnt1w_scatter_124_u64_offset:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_124_u64_offset, svuint64_t, svuint64_t,
--- 82,89 ----
  
  /*
  ** stnt1w_scatter_124_u64_offset:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_124_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_12
*** 92,99 ****
  
  /*
  ** stnt1w_scatter_128_u64_offset:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_128_u64_offset, svuint64_t, svuint64_t,
--- 92,99 ----
  
  /*
  ** stnt1w_scatter_128_u64_offset:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_128_u64_offset, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_0_
*** 131,138 ****
  
  /*
  ** stnt1w_scatter_5_u64_index:
! **	mov	(x[0-9]+), #?20
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_u64_index, svuint64_t, svuint64_t,
--- 131,138 ----
  
  /*
  ** stnt1w_scatter_5_u64_index:
! **	mov	w([0-9]+), 20
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_5_
*** 141,148 ****
  
  /*
  ** stnt1w_scatter_31_u64_index:
! **	mov	(x[0-9]+), #?124
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_31_u64_index, svuint64_t, svuint64_t,
--- 141,148 ----
  
  /*
  ** stnt1w_scatter_31_u64_index:
! **	mov	w([0-9]+), 124
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_31_u64_index, svuint64_t, svuint64_t,
*************** TEST_STORE_SCATTER_ZS (stnt1w_scatter_31
*** 151,158 ****
  
  /*
  ** stnt1w_scatter_32_u64_index:
! **	mov	(x[0-9]+), #?128
! **	stnt1w	z0\.d, p0, \[z1\.d, \1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_32_u64_index, svuint64_t, svuint64_t,
--- 151,158 ----
  
  /*
  ** stnt1w_scatter_32_u64_index:
! **	mov	w([0-9]+), 128
! **	stnt1w	z0\.d, p0, \[z1\.d, x\1\]
  **	ret
  */
  TEST_STORE_SCATTER_ZS (stnt1w_scatter_32_u64_index, svuint64_t, svuint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilege_0r_b16_s64, int6
*** 69,76 ****
  
  /*
  ** whilege_5r_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b16_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilege_5r_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilege_r0_b16_s64, int6
*** 88,95 ****
  
  /*
  ** whilege_r5_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b16_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilege_r5_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilege_0r_b16_u64, uint
*** 154,161 ****
  
  /*
  ** whilege_5r_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b16_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilege_5r_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b16_u64, uint64_t,
*************** TEST_COMPARE_S (whilege_5r_b16_u64, uint
*** 164,171 ****
  
  /*
  ** whilege_r5_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b16_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilege_r5_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b16_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b16_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilege_0r_b32_s64, int6
*** 69,76 ****
  
  /*
  ** whilege_5r_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b32_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilege_5r_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilege_r0_b32_s64, int6
*** 88,95 ****
  
  /*
  ** whilege_r5_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b32_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilege_r5_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilege_0r_b32_u64, uint
*** 154,161 ****
  
  /*
  ** whilege_5r_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b32_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilege_5r_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b32_u64, uint64_t,
*************** TEST_COMPARE_S (whilege_5r_b32_u64, uint
*** 164,171 ****
  
  /*
  ** whilege_r5_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b32_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilege_r5_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b32_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b32_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilege_0r_b64_s64, int6
*** 69,76 ****
  
  /*
  ** whilege_5r_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b64_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilege_5r_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilege_r0_b64_s64, int6
*** 88,95 ****
  
  /*
  ** whilege_r5_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b64_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilege_r5_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilege_0r_b64_u64, uint
*** 154,161 ****
  
  /*
  ** whilege_5r_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b64_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilege_5r_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b64_u64, uint64_t,
*************** TEST_COMPARE_S (whilege_5r_b64_u64, uint
*** 164,171 ****
  
  /*
  ** whilege_r5_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b64_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilege_r5_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b64_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b64_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilege_0r_b8_s64, int64
*** 69,76 ****
  
  /*
  ** whilege_5r_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b8_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilege_5r_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilege_r0_b8_s64, int64
*** 88,95 ****
  
  /*
  ** whilege_r5_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b8_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilege_r5_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilege	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilege_0r_b8_u64, uint6
*** 154,161 ****
  
  /*
  ** whilege_5r_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b8_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilege_5r_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilege_5r_b8_u64, uint64_t,
*************** TEST_COMPARE_S (whilege_5r_b8_u64, uint6
*** 164,171 ****
  
  /*
  ** whilege_r5_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b8_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilege_r5_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilege_r5_b8_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_b8_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilege_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilege_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilege	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilege_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilege_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilege_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilege_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilege_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilege_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilege_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilege	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilege_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilege	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilege_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilege_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehs	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilege_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehs	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilege_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilegt_0r_b16_s64, int6
*** 69,76 ****
  
  /*
  ** whilegt_5r_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b16_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilegt_5r_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_r0_b16_s64, int6
*** 88,95 ****
  
  /*
  ** whilegt_r5_b16_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b16_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilegt_r5_b16_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b16_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_0r_b16_u64, uint
*** 154,161 ****
  
  /*
  ** whilegt_5r_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b16_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilegt_5r_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b16_u64, uint64_t,
*************** TEST_COMPARE_S (whilegt_5r_b16_u64, uint
*** 164,171 ****
  
  /*
  ** whilegt_r5_b16_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b16_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilegt_r5_b16_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b16_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b16_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilegt_0r_b32_s64, int6
*** 69,76 ****
  
  /*
  ** whilegt_5r_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b32_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilegt_5r_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_r0_b32_s64, int6
*** 88,95 ****
  
  /*
  ** whilegt_r5_b32_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b32_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilegt_r5_b32_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b32_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_0r_b32_u64, uint
*** 154,161 ****
  
  /*
  ** whilegt_5r_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b32_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilegt_5r_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b32_u64, uint64_t,
*************** TEST_COMPARE_S (whilegt_5r_b32_u64, uint
*** 164,171 ****
  
  /*
  ** whilegt_r5_b32_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b32_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilegt_r5_b32_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b32_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b32_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilegt_0r_b64_s64, int6
*** 69,76 ****
  
  /*
  ** whilegt_5r_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b64_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilegt_5r_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_r0_b64_s64, int6
*** 88,95 ****
  
  /*
  ** whilegt_r5_b64_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b64_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilegt_r5_b64_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b64_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_0r_b64_u64, uint
*** 154,161 ****
  
  /*
  ** whilegt_5r_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b64_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilegt_5r_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b64_u64, uint64_t,
*************** TEST_COMPARE_S (whilegt_5r_b64_u64, uint
*** 164,171 ****
  
  /*
  ** whilegt_r5_b64_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b64_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilegt_r5_b64_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b64_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b64_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilegt_0r_b8_s64, int64
*** 69,76 ****
  
  /*
  ** whilegt_5r_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b8_s64, int64_t,
--- 69,76 ----
  
  /*
  ** whilegt_5r_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_r0_b8_s64, int64
*** 88,95 ****
  
  /*
  ** whilegt_r5_b8_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b8_s64, int64_t,
--- 88,95 ----
  
  /*
  ** whilegt_r5_b8_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b8_s64, int64_t,
*************** TEST_COMPARE_S (whilegt_0r_b8_u64, uint6
*** 154,161 ****
  
  /*
  ** whilegt_5r_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b8_u64, uint64_t,
--- 154,161 ----
  
  /*
  ** whilegt_5r_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilegt_5r_b8_u64, uint64_t,
*************** TEST_COMPARE_S (whilegt_5r_b8_u64, uint6
*** 164,171 ****
  
  /*
  ** whilegt_r5_b8_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b8_u64, uint64_t,
--- 164,171 ----
  
  /*
  ** whilegt_r5_b8_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilegt_r5_b8_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_b8_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilegt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilegt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilegt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilegt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilegt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilegt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilegt_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilegt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilegt	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilegt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilegt	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilegt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilegt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilehi	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilegt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilehi	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilegt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b16_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b32_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b64_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_b8_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilele_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilele_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilele	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilele_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilele_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilele_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilels	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilele_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilele_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilele_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilele_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilele	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilele_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilele	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilele_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilele_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilels	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilele_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilels	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilele_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b16_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.h, p15\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.h, p15\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.h, p5\.h}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.h, p5\.h}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.h, p5\.h}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.h, p5\.h}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b32_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.s, p15\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.s, p15\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.s, p5\.s}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.s, p5\.s}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.s, p5\.s}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.s, p5\.s}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b64_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.d, p15\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.d, p15\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.d, p5\.d}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.d, p5\.d}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.d, p5\.d}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.d, p5\.d}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_b8_x2.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_s64, in
*** 60,67 ****
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
--- 60,67 ----
  
  /*
  ** whilelt_p4_5r_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_r0_s64, in
*** 79,86 ****
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	{p14\.b, p15\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
--- 79,86 ----
  
  /*
  ** whilelt_p14_r5_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	{p14\.b, p15\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p14_r5_s64, int64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_0r_u64, ui
*** 107,114 ****
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.b, p5\.b}, \1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
--- 107,114 ----
  
  /*
  ** whilelt_p4_5r_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.b, p5\.b}, x\1, x1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, uint64_t,
*************** TEST_COMPARE_S_X2 (whilelt_p4_5r_u64, ui
*** 117,124 ****
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	{p4\.b, p5\.b}, x0, \1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
--- 117,124 ----
  
  /*
  ** whilelt_p4_r5_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	{p4\.b, p5\.b}, x0, x\1
  **	ret
  */
  TEST_COMPARE_S_X2 (whilelt_p4_r5_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.h, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.h, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.h, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.h, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.h, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.h, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.s, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.s, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.s, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.s, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.s, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.s, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.d, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.d, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.d, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.d, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.d, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.d, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilelt_c8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_2_s64,
*** 58,65 ****
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn8\.b, \1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
--- 58,65 ----
  
  /*
  ** whilelt_pn8_5r_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn8\.b, x\1, x1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_r0_2_s64,
*** 77,84 ****
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	(x[0-9]+), #?5
! **	whilelt	pn15\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
--- 77,84 ----
  
  /*
  ** whilelt_pn15_r5_4_s64:
! **	mov	w([0-9]+), 5
! **	whilelt	pn15\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn15_r5_4_s64, int64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_0r_4_u64,
*** 105,112 ****
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.b, \1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
--- 105,112 ----
  
  /*
  ** whilelt_pn8_5r_2_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.b, x\1, x1, vlx2
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64, uint64_t,
*************** TEST_COMPARE_S_C (whilelt_pn8_5r_2_u64,
*** 115,122 ****
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	(x[0-9]+), #?5
! **	whilelo	pn8\.b, x0, \1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
--- 115,122 ----
  
  /*
  ** whilelt_pn8_r5_4_u64:
! **	mov	w([0-9]+), 5
! **	whilelo	pn8\.b, x0, x\1, vlx4
  **	ret
  */
  TEST_COMPARE_S_C (whilelt_pn8_r5_4_u64, uint64_t,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_bf16, const b
*** 22,29 ****
  
  /*
  ** whilerw_cr_bf16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_bf16, const bfloat16_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_bf16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_bf16, const bfloat16_t *,
*************** TEST_COMPARE_S (whilerw_r0_bf16, const b
*** 41,48 ****
  
  /*
  ** whilerw_rc_bf16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_bf16, const bfloat16_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_bf16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_bf16, const bfloat16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_f16, const fl
*** 22,29 ****
  
  /*
  ** whilerw_cr_f16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f16, const float16_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_f16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f16, const float16_t *,
*************** TEST_COMPARE_S (whilerw_r0_f16, const fl
*** 41,48 ****
  
  /*
  ** whilerw_rc_f16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f16, const float16_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_f16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f16, const float16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_f32, const fl
*** 22,29 ****
  
  /*
  ** whilerw_cr_f32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f32, const float32_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_f32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f32, const float32_t *,
*************** TEST_COMPARE_S (whilerw_r0_f32, const fl
*** 41,48 ****
  
  /*
  ** whilerw_rc_f32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f32, const float32_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_f32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f32, const float32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_f64, const fl
*** 22,29 ****
  
  /*
  ** whilerw_cr_f64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f64, const float64_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_f64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_f64, const float64_t *,
*************** TEST_COMPARE_S (whilerw_r0_f64, const fl
*** 41,48 ****
  
  /*
  ** whilerw_rc_f64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f64, const float64_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_f64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_f64, const float64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_mf8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_mf8, const mf
*** 22,29 ****
  
  /*
  ** whilerw_cr_mf8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_mf8, const mfloat8_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_mf8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_mf8, const mfloat8_t *,
*************** TEST_COMPARE_S (whilerw_r0_mf8, const mf
*** 41,48 ****
  
  /*
  ** whilerw_rc_mf8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_mf8, const mfloat8_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_mf8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_mf8, const mfloat8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_s16, const in
*** 22,29 ****
  
  /*
  ** whilerw_cr_s16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s16, const int16_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_s16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s16, const int16_t *,
*************** TEST_COMPARE_S (whilerw_r0_s16, const in
*** 41,48 ****
  
  /*
  ** whilerw_rc_s16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s16, const int16_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_s16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s16, const int16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_s32, const in
*** 22,29 ****
  
  /*
  ** whilerw_cr_s32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s32, const int32_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_s32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s32, const int32_t *,
*************** TEST_COMPARE_S (whilerw_r0_s32, const in
*** 41,48 ****
  
  /*
  ** whilerw_rc_s32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s32, const int32_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_s32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s32, const int32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_s64, const in
*** 22,29 ****
  
  /*
  ** whilerw_cr_s64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s64, const int64_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_s64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s64, const int64_t *,
*************** TEST_COMPARE_S (whilerw_r0_s64, const in
*** 41,48 ****
  
  /*
  ** whilerw_rc_s64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s64, const int64_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_s64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s64, const int64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_s8, const int
*** 22,29 ****
  
  /*
  ** whilerw_cr_s8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s8, const int8_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_s8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_s8, const int8_t *,
*************** TEST_COMPARE_S (whilerw_r0_s8, const int
*** 41,48 ****
  
  /*
  ** whilerw_rc_s8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s8, const int8_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_s8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_s8, const int8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_u16, const ui
*** 22,29 ****
  
  /*
  ** whilerw_cr_u16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u16, const uint16_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_u16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u16, const uint16_t *,
*************** TEST_COMPARE_S (whilerw_r0_u16, const ui
*** 41,48 ****
  
  /*
  ** whilerw_rc_u16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u16, const uint16_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_u16:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u16, const uint16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_u32, const ui
*** 22,29 ****
  
  /*
  ** whilerw_cr_u32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u32, const uint32_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_u32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u32, const uint32_t *,
*************** TEST_COMPARE_S (whilerw_r0_u32, const ui
*** 41,48 ****
  
  /*
  ** whilerw_rc_u32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u32, const uint32_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_u32:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u32, const uint32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_u64, const ui
*** 22,29 ****
  
  /*
  ** whilerw_cr_u64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u64, const uint64_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_u64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u64, const uint64_t *,
*************** TEST_COMPARE_S (whilerw_r0_u64, const ui
*** 41,48 ****
  
  /*
  ** whilerw_rc_u64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u64, const uint64_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_u64:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u64, const uint64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilerw_0r_u8, const uin
*** 22,29 ****
  
  /*
  ** whilerw_cr_u8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u8, const uint8_t *,
--- 22,29 ----
  
  /*
  ** whilerw_cr_u8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilerw_cr_u8, const uint8_t *,
*************** TEST_COMPARE_S (whilerw_r0_u8, const uin
*** 41,48 ****
  
  /*
  ** whilerw_rc_u8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilerw	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u8, const uint8_t *,
--- 41,48 ----
  
  /*
  ** whilerw_rc_u8:
! **	mov	w([0-9]+), 1073741824
! **	whilerw	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilerw_rc_u8, const uint8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_bf16, const b
*** 22,29 ****
  
  /*
  ** whilewr_cr_bf16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_bf16, const bfloat16_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_bf16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_bf16, const bfloat16_t *,
*************** TEST_COMPARE_S (whilewr_r0_bf16, const b
*** 41,48 ****
  
  /*
  ** whilewr_rc_bf16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_bf16, const bfloat16_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_bf16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_bf16, const bfloat16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_f16, const fl
*** 22,29 ****
  
  /*
  ** whilewr_cr_f16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f16, const float16_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_f16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f16, const float16_t *,
*************** TEST_COMPARE_S (whilewr_r0_f16, const fl
*** 41,48 ****
  
  /*
  ** whilewr_rc_f16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f16, const float16_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_f16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f16, const float16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_f32, const fl
*** 22,29 ****
  
  /*
  ** whilewr_cr_f32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f32, const float32_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_f32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f32, const float32_t *,
*************** TEST_COMPARE_S (whilewr_r0_f32, const fl
*** 41,48 ****
  
  /*
  ** whilewr_rc_f32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f32, const float32_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_f32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f32, const float32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_f64, const fl
*** 22,29 ****
  
  /*
  ** whilewr_cr_f64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f64, const float64_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_f64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_f64, const float64_t *,
*************** TEST_COMPARE_S (whilewr_r0_f64, const fl
*** 41,48 ****
  
  /*
  ** whilewr_rc_f64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f64, const float64_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_f64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_f64, const float64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_mf8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_mf8, const mf
*** 22,29 ****
  
  /*
  ** whilewr_cr_mf8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_mf8, const mfloat8_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_mf8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_mf8, const mfloat8_t *,
*************** TEST_COMPARE_S (whilewr_r0_mf8, const mf
*** 41,48 ****
  
  /*
  ** whilewr_rc_mf8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_mf8, const mfloat8_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_mf8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_mf8, const mfloat8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_s16, const in
*** 22,29 ****
  
  /*
  ** whilewr_cr_s16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s16, const int16_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_s16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s16, const int16_t *,
*************** TEST_COMPARE_S (whilewr_r0_s16, const in
*** 41,48 ****
  
  /*
  ** whilewr_rc_s16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s16, const int16_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_s16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s16, const int16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_s32, const in
*** 22,29 ****
  
  /*
  ** whilewr_cr_s32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s32, const int32_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_s32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s32, const int32_t *,
*************** TEST_COMPARE_S (whilewr_r0_s32, const in
*** 41,48 ****
  
  /*
  ** whilewr_rc_s32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s32, const int32_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_s32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s32, const int32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_s64, const in
*** 22,29 ****
  
  /*
  ** whilewr_cr_s64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s64, const int64_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_s64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s64, const int64_t *,
*************** TEST_COMPARE_S (whilewr_r0_s64, const in
*** 41,48 ****
  
  /*
  ** whilewr_rc_s64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s64, const int64_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_s64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s64, const int64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_s8, const int
*** 22,29 ****
  
  /*
  ** whilewr_cr_s8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s8, const int8_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_s8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_s8, const int8_t *,
*************** TEST_COMPARE_S (whilewr_r0_s8, const int
*** 41,48 ****
  
  /*
  ** whilewr_rc_s8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s8, const int8_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_s8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_s8, const int8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_u16, const ui
*** 22,29 ****
  
  /*
  ** whilewr_cr_u16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u16, const uint16_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_u16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u16, const uint16_t *,
*************** TEST_COMPARE_S (whilewr_r0_u16, const ui
*** 41,48 ****
  
  /*
  ** whilewr_rc_u16:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.h, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u16, const uint16_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_u16:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.h, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u16, const uint16_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_u32, const ui
*** 22,29 ****
  
  /*
  ** whilewr_cr_u32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u32, const uint32_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_u32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u32, const uint32_t *,
*************** TEST_COMPARE_S (whilewr_r0_u32, const ui
*** 41,48 ****
  
  /*
  ** whilewr_rc_u32:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.s, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u32, const uint32_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_u32:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.s, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u32, const uint32_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_u64, const ui
*** 22,29 ****
  
  /*
  ** whilewr_cr_u64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u64, const uint64_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_u64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u64, const uint64_t *,
*************** TEST_COMPARE_S (whilewr_r0_u64, const ui
*** 41,48 ****
  
  /*
  ** whilewr_rc_u64:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.d, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u64, const uint64_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_u64:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.d, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u64, const uint64_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c	Sun May 31 22:32:10 2026
*************** TEST_COMPARE_S (whilewr_0r_u8, const uin
*** 22,29 ****
  
  /*
  ** whilewr_cr_u8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, \1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u8, const uint8_t *,
--- 22,29 ----
  
  /*
  ** whilewr_cr_u8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x\1, x1
  **	ret
  */
  TEST_COMPARE_S (whilewr_cr_u8, const uint8_t *,
*************** TEST_COMPARE_S (whilewr_r0_u8, const uin
*** 41,48 ****
  
  /*
  ** whilewr_rc_u8:
! **	mov	(x[0-9]+), #?1073741824
! **	whilewr	p0\.b, x0, \1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u8, const uint8_t *,
--- 41,48 ----
  
  /*
  ** whilewr_rc_u8:
! **	mov	w([0-9]+), 1073741824
! **	whilewr	p0\.b, x0, x\1
  **	ret
  */
  TEST_COMPARE_S (whilewr_rc_u8, const uint8_t *,
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/firstp.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/firstp.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/firstp.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/firstp.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,212 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ #pragma GCC target "+sve2p2"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ /*
+ ** test1:
+ **	mov	w0, 0 
+ **	ret
+ */
+ uint64_t
+ test1 ()
+ {
+   return svfirstp_b8 (svptrue_b8 (),
+ 		      svptrue_b8 ());
+ }
+ 
+ /*
+ ** test2:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test2 ()
+ {
+   return svfirstp_b8 (svpfalse_b (),
+ 		      svptrue_b8 ());
+ }
+ 
+ /*
+ ** test3:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test3 ()
+ {
+   return svfirstp_b8 (svptrue_b8 (),
+ 		      svpfalse_b ());
+ }
+ 
+ /*
+ ** test4:
+ **	mov	w0, 15 
+ **	ret
+ */
+ uint64_t
+ test4 ()
+ {
+   return svfirstp_b8 (svdupq_n_b8 (false, false, false, false,
+ 				   false, false, false, false,
+ 				   false, false, false, false,
+ 				   false, false, false, true),
+ 		      svptrue_b8 ());
+ }
+ 
+ /*
+ ** test5:
+ **	mov	w0, 0 
+ **	ret
+ */
+ uint64_t
+ test5 ()
+ {
+   return svfirstp_b16 (svptrue_b16 (),
+ 		       svptrue_b16 ());
+ }
+ 
+ /*
+ ** test6:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test6 ()
+ {
+   return svfirstp_b16 (svpfalse_b (),
+ 		       svptrue_b16 ());
+ }
+ 
+ /*
+ ** test7:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test7 ()
+ {
+   return svfirstp_b16 (svptrue_b16 (),
+ 		       svpfalse_b ());
+ }
+ 
+ /*
+ ** test8:
+ **	mov	w0, 7 
+ **	ret
+ */
+ uint64_t
+ test8 ()
+ {
+   return svfirstp_b16 (svdupq_n_b16 (false, false, false, false,
+ 				     false, false, false, true),
+ 		       svptrue_b16 ());
+ }
+ 
+ /*
+ ** test9:
+ **	mov	w0, 0 
+ **	ret
+ */
+ uint64_t
+ test9 ()
+ {
+   return svfirstp_b32 (svptrue_b32 (),
+ 		       svptrue_b32 ());
+ }
+ 
+ /*
+ ** test10:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test10 ()
+ {
+   return svfirstp_b32 (svpfalse_b (),
+ 		       svptrue_b32 ());
+ }
+ 
+ /*
+ ** test11:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test11 ()
+ {
+   return svfirstp_b32 (svptrue_b32 (),
+ 		       svpfalse_b ());
+ }
+ 
+ /*
+ ** test12:
+ **	mov	w0, 3 
+ **	ret
+ */
+ uint64_t
+ test12 ()
+ {
+   return svfirstp_b32 (svdupq_n_b32 (false, false, false, true),
+ 		       svptrue_b32 ());
+ }
+ 
+ /*
+ ** test13:
+ **	mov	w0, 0 
+ **	ret
+ */
+ uint64_t
+ test13 ()
+ {
+   return svfirstp_b64 (svptrue_b64 (),
+ 		       svptrue_b64 ());
+ }
+ 
+ /*
+ ** test14:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test14 ()
+ {
+   return svfirstp_b64 (svpfalse_b (),
+ 		       svptrue_b64 ());
+ }
+ 
+ /*
+ ** test15:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test15 ()
+ {
+   return svfirstp_b64 (svptrue_b64 (),
+ 		       svpfalse_b ());
+ }
+ 
+ /*
+ ** test16:
+ **	mov	w0, 1 
+ **	ret
+ */
+ uint64_t
+ test16 ()
+ {
+   return svfirstp_b64 (svdupq_n_b64 (false, true),
+ 		       svptrue_b64 ());
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/lastp.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/lastp.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/lastp.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve2/acle/general/lastp.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,212 ----
+ /* { dg-do assemble { target aarch64_asm_sve2p2_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sve2p2_ok } } } */
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ #pragma GCC target "+sve2p2"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ /*
+ ** test1:
+ **	mov	w0, 31 
+ **	ret
+ */
+ uint64_t
+ test1 ()
+ {
+   return svlastp_b8 (svptrue_b8 (),
+ 		     svptrue_b8 ());
+ }
+ 
+ /*
+ ** test2:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test2 ()
+ {
+   return svlastp_b8 (svpfalse_b (),
+ 		     svptrue_b8 ());
+ }
+ 
+ /*
+ ** test3:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test3 ()
+ {
+   return svlastp_b8 (svptrue_b8 (),
+ 		     svpfalse_b ());
+ }
+ 
+ /*
+ ** test4:
+ **	mov	w0, 31 
+ **	ret
+ */
+ uint64_t
+ test4 ()
+ {
+   return svlastp_b8 (svdupq_n_b8 (false, false, false, false,
+ 				   false, false, false, false,
+ 				   false, false, false, false,
+ 				   false, false, false, true),
+ 		     svptrue_b8 ());
+ }
+ 
+ /*
+ ** test5:
+ **	mov	w0, 15 
+ **	ret
+ */
+ uint64_t
+ test5 ()
+ {
+   return svlastp_b16 (svptrue_b16 (),
+ 		      svptrue_b16 ());
+ }
+ 
+ /*
+ ** test6:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test6 ()
+ {
+   return svlastp_b16 (svpfalse_b (),
+ 		      svptrue_b16 ());
+ }
+ 
+ /*
+ ** test7:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test7 ()
+ {
+   return svlastp_b16 (svptrue_b16 (),
+ 		      svpfalse_b ());
+ }
+ 
+ /*
+ ** test8:
+ **	mov	w0, 15 
+ **	ret
+ */
+ uint64_t
+ test8 ()
+ {
+   return svlastp_b16 (svdupq_n_b16 (false, false, false, false,
+ 				    false, false, false, true),
+ 		      svptrue_b16 ());
+ }
+ 
+ /*
+ ** test9:
+ **	mov	w0, 7 
+ **	ret
+ */
+ uint64_t
+ test9 ()
+ {
+   return svlastp_b32 (svptrue_b32 (),
+ 		      svptrue_b32 ());
+ }
+ 
+ /*
+ ** test10:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test10 ()
+ {
+   return svlastp_b32 (svpfalse_b (),
+ 		      svptrue_b32 ());
+ }
+ 
+ /*
+ ** test11:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test11 ()
+ {
+   return svlastp_b32 (svptrue_b32 (),
+ 		      svpfalse_b ());
+ }
+ 
+ /*
+ ** test12:
+ **	mov	w0, 7 
+ **	ret
+ */
+ uint64_t
+ test12 ()
+ {
+   return svlastp_b32 (svdupq_n_b32 (false, false, false, true),
+ 		      svptrue_b32 ());
+ }
+ 
+ /*
+ ** test13:
+ **	mov	w0, 3 
+ **	ret
+ */
+ uint64_t
+ test13 ()
+ {
+   return svlastp_b64 (svptrue_b64 (),
+ 		      svptrue_b64 ());
+ }
+ 
+ /*
+ ** test14:
+ **	mov	x0, -1 
+ **	ret
+ */
+ uint64_t
+ test14 ()
+ {
+   return svlastp_b64 (svpfalse_b (),
+ 		      svptrue_b64 ());
+ }
+ 
+ /*
+ ** test15:
+ **	mov	x0, -1
+ **	ret
+ */
+ uint64_t
+ test15 ()
+ {
+   return svlastp_b64 (svptrue_b64 (),
+ 		      svpfalse_b ());
+ }
+ 
+ /*
+ ** test16:
+ **	mov	w0, 3
+ **	ret
+ */
+ uint64_t
+ test16 ()
+ {
+   return svlastp_b64 (svdupq_n_b64 (false, true),
+ 		      svptrue_b64 ());
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/test_frame_17.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/test_frame_17.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/test_frame_17.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/test_frame_17.c	Sun May 31 22:32:10 2026
*************** int no_reuse_mov (int i)
*** 29,32 ****
    return arr[i];
  }
  
! /* { dg-final { scan-assembler-times "mov\tx12, \[0-9\]+" 5 } } */
--- 29,32 ----
    return arr[i];
  }
  
! /* { dg-final { scan-assembler-times "mov\tw12, \[0-9\]+" 5 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-18.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-18.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-18.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-18.c	Sun May 31 22:32:10 2026
*************** int16x8_t foo2(int16_t x)
*** 15,20 ****
    return v;
  }
  
! /* { dg-final { scan-assembler-times {\tdup\tv[0-9]+\.4h, w[0-9]+} 3 } } */
! /* { dg-final { scan-assembler {\tmovi\tv[0-9]+\.4h, 0x1} } } */
! /* { dg-final { scan-assembler-times {\tzip1\tv[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h} 2 } } */
--- 15,20 ----
    return v;
  }
  
! /* { dg-final { scan-assembler-times {\tmov\tw1, 1} 1 } } */
! /* { dg-final { scan-assembler-times {\tdup\tv0+\.4s, w0} 2 } } */
! /* { dg-final { scan-assembler-times {\tbfi\tw0, w1, 16, 16} 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-23.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,426 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv8.2-a+fp16" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_neon.h>
+ 
+ /* Check vector initialization with a repeating sequence of elements.  */
+ 
+ #ifndef TESTCASE
+ #define TESTCASE(TYPE, ETYPE, T, SZ, NUM, MULT, ...)\
+   TYPE##SZ##MULT##_t test_##TYPE##SZ##_##NUM (ETYPE x0, ETYPE x1, ETYPE x2, ETYPE x3,\
+ 					   ETYPE x4, ETYPE x5, ETYPE x6, ETYPE x7)\
+   {\
+     return (TYPE##SZ##MULT##_t) {__VA_ARGS__};\
+   }
+ #endif
+ 
+ #define TEST_8(TYPE, ETYPE, T)\
+     TESTCASE (TYPE, ETYPE, T, 8, 1, x16, x0, x0, x0, x0, x0, x0, x0, x0,\
+ 			       x0, x0, x0, x0, x0, x0, x0, x0)\
+     TESTCASE (TYPE, ETYPE, T, 8, 2, x16, x0, x1, x0, x1, x0, x1, x0, x1,\
+ 			       x0, x1, x0, x1, x0, x1, x0, x1)\
+     TESTCASE (TYPE, ETYPE, T, 8, 3, x16, x0, x1, x2, x3, x0, x1, x2, x3,\
+ 			       x0, x1, x2, x3, x0, x1, x2, x3)\
+     TESTCASE (TYPE, ETYPE, T, 8, 4, x16, x0, x1, x2, x3, x4, x5, x6, x7,\
+ 			       x0, x1, x2, x3, x4, x5, x6, x7)\
+     TESTCASE (TYPE, ETYPE, T, 8, 5, x16, x0, 0, x0, 0, x0, 0, x0, 0,\
+ 			       x0, 0, x0, 0, x0, 0, x0, 0)\
+     TESTCASE (TYPE, ETYPE, T, 8, 6, x16, 0, x0, 0, x0, 0, x0, 0, x0,\
+ 			       0, x0, 0, x0, 0, x0, 0, x0)\
+     TESTCASE (TYPE, ETYPE, T, 8, 7, x16, x0, x1, 0, 1, x0, x1, 0, 1,\
+ 			       x0, x1, 0, 1, x0, x1, 0, 1)\
+     TESTCASE (TYPE, ETYPE, T, 8, 8, x16, 0, 1, x0, x1, 0, 1, x0, x1,\
+ 			   0, 1, x0, x1, 0, 1, x0, x1)\
+     TESTCASE (TYPE, ETYPE, T, 8, 9, x16, x0, 0, x1, 1, x0, 0, x1, 1,\
+ 			       x0, 0, x1, 1, x0, 0, x1, 1)\
+     TESTCASE (TYPE, ETYPE, T, 8, 10, x16, x0, 0, x1, 1, x2, 2, x3, 3,\
+ 			       x0, 0, x1, 1, x2, 2, x3, 3)\
+     TESTCASE (TYPE, ETYPE, T, 8, 11, x16, 0, x0, 1, x1, 2, x2, 3, x3,\
+ 			       0, x0, 1, x1, 2, x2, 3, x3)\
+     TESTCASE (TYPE, ETYPE, T, 8, 12, x16, x0, x1, 0, 1, x2, x3, 2, 3,\
+ 			       x0, x1, 0, 1, x2, x3, 2, 3)\
+     TESTCASE (TYPE, ETYPE, T, 8, 13, x16, 0, 1, x0, x1, 2, 3, x2, x3,\
+ 			       0, 1, x0, x1, 2, 3, x2, x3)
+ 
+ #define TEST_16(TYPE, ETYPE, T)\
+     TESTCASE (TYPE, ETYPE, T, 16, 1, x8, x0, x0, x0, x0, x0, x0, x0, x0)\
+     TESTCASE (TYPE, ETYPE, T, 16, 2, x8, x0, x1, x0, x1, x0, x1, x0, x1)\
+     TESTCASE (TYPE, ETYPE, T, 16, 3, x8, x0, x1, x2, x3, x0, x1, x2, x3)\
+     TESTCASE (TYPE, ETYPE, T, 16, 4, x8, x0, 0, x0, 0, x0, 0, x0, 0)\
+     TESTCASE (TYPE, ETYPE, T, 16, 5, x8, 0, x0, 0, x0, 0, x0, 0, x0)\
+     TESTCASE (TYPE, ETYPE, T, 16, 6, x8, x0, x1, 0, 1, x0, x1, 0, 1)\
+     TESTCASE (TYPE, ETYPE, T, 16, 7, x8, 0, 1, x0, x1, 0, 1, x0, x1)\
+     TESTCASE (TYPE, ETYPE, T, 16, 8, x8, 0, x0, 1, x1, 0, x0, 1, x1)\
+ 
+ #define TEST_32(TYPE, ETYPE, T)\
+     TESTCASE (TYPE, ETYPE, T, 32, 1, x4, x0, x0, x0, x0)\
+     TESTCASE (TYPE, ETYPE, T, 32, 2, x4, x0, x1, x0, x1)\
+     TESTCASE (TYPE, ETYPE, T, 32, 3, x4, x0, 0, x0, 0)\
+     TESTCASE (TYPE, ETYPE, T, 32, 4, x4, 0, x0, 0, x0)
+ 
+ #define TEST_64(TYPE, ETYPE, T)\
+     TESTCASE (TYPE, ETYPE, T, 64, 1, x2, x0, x0)
+ 
+ TEST_8(int, int8_t, s)
+ 
+ TEST_16(float, float, f)
+ TEST_16(int, int16_t, s)
+ 
+ TEST_32(float, float, f)
+ TEST_32(int, int32_t, s)
+ 
+ TEST_64(float, double, f)
+ TEST_64(int, int64_t, s)
+ 
+ /*
+ ** test_int8_1:
+ **	dup	v0\.16b, w0
+ **	ret
+ */
+ 	
+ /*
+ ** test_int8_2:
+ **	bfi	w0, w1, 8, 8
+ **	dup	v0\.8h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_3:
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w0, w2, 16, 8
+ **	bfi	w0, w3, 24, 8
+ **	dup	v0\.4s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_4:
+ **	bfi	w0, w2, 8, 8
+ **	bfi	w1, w3, 8, 8
+ **	bfi	w0, w4, 16, 8
+ **	bfi	w1, w5, 16, 8
+ **	bfi	w0, w6, 24, 8
+ **	bfi	w1, w7, 24, 8
+ **	dup	v31\.2s, w0
+ **	dup	v0\.2s, w1
+ **	zip1	v0\.16b, v31\.16b, v0\.16b
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_5:
+ **	uxtb	w0, w0
+ **	dup	v0\.8h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_6:
+ **	mov	w1, 0
+ **	bfi	w1, w0, 8, 8
+ **	dup	v0\.8h, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_7:
+ **	mov	w2, 16777472
+ **	bfi	w2, w0, 0, 8
+ **	bfi	w2, w1, 8, 8
+ **	dup	v0\.4s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_8:
+ **	mov	w2, 16777472
+ **	bfi	w2, w0, 16, 8
+ **	bfi	w2, w1, 24, 8
+ **	dup	v0\.4s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_9:
+ **	mov	w2, 16777216
+ **	bfi	w2, w0, 0, 8
+ **	bfi	w2, w1, 16, 8
+ **	dup	v0\.4s, w2
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_10:
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w0, w2, 16, 8
+ **	bfi	w0, w3, 24, 8
+ **	dup	v31\.2s, w0
+ **	adrp	x0, .LANCHOR[0-9]+
+ **	ldr	d0, \[x0, #:lo12:.LANCHOR[0-9]+\]
+ **	zip1	v0\.16b, v31\.16b, v0\.16b
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_11:
+ **	bfi	w0, w1, 8, 8
+ **	adrp	x4, .LANCHOR[0-9]+
+ **	bfi	w0, w2, 16, 8
+ **	ldr	d0, \[x4, #:lo12:\.LANCHOR[0-9]+\]
+ **	bfi	w0, w3, 24, 8
+ **	dup	v31\.2s, w0
+ **	zip1	v0\.16b, v0\.16b, v31\.16b
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_12:
+ **	mov	w4, 33685504
+ **	bfi	w4, w0, 0, 8
+ **	mov	w0, 257
+ **	movk	w0, 0x303, lsl 16
+ **	bfi	w0, w1, 0, 8
+ **	bfi	w4, w2, 16, 8
+ **	bfi	w0, w3, 16, 8
+ **	dup	v31\.2s, w4
+ **	dup	v0\.2s, w0
+ **	zip1	v0\.16b, v31\.16b, v0\.16b
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_13:
+ **	mov	w4, 33685504
+ **	bfi	w4, w0, 8, 8
+ **	mov	w0, 257
+ **	movk	w0, 0x303, lsl 16
+ **	bfi	w0, w1, 8, 8
+ **	bfi	w4, w2, 24, 8
+ **	bfi	w0, w3, 24, 8
+ **	dup	v31\.2s, w4
+ **	dup	v0\.2s, w0
+ **	zip1	v0\.16b, v31\.16b, v0\.16b
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_1:
+ **	fcvt	h0, s0
+ **	dup	v0\.8h, v0\.h\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_2:
+ **	fcvt	h1, s1
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	dup	v0\.4s, v0\.s\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_3:
+ **	uzp1	v2\.2s, v0\.2s, v2\.2s
+ **	uzp1	v3\.2s, v1\.2s, v3\.2s
+ **	zip1	v3\.4s, v2\.4s, v3\.4s
+ **	fcvtn	v3\.4h, v3\.4s
+ **	dup	v0\.2d, v3\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_4:
+ **	fcvt	h0, s0
+ **	fmov	h0, h0
+ **	dup	v0\.4s, v0\.s\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_5:
+ **	movi	v31\.4h, #0
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v31\.4h, v0\.4h
+ **	dup	v0\.4s, v0\.s\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_6:
+ **	fcvt	h0, s0
+ **	fcvt	h1, s1
+ **	fmov	h31, 1.0e\+0
+ **	fmov	h0, h0
+ **	uzp1	v1\.4h, v1\.4h, v31\.4h
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	dup	v1\.2s, v1\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_7:
+ **	fcvt	h0, s0
+ **	movi	v31\.4h, #0
+ **	fcvt	h1, s1
+ **	uzp1	v31\.4h, v31\.4h, v0\.4h
+ **	fmov	h0, 1.0e\+0
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	dup	v31\.2s, v31\.s\[0\]
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_8:
+ **	fcvt	h1, s1
+ **	fcvt	h0, s0
+ **	movi	v31\.2s, 0x3c, lsl 24
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_1:
+ **	dup	v0\.8h, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_2:
+ **	bfi	w0, w1, 16, 16
+ **	dup	v0\.4s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_3:
+ **	bfi	w0, w2, 16, 16
+ **	bfi	w1, w3, 16, 16
+ **	dup	v31\.2s, w0
+ **	dup	v0\.2s, w1
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_4:
+ **	uxth	w0, w0
+ **	dup	v0\.4s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_5:
+ **	mov	w1, 0
+ **	bfi	w1, w0, 16, 16
+ **	dup	v0\.4s, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_6:
+ **	uxth	w0, w0
+ **	dup	v31\.2s, w0
+ **	mov	w0, 1
+ **	bfi	w1, w0, 16, 16
+ **	dup	v0\.2s, w1
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_7:
+ **	mov	w2, 0
+ **	bfi	w2, w0, 16, 16
+ **	mov	w0, 65537
+ **	bfi	w0, w1, 16, 16
+ **	dup	v31\.2s, w2
+ **	dup	v0\.2s, w0
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_8:
+ **	bfi	w0, w1, 16, 16
+ **	movi	v0\.2s, 0x1, lsl 16
+ **	dup	v31\.2s, w0
+ **	zip1	v0\.8h, v0\.8h, v31\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_1:
+ **	dup	v0\.4s, v0\.s\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_2:
+ **	uzp1	v0\.2s, v0\.2s, v1\.2s
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_3:
+ **	fmov	s0, s0
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float32_4:
+ **	movi	v31\.2s, #0
+ **	uzp1	v0\.2s, v31\.2s, v0\.2s
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_1:
+ **	dup	v0\.4s, w0
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_2:
+ **	fmov	s0, w0
+ **	ins	v0\.s\[1\], w1
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_3:
+ **	fmov	s0, w0
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int32_4:
+ **	dup	v31\.2s, w0
+ **	movi	v0\.2s, 0
+ **	zip1	v0\.4s, v0\.4s, v31\.4s
+ **	ret
+ */
+ 
+ /*
+ ** test_float64_1:
+ **	dup	v0\.2d, v0\.d\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_int64_1:
+ **	dup	v0\.2d, x0	
+ **	ret
+ */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c	Sun May 31 22:32:10 2026
*************** int32x4_t f_s32(int32_t x)
*** 47,54 ****
  /*
  ** f_s64:
  **	fmov	d0, x0
! **	mov	(x[0-9]+), 1
! **	ins	v0\.d\[1\], \1
  **	ret
  */
  
--- 47,54 ----
  /*
  ** f_s64:
  **	fmov	d0, x0
! **	mov	w([0-9]+), 1
! **	ins	v0\.d\[1\], x\1
  **	ret
  */
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c	Sun May 31 22:32:10 2026
***************
*** 6,12 ****
  
  /*
  **test1:
! **	mov	x[0-9]+, 16502
  **	movk	x[0-9]+, 0x1023, lsl 16
  **	movk	x[0-9]+, 0x4308, lsl 32
  **	movk	x[0-9]+, 0x942, lsl 48
--- 6,12 ----
  
  /*
  **test1:
! **	mov	w[0-9]+, 16502
  **	movk	x[0-9]+, 0x1023, lsl 16
  **	movk	x[0-9]+, 0x4308, lsl 32
  **	movk	x[0-9]+, 0x942, lsl 48
*************** test1 (uint64_t a, uint64x2_t b, uint64x
*** 29,35 ****
  
  /*
  **test2:
! **	mov	x[0-9]+, 16502
  **	movk	x[0-9]+, 0x4223, lsl 16
  **	movk	x[0-9]+, 0x3032, lsl 32
  **	movk	x[0-9]+, 0x424, lsl 48
--- 29,35 ----
  
  /*
  **test2:
! **	mov	w[0-9]+, 16502
  **	movk	x[0-9]+, 0x4223, lsl 16
  **	movk	x[0-9]+, 0x3032, lsl 32
  **	movk	x[0-9]+, 0x424, lsl 48
*************** test3 (uint32_t a, uint32x4_t b, uint32x
*** 74,80 ****
  /*
  **test4:
  **	ushr	v[0-9]+.16b, v[0-9]+.16b, 7
! **	mov	x[0-9]+, 16512
  **	movk	x[0-9]+, 0x1020, lsl 16
  **	orr	x[0-9]+, x[0-9]+, x[0-9]+, lsl 28
  **	fmov	d[0-9]+, x[0-9]+
--- 74,80 ----
  /*
  **test4:
  **	ushr	v[0-9]+.16b, v[0-9]+.16b, 7
! **	mov	w[0-9]+, 16512
  **	movk	x[0-9]+, 0x1020, lsl 16
  **	orr	x[0-9]+, x[0-9]+, x[0-9]+, lsl 28
  **	fmov	d[0-9]+, x[0-9]+
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssk.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU signed
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-ssr.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU signed
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-suk.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU unsigned
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-sur.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __int24
+ #define UU unsigned
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usk.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU signed
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-usr.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU signed
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU unsigned
+ #define FX _Accum
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ #define TT __uint24
+ #define UU unsigned
+ #define FX _Fract
+ 
+ #include "pr125409.h"
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409.h gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409.h
*** gcc-17-20260524/gcc/testsuite/gcc.target/avr/torture/pr125409.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/avr/torture/pr125409.h	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,16 ----
+ UU FX fx_fun (TT x) { return x; }
+ TT fun_fx (UU FX x) { return x; }
+ 
+ short UU FX hfx_fun (TT x) { return x; }
+ TT fun_hfx (UU short FX x) { return x; }
+ 
+ long UU FX lfx_fun (TT x) { return x; }
+ TT fun_lfx (UU long FX x) { return x; }
+ 
+ long long UU FX llfx_fun (TT x) { return x; }
+ TT fun_llfx (UU long long FX x) { return x; }
+ 
+ int main (void)
+ {
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c	Sun May 31 22:32:10 2026
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/125469 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-Ofast -mapx-features=nf" } */
+ 
+ int s;
+ 
+ void
+ foo ()
+ {
+   s /= ((__int128) 0x33333333333333333333333333333333uwb) + 1i;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/avx512f-simd-1.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512f-simd-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/avx512f-simd-1.c	Sun May 24 22:32:10 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512f-simd-1.c	Sun May 31 22:32:10 2026
*************** f1 (void)
*** 13,19 ****
    int i;
    #pragma omp simd simdlen (4)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 1;
  }
  
  void
--- 13,19 ----
    int i;
    #pragma omp simd simdlen (4)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 11;
  }
  
  void
*************** f2 (void)
*** 22,28 ****
    int i;
    #pragma omp simd simdlen (8)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 2;
  }
  
  void
--- 22,28 ----
    int i;
    #pragma omp simd simdlen (8)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 12;
  }
  
  void
*************** f3 (void)
*** 31,35 ****
    int i;
    #pragma omp simd simdlen (16)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 3;
  }
--- 31,35 ----
    int i;
    #pragma omp simd simdlen (16)
    for (i = 0; i < N; ++i)
!     a[i] = a[i] + 13;
  }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr124630.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr124630.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr124630.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr124630.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbmi" } */
+ /* { dg-final { scan-assembler-not "blsmsk" } } */
+ /* { dg-final { scan-assembler-not "cmove" } } */
+ 
+ unsigned foo (unsigned a)
+ {
+     if (a != 0)
+      return __builtin_popcount (a ^ (a - 1)) - 1;
+     else
+      return 32;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,29 ----
+ /* PR target/54412 */
+ /* { dg-do run { target { avx512f && { ! ia32 } } } } */
+ /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
+ /* { dg-options "-O0 -mavx512f" } */
+ 
+ #include "avx512-check.h"
+ 
+ typedef double v8d __attribute__ ((vector_size (64), aligned (64)));
+ 
+ __attribute__ ((noinline)) static v8d
+ roundtrip_v8d (v8d x)
+ {
+   return x;
+ }
+ 
+ static void
+ test_512 (void)
+ {
+   v8d x __attribute__ ((aligned (64)))
+     = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+   v8d expected __attribute__ ((aligned (64)))
+     = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
+   v8d r __attribute__ ((aligned (64)));
+ 
+   r = roundtrip_v8d (x);
+ 
+   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,27 ----
+ /* PR target/54412 */
+ /* { dg-do run { target { avx && { ! ia32 } } } } */
+ /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
+ /* { dg-options "-O0 -mavx" } */
+ 
+ #include "avx-check.h"
+ 
+ typedef float v8f __attribute__ ((vector_size (32), aligned (32)));
+ 
+ static const v8f expected = { 1.0f, 2.0f, 3.0f, 4.0f,
+                               5.0f, 6.0f, 7.0f, 8.0f };
+ 
+ __attribute__ ((noinline)) static int
+ param_matches (v8f x)
+ {
+   return __builtin_memcmp (&x, &expected, sizeof (x)) == 0;
+ }
+ 
+ static void
+ avx_test (void)
+ {
+   v8f x __attribute__ ((aligned (32)))
+     = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
+ 
+   if (!param_matches (x))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,104 ----
+ /* PR target/54412 */
+ /* { dg-do run { target { avx && { ! ia32 } } } } */
+ /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
+ /* { dg-options "-O2 -mavx -std=gnu99" } */
+ 
+ #include "avx-check.h"
+ #include <immintrin.h>
+ 
+ typedef double v4d __attribute__ ((vector_size (32), aligned (32)));
+ typedef char byte_vec __attribute__ ((vector_size (32)));
+ 
+ struct avx_wrapper
+ {
+   __m256 value;
+ };
+ 
+ #define PERM_LEFT_BVEC \
+   (byte_vec) { 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, \
+                15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, \
+                29, 30 }
+ 
+ __attribute__ ((noinline, noclone)) static v4d
+ roundtrip_v4d (v4d x)
+ {
+   return x;
+ }
+ 
+ __attribute__ ((noinline)) static __m256
+ pass_m256 (__m256 x)
+ {
+   return x;
+ }
+ 
+ __attribute__ ((noinline)) static struct avx_wrapper
+ pass_wrapper (struct avx_wrapper x)
+ {
+   return x;
+ }
+ 
+ __attribute__ ((noinline)) static byte_vec
+ permute (byte_vec x, byte_vec y)
+ {
+   return __builtin_shuffle (x, y, PERM_LEFT_BVEC);
+ }
+ 
+ static void
+ test_v4d_roundtrip (void)
+ {
+   v4d x = (v4d) { 1.0, 2.0, 3.0, 4.0 };
+   v4d r = roundtrip_v4d (x);
+   v4d expected = (v4d) { 1.0, 2.0, 3.0, 4.0 };
+ 
+   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
+     __builtin_abort ();
+ }
+ 
+ static void
+ test_m256_and_wrapper_by_value (void)
+ {
+   __m256 m = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
+                             4.0f, 3.0f, 2.0f, 1.0f);
+   __m256 r = pass_m256 (m);
+   struct avx_wrapper x;
+   struct avx_wrapper y;
+ 
+   x.value = _mm256_set_ps (16.0f, 15.0f, 14.0f, 13.0f,
+                            12.0f, 11.0f, 10.0f, 9.0f);
+   y = pass_wrapper (x);
+ 
+   if (__builtin_memcmp (&r, &m, sizeof (r)) != 0)
+     __builtin_abort ();
+ 
+   if (__builtin_memcmp (&y, &x, sizeof (y)) != 0)
+     __builtin_abort ();
+ }
+ 
+ static void
+ test_two_arg_bytevec_shuffle (void)
+ {
+   byte_vec x = { 1, 2, 3, 4, 5, 6, 7, 8,
+                  9, 10, 11, 12, 13, 14, 15, 16,
+                  17, 18, 19, 20, 21, 22, 23, 24,
+                  25, 26, 27, 28, 29, 30, 31, 32 };
+   byte_vec y = { 11, 12, 13, 14, 15, 16, 17, 18,
+                  19, 110, 111, 112, 113, 114, 115, 116,
+                  117, 118, 119, 120, 121, 122, 123, 124,
+                  125, 126, 127, 88, 89, 90, 91, 92 };
+   byte_vec expected = { 92, 1, 2, 3, 4, 5, 6, 7,
+                         8, 9, 10, 11, 12, 13, 14, 15,
+                         16, 17, 18, 19, 20, 21, 22, 23,
+                         24, 25, 26, 27, 28, 29, 30, 31 };
+   byte_vec z = permute (x, y);
+ 
+   if (__builtin_memcmp (&z, &expected, sizeof (z)) != 0)
+     __builtin_abort ();
+ }
+ 
+ static void
+ avx_test (void)
+ {
+   test_v4d_roundtrip ();
+   test_m256_and_wrapper_by_value ();
+   test_two_arg_bytevec_shuffle ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,36 ----
+ /* PR target/54412 */
+ /* { dg-do run { target { avx && { ! ia32 } } } } */
+ /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
+ /* { dg-options "-O2 -mavx -std=gnu99" } */
+ 
+ #include "avx-check.h"
+ #include <immintrin.h>
+ 
+ struct avx_wrapper
+ {
+   __m256 value;
+ };
+ 
+ __attribute__ ((noinline)) static struct avx_wrapper
+ make_wrapper (void)
+ {
+   struct avx_wrapper x;
+ 
+   x.value = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
+                            4.0f, 3.0f, 2.0f, 1.0f);
+   return x;
+ }
+ 
+ static void
+ avx_test (void)
+ {
+   struct avx_wrapper expected;
+   struct avx_wrapper r;
+ 
+   expected.value = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
+                                   4.0f, 3.0f, 2.0f, 1.0f);
+   r = make_wrapper ();
+ 
+   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,27 ----
+ /* PR target/54412 */
+ /* { dg-do run { target { avx && { ! ia32 } } } } */
+ /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
+ /* { dg-options "-O0 -mavx" } */
+ 
+ #include "avx-check.h"
+ 
+ typedef double v4d __attribute__ ((vector_size (32)));
+ 
+ __attribute__ ((noinline)) static v4d
+ f (v4d x)
+ {
+   return x;
+ }
+ 
+ static void
+ avx_test (void)
+ {
+   v4d x __attribute__ ((aligned (32))) = { 1.0, 2.0, 3.0, 4.0 };
+   v4d expected __attribute__ ((aligned (32))) = { 1.0, 2.0, 3.0, 4.0 };
+   v4d r __attribute__ ((aligned (32)));
+ 
+   r = f (x);
+ 
+   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr89597-1.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr89597-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr89597-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr89597-1.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile { target x86_64-*-mingw* } } */
+ /* { dg-options "-O1 -mavx" } */
+ 
+ typedef long long __m256i __attribute__ ((__vector_size__ (32)));
+ 
+ __m256i
+ foo (void)
+ {
+   return (__m256i) { 1, 2, 3, 4 };
+ }
+ 
+ /* { dg-final { scan-assembler "ymm0" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr89597-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr89597-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/pr89597-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr89597-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile { target x86_64-*-mingw* } } */
+ /* { dg-options "-O1 -mavx512f" } */
+ 
+ typedef long long __m512i __attribute__ ((__vector_size__ (64)));
+ 
+ __m512i
+ foo (void)
+ {
+   return (__m512i) { 1, 2, 3, 4, 5, 6, 7, 8 };
+ }
+ 
+ /* { dg-final { scan-assembler "zmm0" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/rewrite-sib-without-base.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/rewrite-sib-without-base.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/rewrite-sib-without-base.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/rewrite-sib-without-base.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -masm=att" } */
+ /* { dg-final { scan-assembler-not "\\(,%" } } */
+ 
+ _Complex a;
+ _Complex int b;
+ void c(void) { a = *(_Complex char *)__builtin_memset(&a, 1, 2) / b; }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddb-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddb-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddb-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddb-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef char v16sqi __attribute__ ((vector_size(16)));
+ typedef unsigned char v16uqi __attribute__ ((vector_size(16)));
+ 
+ v16sqi si,so;
+ v16uqi ui,uo;
+ 
+ void foo()
+ {
+   so = si - 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui - 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?paddb\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddd-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddd-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddd-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddd-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef int v4ssi __attribute__ ((vector_size(16)));
+ typedef unsigned int v4usi __attribute__ ((vector_size(16)));
+ 
+ v4ssi si,so;
+ v4usi ui,uo;
+ 
+ void foo()
+ {
+   so = si - 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui - 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?paddd\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddw-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddw-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-paddw-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-paddw-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef short v8shi __attribute__ ((vector_size(16)));
+ typedef unsigned short v8uhi __attribute__ ((vector_size(16)));
+ 
+ v8shi si,so;
+ v8uhi ui,uo;
+ 
+ void foo()
+ {
+   so = si - 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui - 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?paddw\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubb-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubb-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubb-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubb-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef char v16sqi __attribute__ ((vector_size(16)));
+ typedef unsigned char v16uqi __attribute__ ((vector_size(16)));
+ 
+ v16sqi si,so;
+ v16uqi ui,uo;
+ 
+ void foo()
+ {
+   so = si + 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui + 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?psubb\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubd-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubd-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubd-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubd-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef int v4ssi __attribute__ ((vector_size(16)));
+ typedef unsigned int v4usi __attribute__ ((vector_size(16)));
+ 
+ v4ssi si,so;
+ v4usi ui,uo;
+ 
+ void foo()
+ {
+   so = si + 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui + 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?psubd\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubw-2.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubw-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse2-psubw-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse2-psubw-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef short v8shi __attribute__ ((vector_size(16)));
+ typedef unsigned short v8uhi __attribute__ ((vector_size(16)));
+ 
+ v8shi si,so;
+ v8uhi ui,uo;
+ 
+ void foo()
+ {
+   so = si + 1;
+ }
+ 
+ void bar()
+ {
+   uo = ui + 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]v?psubw\[ \t\]" 2 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse4_1-ptest-7.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse4_1-ptest-7.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/sse4_1-ptest-7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/sse4_1-ptest-7.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2 -msse4.1 -mno-stackrealign" } */
+ 
+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
+ 
+ int foo (__m128i x, __m128i y)
+ {
+   return (__int128)x == (__int128)y;
+ }
+ 
+ int bar (__m128i x, __m128i y)
+ {
+   return (__int128)(x^y) == 0;
+ }
+ 
+ int baz (__m128i x, __m128i y)
+ {
+   return (__int128)(x==y) == ~0;
+ }
+ 
+ /* { dg-final { scan-assembler-times "ptest\[ \\t\]+%" 3 } } */
+ /* { dg-final { scan-assembler-not "%\[er\]sp" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/i386/stack-usage-realign.c gcc-17-20260531/gcc/testsuite/gcc.target/i386/stack-usage-realign.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/i386/stack-usage-realign.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/i386/stack-usage-realign.c	Sun May 31 22:32:11 2026
*************** int main (void)
*** 17,21 ****
    return 0;
  }
  
! /* { dg-final { scan-stack-usage "main\t48\tdynamic,bounded" } } */
  /* { dg-final { cleanup-stack-usage } } */
--- 17,21 ----
    return 0;
  }
  
! /* { dg-final { scan-stack-usage "main\tmain\t48\tdynamic,bounded" } } */
  /* { dg-final { cleanup-stack-usage } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c gcc-17-20260531/gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/loongarch/la64/mul-const-reduction.c	Sun May 31 22:32:11 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=la464" } */
! /* { dg-final { scan-assembler "alsl\.w" } } */
  /* { dg-final { scan-assembler "slli\.w" } } */
  /* { dg-final { scan-assembler-not "mul\.w" } } */
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=la464" } */
! /* { dg-final { scan-assembler "alsl\.d" } } */
  /* { dg-final { scan-assembler "slli\.w" } } */
  /* { dg-final { scan-assembler-not "mul\.w" } } */
  
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c	Sun May 31 22:32:11 2026
***************
*** 1,4 ****
! /* { dg-do compile { target powerpc*-*-* } } */
  /* { dg-options "-mcpu=860 -O2" } */
  
  /* Check that we do not emit lwsync when targeting MPC8xx (MPCCORE),
--- 1,4 ----
! /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
  /* { dg-options "-mcpu=860 -O2" } */
  
  /* Check that we do not emit lwsync when targeting MPC8xx (MPCCORE),
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-compat-seq-cst.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_seq_cst (long* ba
*** 22,28 ****
  
  /*
  ** atomic_store_int_seq_cst:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	fence\trw,w
  **	sw\t[atx][0-9]+,0\(a0\)
  **	fence\trw,rw
--- 22,28 ----
  
  /*
  ** atomic_store_int_seq_cst:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	fence\trw,w
  **	sw\t[atx][0-9]+,0\(a0\)
  **	fence\trw,rw
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-relaxed.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_relaxed (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_relaxed:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_relaxed:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-store-release.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_release (long* ba
*** 20,26 ****
  
  /*
  ** atomic_store_int_release:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	fence\trw,w
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
--- 20,26 ----
  
  /*
  ** atomic_store_int_release:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	fence\trw,w
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-compat-seq-cst.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_seq_cst (long* ba
*** 21,27 ****
  
  /*
  ** atomic_store_int_seq_cst:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	fence\trw,rw
  **	ret
--- 21,27 ----
  
  /*
  ** atomic_store_int_seq_cst:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	fence\trw,rw
  **	ret
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-relaxed.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_relaxed (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_relaxed:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_relaxed:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/a-ztso-store-release.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_release (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_release:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_release:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-compat-seq-cst.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_seq_cst (long* ba
*** 20,26 ****
  
  /*
  ** atomic_store_int_seq_cst:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 20,26 ----
  
  /*
  ** atomic_store_int_seq_cst:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-relaxed.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_relaxed (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_relaxed:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_relaxed:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-rvwmo-store-release.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_release (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_release:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_release:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-compat-seq-cst.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_seq_cst (long* ba
*** 20,26 ****
  
  /*
  ** atomic_store_int_seq_cst:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 20,26 ----
  
  /*
  ** atomic_store_int_seq_cst:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw.rl\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-relaxed.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_relaxed (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_relaxed:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_relaxed:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/amo/zalasr-ztso-store-release.c	Sun May 31 22:32:11 2026
*************** void atomic_store_long_release (long* ba
*** 19,25 ****
  
  /*
  ** atomic_store_int_release:
! **	lw\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
--- 19,25 ----
  
  /*
  ** atomic_store_int_release:
! **	(lwu|lw)\t[atx][0-9]+,0\(a1\)
  **	sw\t[atx][0-9]+,0\(a0\)
  **	ret
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/cpymem-64-ooo.c	Sun May 31 22:32:11 2026
*************** void copy_aligned_##N (void *to, void *f
*** 22,30 ****
  /*
  **copy_7:
  **    ...
! **    lw\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
! **    lw\t[at][0-9],3\([at][0-9]\)
  **    sw\t[at][0-9],3\([at][0-9]\)
  **    ...
  */
--- 22,30 ----
  /*
  **copy_7:
  **    ...
! **    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
! **    (lwu|lw)\t[at][0-9],3\([at][0-9]\)
  **    sw\t[at][0-9],3\([at][0-9]\)
  **    ...
  */
*************** COPY_N(7)
*** 33,41 ****
  /*
  **copy_aligned_7:
  **    ...
! **    lw\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
! **    lw\t[at][0-9],3\([at][0-9]\)
  **    sw\t[at][0-9],3\([at][0-9]\)
  **    ...
  */
--- 33,41 ----
  /*
  **copy_aligned_7:
  **    ...
! **    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
! **    (lwu|lw)\t[at][0-9],3\([at][0-9]\)
  **    sw\t[at][0-9],3\([at][0-9]\)
  **    ...
  */
*************** COPY_ALIGNED_N(8)
*** 64,70 ****
  **    ...
  **    ld\t[at][0-9],0\([at][0-9]\)
  **    sd\t[at][0-9],0\([at][0-9]\)
! **    lw\t[at][0-9],7\([at][0-9]\)
  **    sw\t[at][0-9],7\([at][0-9]\)
  **    ...
  */
--- 64,70 ----
  **    ...
  **    ld\t[at][0-9],0\([at][0-9]\)
  **    sd\t[at][0-9],0\([at][0-9]\)
! **    (lwu|lw)\t[at][0-9],7\([at][0-9]\)
  **    sw\t[at][0-9],7\([at][0-9]\)
  **    ...
  */
*************** COPY_N(11)
*** 75,81 ****
  **    ...
  **    ld\t[at][0-9],0\([at][0-9]\)
  **    sd\t[at][0-9],0\([at][0-9]\)
! **    lw\t[at][0-9],7\([at][0-9]\)
  **    sw\t[at][0-9],7\([at][0-9]\)
  **    ...
  */
--- 75,81 ----
  **    ...
  **    ld\t[at][0-9],0\([at][0-9]\)
  **    sd\t[at][0-9],0\([at][0-9]\)
! **    (lwu|lw)\t[at][0-9],7\([at][0-9]\)
  **    sw\t[at][0-9],7\([at][0-9]\)
  **    ...
  */
*************** COPY_ALIGNED_N(15)
*** 110,116 ****
  **    ...
  **    sd\t[at][0-9],16\([at][0-9]\)
  **    ...
! **    lw\t[at][0-9],23\([at][0-9]\)
  **    sw\t[at][0-9],23\([at][0-9]\)
  **    ...
  */
--- 110,116 ----
  **    ...
  **    sd\t[at][0-9],16\([at][0-9]\)
  **    ...
! **    (lwu|lw)\t[at][0-9],23\([at][0-9]\)
  **    sw\t[at][0-9],23\([at][0-9]\)
  **    ...
  */
*************** COPY_N(27)
*** 123,129 ****
  **    ...
  **    sd\t[at][0-9],16\([at][0-9]\)
  **    ...
! **    lw\t[at][0-9],23\([at][0-9]\)
  **    sw\t[at][0-9],23\([at][0-9]\)
  **    ...
  */
--- 123,129 ----
  **    ...
  **    sd\t[at][0-9],16\([at][0-9]\)
  **    ...
! **    (lwu|lw)\t[at][0-9],23\([at][0-9]\)
  **    sw\t[at][0-9],23\([at][0-9]\)
  **    ...
  */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/cpymem-64.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/cpymem-64.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/cpymem-64.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/cpymem-64.c	Sun May 31 22:32:11 2026
*************** COPY_N(7)
*** 35,41 ****
  /*
  **copy_aligned_7:
  **    ...
! **    lw\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
  **    ...
  **    lbu\t[at][0-9],6\([at][0-9]\)
--- 35,41 ----
  /*
  **copy_aligned_7:
  **    ...
! **    (lwu|lw)\t[at][0-9],0\([at][0-9]\)
  **    sw\t[at][0-9],0\([at][0-9]\)
  **    ...
  **    lbu\t[at][0-9],6\([at][0-9]\)
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/ext-dce-3.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/ext-dce-3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/ext-dce-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/ext-dce-3.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,33 ----
+ /* Verify ext-dce for word loads on RV64: lw sign-extends to 64 bits,
+    so when the upper 32 bits are dead lw should be narrowed to lwu.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target rv64 } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** test_word:
+ **	...
+ **	lwu	.*
+ **	...
+ */
+ /* Positive: word load-modify-store — upper 32 bits are dead.  */
+ void
+ test_word (signed int *p)
+ {
+   *p = (*p & 0xffff0000) | (0x0000ffff & ((unsigned int)*p >> 16));
+ }
+ 
+ /*
+ ** test_word_sign_needed:
+ **	...
+ **	lw	.*
+ **	...
+ */
+ /* Negative: return value is long — sign extension is needed.  */
+ long
+ test_word_sign_needed (signed int *p)
+ {
+   return *p;
+ }
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/ext-dce-4.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/ext-dce-4.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/ext-dce-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/ext-dce-4.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,58 ----
+ /* Verify that ext-dce narrows sign-extending loads to zero-extending loads
+    when the upper bits are dead.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** test_half:
+ **	...
+ **	lhu	.*
+ **	...
+ */
+ /* Positive: halfword load-modify-store — sign bits are dead.  */
+ void
+ test_half (signed short *p)
+ {
+   *p = (*p & 0xff00) | (0x00ff & (*p >> 8));
+ }
+ 
+ /*
+ ** test_byte:
+ **	...
+ **	lbu	.*
+ **	...
+ */
+ /* Positive: byte load-modify-store — sign bits are dead.  */
+ void
+ test_byte (signed char *p)
+ {
+   *p = (*p & 0xf0) | (0x0f & (*p >> 4));
+ }
+ 
+ /*
+ ** test_half_sign_needed:
+ **	...
+ **	lh	.*
+ **	...
+ */
+ /* Negative: arithmetic right shift needs the sign extension.  */
+ int
+ test_half_sign_needed (signed short *p)
+ {
+   return *p >> 8;
+ }
+ 
+ /*
+ ** test_half_compare:
+ **	...
+ **	lh	.*
+ **	...
+ */
+ /* Negative: sign-dependent comparison.  */
+ int
+ test_half_compare (signed short *p)
+ {
+   return *p < 0;
+ }
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fp-reg-class.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fp-reg-class.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fp-reg-class.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fp-reg-class.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -O2 -fdump-rtl-ira" } */
+ 
+ /* When riscv_regno_to_class[] mapped every FP hard register to
+    RVC_FP_REGS, ira-costs.cc:setup_allocno_cost_vector read the cost
+    slot for f0-f7 / f16-f31 from the wrong bucket and IRA mis-allocated
+    FP pseudos.  Eight "cf"- and sixteen "f"-constrained doubles live
+    across a call expose this: in the buggy state IRA picks an
+    all-in-hardreg coloring with no spills ("+++Costs" shows "mem 0")
+    and LRA recovers with fmv.d to fs* registers; with the fix IRA
+    spills the cf values honestly and the "mem" component is non-zero.  */
+ 
+ extern void use (double, double, double, double,
+ 		 double, double, double, double);
+ 
+ double
+ test (double *p, int n)
+ {
+   double f0 = p[0], f1 = p[1], f2 = p[2], f3 = p[3];
+   double f4 = p[4], f5 = p[5], f6 = p[6], f7 = p[7];
+   double f8 = p[8], f9 = p[9], f10 = p[10], f11 = p[11];
+   double f12 = p[12], f13 = p[13], f14 = p[14], f15 = p[15];
+ 
+   double c0, c1, c2, c3, c4, c5, c6, c7;
+   asm ("fadd.d %0,%1,%1" : "=cf" (c0) : "cf" (p[16]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c1) : "cf" (p[17]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c2) : "cf" (p[18]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c3) : "cf" (p[19]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c4) : "cf" (p[20]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c5) : "cf" (p[21]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c6) : "cf" (p[22]));
+   asm ("fadd.d %0,%1,%1" : "=cf" (c7) : "cf" (p[23]));
+ 
+   for (int i = 0; i < n; ++i)
+     {
+       f0  = f0  * f1  + f2;   f1  = f1  * f2  + f3;
+       f2  = f2  * f3  + f4;   f3  = f3  * f4  + f5;
+       f4  = f4  * f5  + f6;   f5  = f5  * f6  + f7;
+       f6  = f6  * f7  + f8;   f7  = f7  * f8  + f9;
+       f8  = f8  * f9  + f10;  f9  = f9  * f10 + f11;
+       f10 = f10 * f11 + f12;  f11 = f11 * f12 + f13;
+       f12 = f12 * f13 + f14;  f13 = f13 * f14 + f15;
+       f14 = f14 * f15 + f0;   f15 = f15 * f0  + f1;
+       asm ("fadd.d %0,%0,%1" : "+cf" (c0) : "f" (f0));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c1) : "f" (f1));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c2) : "f" (f2));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c3) : "f" (f3));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c4) : "f" (f4));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c5) : "f" (f5));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c6) : "f" (f6));
+       asm ("fadd.d %0,%0,%1" : "+cf" (c7) : "f" (f7));
+       use (f8, f9, f10, f11, f12, f13, f14, f15);
+     }
+   return f0+f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13+f14+f15
+        + c0+c1+c2+c3+c4+c5+c6+c7;
+ }
+ 
+ /* { dg-final { scan-rtl-dump {\+\+\+Costs:[^\n]* mem [1-9]} "ira" } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi-2.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* Verify AUIPC_ADDI fusion still fires after table-driven refactor.  */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=sifive-p600-series -mcmodel=medany -mexplicit-relocs -fno-section-anchors -fdump-rtl-sched1" } */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_AUIPC_ADDI" "sched1" } } */
+ 
+ extern int arr[];
+ 
+ int *
+ get_arr_addr (void)
+ {
+   return arr;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-auipc-ld.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-auipc-ld.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-auipc-ld.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-auipc-ld.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,16 ----
+ /* Verify RISCV_FUSE_AUIPC_LD correctly matches auipc+ld pairs.
+    This exercises the fix for XINT accessing SET_SRC (prev_set)
+    instead of prev_set directly.  */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=sifive-p600-series -mcmodel=medany -mexplicit-relocs -fno-section-anchors -fdump-rtl-sched1" } */
+ /* No upstream mtune currently enables RISCV_FUSE_AUIPC_LD.  */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_AUIPC_LD" "sched1" { xfail *-*-* } } } */
+ 
+ extern long x;
+ 
+ long
+ load_global (void)
+ {
+   return x;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-b-alui.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-b-alui.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-b-alui.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-b-alui.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* Verify RISCV_FUSE_B_ALUI correctly matches sub+smax (abs) pattern.
+    This exercises the removal of the redundant CONST_INT_P check.  */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc_zbb -mabi=lp64d -mtune=sifive-p600-series -fdump-rtl-sched1" } */
+ /* No upstream mtune currently enables RISCV_FUSE_B_ALUI.  */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_B_ALUI" "sched1" { xfail *-*-* } } } */
+ 
+ long
+ abs_val (long x)
+ {
+   return x < 0 ? -x : x;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 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;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-ldindexed.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-ldindexed.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-ldindexed.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-ldindexed.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* Verify RISCV_FUSE_LDINDEXED correctly matches add+ld pairs.
+    This exercises the removal of the duplicate REG_P check.  */
+ /* { 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_LDINDEXED.  */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_LDINDEXED" "sched1" { xfail *-*-* } } } */
+ 
+ long
+ load_indexed (long *base, long idx)
+ {
+   return base[idx];
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-lui-addi-2.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-lui-addi-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-lui-addi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-lui-addi-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* Verify LUI_ADDI fusion still fires after table-driven refactor
+    with a different constant than fusion-lui-addi.c.  */
+ /* { 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" } */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_LUI_ADDI" "sched1" } } */
+ 
+ long
+ bar (void)
+ {
+   return 0x7BCD1234L;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-zexth-2.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-zexth-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-zexth-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-zexth-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,18 ----
+ /* Verify ZEXTH fusion still fires after table-driven refactor.  */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=xiangshan-nanhu -fdump-rtl-sched2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_ZEXTH" "sched2" } } */
+ 
+ /*
+ **bar:
+ **	slli	a0,a0,48
+ **	srli	a0,a0,48
+ **	ret
+ */
+ unsigned long
+ bar (unsigned long x)
+ {
+   return x & 0xffffUL;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-zextw-2.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-zextw-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/fusion-zextw-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/fusion-zextw-2.c	Sun May 31 22:32:11 2026
***************
*** 0 ****
--- 1,18 ----
+ /* Verify ZEXTW fusion still fires after table-driven refactor.  */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=xiangshan-nanhu -fdump-rtl-sched2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ /* { dg-final { scan-rtl-dump "RISCV_FUSE_ZEXTWS" "sched2" } } */
+ 
+ /*
+ **bar:
+ **	slli	a0,a0,32
+ **	srli	a0,a0,32
+ **	ret
+ */
+ unsigned long
+ bar (unsigned long x)
+ {
+   return x & 0xffffffffUL;
+ }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c	Sun May 31 22:32:11 2026
*************** COPY_N(31)
*** 44,50 ****
  /* { dg-final { scan-assembler-times "ld\t" 17 } } */
  /* { dg-final { scan-assembler-times "sd\t" 17 } } */
  
! /* { dg-final { scan-assembler-times "lw\t" 6 } } */
  /* { dg-final { scan-assembler-times "sw\t" 6 } } */
  
  /* { dg-final { scan-assembler-times "lhu\t" 7 } } */
--- 44,50 ----
  /* { dg-final { scan-assembler-times "ld\t" 17 } } */
  /* { dg-final { scan-assembler-times "sd\t" 17 } } */
  
! /* { dg-final { scan-assembler-times "(lwu|lw)\t" 6 } } */
  /* { dg-final { scan-assembler-times "sw\t" 6 } } */
  
  /* { dg-final { scan-assembler-times "lhu\t" 7 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/pr67731.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr67731.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/pr67731.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr67731.c	Sun May 31 22:32:11 2026
*************** _Bool test_01 (S* s)
*** 20,25 ****
  {
    return s->b | s->c | s->d;
  }
! /* { dg-final { scan-assembler-times {\tlw\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 } } */
  /* { dg-final { scan-assembler-not {\tor} } } */
  /* { dg-final { scan-assembler-not {\tbexti} } } */
--- 20,26 ----
  {
    return s->b | s->c | s->d;
  }
! /* { dg-final { scan-assembler-times {\tlw\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 { target rv32 } } } */
! /* { dg-final { scan-assembler-times {\tlwu\ta0,0\(a0\).*?\n\tandi\ta0,a0,\d+.*?\n\tsnez\ta0,a0.*?\n\tret} 2 { target rv64 } } } */
  /* { dg-final { scan-assembler-not {\tor} } } */
  /* { dg-final { scan-assembler-not {\tbexti} } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-1.c	Sun May 31 22:32:11 2026
*************** void foo8x (long *restrict a, char *rest
*** 37,43 ****
      a[i] = b[i];
  }
  
! /* { dg-final { scan-assembler-times ",m1," 3 } } */
  /* { dg-final { scan-assembler-times ",m2," 3 } } */
! /* { dg-final { scan-assembler-times ",m4," 4 } } */
! /* { dg-final { scan-assembler-times ",m8," 2 } } */
--- 37,43 ----
      a[i] = b[i];
  }
  
! /* { dg-final { scan-assembler-not ",m1," } } */
  /* { dg-final { scan-assembler-times ",m2," 3 } } */
! /* { dg-final { scan-assembler-times ",m4," 2 } } */
! /* { dg-final { scan-assembler-times ",m8," 1 } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/dyn-lmul-conv-2.c	Sun May 31 22:32:11 2026
*************** void foo8x (unsigned char *restrict a, u
*** 37,44 ****
      a[i] = b[i];
  }
  
! /* { dg-final { scan-assembler-times ",m1," 7 } } */
  /* { dg-final { scan-assembler-times ",m2," 3 } } */
  /* { dg-final { scan-assembler-times ",m4," 1 } } */
! /* { dg-final { scan-assembler-times ",m8," 1 } } */
  /* { dg-final { scan-assembler-not ",mf2," } } */
--- 37,44 ----
      a[i] = b[i];
  }
  
! /* { dg-final { scan-assembler-times ",m1," 6 } } */
  /* { dg-final { scan-assembler-times ",m2," 3 } } */
  /* { dg-final { scan-assembler-times ",m4," 1 } } */
! /* { dg-final { scan-assembler-not ",m8," } } */
  /* { dg-final { scan-assembler-not ",mf2," } } */
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr123414.c	Sun May 31 22:32:11 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -mrvv-max-lmul=m8 -O3 -fsigned-char -fno-strict-aliasing -fwrapv -fdump-tree-optimized -std=gnu99" } */
  
  signed char a=2;
  long long b;
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -mrvv-max-lmul=m8 -O3 -fsigned-char -fno-strict-aliasing -fwrapv -fdump-tree-optimized -std=gnu99 -fno-vect-cost-model" } */
  
  signed char a=2;
  long long b;
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c
*** gcc-17-20260524/gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c	Sun May 24 22:32:11 2026
--- gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/base/pr115456-3.c	Sun May 31 22:32:11 2026
*************** main (void)
*** 28,31 ****
  }
  
  /* { dg-final { scan-assembler-not {call\s+__extendhfsf2} } } */
- /* { dg-final { scan-assembler-times {vfmv\.f\.s\s+fa[0-9]+,\s*v[0-9]+} 4 } } */
--- 28,30 ----
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/EXformat_3.F90 gcc-17-20260531/gcc/testsuite/gfortran.dg/EXformat_3.F90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/EXformat_3.F90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/EXformat_3.F90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,157 ----
+ ! { dg-do run }
+ ! PR93727 Test EX format rounding of truncated hex mantissa.
+ ! Verifies ROUND_NEAREST (round-to-nearest ties-to-even) when the
+ ! user specifies a d less than full precision.
+ program main
+   implicit none
+   call test04
+   call test08
+   call test10
+   call test16
+ 
+ contains
+ 
+ subroutine test04
+   real(kind=4) :: r4
+   character(kind=1,len=40) :: s
+ 
+   ! Carry propagates through all fractional digits into integer digit;
+   ! integer F overflows -> normalize to 8 with exponent incremented.
+   ! huge(1.0_4) = 0XF.FFFFFP+124
+   ! d=4: first dropped F > 8, all frac digits carry to 0, F+1 -> 8, exp 125
+   r4 = huge(1.0_4)
+   write(s, '(EX0.4)') r4
+   if (s(1:13) /= '0X8.0000P+125') stop 1
+ 
+ end subroutine test04
+ 
+ subroutine test08
+   real(kind=8) :: r8
+   character(kind=1,len=40) :: s
+ 
+   ! Round up: first dropped digit B (=11) > 8, with carry through F into D.
+   ! -pi*25 = -0X9.D14707B63DFBP+3 (12 significant frac digits, 13th = 0)
+   ! d=11 keeps D14707B63DF, first dropped B -> round up
+   ! last kept F + 1 = 0 carry, D + 1 = E, result: -0X9.D14707B63E0P+3
+   r8 = -3.14159682678_8 * 25._8
+   write(s, '(EX0.11)') r8
+   if (s(1:19) /= '-0X9.D14707B63E0P+3') stop 2
+ 
+   ! Tie, last kept digit even (C=12) -> truncate (round to even).
+   ! 10.736328125 = 0XA.BC8000000000P+0
+   ! d=2: first dropped 8, tail zeros, C even -> truncate -> 0XA.BCP+0
+   r8 = 10.736328125_8
+   write(s, '(EX0.2)') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 3
+ 
+   ! Tie, last kept digit odd (B=11) -> round up (round to even).
+   ! 10.732421875 = 0XA.BB8000000000P+0
+   ! d=2: first dropped 8, tail zeros, B odd -> round up, B+1=C -> 0XA.BCP+0
+   r8 = 10.732421875_8
+   write(s, '(EX0.2)') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 4
+ 
+   ! Round up: first dropped digit 9 > 8, no carry.
+   ! 10.736572265625 = 0XA.BC9000000000P+0
+   ! d=2: first dropped 9 > 8 -> round up, C+1=D -> 0XA.BDP+0
+   r8 = 10.736572265625_8
+   write(s, '(EX0.2)') r8
+   if (s(1:9) /= '0XA.BDP+0') stop 5
+ 
+ end subroutine test08
+ 
+ #ifdef __GFC_REAL_10__
+ subroutine test10
+   real(kind=10) :: r10
+   character(kind=1,len=40) :: s
+ 
+   ! Tie, last kept digit even (C=12) -> truncate.
+   ! 10.736328125 = 0XA.BC8000000000000P+0 (15 frac digits)
+   ! d=2: first dropped 8, tail zeros, C even -> truncate -> 0XA.BCP+0
+   r10 = 10.736328125_10
+   write(s, '(EX0.2)') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 6
+ 
+   ! Tie, last kept digit odd (B=11) -> round up.
+   ! 10.732421875 = 0XA.BB8000000000000P+0
+   ! d=2: first dropped 8, tail zeros, B odd -> round up -> 0XA.BCP+0
+   r10 = 10.732421875_10
+   write(s, '(EX0.2)') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 7
+ 
+   ! Round up: first dropped digit 9 > 8, no carry.
+   ! 10.736572265625 = 0XA.BC9000000000000P+0
+   ! d=2: first dropped 9 > 8 -> round up, C+1=D -> 0XA.BDP+0
+   r10 = 10.736572265625_10
+   write(s, '(EX0.2)') r10
+   if (s(1:9) /= '0XA.BDP+0') stop 8
+ 
+   ! Round up: first dropped digit 9 > 8 in -pi*25 at d=13.
+   ! -pi*25 = -0X9.D14707B63DFB497P+3 (15 frac digits)
+   ! d=13: first dropped 9 > 8, last kept 4+1=5, no carry
+   ! result: -0X9.D14707B63DFB5P+3
+   r10 = -3.14159682678_10 * 25._10
+   write(s, '(EX0.13)') r10
+   if (s(1:21) /= '-0X9.D14707B63DFB5P+3') stop 9
+ 
+   ! Normalization: carry through all 14 frac digits into integer.
+   ! huge(1.0_10) = 0XF.FFFFFFFFFFFFFFFP+16380 (15 frac digits)
+   ! d=14: first dropped F > 8, all carry, F+1 -> 8, exp 16381
+   r10 = huge(1.0_10)
+   write(s, '(EX0.14)') r10
+   if (s(1:25) /= '0X8.00000000000000P+16381') stop 10
+ 
+ end subroutine test10
+ #else
+ subroutine test10
+ end subroutine test10
+ #endif
+ 
+ #ifdef __GFC_REAL_16__
+ subroutine test16
+   real(kind=16) :: r16
+   character(kind=1,len=45) :: s
+ 
+   ! Tie, last kept digit even (C=12) -> truncate.
+   ! 10.736328125 = 0XA.BC8000000000000000000000000P+0 (28 frac digits)
+   ! d=2: first dropped 8, tail zeros, C even -> truncate -> 0XA.BCP+0
+   r16 = 10.736328125_16
+   write(s, '(EX0.2)') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 11
+ 
+   ! Tie, last kept digit odd (B=11) -> round up.
+   ! 10.732421875 = 0XA.BB8000000000000000000000000P+0
+   ! d=2: first dropped 8, tail zeros, B odd -> round up -> 0XA.BCP+0
+   r16 = 10.732421875_16
+   write(s, '(EX0.2)') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 12
+ 
+   ! Round up: first dropped digit 9 > 8, no carry.
+   ! 10.736572265625 = 0XA.BC9000000000000000000000000P+0
+   ! d=2: first dropped 9 > 8 -> round up, C+1=D -> 0XA.BDP+0
+   r16 = 10.736572265625_16
+   write(s, '(EX0.2)') r16
+   if (s(1:9) /= '0XA.BDP+0') stop 13
+ 
+   ! Round up at d=26 on 1/3 = 0XA.AAAAAAAAAAAAAAAAAAAAAAAAAAA8P-5
+   ! d=26: first dropped A (=10) > 8, last kept A+1=B, no carry
+   ! result: 0XA.AAAAAAAAAAAAAAAAAAAAAAAAABP-5
+   r16 = 1.0_16 / 3.0_16
+   write(s, '(EX0.26)') r16
+   if (s(1:33) /= '0XA.AAAAAAAAAAAAAAAAAAAAAAAAABP-5') stop 14
+ 
+   ! Tie and normalization: huge(1.0_16) = 0XF.FFFFFFFFFFFFFFFFFFFFFFFFFFF8P+16380
+   ! d=27: first dropped 8, tail empty -> tie, last kept F (odd) -> round up
+   ! all 27 F's carry, F+1 -> 8, exp 16381
+   ! result: 0X8.000000000000000000000000000P+16381
+   r16 = huge(1.0_16)
+   write(s, '(EX0.27)') r16
+   if (s(1:38) /= '0X8.000000000000000000000000000P+16381') stop 15
+ 
+ end subroutine test16
+ #else
+ subroutine test16
+ end subroutine test16
+ #endif
+ 
+ end program main
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/EXrounding.F90 gcc-17-20260531/gcc/testsuite/gfortran.dg/EXrounding.F90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/EXrounding.F90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/EXrounding.F90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,200 ----
+ ! { dg-do run }
+ ! PR93727 Test EX format explicit rounding modes (ROUND_NEAREST, ROUND_UP,
+ ! ROUND_DOWN, ROUND_ZERO) for truncated hex mantissa, all supported kinds.
+ !
+ ! Key values used throughout (all exactly representable):
+ !   10.736328125   = 0XA.BC8000...P+0  tie at d=2, last kept C (12, even)
+ !   10.732421875   = 0XA.BB8000...P+0  tie at d=2, last kept B (11, odd)
+ !   10.736572265625 = 0XA.BC9000...P+0 dropped digit 9 > 8, no tie
+ program main
+   implicit none
+   call test04_rounding
+   call test08_rounding
+   call test10_rounding
+   call test16_rounding
+ 
+ contains
+ 
+ ! ---------------------------------------------------------------------------
+ subroutine test04_rounding
+   real(kind=4) :: r4
+   character(kind=1,len=40) :: s
+ 
+   ! Positive tie, last kept even (C=12): RN truncates, RU rounds up.
+   r4 = 10.736328125_4
+   write(s, '(EX0.2)', round='nearest') r4
+   if (s(1:9) /= '0XA.BCP+0') stop 1
+   write(s, '(EX0.2)', round='up') r4
+   if (s(1:9) /= '0XA.BDP+0') stop 2
+   write(s, '(EX0.2)', round='down') r4
+   if (s(1:9) /= '0XA.BCP+0') stop 3
+   write(s, '(EX0.2)', round='zero') r4
+   if (s(1:9) /= '0XA.BCP+0') stop 4
+ 
+   ! Positive tie, last kept odd (B=11): RN rounds up.
+   r4 = 10.732421875_4
+   write(s, '(EX0.2)', round='nearest') r4
+   if (s(1:9) /= '0XA.BCP+0') stop 5
+ 
+   ! Positive: dropped digit 9 > 8, no tie; all modes with dropped nonzero round up.
+   r4 = 10.736572265625_4
+   write(s, '(EX0.2)', round='nearest') r4
+   if (s(1:9) /= '0XA.BDP+0') stop 6
+   write(s, '(EX0.2)', round='up') r4
+   if (s(1:9) /= '0XA.BDP+0') stop 7
+   write(s, '(EX0.2)', round='zero') r4
+   if (s(1:9) /= '0XA.BCP+0') stop 8
+ 
+   ! Negative tie, last kept even (C=12): RD rounds up in magnitude.
+   r4 = -10.736328125_4
+   write(s, '(EX0.2)', round='nearest') r4
+   if (s(1:10) /= '-0XA.BCP+0') stop 9
+   write(s, '(EX0.2)', round='down') r4
+   if (s(1:10) /= '-0XA.BDP+0') stop 10
+   write(s, '(EX0.2)', round='up') r4
+   if (s(1:10) /= '-0XA.BCP+0') stop 11
+   write(s, '(EX0.2)', round='zero') r4
+   if (s(1:10) /= '-0XA.BCP+0') stop 12
+ 
+ end subroutine test04_rounding
+ 
+ ! ---------------------------------------------------------------------------
+ subroutine test08_rounding
+   real(kind=8) :: r8
+   character(kind=1,len=40) :: s
+ 
+   ! Positive tie, last kept even (C=12).
+   r8 = 10.736328125_8
+   write(s, '(EX0.2)', round='nearest') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 13
+   write(s, '(EX0.2)', round='up') r8
+   if (s(1:9) /= '0XA.BDP+0') stop 14
+   write(s, '(EX0.2)', round='down') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 15
+   write(s, '(EX0.2)', round='zero') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 16
+ 
+   ! Positive tie, last kept odd (B=11): RN rounds up.
+   r8 = 10.732421875_8
+   write(s, '(EX0.2)', round='nearest') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 17
+ 
+   ! Positive: dropped digit 9 > 8.
+   r8 = 10.736572265625_8
+   write(s, '(EX0.2)', round='nearest') r8
+   if (s(1:9) /= '0XA.BDP+0') stop 18
+   write(s, '(EX0.2)', round='up') r8
+   if (s(1:9) /= '0XA.BDP+0') stop 19
+   write(s, '(EX0.2)', round='zero') r8
+   if (s(1:9) /= '0XA.BCP+0') stop 20
+ 
+   ! Negative tie, last kept even (C=12).
+   r8 = -10.736328125_8
+   write(s, '(EX0.2)', round='nearest') r8
+   if (s(1:10) /= '-0XA.BCP+0') stop 21
+   write(s, '(EX0.2)', round='down') r8
+   if (s(1:10) /= '-0XA.BDP+0') stop 22
+   write(s, '(EX0.2)', round='up') r8
+   if (s(1:10) /= '-0XA.BCP+0') stop 23
+   write(s, '(EX0.2)', round='zero') r8
+   if (s(1:10) /= '-0XA.BCP+0') stop 24
+ 
+ end subroutine test08_rounding
+ 
+ ! ---------------------------------------------------------------------------
+ #ifdef __GFC_REAL_10__
+ subroutine test10_rounding
+   real(kind=10) :: r10
+   character(kind=1,len=40) :: s
+ 
+   ! Positive tie, last kept even (C=12).
+   r10 = 10.736328125_10
+   write(s, '(EX0.2)', round='nearest') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 25
+   write(s, '(EX0.2)', round='up') r10
+   if (s(1:9) /= '0XA.BDP+0') stop 26
+   write(s, '(EX0.2)', round='down') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 27
+   write(s, '(EX0.2)', round='zero') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 28
+ 
+   ! Positive tie, last kept odd (B=11): RN rounds up.
+   r10 = 10.732421875_10
+   write(s, '(EX0.2)', round='nearest') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 29
+ 
+   ! Positive: dropped digit 9 > 8.
+   r10 = 10.736572265625_10
+   write(s, '(EX0.2)', round='nearest') r10
+   if (s(1:9) /= '0XA.BDP+0') stop 30
+   write(s, '(EX0.2)', round='up') r10
+   if (s(1:9) /= '0XA.BDP+0') stop 31
+   write(s, '(EX0.2)', round='zero') r10
+   if (s(1:9) /= '0XA.BCP+0') stop 32
+ 
+   ! Negative tie, last kept even (C=12).
+   r10 = -10.736328125_10
+   write(s, '(EX0.2)', round='nearest') r10
+   if (s(1:10) /= '-0XA.BCP+0') stop 33
+   write(s, '(EX0.2)', round='down') r10
+   if (s(1:10) /= '-0XA.BDP+0') stop 34
+   write(s, '(EX0.2)', round='up') r10
+   if (s(1:10) /= '-0XA.BCP+0') stop 35
+   write(s, '(EX0.2)', round='zero') r10
+   if (s(1:10) /= '-0XA.BCP+0') stop 36
+ 
+ end subroutine test10_rounding
+ #else
+ subroutine test10_rounding
+ end subroutine test10_rounding
+ #endif
+ 
+ ! ---------------------------------------------------------------------------
+ #ifdef __GFC_REAL_16__
+ subroutine test16_rounding
+   real(kind=16) :: r16
+   character(kind=1,len=40) :: s
+ 
+   ! Positive tie, last kept even (C=12).
+   r16 = 10.736328125_16
+   write(s, '(EX0.2)', round='nearest') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 37
+   write(s, '(EX0.2)', round='up') r16
+   if (s(1:9) /= '0XA.BDP+0') stop 38
+   write(s, '(EX0.2)', round='down') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 39
+   write(s, '(EX0.2)', round='zero') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 40
+ 
+   ! Positive tie, last kept odd (B=11): RN rounds up.
+   r16 = 10.732421875_16
+   write(s, '(EX0.2)', round='nearest') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 41
+ 
+   ! Positive: dropped digit 9 > 8.
+   r16 = 10.736572265625_16
+   write(s, '(EX0.2)', round='nearest') r16
+   if (s(1:9) /= '0XA.BDP+0') stop 42
+   write(s, '(EX0.2)', round='up') r16
+   if (s(1:9) /= '0XA.BDP+0') stop 43
+   write(s, '(EX0.2)', round='zero') r16
+   if (s(1:9) /= '0XA.BCP+0') stop 44
+ 
+   ! Negative tie, last kept even (C=12).
+   r16 = -10.736328125_16
+   write(s, '(EX0.2)', round='nearest') r16
+   if (s(1:10) /= '-0XA.BCP+0') stop 45
+   write(s, '(EX0.2)', round='down') r16
+   if (s(1:10) /= '-0XA.BDP+0') stop 46
+   write(s, '(EX0.2)', round='up') r16
+   if (s(1:10) /= '-0XA.BCP+0') stop 47
+   write(s, '(EX0.2)', round='zero') r16
+   if (s(1:10) /= '-0XA.BCP+0') stop 48
+ 
+ end subroutine test16_rounding
+ #else
+ subroutine test16_rounding
+ end subroutine test16_rounding
+ #endif
+ 
+ end program main
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/argument_checking_28.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/argument_checking_28.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/argument_checking_28.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/argument_checking_28.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,45 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-std=f2018 -Wcharacter-truncation" }
+ !
+ ! PR fortran/125393 - checking of passed character length
+ 
+ module test
+   implicit none
+ contains
+ 
+   subroutine a(string)
+     character(len=2) string
+   end subroutine a
+ 
+   subroutine b
+     character(len=2)               :: s1
+     character(len=2), dimension(2) :: s2
+     character(len=1)               :: s3(2)
+     character(len=4)               :: s4
+     call a(s1)
+     call a(s1(1:2))
+     call a(s2(1)) ! This gave a bogus warning
+     call a(s2(1)(1:2))
+     call a(s3(1)) ! { dg-error "Character length of actual argument shorter" }
+     call a(s4(1:2))
+     call a(c1())  ! { dg-error "Character length of actual argument shorter" }
+     call a(c2())
+     call a(c3())  ! { dg-warning "Character length of actual argument longer" }
+   end subroutine b
+ 
+   function c1 ()
+     character(len=1) :: c1
+     c1 = "a"
+   end function c1
+ 
+   function c2 ()
+     character(len=2) :: c2
+     c2 = "ab"
+   end function c2
+ 
+   function c3 ()
+     character(len=3) :: c3
+     c3 = "abc"
+   end function c3
+ 
+ end module test
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/block_proc_ptr_1.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,43 ----
+ ! { dg-do run }
+ ! PR fortran/105582
+ ! Procedure pointer declared inside a BLOCK construct in a program that has
+ ! contained procedures used to cause an ICE in convert_nonlocal_reference_op
+ ! (tree-nested.cc) because get_proc_pointer_decl erroneously called
+ ! gfc_add_decl_to_parent_function instead of gfc_add_decl_to_function,
+ ! leaving the decl with DECL_CONTEXT set to NULL instead of the enclosing
+ ! program's function_decl.
+ 
+ module iface_m
+   implicit none
+   abstract interface
+     pure function init_i(x) result(y)
+       double precision, intent(in) :: x(:)
+       double precision, allocatable :: y(:)
+     end function
+   end interface
+ end module
+ 
+ program test_block_proc_ptr
+   use iface_m, only : init_i
+   implicit none
+   integer :: n = 0
+ 
+   block
+     procedure(init_i), pointer :: p
+     double precision, allocatable :: vals(:)
+     p => linear
+     vals = p([1d0, 2d0, 3d0])
+     if (any(abs(vals - [1d0, 2d0, 3d0]) > 1d-10)) n = n + 1
+   end block
+ 
+   if (n /= 0) stop 1
+ 
+ contains
+ 
+   pure function linear(x) result(y)
+     double precision, intent(in) :: x(:)
+     double precision, allocatable :: y(:)
+     y = x
+   end function
+ 
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-1.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-1.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-1.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do run }
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+   type(c_ptr) :: p
+   character (len=:, kind=c_char), pointer :: fp1, fp2
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   p = C_LOC (a(1))
+ 
+   ! check length is correct
+   call c_f_strpointer (p, fp1, 15)
+   if (len (fp1) .ne. 12) stop 100
+   call c_f_strpointer (a, fp2)
+   if (len (fp2) .ne. 12) stop 101
+ 
+   ! check that fp1 and fp2 both point to the contents of array a.
+   if (fp1(1:1) .ne. 'h') stop 200
+   if (fp2(1:1) .ne. 'h') stop 201
+   a(1) = 'H'
+   if (fp1(1:1) .ne. 'H') stop 202
+   if (fp2(1:1) .ne. 'H') stop 203
+      
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-10.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-10.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-10.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-10.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ ! Check handling of optional dummy nchars argument to c_f_strpointer
+ ! when its corresponding actual argument is an optional dummy that is
+ ! not present, and the C string argument has no size information (C 
+ ! pointer or assumed-size array).
+ ! The Fortran spec says this is not allowed, but it's a runtime error
+ ! and the gfortran implementation assumes size 0 in this case rather than
+ ! diagnosing it.
+ 
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   call doit (a, 12, 15)
+   call doit (a, 0)
+ contains
+ 
+ subroutine doit (aa, n, m)
+   character (kind=c_char, len=1), dimension(*), target, intent(inout) :: aa
+   integer, intent(in) :: n
+   integer, intent(in), optional :: m
+   character (len=:, kind=c_char), pointer :: fp
+   type(c_ptr) :: p
+ 
+   p = C_LOC (aa(1))
+   call c_f_strpointer (p, fp, m)
+   if (len(fp) .ne. n) stop 100
+   call c_f_strpointer (aa, fp, m)
+   if (len(fp) .ne. n) stop 200
+ end subroutine
+ 
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-2.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-2.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-2.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do run }
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   call doit (a, 12, 15)
+   call doit (a(7:), 6, 9)
+ 
+ contains
+ 
+ subroutine doit (aa, n, m)
+   character (kind=c_char, len=1), dimension(*), target, intent(inout) :: aa
+   integer, intent(in) :: n, m
+   character (len=:, kind=c_char), pointer :: fp
+ 
+   ! check length is correct
+   call c_f_strpointer (aa, fp, m)
+   if (len (fp) .ne. n) stop 100
+ 
+   ! check that fp points to the contents of array aa.
+   if (fp(1:1) .ne. aa(1)) stop 101
+   aa(1) = '?'
+   if (fp(1:1) .ne. '?') stop 102
+ end subroutine
+      
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-3.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-3.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-3.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,37 ----
+ ! { dg-do compile }
+ ! Test that missing size argument is rejected.
+ 
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   call doit (a, 12)
+ 
+ contains
+ 
+ subroutine doit (aa, n)
+   character (kind=c_char, len=1), dimension(*), target, intent(inout) :: aa
+   integer, intent(in) :: n
+   character (len=:, kind=c_char), pointer :: fp
+   type(c_ptr) :: p
+ 
+   p = C_LOC (aa(1))
+   call c_f_strpointer (p, fp)  ! { dg-error ".nchars. argument of .c_f_strpointer. intrinsic shall be present when the .cstrptr. argument at .1. is a C_PTR" }
+   call c_f_strpointer (aa, fp) ! { dg-error ".nchars. argument of .c_f_strpointer. intrinsic shall be present when the .cstrarray. argument at .1. is assumed-size" }
+ 
+   ! These are all OK, they are known-size array sections of the assumed-size
+   ! array aa.
+   call c_f_strpointer (aa(:10), fp)
+   call c_f_strpointer (aa(:huge(1)), fp)
+   call c_f_strpointer (aa(5:10), fp)
+ 
+ end subroutine
+ 
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-4.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-4.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-4.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! Test that non-contiguous array section argument is rejected.
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+   character (len=:, kind=c_char), pointer :: fp
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+ 
+   call c_f_strpointer (a(1:13), fp)
+   call c_f_strpointer (a(1:13:2), fp)  ! { dg-error ".cstrarray. argument of .c_f_strpointer. intrinsic at .1. shall be simply contiguous" }
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-5.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-5.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-5.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-5.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! Test that multi-dimensional array arguments are rejected.
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), target :: a(15), b(3,5)
+   character (len=:, kind=c_char), pointer :: fp
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   b = reshape (a, shape (b))
+ 
+   call c_f_strpointer (a, fp)
+   call c_f_strpointer (b, fp)  ! { dg-error ".cstrarray. argument of .c_f_strpointer. intrinsic at .1. shall be a rank-one character array of kind C_CHAR and character length one" }
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-6.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-6.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-6.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-6.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do compile }
+ ! Test that lack of target attribute and wrong-length character array are
+ ! rejected.
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15) :: a
+   character (kind=c_char, len=4), dimension(15), target :: b
+   character (len=:, kind=c_char), pointer :: fp
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   b = a
+   call c_f_strpointer (a, fp)  ! { dg-error ".cstrarray. argument of .c_f_strpointer. intrinsic at .1. shall have the TARGET attribute" }
+   call c_f_strpointer (b, fp)  ! { dg-error ".cstrarray. argument of .c_f_strpointer. intrinsic at .1. shall be a rank-one character array of kind C_CHAR and character length one" }
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-7.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-7.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-7.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-7.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,50 ----
+ ! { dg-do run }
+ ! Test that c_f_strpointer works with strings/arrays of known length but
+ ! no null terminator character.
+ 
+ module mod
+ use iso_c_binding
+ implicit none(type, external)
+ type t
+   type(c_ptr) :: cptr
+   character(1, c_char) :: carr(10)
+ end type t
+ contains
+ subroutine sub(x, y)
+   type(t), target :: x
+   character, pointer, contiguous, intent(in) :: y(:)
+   character(:), pointer :: fstr
+ 
+   call c_f_strpointer (x%cptr, fstr, 10)
+   print *, len(fstr), fstr
+   if (len(fstr) /= 10 .or. fstr /= "1234567890") stop 1
+ 
+   call c_f_strpointer (x%carr, fstr)
+   print *, len(fstr), fstr
+   if (len(fstr) /= 10 .or. fstr /= "abcdefghij") stop 2
+ 
+   call c_f_strpointer (y, fstr)
+   if (len(fstr) /= 10 .or. fstr /= "abcdefghij") stop 3
+ 
+   call c_f_strpointer (y(5:), fstr)
+   if (len(fstr) /= 6 .or. fstr /= "efghij") stop 4
+ 
+   call c_f_strpointer (x%carr(2:4), fstr)
+   if (len(fstr) /= 3 .or. fstr /= "bcd") stop 5
+ end
+ end module
+ 
+ use mod
+ implicit none
+ character(10,c_char), target :: str10
+ character(1,c_char), target :: arr10(10)
+ 
+ type(t) :: arg
+ 
+ str10 = '1234567890'
+ arr10 = ['a','b','c','d','e','f','g','h','i', 'j']
+ 
+ arg%cptr = c_loc(str10)
+ arg%carr = arr10
+ call sub(arg, arr10)
+ end
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-8.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-8.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-8.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-8.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! Test that c_f_strpointer rejects assumed-rank array argument.
+ 
+ subroutine sub(y)
+   use iso_c_binding
+   implicit none (type, external)
+   character, pointer, contiguous, intent(in) :: y(..)
+   character(:), pointer :: fstr
+ 
+   call c_f_strpointer (y, fstr, 10) ! { dg-error "Assumed-rank argument at .1. is only permitted as actual argument to intrinsic inquiry functions or to RESHAPE." }
+ end
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-9.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-9.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/c_f_strpointer-9.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/c_f_strpointer-9.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do compile }
+ ! Test that problems with the fstrptr argument are diagnosed.
+ 
+ program test
+ 
+   use iso_c_binding
+   implicit none
+ 
+   character (kind=c_char, len=1), dimension(15), target :: a
+   character (len=:, kind=c_char), pointer :: fp
+ 
+   a = [ character :: 'h', 'e', 'l', 'l', 'o', ' ', &
+                      'w', 'o', 'r', 'l', 'd', '!', &
+                      ' ', ' ', ' ']
+   a(13) = C_NULL_CHAR
+   call doit (a, 12, fp)
+ 
+ contains
+ 
+ subroutine doit (aa, n, fp1)
+   character (kind=c_char, len=1), dimension(*), target, intent(inout) :: aa
+   integer, intent(in) :: n
+   character (len=:, kind=c_char), pointer, intent(in) :: fp1
+   character (len=42, kind=c_char), pointer :: fp2
+   character (len=:, kind=c_char), allocatable :: fp3
+   type(c_ptr) :: p
+ 
+   p = C_LOC (aa(1))
+   call c_f_strpointer (p, fp1, n) ! { dg-error ".fstrptr. argument of .c_f_strpointer. intrinsic at .1. cannot be INTENT.IN." }
+   call c_f_strpointer (p, fp2, n) ! { dg-error ".fstrptr. argument of .c_f_strpointer. intrinsic at .1. shall be a scalar deferred-length character pointer of kind C_CHAR" }
+   call c_f_strpointer (p, fp3, n) ! { dg-error ".fstrptr. argument of .c_f_strpointer. intrinsic at .1. shall be a scalar deferred-length character pointer of kind C_CHAR" }
+ end subroutine
+ 
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string3.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string3.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string3.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,53 ----
+ ! Test f_c_string cases that can be fully constant-folded
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
+ use iso_c_binding, only: f_c_string, c_char
+ implicit none (external, type)
+ character(*, c_char), parameter :: str1 = "blah1"
+ character(*, c_char), parameter :: str2 = "blah2"
+ character(*, c_char), parameter :: str3 = "blah3"
+ character(*, c_char), parameter :: str4 = "blah4   "
+ character(*, c_char), parameter :: str5 = "blah5   "
+ character(*, c_char), parameter :: str6 = "blah6   "
+ external foo
+ 
+ call foo(f_c_string("hello world1", asis=.true.))
+ ! { dg-final { scan-tree-dump-times "hello world1.\[^\\n\\r\]*, 13" 1 "original" } }
+ 
+ call foo(f_c_string("hello world2", asis=.false.))
+ ! { dg-final { scan-tree-dump-times "hello world2.\[^\\n\\r\]*, 13" 1 "original" } }
+ 
+ call foo(f_c_string("hello world3"))
+ ! { dg-final { scan-tree-dump-times "hello world3.\[^\\n\\r\]*, 13" 1 "original" } }
+ 
+ call foo(f_c_string("hello1 ", asis=.true.))
+ ! { dg-final { scan-tree-dump-times "hello1 .\[^\\n\\r\]*, 8" 1 "original" } }
+ 
+ call foo(f_c_string("hello2 ", asis=.false.))
+ ! { dg-final { scan-tree-dump-times "hello2.\[^\\n\\r\]*, 7" 1 "original" } }
+ 
+ call foo(f_c_string("hello3 "))
+ ! { dg-final { scan-tree-dump-times "hello3.\[^\\n\\r\]*, 7" 1 "original" } }
+ 
+ call foo(f_c_string(str1, asis=.true.))
+ ! { dg-final { scan-tree-dump-times "blah1.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ call foo(f_c_string(str2, asis=.false.))
+ ! { dg-final { scan-tree-dump-times "blah2.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ call foo(f_c_string(str3))
+ ! { dg-final { scan-tree-dump-times "blah3.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ call foo(f_c_string(str4, asis=.true.))
+ ! { dg-final { scan-tree-dump-times "blah4   .\[^\\n\\r\]*, 9" 1 "original" } }
+ 
+ call foo(f_c_string(str5, asis=.false.))
+ ! { dg-final { scan-tree-dump-times "blah5.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ call foo(f_c_string(str6))
+ ! { dg-final { scan-tree-dump-times "blah6.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ end
+ 
+ 
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string4.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string4.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string4.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,26 ----
+ ! Test f_c_string cases with constant strings but that need a conditional.
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
+ subroutine doit (x)
+ 
+ use iso_c_binding, only: f_c_string, c_char
+ implicit none (external, type)
+ logical :: x
+ character(*, c_char), parameter :: str1 = "blah1"
+ character(*, c_char), parameter :: str2 = "blah2   "
+ external foo
+ 
+ call foo(f_c_string("hello world1", asis=x))
+ ! { dg-final { scan-tree-dump-times "hello world1.\[^\\n\\r\]*, 13" 1 "original" } }
+ 
+ call foo(f_c_string("hello1 ", asis=x))
+ ! { dg-final { scan-tree-dump-times "hello1 .\[^\\n\\r\]* 8 : 7" 1 "original" } }
+ 
+ call foo(f_c_string(str1, asis=x))
+ ! { dg-final { scan-tree-dump-times "blah1.\[^\\n\\r\]*, 6" 1 "original" } }
+ 
+ call foo(f_c_string(str2, asis=x))
+ ! { dg-final { scan-tree-dump-times "blah2   .\[^\\n\\r\]* 9 : 6" 1 "original" } }
+ 
+ end subroutine
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string5.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string5.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/f_c_string5.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/f_c_string5.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do run }
+ ! This is the example from the manual.
+ 
+ program main
+   use iso_c_binding, only: f_c_string, c_char
+   implicit none (external, type)
+   character(:, c_char), allocatable :: s1, s2, s3
+ 
+   ! s1 is null-terminated "hello, world!   "
+   s1 = f_c_string ("hello, world!   ", .true.)
+   if (len(s1) .ne. 17) stop 100
+ 
+   ! s2 is null-terminated "hello, world!"
+   s2 = f_c_string ("hello, world!   ", .false.)
+   if (len(s2) .ne. 14) stop 200
+ 
+   ! s3 is null-terminated "hello, world!" (same as s2 example)
+   s3 = f_c_string ("hello, world!   ")
+   if (len(s3) .ne. 14) stop 200
+ end program main
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-static-3.f90	Sun May 31 22:32:12 2026
***************
*** 5,11 ****
  ! OpenMP 6.0 clarified that the omp_{cgroup,pteam,thread}_mem_alloc
  ! (i.e. those with access trait != device) may only be used for
  ! static local variables.
! ! Check for this!
  
  module omp_lib_kinds
    use iso_c_binding, only: c_int, c_intptr_t
--- 5,14 ----
  ! OpenMP 6.0 clarified that the omp_{cgroup,pteam,thread}_mem_alloc
  ! (i.e. those with access trait != device) may only be used for
  ! static local variables.
! !
! ! Since OpenMP 6.1, omp_{cgroup,pteam,thread}_mem_alloc may not
! ! be used for static variables, local static or not.
! ! Cf. OpenMP Spec issue #4665
  
  module omp_lib_kinds
    use iso_c_binding, only: c_int, c_intptr_t
*************** block data
*** 60,68 ****
    !$omp allocate(/b_i3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_i4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_i5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_i6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i6/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_i7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i7/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_i8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i8/' at .2., may only be used for local static variables" }
  end block data
  
  block data my_block_data
--- 63,71 ----
    !$omp allocate(/b_i3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_i4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_i5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_i6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i6/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_i7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i7/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_i8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_i8/' at .2., may not be used for static variables" }
  end block data
  
  block data my_block_data
*************** block data my_block_data
*** 92,100 ****
    !$omp allocate(/b_j3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_j4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_j5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_j6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j6/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_j7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j7/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_j8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j8/' at .2., may only be used for local static variables" }
  end block data my_block_data
  
  module m
--- 95,103 ----
    !$omp allocate(/b_j3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_j4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_j5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_j6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j6/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_j7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j7/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_j8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_j8/' at .2., may not be used for static variables" }
  end block data my_block_data
  
  module m
*************** module m
*** 117,134 ****
    !$omp allocate(a3) allocator(omp_const_mem_alloc)
    !$omp allocate(a4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(a5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(a6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a6' at .2., may only be used for local static variables" }
!   !$omp allocate(a7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a7' at .2., may only be used for local static variables" }
!   !$omp allocate(a8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a8' at .2., may only be used for local static variables" }
  
    !$omp allocate(/b_b1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_b2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_b3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_b4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_b5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_b6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b6/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_b7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b7/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_b8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b8/' at .2., may only be used for local static variables" }
  end
  
  program main
--- 120,137 ----
    !$omp allocate(a3) allocator(omp_const_mem_alloc)
    !$omp allocate(a4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(a5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(a6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a6' at .2., may not be used for static variables" }
!   !$omp allocate(a7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a7' at .2., may not be used for static variables" }
!   !$omp allocate(a8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'a8' at .2., may not be used for static variables" }
  
    !$omp allocate(/b_b1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_b2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_b3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_b4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_b5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_b6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b6/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_b7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b7/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_b8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_b8/' at .2., may not be used for static variables" }
  end
  
  program main
*************** program main
*** 151,168 ****
    !$omp allocate(m3) allocator(omp_const_mem_alloc)
    !$omp allocate(m4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(m5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(m6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm6' at .2., may only be used for local static variables" }
!   !$omp allocate(m7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm7' at .2., may only be used for local static variables" }
!   !$omp allocate(m8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm8' at .2., may only be used for local static variables" }
  
    !$omp allocate(/b_n1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_n2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_n3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_n4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_n5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_n6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n6/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_n7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n7/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_n8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n8/' at .2., may only be used for local static variables" }
  
    block
      integer, save :: o1,o2,o3,o4,o5,o6,o7,o8
--- 154,171 ----
    !$omp allocate(m3) allocator(omp_const_mem_alloc)
    !$omp allocate(m4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(m5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(m6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm6' at .2., may not be used for static variables" }
!   !$omp allocate(m7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm7' at .2., may not be used for static variables" }
!   !$omp allocate(m8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'm8' at .2., may not be used for static variables" }
  
    !$omp allocate(/b_n1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_n2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_n3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_n4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_n5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_n6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n6/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_n7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n7/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_n8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_n8/' at .2., may not be used for static variables" }
  
    block
      integer, save :: o1,o2,o3,o4,o5,o6,o7,o8
*************** program main
*** 173,181 ****
      !$omp allocate(o3) allocator(omp_const_mem_alloc)
      !$omp allocate(o4) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(o5) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(o6) allocator(omp_cgroup_mem_alloc)
!     !$omp allocate(o7) allocator(omp_pteam_mem_alloc)
!     !$omp allocate(o8) allocator(omp_thread_mem_alloc)
    end block
  end
  
--- 176,184 ----
      !$omp allocate(o3) allocator(omp_const_mem_alloc)
      !$omp allocate(o4) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(o5) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(o6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'o6' at .2., may not be used for static variables" }
!     !$omp allocate(o7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'o7' at .2., may not be used for static variables" }
!     !$omp allocate(o8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'o8' at .2., may not be used for static variables" }
    end block
  end
  
*************** subroutine sub
*** 199,216 ****
    !$omp allocate(s3) allocator(omp_const_mem_alloc)
    !$omp allocate(s4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(s5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(s6) allocator(omp_cgroup_mem_alloc)
!   !$omp allocate(s7) allocator(omp_pteam_mem_alloc)
!   !$omp allocate(s8) allocator(omp_thread_mem_alloc)
  
    !$omp allocate(/b_t1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_t2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_t3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_t4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_t5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_t6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t6/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_t7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t7/' at .2., may only be used for local static variables" }
!   !$omp allocate(/b_t8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t8/' at .2., may only be used for local static variables" }
  contains
    integer function func()
      integer, save :: q1,q2,q3,q4,q5,q6,q7,q8
--- 202,219 ----
    !$omp allocate(s3) allocator(omp_const_mem_alloc)
    !$omp allocate(s4) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(s5) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(s6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 's6' at .2., may not be used for static variables" }
!   !$omp allocate(s7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 's7' at .2., may not be used for static variables" }
!   !$omp allocate(s8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 's8' at .2., may not be used for static variables" }
  
    !$omp allocate(/b_t1/) allocator(omp_default_mem_alloc)
    !$omp allocate(/b_t2/) allocator(omp_large_cap_mem_alloc)
    !$omp allocate(/b_t3/) allocator(omp_const_mem_alloc)
    !$omp allocate(/b_t4/) allocator(omp_high_bw_mem_alloc)
    !$omp allocate(/b_t5/) allocator(omp_low_lat_mem_alloc)
!   !$omp allocate(/b_t6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t6/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_t7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t7/' at .2., may not be used for static variables" }
!   !$omp allocate(/b_t8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_t8/' at .2., may not be used for static variables" }
  contains
    integer function func()
      integer, save :: q1,q2,q3,q4,q5,q6,q7,q8
*************** contains
*** 229,245 ****
      !$omp allocate(q3) allocator(omp_const_mem_alloc)
      !$omp allocate(q4) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(q5) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(q6) allocator(omp_cgroup_mem_alloc)
!     !$omp allocate(q7) allocator(omp_pteam_mem_alloc)
!     !$omp allocate(q8) allocator(omp_thread_mem_alloc)
  
      !$omp allocate(/b_r1/) allocator(omp_default_mem_alloc)
      !$omp allocate(/b_r2/) allocator(omp_large_cap_mem_alloc)
      !$omp allocate(/b_r3/) allocator(omp_const_mem_alloc)
      !$omp allocate(/b_r4/) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(/b_r5/) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(/b_r6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r6/' at .2., may only be used for local static variables" }
!     !$omp allocate(/b_r7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r7/' at .2., may only be used for local static variables" }
!     !$omp allocate(/b_r8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r8/' at .2., may only be used for local static variables" }
    end function
  end subroutine
--- 232,248 ----
      !$omp allocate(q3) allocator(omp_const_mem_alloc)
      !$omp allocate(q4) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(q5) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(q6) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item 'q6' at .2., may not be used for static variables" }
!     !$omp allocate(q7) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item 'q7' at .2., may not be used for static variables" }
!     !$omp allocate(q8) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item 'q8' at .2., may not be used for static variables" }
  
      !$omp allocate(/b_r1/) allocator(omp_default_mem_alloc)
      !$omp allocate(/b_r2/) allocator(omp_large_cap_mem_alloc)
      !$omp allocate(/b_r3/) allocator(omp_const_mem_alloc)
      !$omp allocate(/b_r4/) allocator(omp_high_bw_mem_alloc)
      !$omp allocate(/b_r5/) allocator(omp_low_lat_mem_alloc)
!     !$omp allocate(/b_r6/) allocator(omp_cgroup_mem_alloc)  ! { dg-error "Predefined allocator 'omp_cgroup_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r6/' at .2., may not be used for static variables" }
!     !$omp allocate(/b_r7/) allocator(omp_pteam_mem_alloc)   ! { dg-error "Predefined allocator 'omp_pteam_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r7/' at .2., may not be used for static variables" }
!     !$omp allocate(/b_r8/) allocator(omp_thread_mem_alloc)  ! { dg-error "Predefined allocator 'omp_thread_mem_alloc' in ALLOCATOR clause at .1., used for list item '/b_r8/' at .2., may not be used for static variables" }
    end function
  end subroutine
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/module_private_2.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/module_private_2.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/module_private_2.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/module_private_2.f90	Sun May 31 22:32:12 2026
*************** contains
*** 29,34 ****
      b => export1
    end subroutine pub
  end module m
! ! { dg-final { scan-tree-dump-times "priv" 0 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export1 \\(\\)" 1 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export2 \\(\\)" 1 "optimized" } }
--- 29,35 ----
      b => export1
    end subroutine pub
  end module m
! ! priv now has TREE_PUBLIC (VISIBILITY_HIDDEN) for submodule host-association,
! ! so it is no longer optimized away.
  ! { dg-final { scan-tree-dump-times "export1 \\(\\)" 1 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export2 \\(\\)" 1 "optimized" } }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/pr108961.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/pr108961.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/pr108961.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/pr108961.f90	Sun May 31 22:32:12 2026
***************
*** 5,11 ****
  module associate_ptr
      use iso_c_binding
  contains
!     subroutine c_f_strpointer(cptr, ptr2)
          type(c_ptr), target, intent(in) :: cptr
          character(kind=c_char,len=4), pointer :: ptr1
          character(kind=c_char,len=:), pointer, intent(out) :: ptr2
--- 5,11 ----
  module associate_ptr
      use iso_c_binding
  contains
!     subroutine my_c_f_strpointer(cptr, ptr2)
          type(c_ptr), target, intent(in) :: cptr
          character(kind=c_char,len=4), pointer :: ptr1
          character(kind=c_char,len=:), pointer, intent(out) :: ptr2
*************** program test_associate_ptr
*** 21,26 ****
      character(kind=c_char,len=:), pointer :: ptr2
      char_array = ['a', 'b', 'c', 'd', c_null_char, 'e', 'f']
  ! The first argument was providing a constant hidden string length => segfault
!     call c_f_strpointer(c_loc(char_array), ptr2)
      if (ptr2 .ne. 'abcd') stop 2
  end program
--- 21,26 ----
      character(kind=c_char,len=:), pointer :: ptr2
      char_array = ['a', 'b', 'c', 'd', c_null_char, 'e', 'f']
  ! The first argument was providing a constant hidden string length => segfault
!     call my_c_f_strpointer(c_loc(char_array), ptr2)
      if (ptr2 .ne. 'abcd') stop 2
  end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_2.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_2.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_2.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_2.f90	Sun May 31 22:32:12 2026
*************** module mod
*** 19,26 ****
    integer, bind(C,name='') :: qq
  end module mod
  
! ! The two xfails below have appeared with the introduction of submodules. 'iii' and
  ! 'mmm' now are TREE_PUBLIC but has DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN set.
  
        ! { dg-final { scan-assembler "__mod_MOD_aa" } }
        ! { dg-final { scan-assembler-not "iii" { xfail *-*-* } } }
--- 19,28 ----
    integer, bind(C,name='') :: qq
  end module mod
  
! ! The xfails below have appeared with the introduction of submodules. 'iii' and
  ! 'mmm' now are TREE_PUBLIC but has DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN set.
+ ! Similarly 'two' and 'six' (PRIVATE procedures) now have TREE_PUBLIC +
+ ! VISIBILITY_HIDDEN so that submodules can reach them via host association.
  
        ! { dg-final { scan-assembler "__mod_MOD_aa" } }
        ! { dg-final { scan-assembler-not "iii" { xfail *-*-* } } }
*************** CONTAINS
*** 64,74 ****
  END MODULE
  
  ! { dg-final { scan-assembler "__m_MOD_one" } }
! ! { dg-final { scan-assembler-not "two" } }
  ! { dg-final { scan-assembler "three" } }
  ! { dg-final { scan-assembler-not "four" } }
  ! { dg-final { scan-assembler "five" } }
! ! { dg-final { scan-assembler-not "six" } }
  ! { dg-final { scan-assembler "seven" } }
  ! { dg-final { scan-assembler "nine" } }
  ! { dg-final { scan-assembler "__m_MOD_ten" } }
--- 66,76 ----
  END MODULE
  
  ! { dg-final { scan-assembler "__m_MOD_one" } }
! ! { dg-final { scan-assembler-not "two" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "three" } }
  ! { dg-final { scan-assembler-not "four" } }
  ! { dg-final { scan-assembler "five" } }
! ! { dg-final { scan-assembler-not "six" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "seven" } }
  ! { dg-final { scan-assembler "nine" } }
  ! { dg-final { scan-assembler "__m_MOD_ten" } }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_7.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_7.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_7.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_7.f90	Sun May 31 22:32:12 2026
*************** contains
*** 25,29 ****
    end function get_key
  end module m_common_attrs
  
! ! { dg-final { scan-assembler-not "__m_common_attrs_MOD_other" } }
  ! { dg-final { scan-assembler "__m_common_attrs_MOD_get_key_len" } }
--- 25,29 ----
    end function get_key
  end module m_common_attrs
  
! ! { dg-final { scan-assembler-not "__m_common_attrs_MOD_other" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "__m_common_attrs_MOD_get_key_len" } }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_8.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_8.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/public_private_module_8.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/public_private_module_8.f90	Sun May 31 22:32:12 2026
*************** contains
*** 44,49 ****
    end subroutine bar
  end module m
  
! ! { dg-final { scan-assembler-not "__m_MOD_myotherlen" } }
  ! { dg-final { scan-assembler "__m_MOD_bar" } }
  ! { dg-final { scan-assembler "__m_MOD_mylen" } }
--- 44,49 ----
    end subroutine bar
  end module m
  
! ! { dg-final { scan-assembler-not "__m_MOD_myotherlen" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "__m_MOD_bar" } }
  ! { dg-final { scan-assembler "__m_MOD_mylen" } }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/submodule_private_host.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_private_host.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/submodule_private_host.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_private_host.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do run }
+ ! { dg-additional-sources submodule_private_host_aux.f90 }
+ !
+ ! PR fortran/125430
+ !
+ ! Module-contained procedures with PRIVATE access must retain global ELF
+ ! linkage so that submodules compiled as separate translation units can
+ ! reach them via host association.
+ 
+ module m
+   implicit none
+   private
+   public :: pub
+ 
+   interface
+     module subroutine pub(x)
+       double precision, intent(out) :: x
+     end subroutine
+   end interface
+ 
+ contains
+ 
+   pure function priv(n) result(x)
+     integer, intent(in) :: n
+     double precision :: x
+     x = dble(n) * 0.5d0
+   end function
+ 
+ end module
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90	Sun May 31 22:32:12 2026
***************
*** 0 ****
--- 1,17 ----
+ ! Auxiliary file for submodule_private_host.f90
+ ! { dg-skip-if "" { *-*-* } }
+ submodule(m) ms
+   implicit none
+ contains
+   module procedure pub
+     x = priv(6)
+   end procedure
+ end submodule
+ 
+ program p
+   use m, only : pub
+   implicit none
+   double precision x
+   call pub(x)
+   if (abs(x - 3.0d0) > 1d-10) stop 1
+ end program
diff -Nrcpad gcc-17-20260524/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90 gcc-17-20260531/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
*** gcc-17-20260524/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90	Sun May 31 22:32:12 2026
*************** module m
*** 13,19 ****
  
  contains
  
!   subroutine s1            ! { dg-warning "defined but not used" }
      call s2(s3)
      contains
        subroutine s4        ! { dg-warning "defined but not used" }
--- 13,19 ----
  
  contains
  
!   subroutine s1
      call s2(s3)
      contains
        subroutine s4        ! { dg-warning "defined but not used" }
diff -Nrcpad gcc-17-20260524/gcc/testsuite/lib/target-supports.exp gcc-17-20260531/gcc/testsuite/lib/target-supports.exp
*** gcc-17-20260524/gcc/testsuite/lib/target-supports.exp	Sun May 24 22:32:12 2026
--- gcc-17-20260531/gcc/testsuite/lib/target-supports.exp	Sun May 31 22:32:13 2026
*************** proc check_effective_target_aarch64_sve2
*** 6710,6715 ****
--- 6710,6732 ----
      }]
  }
  
+ # Return true if this is an AArch64 target that can run SVE2.2 code.
+ 
+ proc check_effective_target_aarch64_sve2p2_hw { } {
+     if { ![istarget aarch64*-*-*] } {
+ 	return 0
+     }
+     return [check_runtime aarch64_sve2p2_hw_available {
+ 	#pragma GCC target "+sve2p2"
+ 	int
+ 	main (void)
+ 	{
+ 	  asm volatile ("compact z0.b, p0, z1.b");
+ 	  return 0;
+ 	}
+     }]
+ }
+ 
  # Return true if this is an AArch64 target that can run SVE code and
  # if its SVE vectors have exactly BITS bits.
  
*************** set exts {
*** 12772,12778 ****
      "sb" "simd" "sve-b16b16" "sve" "sve2" "sve-sm4" "sve-aes" "sve-bitperm"
      "sve-sha3" "f8f16mm" "f8f32mm" "sve-f16f32mm"
      "sme-f8f16" "sme-f8f32"
!     "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
  }
  
--- 12789,12795 ----
      "sb" "simd" "sve-b16b16" "sve" "sve2" "sve-sm4" "sve-aes" "sve-bitperm"
      "sve-sha3" "f8f16mm" "f8f32mm" "sve-f16f32mm"
      "sme-f8f16" "sme-f8f32"
!     "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1" "sme2p2"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
  }
  
*************** proc check_effective_target_aarch64_asm_
*** 12808,12813 ****
--- 12825,12840 ----
      } else {
  	return 0
      }
+ }
+ 
+ proc check_effective_target_aarch64_asm_sve2p2_ok { } {
+     if { [istarget aarch64*-*-*] } {
+ 	return [check_no_compiler_messages aarch64_sve2p2_assembler object {
+ 	    __asm__ (".arch_extension sve2p2; compact z0.b,p0,z1.b");
+ 	} "-march=armv8-a+sve2p2"]
+     } else {
+ 	return 0
+     }
  }
  
  proc check_effective_target_aarch64_small { } {
diff -Nrcpad gcc-17-20260524/gcc/text-art/ruler.cc gcc-17-20260531/gcc/text-art/ruler.cc
*** gcc-17-20260524/gcc/text-art/ruler.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/text-art/ruler.cc	Sun May 31 22:32:13 2026
*************** x_ruler::update_layout ()
*** 346,352 ****
    /* Now walk backwards trying to place them vertically,
       setting m_text_rect.m_top_left.y for each label,
       consolidating the rows where possible.
!      The y cooordinates are stored with respect to label_dir::BELOW.  */
    int label_y = 2;
    for (int idx = m_labels.size () - 1; idx >= 0; idx--)
      {
--- 346,352 ----
    /* Now walk backwards trying to place them vertically,
       setting m_text_rect.m_top_left.y for each label,
       consolidating the rows where possible.
!      The y coordinates are stored with respect to label_dir::BELOW.  */
    int label_y = 2;
    for (int idx = m_labels.size () - 1; idx >= 0; idx--)
      {
diff -Nrcpad gcc-17-20260524/gcc/text-art/ruler.h gcc-17-20260531/gcc/text-art/ruler.h
*** gcc-17-20260524/gcc/text-art/ruler.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/text-art/ruler.h	Sun May 31 22:32:13 2026
*************** class x_ruler
*** 89,95 ****
       #             m_text_coord.x == 6
  
       and m_text_coord is (2, 6).
!      The y cooordinates are stored with respect to label_dir::BELOW;
       for label_dir::ABOVE we flip them when painting the ruler.  */
    class label
    {
--- 89,95 ----
       #             m_text_coord.x == 6
  
       and m_text_coord is (2, 6).
!      The y coordinates are stored with respect to label_dir::BELOW;
       for label_dir::ABOVE we flip them when painting the ruler.  */
    class label
    {
diff -Nrcpad gcc-17-20260524/gcc/timevar.def gcc-17-20260531/gcc/timevar.def
*** gcc-17-20260524/gcc/timevar.def	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/timevar.def	Sun May 31 22:32:13 2026
*************** DEFTIMEVAR (TV_TREE_OPS	             , "
*** 175,181 ****
  DEFTIMEVAR (TV_TREE_SSA_DOMINATOR_OPTS   , "dominator optimization")
  DEFTIMEVAR (TV_TREE_SSA_THREAD_JUMPS , "backwards jump threading")
  DEFTIMEVAR (TV_TREE_SRA              , "tree SRA")
! DEFTIMEVAR (TV_ISOLATE_ERRONEOUS_PATHS    , "isolate eroneous paths")
  DEFTIMEVAR (TV_TREE_CCP		     , "tree CCP")
  DEFTIMEVAR (TV_TREE_SPLIT_EDGES      , "tree split crit edges")
  DEFTIMEVAR (TV_TREE_REASSOC          , "tree reassociation")
--- 175,181 ----
  DEFTIMEVAR (TV_TREE_SSA_DOMINATOR_OPTS   , "dominator optimization")
  DEFTIMEVAR (TV_TREE_SSA_THREAD_JUMPS , "backwards jump threading")
  DEFTIMEVAR (TV_TREE_SRA              , "tree SRA")
! DEFTIMEVAR (TV_ISOLATE_ERRONEOUS_PATHS    , "isolate erroneous paths")
  DEFTIMEVAR (TV_TREE_CCP		     , "tree CCP")
  DEFTIMEVAR (TV_TREE_SPLIT_EDGES      , "tree split crit edges")
  DEFTIMEVAR (TV_TREE_REASSOC          , "tree reassociation")
diff -Nrcpad gcc-17-20260524/gcc/toplev.cc gcc-17-20260531/gcc/toplev.cc
*** gcc-17-20260524/gcc/toplev.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/toplev.cc	Sun May 31 22:32:13 2026
*************** output_stack_usage_1 (FILE *cf)
*** 840,851 ****
    if (stack_usage_file)
      {
        print_decl_identifier (stack_usage_file, current_function_decl,
! 			     PRINT_DECL_ORIGIN | PRINT_DECL_UNIQUE_NAME
  			     | PRINT_DECL_REMAP_DEBUG);
!       fprintf (stack_usage_file, " `");
        print_decl_identifier (stack_usage_file, current_function_decl,
! 			     PRINT_DECL_NAME);
!       fprintf (stack_usage_file, "`");
        fprintf (stack_usage_file, "\t" HOST_WIDE_INT_PRINT_DEC"\t%s\n",
  	       stack_usage, stack_usage_kind_str[stack_usage_kind]);
      }
--- 840,850 ----
    if (stack_usage_file)
      {
        print_decl_identifier (stack_usage_file, current_function_decl,
! 			     PRINT_DECL_ORIGIN | PRINT_DECL_NAME
  			     | PRINT_DECL_REMAP_DEBUG);
!       fputs ("\t", stack_usage_file);
        print_decl_identifier (stack_usage_file, current_function_decl,
! 			     PRINT_DECL_UNIQUE_NAME);
        fprintf (stack_usage_file, "\t" HOST_WIDE_INT_PRINT_DEC"\t%s\n",
  	       stack_usage, stack_usage_kind_str[stack_usage_kind]);
      }
diff -Nrcpad gcc-17-20260524/gcc/trans-mem.cc gcc-17-20260531/gcc/trans-mem.cc
*** gcc-17-20260524/gcc/trans-mem.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/trans-mem.cc	Sun May 31 22:32:13 2026
*************** ipa_tm_scan_irr_block (basic_block bb)
*** 4447,4453 ****
    return false;
  }
  
! /* For each of the blocks seeded witin PQUEUE, walk the CFG looking
     for new irrevocable blocks, marking them in NEW_IRR.  Don't bother
     scanning past OLD_IRR or EXIT_BLOCKS.  */
  
--- 4447,4453 ----
    return false;
  }
  
! /* For each of the blocks seeded within PQUEUE, walk the CFG looking
     for new irrevocable blocks, marking them in NEW_IRR.  Don't bother
     scanning past OLD_IRR or EXIT_BLOCKS.  */
  
*************** ipa_tm_execute (void)
*** 5516,5522 ****
  
    /* Iterate scans until no more work to be done.  Prefer not to use
       vec::pop because the worklist tends to follow a breadth-first
!      search of the callgraph, which should allow convergance with a
       minimum number of scans.  But we also don't want the worklist
       array to grow without bound, so we shift the array up periodically.  */
    for (i = 0; i < irr_worklist.length (); ++i)
--- 5516,5522 ----
  
    /* Iterate scans until no more work to be done.  Prefer not to use
       vec::pop because the worklist tends to follow a breadth-first
!      search of the callgraph, which should allow convergence with a
       minimum number of scans.  But we also don't want the worklist
       array to grow without bound, so we shift the array up periodically.  */
    for (i = 0; i < irr_worklist.length (); ++i)
diff -Nrcpad gcc-17-20260524/gcc/tree-assume.cc gcc-17-20260531/gcc/tree-assume.cc
*** gcc-17-20260524/gcc/tree-assume.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-assume.cc	Sun May 31 22:32:13 2026
***************
*** 1,4 ****
! /* Support for C++23 ASSUME keyword functionailty.
     Copyright (C) 2023-2026 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>.
  
--- 1,4 ----
! /* Support for C++23 ASSUME keyword functionality.
     Copyright (C) 2023-2026 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>.
  
*************** assume_query::calculate_phi (gphi *phi,
*** 295,301 ****
  		  continue;
  		}
  
! 	      // If the def is in the immediate preceeding block, process it
  	      // with GORI to determine what values can produce this
  	      // argument value.  Otherwise there is more CFG flow, so query
  	      // the edge for parm ranges.  This is conservative.
--- 295,301 ----
  		  continue;
  		}
  
! 	      // If the def is in the immediate preceding block, process it
  	      // with GORI to determine what values can produce this
  	      // argument value.  Otherwise there is more CFG flow, so query
  	      // the edge for parm ranges.  This is conservative.
*************** assume_query::calculate_phi (gphi *phi,
*** 312,318 ****
  	    {
  	      // If this is a constant value that differs from LHS, this
  	      // edge cannot be taken and we can ignore it. Otherwise fall
! 	      // thorugh and process the parameters on the edge.
  	      edge_range.intersect (lhs_range);
  	      if (edge_range.undefined_p ())
  		{
--- 312,318 ----
  	    {
  	      // If this is a constant value that differs from LHS, this
  	      // edge cannot be taken and we can ignore it. Otherwise fall
! 	      // through and process the parameters on the edge.
  	      edge_range.intersect (lhs_range);
  	      if (edge_range.undefined_p ())
  		{
diff -Nrcpad gcc-17-20260524/gcc/tree-cfg.cc gcc-17-20260531/gcc/tree-cfg.cc
*** gcc-17-20260524/gcc/tree-cfg.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-cfg.cc	Sun May 31 22:32:13 2026
*************** assign_discriminators (void)
*** 1160,1166 ****
  	      bb_id++;
  	    }
  	}
!       /* If basic block has multiple sucessors, consdier every edge as a
  	 separate block.  */
        if (!single_succ_p (bb))
  	bb_id++;
--- 1160,1166 ----
  	      bb_id++;
  	    }
  	}
!       /* If basic block has multiple successors, consider every edge as a
  	 separate block.  */
        if (!single_succ_p (bb))
  	bb_id++;
*************** stmt_starts_bb_p (gimple *stmt, gimple *
*** 2744,2750 ****
  	  && gimple_code (prev_stmt) != GIMPLE_LABEL
  	  && (gimple_code (prev_stmt) != GIMPLE_CALL
  	      || ! gimple_call_internal_p (prev_stmt, IFN_PHI)))
! 	/* PHI nodes start a new block unless preceeded by a label
  	   or another PHI.  */
  	return true;
      }
--- 2744,2750 ----
  	  && gimple_code (prev_stmt) != GIMPLE_LABEL
  	  && (gimple_code (prev_stmt) != GIMPLE_CALL
  	      || ! gimple_call_internal_p (prev_stmt, IFN_PHI)))
! 	/* PHI nodes start a new block unless preceded by a label
  	   or another PHI.  */
  	return true;
      }
*************** move_stmt_op (tree *tp, int *walk_subtre
*** 7152,7158 ****
  }
  
  /* Helper for move_stmt_r.  Given an EH region number for the source
!    function, map that to the duplicate EH regio number in the dest.  */
  
  static int
  move_stmt_eh_region_nr (int old_nr, struct move_stmt_d *p)
--- 7152,7158 ----
  }
  
  /* Helper for move_stmt_r.  Given an EH region number for the source
!    function, map that to the duplicate EH region number in the dest.  */
  
  static int
  move_stmt_eh_region_nr (int old_nr, struct move_stmt_d *p)
*************** ifconvertable_edge (edge e)
*** 10188,10194 ****
  	return false;
      }
  
!   /* If convertables are only for conditionals. */
    if (!is_a<gcond*>(*gsi_last_nondebug_bb (bb0)))
      return false;
  
--- 10188,10194 ----
  	return false;
      }
  
!   /* If convertibles are only for conditionals. */
    if (!is_a<gcond*>(*gsi_last_nondebug_bb (bb0)))
      return false;
  
diff -Nrcpad gcc-17-20260524/gcc/tree-cfgcleanup.cc gcc-17-20260531/gcc/tree-cfgcleanup.cc
*** gcc-17-20260524/gcc/tree-cfgcleanup.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-cfgcleanup.cc	Sun May 31 22:32:13 2026
*************** cleanup_control_expr_graph (basic_block
*** 173,179 ****
      {
        edge e;
        edge_iterator ei;
-       bool warned;
        tree val = NULL_TREE;
  
        /* Try to convert a switch with just a single non-default case to
--- 173,178 ----
*************** cleanup_control_expr_graph (basic_block
*** 185,191 ****
        if (gimple_code (stmt) == GIMPLE_COND)
  	canonicalize_bool_cond (as_a<gcond*> (stmt), bb);
  
-       fold_defer_overflow_warnings ();
        switch (gimple_code (stmt))
  	{
  	case GIMPLE_COND:
--- 184,189 ----
*************** cleanup_control_expr_graph (basic_block
*** 207,230 ****
  	}
        taken_edge = find_taken_edge (bb, val);
        if (!taken_edge)
! 	{
! 	  fold_undefer_and_ignore_overflow_warnings ();
! 	  return false;
! 	}
  
        /* Remove all the edges except the one that is always executed.  */
-       warned = false;
        for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
  	{
  	  if (e != taken_edge)
  	    {
- 	      if (!warned)
- 		{
- 		  fold_undefer_overflow_warnings
- 		    (true, stmt, WARN_STRICT_OVERFLOW_CONDITIONAL);
- 		  warned = true;
- 		}
- 
  	      taken_edge->probability += e->probability;
  	      remove_edge_and_dominated_blocks (e);
  	      retval = true;
--- 205,217 ----
  	}
        taken_edge = find_taken_edge (bb, val);
        if (!taken_edge)
! 	return false;
  
        /* Remove all the edges except the one that is always executed.  */
        for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
  	{
  	  if (e != taken_edge)
  	    {
  	      taken_edge->probability += e->probability;
  	      remove_edge_and_dominated_blocks (e);
  	      retval = true;
*************** cleanup_control_expr_graph (basic_block
*** 232,239 ****
  	  else
  	    ei_next (&ei);
  	}
-       if (!warned)
- 	fold_undefer_and_ignore_overflow_warnings ();
      }
    else
      taken_edge = single_succ_edge (bb);
--- 219,224 ----
*************** move_debug_stmts_from_forwarder (basic_b
*** 464,469 ****
--- 449,476 ----
      }
  }
  
+ /* Returns true if a phi of the basic block BB has an
+    use of a ssa name that is used in an abnormal edge.  */
+ 
+ static bool
+ bb_phis_references_abnormal_uses (basic_block bb)
+ {
+   auto phis = phi_nodes (bb);
+   gimple_stmt_iterator i;
+   for (i = gsi_start (phis); !gsi_end_p (i); gsi_next (&i))
+     {
+       gphi *phi = as_a<gphi*>(*i);
+       for (unsigned indx = 0; indx < gimple_phi_num_args (phi); indx++)
+ 	{
+ 	  tree value = gimple_phi_arg_def (phi, indx);
+ 	  if (TREE_CODE (value) == SSA_NAME
+ 	      && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (value))
+ 	    return true;
+ 	}
+     }
+   return false;
+ }
+ 
  /* Return true if basic block BB does nothing except pass control
     flow to another block and that we can safely insert a label at
     the start of the successor block and was removed.
*************** maybe_remove_forwarder_block (basic_bloc
*** 550,555 ****
--- 557,567 ----
    if (has_phi && gimple_seq_empty_p (phi_nodes (dest)))
      return false;
  
+   /* When we have phi, make sure the phi does not have any uses of
+      names used in abnormal phis.  */
+   if (has_phi && bb_phis_references_abnormal_uses (bb))
+     return false;
+ 
    /* Now walk through the statements backward.  We can ignore labels,
       anything else means this is not a forwarder block.  */
    for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi))
*************** maybe_remove_forwarder_block (basic_bloc
*** 771,777 ****
  
    set_immediate_dominator (CDI_DOMINATORS, dest, dom);
  
!   /* Adjust latch infomation of BB's parent loop as otherwise
       the cfg hook has a hard time not to kill the loop.  */
    if (current_loops && bb->loop_father->latch == bb)
      bb->loop_father->latch = pred;
--- 783,789 ----
  
    set_immediate_dominator (CDI_DOMINATORS, dest, dom);
  
!   /* Adjust latch information of BB's parent loop as otherwise
       the cfg hook has a hard time not to kill the loop.  */
    if (current_loops && bb->loop_father->latch == bb)
      bb->loop_father->latch = pred;
*************** cleanup_tree_cfg_noloop (unsigned ssa_up
*** 1190,1196 ****
    /* Start by iterating over all basic blocks in PRE order looking for
       edge removal opportunities.  Do this first because incoming SSA form
       may be invalid and we want to avoid performing SSA related tasks such
!      as propgating out a PHI node during BB merging in that state.  This
       also gets rid of unreachable blocks.  */
    bool changed = cleanup_control_flow_pre ();
  
--- 1202,1208 ----
    /* Start by iterating over all basic blocks in PRE order looking for
       edge removal opportunities.  Do this first because incoming SSA form
       may be invalid and we want to avoid performing SSA related tasks such
!      as propagating out a PHI node during BB merging in that state.  This
       also gets rid of unreachable blocks.  */
    bool changed = cleanup_control_flow_pre ();
  
diff -Nrcpad gcc-17-20260524/gcc/tree-chrec.cc gcc-17-20260531/gcc/tree-chrec.cc
*** gcc-17-20260524/gcc/tree-chrec.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-chrec.cc	Sun May 31 22:32:13 2026
*************** scev_is_linear_expression (tree scev)
*** 1889,1895 ****
      }
  }
  
! /* Determines whether the expression CHREC contains only interger consts
     in the right parts.  */
  
  bool
--- 1889,1895 ----
      }
  }
  
! /* Determines whether the expression CHREC contains only integer consts
     in the right parts.  */
  
  bool
diff -Nrcpad gcc-17-20260524/gcc/tree-complex.cc gcc-17-20260531/gcc/tree-complex.cc
*** gcc-17-20260524/gcc/tree-complex.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-complex.cc	Sun May 31 22:32:13 2026
*************** expand_complex_div_wide (gimple_stmt_ite
*** 1387,1393 ****
  
        /* Wire the blocks together.  */
        e->flags = EDGE_TRUE_VALUE;
!       /* TODO: With value profile we could add an historgram to determine real
  	 branch outcome.  */
        e->probability = profile_probability::even ();
        redirect_edge_succ (e, bb_true);
--- 1387,1393 ----
  
        /* Wire the blocks together.  */
        e->flags = EDGE_TRUE_VALUE;
!       /* TODO: With value profile we could add an histogram to determine real
  	 branch outcome.  */
        e->probability = profile_probability::even ();
        redirect_edge_succ (e, bb_true);
diff -Nrcpad gcc-17-20260524/gcc/tree-core.h gcc-17-20260531/gcc/tree-core.h
*** gcc-17-20260524/gcc/tree-core.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-core.h	Sun May 31 22:32:13 2026
*************** enum built_in_class {
*** 176,182 ****
    BUILT_IN_NORMAL
  };
  
! /* Last marker used for LTO stremaing of built_in_class.  We cannot add it
     to the enum since we need the enumb to fit in 2 bits.  */
  #define BUILT_IN_LAST (BUILT_IN_NORMAL + 1)
  
--- 176,182 ----
    BUILT_IN_NORMAL
  };
  
! /* Last marker used for LTO streaming of built_in_class.  We cannot add it
     to the enum since we need the enumb to fit in 2 bits.  */
  #define BUILT_IN_LAST (BUILT_IN_NORMAL + 1)
  
diff -Nrcpad gcc-17-20260524/gcc/tree-data-ref.cc gcc-17-20260531/gcc/tree-data-ref.cc
*** gcc-17-20260524/gcc/tree-data-ref.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-data-ref.cc	Sun May 31 22:32:13 2026
*************** dump_alias_pair (dr_with_seg_len_pair_t
*** 1795,1801 ****
     memory of store_ptr_0 cannot be between the memory of load_ptr_0 and
     load_ptr_1.)
  
!    we then can use only the following expression to finish the alising checks
     between store_ptr_0 & load_ptr_0 and store_ptr_0 & load_ptr_1:
  
     ((store_ptr_0 + store_segment_length_0) <= load_ptr_0)
--- 1795,1801 ----
     memory of store_ptr_0 cannot be between the memory of load_ptr_0 and
     load_ptr_1.)
  
!    we then can use only the following expression to finish the aliasing checks
     between store_ptr_0 & load_ptr_0 and store_ptr_0 & load_ptr_1:
  
     ((store_ptr_0 + store_segment_length_0) <= load_ptr_0)
*************** create_ifn_alias_checks (tree *cond_expr
*** 2037,2043 ****
    tree addr_a = DR_BASE_ADDRESS (dr_a.dr);
    tree addr_b = DR_BASE_ADDRESS (dr_b.dr);
  
!   /* See whether the target suports what we want to do.  WAW checks are
       equivalent to WAR checks here.  */
    internal_fn ifn = (alias_pair.flags & DR_ALIAS_RAW
  		     ? IFN_CHECK_RAW_PTRS
--- 2037,2043 ----
    tree addr_a = DR_BASE_ADDRESS (dr_a.dr);
    tree addr_b = DR_BASE_ADDRESS (dr_b.dr);
  
!   /* See whether the target supports what we want to do.  WAW checks are
       equivalent to WAR checks here.  */
    internal_fn ifn = (alias_pair.flags & DR_ALIAS_RAW
  		     ? IFN_CHECK_RAW_PTRS
*************** create_runtime_alias_checks (class loop
*** 2676,2682 ****
  {
    tree part_cond_expr;
  
-   fold_defer_overflow_warnings ();
    for (const dr_with_seg_len_pair_t &alias_pair : alias_pairs)
      {
        gcc_assert (alias_pair.flags);
--- 2676,2681 ----
*************** create_runtime_alias_checks (class loop
*** 2694,2700 ****
        else
  	*cond_expr = part_cond_expr;
      }
-   fold_undefer_and_ignore_overflow_warnings ();
  }
  
  /* Check if OFFSET1 and OFFSET2 (DR_OFFSETs of some data-refs) are identical
--- 2693,2698 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-data-ref.h gcc-17-20260531/gcc/tree-data-ref.h
*** gcc-17-20260524/gcc/tree-data-ref.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-data-ref.h	Sun May 31 22:32:13 2026
*************** struct data_dependence_relation
*** 475,481 ****
         for (int i = 0; i < n; ++i)
           a[0].f[i] += b[i].f[i];
  
!      conservatively have a distance vector of (0), but they are indepenent
       when a != b + i.  In contrast, the references in:
  
         struct s *a;
--- 475,481 ----
         for (int i = 0; i < n; ++i)
           a[0].f[i] += b[i].f[i];
  
!      conservatively have a distance vector of (0), but they are independent
       when a != b + i.  In contrast, the references in:
  
         struct s *a;
diff -Nrcpad gcc-17-20260524/gcc/tree-eh.cc gcc-17-20260531/gcc/tree-eh.cc
*** gcc-17-20260524/gcc/tree-eh.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-eh.cc	Sun May 31 22:32:13 2026
*************** lower_try_finally_fallthru_label (struct
*** 1002,1008 ****
    return label;
  }
  
! /* A subroutine of lower_try_finally.  If FINALLY consits of a
     GIMPLE_EH_ELSE node, return it.  */
  
  static inline geh_else *
--- 1002,1008 ----
    return label;
  }
  
! /* A subroutine of lower_try_finally.  If FINALLY consists of a
     GIMPLE_EH_ELSE node, return it.  */
  
  static inline geh_else *
*************** lower_eh_dispatch (basic_block src, geh_
*** 3927,3933 ****
  	hash_set<tree> seen_values;
  
  	/* Collect the labels for a switch.  Zero the post_landing_pad
! 	   field becase we'll no longer have anything keeping these labels
  	   in existence and the optimizer will be free to merge these
  	   blocks at will.  */
  	for (c = r->u.eh_try.first_catch; c ; c = c->next_catch)
--- 3927,3933 ----
  	hash_set<tree> seen_values;
  
  	/* Collect the labels for a switch.  Zero the post_landing_pad
! 	   field because we'll no longer have anything keeping these labels
  	   in existence and the optimizer will be free to merge these
  	   blocks at will.  */
  	for (c = r->u.eh_try.first_catch; c ; c = c->next_catch)
diff -Nrcpad gcc-17-20260524/gcc/tree-if-conv.cc gcc-17-20260531/gcc/tree-if-conv.cc
*** gcc-17-20260524/gcc/tree-if-conv.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-if-conv.cc	Sun May 31 22:32:13 2026
*************** idx_within_array_bound (tree ref, tree *
*** 815,821 ****
        || !high || TREE_CODE (high) != INTEGER_CST)
      return false;
  
!   /* Check if the intial idx is within bound.  */
    if (wi::to_widest (init) < wi::to_widest (low)
        || wi::to_widest (init) > wi::to_widest (high))
      return false;
--- 815,821 ----
        || !high || TREE_CODE (high) != INTEGER_CST)
      return false;
  
!   /* Check if the initial idx is within bound.  */
    if (wi::to_widest (init) < wi::to_widest (low)
        || wi::to_widest (init) > wi::to_widest (high))
      return false;
*************** base_object_writable (tree ref)
*** 893,901 ****
     iteration unconditionally.
  
     Returns true for the memory reference in STMT, same memory reference
!    is read or written unconditionally atleast once and the base memory
     reference is written unconditionally once.  This is to check reference
!    will not write fault.  Also retuns true if the memory reference is
     unconditionally read once then we are conditionally writing to memory
     which is defined as read and write and is bound to the definition
     we are seeing.  */
--- 893,901 ----
     iteration unconditionally.
  
     Returns true for the memory reference in STMT, same memory reference
!    is read or written unconditionally at least once and the base memory
     reference is written unconditionally once.  This is to check reference
!    will not write fault.  Also returns true if the memory reference is
     unconditionally read once then we are conditionally writing to memory
     which is defined as read and write and is bound to the definition
     we are seeing.  */
*************** ifcvt_memrefs_wont_trap (gimple *stmt, v
*** 938,944 ****
        if (DR_IS_READ (a))
  	return true;
  
!       /* an unconditionaly write won't trap if the base is written
           to unconditionally.  */
        if ((base_master_dr
  	   && DR_BASE_W_UNCONDITIONALLY (*base_master_dr))
--- 938,944 ----
        if (DR_IS_READ (a))
  	return true;
  
!       /* an unconditionally write won't trap if the base is written
           to unconditionally.  */
        if ((base_master_dr
  	   && DR_BASE_W_UNCONDITIONALLY (*base_master_dr))
*************** if_convertible_stmt_p (gimple *stmt, vec
*** 1202,1207 ****
--- 1202,1213 ----
  	      }
  	  }
  
+ 	/* Check if it's a prefetch.  Many ISAs contain vectorized and/or
+ 	   conditional prefetches so if-convert should convert them or remove
+ 	   them.  Mark them as supported.  */
+ 	if (gimple_call_builtin_p (stmt, BUILT_IN_PREFETCH))
+ 	  return true;
+ 
  	/* There are some IFN_s that are used to replace builtins but have the
  	   same semantics.  Even if MASK_CALL cannot handle them vectorable_call
  	   will insert the proper selection, so do not block conversion.  */
*************** get_loop_body_in_if_conv_order (const cl
*** 1379,1385 ****
    /* Go through loop and reject if-conversion or lowering of bitfields if we
       encounter statements we do not believe the vectorizer will be able to
       handle.  If adding a new type of statement here, make sure
!      'ifcvt_local_dce' is also able to handle it propertly.  */
    for (index = 0; index < loop->num_nodes; index++)
      {
        basic_block bb = blocks[index];
--- 1385,1391 ----
    /* Go through loop and reject if-conversion or lowering of bitfields if we
       encounter statements we do not believe the vectorizer will be able to
       handle.  If adding a new type of statement here, make sure
!      'ifcvt_local_dce' is also able to handle it properly.  */
    for (index = 0; index < loop->num_nodes; index++)
      {
        basic_block bb = blocks[index];
*************** again:
*** 2311,2320 ****
       constant masks (operand 2).  The target might not support it
       and that might be invalid to do as such. Also with constants
       masks, the number of elements of the mask type does not need
!      to match tne number of elements of other operands and can be
       arbitrary integral vector type so factoring that out can't work.
       Note in the case where one mask is a constant and the other is not,
!      the next check for compatiable types will reject the case the
       constant mask has the incompatible type.  */
    if (arg1_op.code == VEC_PERM_EXPR && opnum == 2
        && TREE_CODE (new_arg0) == VECTOR_CST
--- 2317,2326 ----
       constant masks (operand 2).  The target might not support it
       and that might be invalid to do as such. Also with constants
       masks, the number of elements of the mask type does not need
!      to match the number of elements of other operands and can be
       arbitrary integral vector type so factoring that out can't work.
       Note in the case where one mask is a constant and the other is not,
!      the next check for compatible types will reject the case the
       constant mask has the incompatible type.  */
    if (arg1_op.code == VEC_PERM_EXPR && opnum == 2
        && TREE_CODE (new_arg0) == VECTOR_CST
*************** predicate_scalar_phi (gphi *phi, gimple_
*** 2542,2548 ****
        else
  	cond = bb_predicate (first_edge->src);
  
!       /* Gimplify the condition to a valid cond-expr conditonal operand.  */
        cond = gen_simplified_condition (cond, cond_set);
        cond = force_gimple_operand_gsi (gsi, unshare_expr (cond), true,
  				       NULL_TREE, true, GSI_SAME_STMT);
--- 2548,2554 ----
        else
  	cond = bb_predicate (first_edge->src);
  
!       /* Gimplify the condition to a valid cond-expr conditional operand.  */
        cond = gen_simplified_condition (cond, cond_set);
        cond = force_gimple_operand_gsi (gsi, unshare_expr (cond), true,
  				       NULL_TREE, true, GSI_SAME_STMT);
*************** predicate_scalar_phi (gphi *phi, gimple_
*** 2656,2662 ****
  	  swap = true;
  	  cond = TREE_OPERAND (cond, 0);
  	}
!       /* Gimplify the condition to a valid cond-expr conditonal operand.  */
        cond = force_gimple_operand_gsi (gsi, unshare_expr (cond), true,
  				       NULL_TREE, true, GSI_SAME_STMT);
        if (!(is_cond_scalar_reduction (phi, &reduc, arg0 , arg1,
--- 2662,2668 ----
  	  swap = true;
  	  cond = TREE_OPERAND (cond, 0);
  	}
!       /* Gimplify the condition to a valid cond-expr conditional operand.  */
        cond = force_gimple_operand_gsi (gsi, unshare_expr (cond), true,
  				       NULL_TREE, true, GSI_SAME_STMT);
        if (!(is_cond_scalar_reduction (phi, &reduc, arg0 , arg1,
*************** predicate_statements (loop_p loop)
*** 3125,3130 ****
--- 3131,3146 ----
  	    {
  	      unlink_stmt_vdef (stmt);
  	      gsi_remove (&gsi, true);
+ 	      release_defs (stmt);
+ 	      continue;
+ 	    }
+ 	  /* For now, just drop prefetches.  Do it now to remove any possible
+ 	     aliasing check failures from the address calculations of the
+ 	     prefetch.  Vect would be too late in that regard.  */
+ 	  else if (gimple_call_builtin_p (stmt, BUILT_IN_PREFETCH))
+ 	    {
+ 	      unlink_stmt_vdef (stmt);
+ 	      gsi_remove (&gsi, true);
  	      release_defs (stmt);
  	      continue;
  	    }
diff -Nrcpad gcc-17-20260524/gcc/tree-inline.cc gcc-17-20260531/gcc/tree-inline.cc
*** gcc-17-20260524/gcc/tree-inline.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-inline.cc	Sun May 31 22:32:13 2026
*************** remap_type_1 (tree type, copy_body_data
*** 575,581 ****
        gcc_unreachable ();
      }
  
!   /* All variants of type share the same size, so use the already remaped data.  */
    if (TYPE_MAIN_VARIANT (new_tree) != new_tree)
      {
        tree s = TYPE_SIZE (type);
--- 575,581 ----
        gcc_unreachable ();
      }
  
!   /* All variants of type share the same size, so use the already remapped data.  */
    if (TYPE_MAIN_VARIANT (new_tree) != new_tree)
      {
        tree s = TYPE_SIZE (type);
*************** declare_return_variable (copy_body_data
*** 3972,3978 ****
  }
  
  /* Determine if the function can be copied.  If so return NULL.  If
!    not return a string describng the reason for failure.  */
  
  const char *
  copy_forbidden (struct function *fun)
--- 3972,3978 ----
  }
  
  /* Determine if the function can be copied.  If so return NULL.  If
!    not return a string describing the reason for failure.  */
  
  const char *
  copy_forbidden (struct function *fun)
*************** inline_forbidden_p (tree fndecl)
*** 4150,4156 ****
      return true;
  
    /* Next, walk the statements of the function looking for
!      constraucts we can't handle, or are non-optimal for inlining.  */
    hash_set<tree> visited_nodes;
    memset (&wi, 0, sizeof (wi));
    wi.info = (void *) fndecl;
--- 4150,4156 ----
      return true;
  
    /* Next, walk the statements of the function looking for
!      constructs we can't handle, or are non-optimal for inlining.  */
    hash_set<tree> visited_nodes;
    memset (&wi, 0, sizeof (wi));
    wi.info = (void *) fndecl;
*************** estimate_num_insns (gimple *stmt, eni_we
*** 4545,4551 ****
  	    if ((node = cgraph_node::get (decl))
  		&& node->definition)
  	      ;
! 	    /* For buitins that are likely expanded to nothing or
  	       inlined do not account operand costs.  */
  	    else if (is_simple_builtin (decl))
  	      return 0;
--- 4545,4551 ----
  	    if ((node = cgraph_node::get (decl))
  		&& node->definition)
  	      ;
! 	    /* For builtins that are likely expanded to nothing or
  	       inlined do not account operand costs.  */
  	    else if (is_simple_builtin (decl))
  	      return 0;
*************** copy_decl_for_dup_finish (copy_body_data
*** 6133,6139 ****
    return copy;
  }
  
! /* Create a new VAR_DECL that is indentical in all respect to DECL except that
     DECL can be either a VAR_DECL, a PARM_DECL or RESULT_DECL.  The original
     DECL must come from ID->src_fn and the copy will be part of ID->dst_fn.  */
  
--- 6133,6139 ----
    return copy;
  }
  
! /* Create a new VAR_DECL that is identical in all respect to DECL except that
     DECL can be either a VAR_DECL, a PARM_DECL or RESULT_DECL.  The original
     DECL must come from ID->src_fn and the copy will be part of ID->dst_fn.  */
  
diff -Nrcpad gcc-17-20260524/gcc/tree-into-ssa.cc gcc-17-20260531/gcc/tree-into-ssa.cc
*** gcc-17-20260524/gcc/tree-into-ssa.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-into-ssa.cc	Sun May 31 22:32:13 2026
*************** get_ssa_name_ann (tree name)
*** 346,352 ****
    return info;
  }
  
! /* Return and allocate the auxiliar information for DECL.  */
  
  static inline var_info *
  get_var_info (tree decl)
--- 346,352 ----
    return info;
  }
  
! /* Return and allocate the auxiliary information for DECL.  */
  
  static inline var_info *
  get_var_info (tree decl)
*************** clear_ssa_name_info (void)
*** 374,385 ****
    current_info_for_ssa_name_age++;
  
    /* If current_info_for_ssa_name_age wraps we use stale information.
!      Asser that this does not happen.  */
    gcc_assert (current_info_for_ssa_name_age != 0);
  }
  
  
! /* Get access to the auxiliar information stored per SSA name or decl.  */
  
  static inline common_info *
  get_common_info (tree var)
--- 374,385 ----
    current_info_for_ssa_name_age++;
  
    /* If current_info_for_ssa_name_age wraps we use stale information.
!      Assert that this does not happen.  */
    gcc_assert (current_info_for_ssa_name_age != 0);
  }
  
  
! /* Get access to the auxiliary information stored per SSA name or decl.  */
  
  static inline common_info *
  get_common_info (tree var)
*************** insert_updated_phi_nodes_compare_uids (c
*** 3315,3321 ****
     calling create_new_def_for to create new defs for names that the
     caller wants to replace.
  
!    The caller cretaes the new names to be inserted and the names that need
     to be replaced by calling create_new_def_for for each old definition
     to be replaced.  Note that the function assumes that the
     new defining statement has already been inserted in the IL.
--- 3315,3321 ----
     calling create_new_def_for to create new defs for names that the
     caller wants to replace.
  
!    The caller creates the new names to be inserted and the names that need
     to be replaced by calling create_new_def_for for each old definition
     to be replaced.  Note that the function assumes that the
     new defining statement has already been inserted in the IL.
*************** update_ssa (unsigned update_flags)
*** 3477,3483 ****
        statistics_counter_event (cfun, "Symbol to SSA rewrite", 1);
  
        /* If we rename bare symbols initialize the mapping to
!          auxiliar info we need to keep track of.  */
        var_infos = new hash_table<var_info_hasher> (47);
  
        /* If we have to rename some symbols from scratch, we need to
--- 3477,3483 ----
        statistics_counter_event (cfun, "Symbol to SSA rewrite", 1);
  
        /* If we rename bare symbols initialize the mapping to
!          auxiliary info we need to keep track of.  */
        var_infos = new hash_table<var_info_hasher> (47);
  
        /* If we have to rename some symbols from scratch, we need to
diff -Nrcpad gcc-17-20260524/gcc/tree-loop-distribution.cc gcc-17-20260531/gcc/tree-loop-distribution.cc
*** gcc-17-20260524/gcc/tree-loop-distribution.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-loop-distribution.cc	Sun May 31 22:32:13 2026
*************** struct rdg_edge
*** 213,221 ****
  /* Kind of distributed loop.  */
  enum partition_kind {
      PKIND_NORMAL,
!     /* Partial memset stands for a paritition can be distributed into a loop
         of memset calls, rather than a single memset call.  It's handled just
!        like a normal parition, i.e, distributed as separate loop, no memset
         call is generated.
  
         Note: This is a hacking fix trying to distribute ZERO-ing stmt in a
--- 213,221 ----
  /* Kind of distributed loop.  */
  enum partition_kind {
      PKIND_NORMAL,
!     /* Partial memset stands for a partition can be distributed into a loop
         of memset calls, rather than a single memset call.  It's handled just
!        like a normal partition, i.e, distributed as separate loop, no memset
         call is generated.
  
         Note: This is a hacking fix trying to distribute ZERO-ing stmt in a
*************** struct partition
*** 264,270 ****
    enum partition_type type;
    /* Data references in the partition.  */
    bitmap datarefs;
!   /* Information of builtin parition.  */
    struct builtin_info *builtin;
  };
  
--- 264,270 ----
    enum partition_type type;
    /* Data references in the partition.  */
    bitmap datarefs;
!   /* Information of builtin partition.  */
    struct builtin_info *builtin;
  };
  
*************** class loop_distribution
*** 622,628 ****
    /* Build and return partition dependence graph for PARTITIONS.  RDG is
       reduced dependence graph for the loop to be distributed.  If IGNORE_ALIAS_P
       is true, data dependence caused by possible alias between references
!      is ignored, as if it doesn't exist at all; otherwise all depdendences
       are considered.  */
    struct graph *build_partition_graph (struct graph *rdg,
  				       vec<struct partition *> *partitions,
--- 622,628 ----
    /* Build and return partition dependence graph for PARTITIONS.  RDG is
       reduced dependence graph for the loop to be distributed.  If IGNORE_ALIAS_P
       is true, data dependence caused by possible alias between references
!      is ignored, as if it doesn't exist at all; otherwise all dependences
       are considered.  */
    struct graph *build_partition_graph (struct graph *rdg,
  				       vec<struct partition *> *partitions,
*************** class loop_distribution
*** 631,642 ****
    /* Given reduced dependence graph RDG merge strong connected components
       of PARTITIONS.  If IGNORE_ALIAS_P is true, data dependence caused by
       possible alias between references is ignored, as if it doesn't exist
!      at all; otherwise all depdendences are considered.  */
    void merge_dep_scc_partitions (struct graph *rdg, vec<struct partition *>
  				 *partitions, bool ignore_alias_p);
  
! /* This is the main function breaking strong conected components in
!    PARTITIONS giving reduced depdendence graph RDG.  Store data dependence
     relations for runtime alias check in ALIAS_DDRS.  */
    void break_alias_scc_partitions (struct graph *rdg, vec<struct partition *>
  				   *partitions, vec<ddr_p> *alias_ddrs);
--- 631,642 ----
    /* Given reduced dependence graph RDG merge strong connected components
       of PARTITIONS.  If IGNORE_ALIAS_P is true, data dependence caused by
       possible alias between references is ignored, as if it doesn't exist
!      at all; otherwise all dependences are considered.  */
    void merge_dep_scc_partitions (struct graph *rdg, vec<struct partition *>
  				 *partitions, bool ignore_alias_p);
  
! /* This is the main function breaking strong connected components in
!    PARTITIONS giving reduced dependence graph RDG.  Store data dependence
     relations for runtime alias check in ALIAS_DDRS.  */
    void break_alias_scc_partitions (struct graph *rdg, vec<struct partition *>
  				   *partitions, vec<ddr_p> *alias_ddrs);
*************** loop_distribution::classify_partition (l
*** 1902,1908 ****
  	     reduction partitions.  As a result, this could cancel valid
  	     loop distribution especially for loop that induction variable
  	     is used outside of loop.  To workaround this issue, we skip
! 	     marking partition as reudction if the reduction stmt belongs
  	     to all partitions.  In such case, reduction will be computed
  	     correctly no matter how partitions are fused/distributed.  */
  	  if (!bitmap_bit_p (stmt_in_all_partitions, i))
--- 1902,1908 ----
  	     reduction partitions.  As a result, this could cancel valid
  	     loop distribution especially for loop that induction variable
  	     is used outside of loop.  To workaround this issue, we skip
! 	     marking partition as reduction if the reduction stmt belongs
  	     to all partitions.  In such case, reduction will be computed
  	     correctly no matter how partitions are fused/distributed.  */
  	  if (!bitmap_bit_p (stmt_in_all_partitions, i))
*************** loop_distribution::pg_add_dependence_edg
*** 2174,2180 ****
  	    }
  	  else if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE)
  	    {
! 	      /* Known dependences can still be unordered througout the
  		 iteration space, see gcc.dg/tree-ssa/ldist-16.c and
  		 gcc.dg/tree-ssa/pr94969.c.  */
  	      if (DDR_NUM_DIST_VECTS (ddr) != 1)
--- 2174,2180 ----
  	    }
  	  else if (DDR_ARE_DEPENDENT (ddr) == NULL_TREE)
  	    {
! 	      /* Known dependences can still be unordered throughout the
  		 iteration space, see gcc.dg/tree-ssa/ldist-16.c and
  		 gcc.dg/tree-ssa/pr94969.c.  */
  	      if (DDR_NUM_DIST_VECTS (ddr) != 1)
*************** add_partition_graph_edge (struct graph *
*** 2306,2312 ****
      }
  }
  
! /* Callback function for graph travesal algorithm.  It returns true
     if edge E should skipped when traversing the graph.  */
  
  static bool
--- 2306,2312 ----
      }
  }
  
! /* Callback function for graph traversal algorithm.  It returns true
     if edge E should skipped when traversing the graph.  */
  
  static bool
*************** free_partition_graph_vdata (struct graph
*** 2347,2353 ****
  /* Build and return partition dependence graph for PARTITIONS.  RDG is
     reduced dependence graph for the loop to be distributed.  If IGNORE_ALIAS_P
     is true, data dependence caused by possible alias between references
!    is ignored, as if it doesn't exist at all; otherwise all depdendences
     are considered.  */
  
  struct graph *
--- 2347,2353 ----
  /* Build and return partition dependence graph for PARTITIONS.  RDG is
     reduced dependence graph for the loop to be distributed.  If IGNORE_ALIAS_P
     is true, data dependence caused by possible alias between references
!    is ignored, as if it doesn't exist at all; otherwise all dependences
     are considered.  */
  
  struct graph *
*************** pg_unmark_merged_alias_ddrs (struct grap
*** 2536,2543 ****
      }
  }
  
! /* This is the main function breaking strong conected components in
!    PARTITIONS giving reduced depdendence graph RDG.  Store data dependence
     relations for runtime alias check in ALIAS_DDRS.  */
  void
  loop_distribution::break_alias_scc_partitions (struct graph *rdg,
--- 2536,2543 ----
      }
  }
  
! /* This is the main function breaking strong connected components in
!    PARTITIONS giving reduced dependence graph RDG.  Store data dependence
     relations for runtime alias check in ALIAS_DDRS.  */
  void
  loop_distribution::break_alias_scc_partitions (struct graph *rdg,
*************** version_loop_by_alias_check (vec<struct
*** 2855,2861 ****
    update_ssa (TODO_update_ssa_no_phi);
  }
  
! /* Return true if loop versioning is needed to distrubute PARTITIONS.
     ALIAS_DDRS are data dependence relations for runtime alias check.  */
  
  static inline bool
--- 2855,2861 ----
    update_ssa (TODO_update_ssa_no_phi);
  }
  
! /* Return true if loop versioning is needed to distribute PARTITIONS.
     ALIAS_DDRS are data dependence relations for runtime alias check.  */
  
  static inline bool
diff -Nrcpad gcc-17-20260524/gcc/tree-object-size.cc gcc-17-20260531/gcc/tree-object-size.cc
*** gcc-17-20260524/gcc/tree-object-size.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-object-size.cc	Sun May 31 22:32:13 2026
*************** gimplify_size_expressions (object_size_i
*** 1197,1203 ****
  				 object_size_type))
  	    {
  	      /* Record the SSAs we're overwriting to propagate the
! 		 unknwons.  */
  	      tree oldval = object_sizes_get (osi, i);
  	      tree old_wholeval = object_sizes_get (osi, i, true);
  
--- 1197,1203 ----
  				 object_size_type))
  	    {
  	      /* Record the SSAs we're overwriting to propagate the
! 		 unknowns.  */
  	      tree oldval = object_sizes_get (osi, i);
  	      tree old_wholeval = object_sizes_get (osi, i, true);
  
*************** object_sizes_execute (function *fun, boo
*** 2379,2385 ****
  	  if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
  	    {
  	      replace_uses_by (lhs, result);
! 	      /* Mark lhs as being possiblely DCEd. */
  	      bitmap_set_bit (sdce_worklist, SSA_NAME_VERSION (lhs));
  	    }
  	  else
--- 2379,2385 ----
  	  if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
  	    {
  	      replace_uses_by (lhs, result);
! 	      /* Mark lhs as being possibly DCEd. */
  	      bitmap_set_bit (sdce_worklist, SSA_NAME_VERSION (lhs));
  	    }
  	  else
diff -Nrcpad gcc-17-20260524/gcc/tree-parloops.cc gcc-17-20260531/gcc/tree-parloops.cc
*** gcc-17-20260524/gcc/tree-parloops.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-parloops.cc	Sun May 31 22:32:13 2026
*************** parloops_is_simple_reduction (loop_vec_i
*** 392,398 ****
      }
  
    /* If this isn't a nested cycle or if the nested cycle reduction value
!      is used ouside of the inner loop we cannot handle uses of the reduction
       value.  */
    if ((!nested_in_vect_loop || inner_loop_of_double_reduc)
        && (nlatch_def_loop_uses > 1 || nphi_def_loop_uses > 1))
--- 392,398 ----
      }
  
    /* If this isn't a nested cycle or if the nested cycle reduction value
!      is used outside of the inner loop we cannot handle uses of the reduction
       value.  */
    if ((!nested_in_vect_loop || inner_loop_of_double_reduc)
        && (nlatch_def_loop_uses > 1 || nphi_def_loop_uses > 1))
*************** transform_to_exit_first_loop_alt (class
*** 2270,2276 ****
    basic_block new_exit_block = NULL;
    if (!single_pred_p (exit->dest))
      {
!       /* Create a new empty exit block, inbetween the new loop header and the
  	 old exit block.  The function separate_decls_in_region needs this block
  	 to insert code that is active on loop exit, but not any other path.  */
        new_exit_block = split_edge (exit);
--- 2270,2276 ----
    basic_block new_exit_block = NULL;
    if (!single_pred_p (exit->dest))
      {
!       /* Create a new empty exit block, in between the new loop header and the
  	 old exit block.  The function separate_decls_in_region needs this block
  	 to insert code that is active on loop exit, but not any other path.  */
        new_exit_block = split_edge (exit);
diff -Nrcpad gcc-17-20260524/gcc/tree-predcom.cc gcc-17-20260531/gcc/tree-predcom.cc
*** gcc-17-20260524/gcc/tree-predcom.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-predcom.cc	Sun May 31 22:32:13 2026
*************** typedef struct chain
*** 327,333 ****
    /* Finalizers for the eliminated stores.  */
    auto_vec<tree> finis;
  
!   /* gimple stmts intializing the initial variables of the chain.  */
    gimple_seq init_seq;
  
    /* gimple stmts finalizing the eliminated stores of the chain.  */
--- 327,333 ----
    /* Finalizers for the eliminated stores.  */
    auto_vec<tree> finis;
  
!   /* gimple stmts initializing the initial variables of the chain.  */
    gimple_seq init_seq;
  
    /* gimple stmts finalizing the eliminated stores of the chain.  */
*************** pcom_worker::suitable_component_p (struc
*** 1114,1120 ****
  	     in some later iteration.  There might be more latent issues
  	     about this in predcom or data reference analysis.  If the
  	     reference is a COMPONENT_REF, also check if step isn't a
! 	     multiple of the containg aggregate size.  See PR111683.  */
  	  tree ref = DR_REF (a->ref);
  	  tree step = DR_STEP (a->ref);
  	  if (TREE_CODE (ref) == COMPONENT_REF
--- 1114,1120 ----
  	     in some later iteration.  There might be more latent issues
  	     about this in predcom or data reference analysis.  If the
  	     reference is a COMPONENT_REF, also check if step isn't a
! 	     multiple of the containing aggregate size.  See PR111683.  */
  	  tree ref = DR_REF (a->ref);
  	  tree step = DR_STEP (a->ref);
  	  if (TREE_CODE (ref) == COMPONENT_REF
*************** pcom_worker::determine_roots_comp (struc
*** 1610,1616 ****
  	    release_chain (chain);
  
  	  /* Determine type of the chain.  If the root reference is a load,
! 	     this can only be a CT_LOAD chain; other chains are intialized
  	     to CT_STORE_LOAD and might be promoted to CT_STORE_STORE when
  	     new reference is added.  */
  	  type = DR_IS_READ (a->ref) ? CT_LOAD : CT_STORE_LOAD;
--- 1610,1616 ----
  	    release_chain (chain);
  
  	  /* Determine type of the chain.  If the root reference is a load,
! 	     this can only be a CT_LOAD chain; other chains are initialized
  	     to CT_STORE_LOAD and might be promoted to CT_STORE_STORE when
  	     new reference is added.  */
  	  type = DR_IS_READ (a->ref) ? CT_LOAD : CT_STORE_LOAD;
*************** prepare_initializers_chain_store_elim (c
*** 3132,3138 ****
    if (!chain->all_always_accessed)
      return false;
  
!   /* Nothing to intialize for intra-iteration store elimination.  */
    if (n == 0 && chain->type == CT_STORE_STORE)
      return true;
  
--- 3132,3138 ----
    if (!chain->all_always_accessed)
      return false;
  
!   /* Nothing to initialize for intra-iteration store elimination.  */
    if (n == 0 && chain->type == CT_STORE_STORE)
      return true;
  
*************** prepare_initializers_chain_store_elim (c
*** 3148,3154 ****
    chain->inits.create (n);
    chain->inits.safe_grow_cleared (n, true);
  
!   /* For store eliminatin chain like below:
  
       for (i = 0; i < len; i++)
         {
--- 3148,3154 ----
    chain->inits.create (n);
    chain->inits.safe_grow_cleared (n, true);
  
!   /* For store eliminating chain like below:
  
       for (i = 0; i < len; i++)
         {
*************** pcom_worker::tree_predictive_commoning_l
*** 3384,3390 ****
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "Processing loop %d\n", m_loop->num);
  
!   /* Nothing for predicitive commoning if loop only iterates 1 time.  */
    if (get_max_loop_iterations_int (m_loop) == 0)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
--- 3384,3390 ----
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "Processing loop %d\n", m_loop->num);
  
!   /* Nothing for predictive commoning if loop only iterates 1 time.  */
    if (get_max_loop_iterations_int (m_loop) == 0)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
diff -Nrcpad gcc-17-20260524/gcc/tree-profile.cc gcc-17-20260531/gcc/tree-profile.cc
*** gcc-17-20260524/gcc/tree-profile.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-profile.cc	Sun May 31 22:32:13 2026
*************** condition_uid (struct function *fn, basi
*** 392,398 ****
     Masking and short circuiting are deeply connected - masking occurs when
     control flow reaches a state that is also reachable with short circuiting.
     In fact, masking corresponds to short circuiting for the reversed
!    expression.  This means we can find the limits, the last term in preceeding
     subexpressions, by following the edges that short circuit to the same
     outcome.  The algorithm treats the CFG as a reduced order binary decision
     diagram (see Randall E. Bryant's Graph Based Algorithms for Boolean
--- 392,398 ----
     Masking and short circuiting are deeply connected - masking occurs when
     control flow reaches a state that is also reachable with short circuiting.
     In fact, masking corresponds to short circuiting for the reversed
!    expression.  This means we can find the limits, the last term in preceding
     subexpressions, by following the edges that short circuit to the same
     outcome.  The algorithm treats the CFG as a reduced order binary decision
     diagram (see Randall E. Bryant's Graph Based Algorithms for Boolean
*************** condition_uid (struct function *fn, basi
*** 455,461 ****
     We only have to consider the pairs of top, bot where top is the the closest
     (highest-index'd) candidate that still satisfies top < bot in the
     topological order, as this will be the immediate left operand.  The nodes of
!    the other left operands will also be found when going through the righmost
     term, and a lower-index'd top would just find subsets.  This has a
     significant performance impact, 15-20x faster for the worst cases of (x && y
     && ..) with no nesting.
--- 455,461 ----
     We only have to consider the pairs of top, bot where top is the the closest
     (highest-index'd) candidate that still satisfies top < bot in the
     topological order, as this will be the immediate left operand.  The nodes of
!    the other left operands will also be found when going through the rightmost
     term, and a lower-index'd top would just find subsets.  This has a
     significant performance impact, 15-20x faster for the worst cases of (x && y
     && ..) with no nesting.
*************** cov_length (const struct condcov *cov)
*** 818,824 ****
    return cov->m_index.length () - 1;
  }
  
! /* The subgraph, exluding intermediates, for the nth Boolean expression.  */
  array_slice<basic_block>
  cov_blocks (struct condcov *cov, size_t n)
  {
--- 818,824 ----
    return cov->m_index.length () - 1;
  }
  
! /* The subgraph, excluding intermediates, for the nth Boolean expression.  */
  array_slice<basic_block>
  cov_blocks (struct condcov *cov, size_t n)
  {
*************** tree_profiling (void)
*** 1932,1938 ****
  	continue;
        /* Do not instrument extern inline functions when testing coverage.
  	 While this is not perfectly consistent (early inlined extern inlines
! 	 will get acocunted), testsuite expects that.  */
        if (DECL_EXTERNAL (node->decl)
  	  && flag_test_coverage)
  	continue;
--- 1932,1938 ----
  	continue;
        /* Do not instrument extern inline functions when testing coverage.
  	 While this is not perfectly consistent (early inlined extern inlines
! 	 will get accounted), testsuite expects that.  */
        if (DECL_EXTERNAL (node->decl)
  	  && flag_test_coverage)
  	continue;
diff -Nrcpad gcc-17-20260524/gcc/tree-scalar-evolution.cc gcc-17-20260531/gcc/tree-scalar-evolution.cc
*** gcc-17-20260524/gcc/tree-scalar-evolution.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-scalar-evolution.cc	Sun May 31 22:32:13 2026
*************** scev_dfs::add_to_evolution_1 (tree chrec
*** 706,712 ****
        /* When we add the first evolution we need to replace the symbolic
  	 evolution we've put in when the DFS reached the loop PHI node
  	 with the initial value.  There's only a limited cases of
! 	 extra operations ontop of that symbol allowed, namely
  	 sign-conversions we can look through.  For other cases we leave
  	 the symbolic initial condition which causes build_polynomial_chrec
  	 to return chrec_dont_know.  See PR42512, PR66375 and PR107176 for
--- 706,712 ----
        /* When we add the first evolution we need to replace the symbolic
  	 evolution we've put in when the DFS reached the loop PHI node
  	 with the initial value.  There's only a limited cases of
! 	 extra operations on top of that symbol allowed, namely
  	 sign-conversions we can look through.  For other cases we leave
  	 the symbolic initial condition which causes build_polynomial_chrec
  	 to return chrec_dont_know.  See PR42512, PR66375 and PR107176 for
*************** scev_reset (void)
*** 3128,3134 ****
  
     We do not use information whether TYPE can overflow so it is safe to
     use this test even for derived IVs not computed every iteration or
!    hypotetical IVs to be inserted into code.  */
  
  bool
  iv_can_overflow_p (class loop *loop, tree type, tree base, tree step)
--- 3128,3134 ----
  
     We do not use information whether TYPE can overflow so it is safe to
     use this test even for derived IVs not computed every iteration or
!    hypothetical IVs to be inserted into code.  */
  
  bool
  iv_can_overflow_p (class loop *loop, tree type, tree base, tree step)
*************** expression_expensive_p (tree expr, bool
*** 3638,3644 ****
  	  /* ???  Both the explicit unsharing and gimplification of expr will
  	     expand shared trees to multiple copies.
  	     Guard against exponential growth by counting the visits and
! 	     comparing againt the number of original nodes.  Allow a tiny
  	     bit of duplication to catch some additional optimizations.  */
  	  || expanded_size > (cache.elements () + 1));
  }
--- 3638,3644 ----
  	  /* ???  Both the explicit unsharing and gimplification of expr will
  	     expand shared trees to multiple copies.
  	     Guard against exponential growth by counting the visits and
! 	     comparing against the number of original nodes.  Allow a tiny
  	     bit of duplication to catch some additional optimizations.  */
  	  || expanded_size > (cache.elements () + 1));
  }
diff -Nrcpad gcc-17-20260524/gcc/tree-sra.cc gcc-17-20260531/gcc/tree-sra.cc
*** gcc-17-20260524/gcc/tree-sra.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-sra.cc	Sun May 31 22:32:13 2026
*************** struct access
*** 262,268 ****
    /* Should TREE_NO_WARNING of a replacement be set?  */
    unsigned grp_no_warning : 1;
  
!   /* Result of propagation accross link from LHS to RHS.  */
    unsigned grp_result_of_prop_from_lhs : 1;
  };
  
--- 262,268 ----
    /* Should TREE_NO_WARNING of a replacement be set?  */
    unsigned grp_no_warning : 1;
  
!   /* Result of propagation across link from LHS to RHS.  */
    unsigned grp_result_of_prop_from_lhs : 1;
  };
  
*************** static struct
*** 389,395 ****
       components.  */
    int aggregate_params_reduced;
  
!   /* Numbber of components created when splitting aggregate parameters.  */
    int param_reductions_created;
  
    /* Number of deferred_init calls that are modified.  */
--- 389,395 ----
       components.  */
    int aggregate_params_reduced;
  
!   /* Number of components created when splitting aggregate parameters.  */
    int param_reductions_created;
  
    /* Number of deferred_init calls that are modified.  */
*************** create_access (tree expr, gimple *stmt,
*** 968,975 ****
        disqualify_candidate (base, "Encountered an access beyond the base.");
        return NULL;
      }
!   if (TREE_CODE (TREE_TYPE (expr)) == BITINT_TYPE
!       && size > WIDE_INT_MAX_PRECISION - 1)
      {
        disqualify_candidate (base, "Encountered too large _BitInt access.");
        return NULL;
--- 968,974 ----
        disqualify_candidate (base, "Encountered an access beyond the base.");
        return NULL;
      }
!   if (BITINT_TYPE_P (TREE_TYPE (expr)) && size > WIDE_INT_MAX_PRECISION - 1)
      {
        disqualify_candidate (base, "Encountered too large _BitInt access.");
        return NULL;
*************** build_access_from_call_arg (tree expr, g
*** 1413,1419 ****
        if (can_be_returned)
  	{
  	  disqualify_base_of_expr (base, "Address possibly returned, "
! 				   "leading to an alis SRA may not know.");
  	  return false;
  	}
        if (abnormal_edge_after_stmt_p (stmt, oe_check))
--- 1412,1418 ----
        if (can_be_returned)
  	{
  	  disqualify_base_of_expr (base, "Address possibly returned, "
! 				   "leading to an alias SRA may not know.");
  	  return false;
  	}
        if (abnormal_edge_after_stmt_p (stmt, oe_check))
*************** path_comparable_for_same_access (tree ex
*** 2312,2318 ****
      {
        if (TREE_CODE (expr) == ARRAY_REF)
  	{
! 	  /* SSA name indices can occur here too when the array is of sie one.
  	     But we cannot just re-use array_refs with SSA names elsewhere in
  	     the function, so disallow non-constant indices.  TODO: Remove this
  	     limitation after teaching build_reconstructed_reference to replace
--- 2311,2317 ----
      {
        if (TREE_CODE (expr) == ARRAY_REF)
  	{
! 	  /* SSA name indices can occur here too when the array is of size one.
  	     But we cannot just re-use array_refs with SSA names elsewhere in
  	     the function, so disallow non-constant indices.  TODO: Remove this
  	     limitation after teaching build_reconstructed_reference to replace
*************** analyze_access_subtree (struct access *r
*** 2951,2957 ****
  	  tree rt = root->type;
  	  gcc_assert ((root->offset % BITS_PER_UNIT) == 0
  		      && (root->size % BITS_PER_UNIT) == 0);
! 	  if (TREE_CODE (root->type) == BITINT_TYPE)
  	    root->type = build_bitint_type (root->size, TYPE_UNSIGNED (rt));
  	  else
  	    root->type = build_nonstandard_integer_type (root->size,
--- 2950,2956 ----
  	  tree rt = root->type;
  	  gcc_assert ((root->offset % BITS_PER_UNIT) == 0
  		      && (root->size % BITS_PER_UNIT) == 0);
! 	  if (BITINT_TYPE_P (root->type))
  	    root->type = build_bitint_type (root->size, TYPE_UNSIGNED (rt));
  	  else
  	    root->type = build_nonstandard_integer_type (root->size,
*************** child_would_conflict_in_acc (struct acce
*** 3056,3062 ****
     Return the new access or NULL if it cannot be created.  Note that this
     access is created long after all splicing and sorting, it's not located in
     any access vector and is automatically a representative of its group.  Set
!    the gpr_write flag of the new accesss if SET_GRP_WRITE is true.  */
  
  static struct access *
  create_artificial_child_access (struct access *parent, struct access *model,
--- 3055,3061 ----
     Return the new access or NULL if it cannot be created.  Note that this
     access is created long after all splicing and sorting, it's not located in
     any access vector and is automatically a representative of its group.  Set
!    the gpr_write flag of the new access if SET_GRP_WRITE is true.  */
  
  static struct access *
  create_artificial_child_access (struct access *parent, struct access *model,
*************** sra_modify_call_arg (tree *expr, gimple_
*** 4345,4351 ****
  }
  
  /* Where scalar replacements of the RHS have been written to when a replacement
!    of a LHS of an assigments cannot be direclty loaded from a replacement of
     the RHS. */
  enum unscalarized_data_handling { SRA_UDH_NONE,  /* Nothing done so far. */
  				  SRA_UDH_RIGHT, /* Data flushed to the RHS. */
--- 4344,4350 ----
  }
  
  /* Where scalar replacements of the RHS have been written to when a replacement
!    of a LHS of an assignments cannot be directly loaded from a replacement of
     the RHS. */
  enum unscalarized_data_handling { SRA_UDH_NONE,  /* Nothing done so far. */
  				  SRA_UDH_RIGHT, /* Data flushed to the RHS. */
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-alias-compare.h gcc-17-20260531/gcc/tree-ssa-alias-compare.h
*** gcc-17-20260524/gcc/tree-ssa-alias-compare.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-alias-compare.h	Sun May 31 22:32:13 2026
***************
*** 1,4 ****
! /* Comparsion of AO ref.
     Copyright (C) 2020-2026 Free Software Foundation, Inc.
  
     This file is part of GCC.
--- 1,4 ----
! /* Comparison of AO ref.
     Copyright (C) 2020-2026 Free Software Foundation, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-alias.cc gcc-17-20260531/gcc/tree-ssa-alias.cc
*** gcc-17-20260524/gcc/tree-ssa-alias.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-alias.cc	Sun May 31 22:32:13 2026
*************** ptr_deref_may_alias_decl_p (tree ptr, tr
*** 251,257 ****
       data-dependence analysis can feed us those.  */
    STRIP_NOPS (ptr);
  
!   /* Anything we do not explicilty handle aliases.  */
    if ((TREE_CODE (ptr) != SSA_NAME
         && TREE_CODE (ptr) != ADDR_EXPR
         && TREE_CODE (ptr) != POINTER_PLUS_EXPR)
--- 251,257 ----
       data-dependence analysis can feed us those.  */
    STRIP_NOPS (ptr);
  
!   /* Anything we do not explicitly handle aliases.  */
    if ((TREE_CODE (ptr) != SSA_NAME
         && TREE_CODE (ptr) != ADDR_EXPR
         && TREE_CODE (ptr) != POINTER_PLUS_EXPR)
*************** ao_ref_alignment (ao_ref *ref, unsigned
*** 854,860 ****
      return get_object_alignment_1 (ref->ref, align, bitpos);
  
    /* When we just have ref->base we cannot use get_object_alignment since
!      that will eventually use the type of the appearant access while for
       example ao_ref_init_from_ptr_and_range is not careful to adjust that.  */
    *align = BITS_PER_UNIT;
    HOST_WIDE_INT offset;
--- 854,860 ----
      return get_object_alignment_1 (ref->ref, align, bitpos);
  
    /* When we just have ref->base we cannot use get_object_alignment since
!      that will eventually use the type of the apparent access while for
       example ao_ref_init_from_ptr_and_range is not careful to adjust that.  */
    *align = BITS_PER_UNIT;
    HOST_WIDE_INT offset;
*************** component_ref_to_zero_sized_trailing_arr
*** 1124,1130 ****
     (which is a start of possibly aliasing access path REF1).
     If match is found, try to disambiguate.
  
!    Return 0 for sucessful disambiguation.
     Return 1 if match was found but disambiguation failed
     Return -1 if there is no match.
     In this case MAYBE_MATCH is set to 0 if there is no type matching TYPE1
--- 1124,1130 ----
     (which is a start of possibly aliasing access path REF1).
     If match is found, try to disambiguate.
  
!    Return 0 for successful disambiguation.
     Return 1 if match was found but disambiguation failed
     Return -1 if there is no match.
     In this case MAYBE_MATCH is set to 0 if there is no type matching TYPE1
*************** access_path_may_continue_p (tree ref_typ
*** 1232,1238 ****
      {
        if (compare_type_sizes (ref_type1, base_type2) < 0)
  	return false;
!       /* If the path2 contains trailing array access we can strenghten the check
  	 to verify that also the size of element of the trailing array fits.
  	 In fact we could check for offset + type_size, but we do not track
  	 offsets and this is quite side case.  */
--- 1232,1238 ----
      {
        if (compare_type_sizes (ref_type1, base_type2) < 0)
  	return false;
!       /* If the path2 contains trailing array access we can strengthen the check
  	 to verify that also the size of element of the trailing array fits.
  	 In fact we could check for offset + type_size, but we do not track
  	 offsets and this is quite side case.  */
*************** nonoverlapping_component_refs_p_1 (const
*** 1462,1468 ****
    /* In common case the offsets and bit offsets will be the same.
       However if frontends do not agree on the alignment, they may be
       different even if they actually represent same address.
!      Try the common case first and if that fails calcualte the
       actual bit offset.  */
    if (tree_int_cst_equal (DECL_FIELD_OFFSET (field1),
  			  DECL_FIELD_OFFSET (field2))
--- 1462,1468 ----
    /* In common case the offsets and bit offsets will be the same.
       However if frontends do not agree on the alignment, they may be
       different even if they actually represent same address.
!      Try the common case first and if that fails calculate the
       actual bit offset.  */
    if (tree_int_cst_equal (DECL_FIELD_OFFSET (field1),
  			  DECL_FIELD_OFFSET (field2))
*************** nonoverlapping_array_refs_p (tree ref1,
*** 1546,1552 ****
    /* If type sizes are different, give up.
  
       Avoid expensive array_ref_element_size.
!      If operand 3 is present it denotes size in the alignmnet units.
       Otherwise size is TYPE_SIZE of the element type.
       Handle only common cases where types are of the same "kind".  */
    if ((TREE_OPERAND (ref1, 3) == NULL) != (TREE_OPERAND (ref2, 3) == NULL))
--- 1546,1552 ----
    /* If type sizes are different, give up.
  
       Avoid expensive array_ref_element_size.
!      If operand 3 is present it denotes size in the alignment units.
       Otherwise size is TYPE_SIZE of the element type.
       Handle only common cases where types are of the same "kind".  */
    if ((TREE_OPERAND (ref1, 3) == NULL) != (TREE_OPERAND (ref2, 3) == NULL))
*************** refs_may_alias_p_2 (ao_ref *ref1, ao_ref
*** 2458,2464 ****
      ref2ref = TREE_OPERAND (ref2ref, 0);
  
    /* Defer to simple offset based disambiguation if we have
!      references based on two decls.  Do this before defering to
       TBAA to handle must-alias cases in conformance with the
       GCC extension of allowing type-punning through unions.  */
    var1_p = DECL_P (base1);
--- 2458,2464 ----
      ref2ref = TREE_OPERAND (ref2ref, 0);
  
    /* Defer to simple offset based disambiguation if we have
!      references based on two decls.  Do this before deferring to
       TBAA to handle must-alias cases in conformance with the
       GCC extension of allowing type-punning through unions.  */
    var1_p = DECL_P (base1);
*************** ref_maybe_used_by_call_p_1 (gcall *call,
*** 2891,2897 ****
    if (callee != NULL_TREE)
      {
        struct cgraph_node *node = cgraph_node::get (callee);
!       /* We can not safely optimize based on summary of calle if it does
  	 not always bind to current def: it is possible that memory load
  	 was optimized out earlier and the interposed variant may not be
  	 optimized this way.  */
--- 2891,2897 ----
    if (callee != NULL_TREE)
      {
        struct cgraph_node *node = cgraph_node::get (callee);
!       /* We can not safely optimize based on summary of callee if it does
  	 not always bind to current def: it is possible that memory load
  	 was optimized out earlier and the interposed variant may not be
  	 optimized this way.  */
*************** stmt_kills_ref_p (gimple *stmt, ao_ref *
*** 3554,3560 ****
  	  && node->binds_to_current_def_p ()
  	  && (summary = get_modref_function_summary (node)) != NULL
  	  && summary->kills.length ()
! 	  /* Check that we can not trap while evaulating function
  	     parameters.  This check is overly conservative.  */
  	  && (!cfun->can_throw_non_call_exceptions
  	      || (!stmt_can_throw_internal (cfun, stmt)
--- 3554,3560 ----
  	  && node->binds_to_current_def_p ()
  	  && (summary = get_modref_function_summary (node)) != NULL
  	  && summary->kills.length ()
! 	  /* Check that we can not trap while evaluating function
  	     parameters.  This check is overly conservative.  */
  	  && (!cfun->can_throw_non_call_exceptions
  	      || (!stmt_can_throw_internal (cfun, stmt)
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-ccp.cc gcc-17-20260531/gcc/tree-ssa-ccp.cc
*** gcc-17-20260524/gcc/tree-ssa-ccp.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-ccp.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 104,110 ****
     precision of the type of the variable are always zero.  The
     uninteresting case is a variable of UNSIGNED type that has the
     maximum precision of the target.  Such variables can go to VARYING,
!    but this causes no loss of infomation since these variables will
     never be extended.
  
     References:
--- 104,110 ----
     precision of the type of the variable are always zero.  The
     uninteresting case is a variable of UNSIGNED type that has the
     maximum precision of the target.  Such variables can go to VARYING,
!    but this causes no loss of information since these variables will
     never be extended.
  
     References:
*************** evaluate_stmt (gimple *stmt)
*** 2263,2269 ****
       not attempt to fold them, including builtins that may profit.  */
    if (likelyvalue == CONSTANT)
      {
-       fold_defer_overflow_warnings ();
        simplified = ccp_fold (stmt);
        if (simplified
  	  && TREE_CODE (simplified) == SSA_NAME)
--- 2263,2268 ----
*************** evaluate_stmt (gimple *stmt)
*** 2275,2284 ****
  	    {
  	      ccp_prop_value_t *val = get_value (simplified);
  	      if (val && val->lattice_val != VARYING)
! 		{
! 		  fold_undefer_overflow_warnings (true, stmt, 0);
! 		  return *val;
! 		}
  	    }
  	  else
  	    /* We may also not place a non-valueized copy in the lattice
--- 2274,2280 ----
  	    {
  	      ccp_prop_value_t *val = get_value (simplified);
  	      if (val && val->lattice_val != VARYING)
! 		return *val;
  	    }
  	  else
  	    /* We may also not place a non-valueized copy in the lattice
*************** evaluate_stmt (gimple *stmt)
*** 2286,2292 ****
  	    simplified = NULL_TREE;
  	}
        is_constant = simplified && is_gimple_min_invariant (simplified);
-       fold_undefer_overflow_warnings (is_constant, stmt, 0);
        if (is_constant)
  	{
  	  /* The statement produced a constant value.  */
--- 2282,2287 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-dce.cc gcc-17-20260531/gcc/tree-ssa-dce.cc
*** gcc-17-20260524/gcc/tree-ssa-dce.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-dce.cc	Sun May 31 22:32:13 2026
*************** mark_all_reaching_defs_necessary_1 (ao_r
*** 781,787 ****
  	return false;
      }
  
!   /* We want to skip statments that do not constitute stores but have
       a virtual definition.  */
    if (gcall *call = dyn_cast <gcall *> (def_stmt))
      {
--- 781,787 ----
  	return false;
      }
  
!   /* We want to skip statements that do not constitute stores but have
       a virtual definition.  */
    if (gcall *call = dyn_cast <gcall *> (def_stmt))
      {
*************** propagate_necessity (bool aggressive)
*** 949,955 ****
  
  	     Consider the modified CFG created from current CFG by splitting
  	     edge B->C.  In the postdominance tree of modified CFG, C' is
! 	     always child of C.  There are two cases how chlids of C' can look
  	     like:
  
  		1) C' is leaf
--- 949,955 ----
  
  	     Consider the modified CFG created from current CFG by splitting
  	     edge B->C.  In the postdominance tree of modified CFG, C' is
! 	     always child of C.  There are two cases how children of C' can look
  	     like:
  
  		1) C' is leaf
*************** propagate_necessity (bool aggressive)
*** 968,979 ****
  		   case 2 happens iff there is no other way from B to C except
  		   the edge B->C.
  
! 		   There is other way from B to C iff there is succesor of B that
  		   is not postdominated by B.  Testing this condition is somewhat
! 		   expensive, because we need to iterate all succesors of B.
  		   We are safe to assume that this does not happen: we will mark B
  		   as needed when processing the other path from B to C that is
! 		   conrol dependent on B and marking control dependencies of B
  		   itself is harmless because they will be processed anyway after
  		   processing control statement in B.
  
--- 968,979 ----
  		   case 2 happens iff there is no other way from B to C except
  		   the edge B->C.
  
! 		   There is other way from B to C iff there is successor of B that
  		   is not postdominated by B.  Testing this condition is somewhat
! 		   expensive, because we need to iterate all successors of B.
  		   We are safe to assume that this does not happen: we will mark B
  		   as needed when processing the other path from B to C that is
! 		   control dependent on B and marking control dependencies of B
  		   itself is harmless because they will be processed anyway after
  		   processing control statement in B.
  
*************** propagate_counts ()
*** 1516,1522 ****
  	  sum += e->count ();
  	  gcc_checking_assert (!cnt.get (e->src));
  	}
!       /* If we have partial profile and some counts of incomming edges are
  	 unknown, it is probably better to keep the existing count.
  	 We could also propagate bi-directionally.  */
        if (sum.initialized_p () && !(sum == bb->count))
--- 1516,1522 ----
  	  sum += e->count ();
  	  gcc_checking_assert (!cnt.get (e->src));
  	}
!       /* If we have partial profile and some counts of incoming edges are
  	 unknown, it is probably better to keep the existing count.
  	 We could also propagate bi-directionally.  */
        if (sum.initialized_p () && !(sum == bb->count))
*************** eliminate_unnecessary_stmts (bool aggres
*** 1626,1632 ****
  	    }
  	  /* Conditional checking that return value of allocation is non-NULL
  	     can be turned to constant if the allocation itself
! 	     is unnecesary.  */
  	  if (gimple_plf (stmt, STMT_NECESSARY)
  	      && gimple_code (stmt) == GIMPLE_COND
  	      && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME)
--- 1626,1632 ----
  	    }
  	  /* Conditional checking that return value of allocation is non-NULL
  	     can be turned to constant if the allocation itself
! 	     is unnecessary.  */
  	  if (gimple_plf (stmt, STMT_NECESSARY)
  	      && gimple_code (stmt) == GIMPLE_COND
  	      && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME)
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-dom.cc gcc-17-20260531/gcc/tree-ssa-dom.cc
*** gcc-17-20260524/gcc/tree-ssa-dom.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-dom.cc	Sun May 31 22:32:13 2026
*************** private:
*** 825,831 ****
    gcond *m_dummy_cond;
  
    /* Optimize a single statement within a basic block using the
!      various tables mantained by DOM.  Returns the taken edge if
       the statement is a conditional with a statically determined
       value.  */
    edge optimize_stmt (basic_block, gimple_stmt_iterator *, bool *);
--- 825,831 ----
    gcond *m_dummy_cond;
  
    /* Optimize a single statement within a basic block using the
!      various tables maintained by DOM.  Returns the taken edge if
       the statement is a conditional with a statically determined
       value.  */
    edge optimize_stmt (basic_block, gimple_stmt_iterator *, bool *);
*************** pass_dominator::execute (function *fun)
*** 1038,1044 ****
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk or before
       jump threading finished.  Do this in reverse order so we don't
!      inadvertedly remove a stmt we want to fixup by visiting a dominating
       now noreturn call first.  */
    while (!need_noreturn_fixup.is_empty ())
      {
--- 1038,1044 ----
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk or before
       jump threading finished.  Do this in reverse order so we don't
!      inadvertently remove a stmt we want to fixup by visiting a dominating
       now noreturn call first.  */
    while (!need_noreturn_fixup.is_empty ())
      {
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-dse.cc gcc-17-20260531/gcc/tree-ssa-dse.cc
*** gcc-17-20260524/gcc/tree-ssa-dse.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-dse.cc	Sun May 31 22:32:13 2026
*************** static bitmap need_ab_cleanup;
*** 102,108 ****
  
     Return TRUE if the statement was analyzed, FALSE otherwise.
  
!    It is always safe to return FALSE.  But typically better optimziation
     can be achieved by analyzing more statements.  */
  
  static bool
--- 102,108 ----
  
     Return TRUE if the statement was analyzed, FALSE otherwise.
  
!    It is always safe to return FALSE.  But typically better optimization
     can be achieved by analyzing more statements.  */
  
  static bool
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-forwprop.cc gcc-17-20260531/gcc/tree-ssa-forwprop.cc
*** gcc-17-20260524/gcc/tree-ssa-forwprop.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-forwprop.cc	Sun May 31 22:32:13 2026
*************** combine_cond_expr_cond (gimple *stmt, en
*** 407,419 ****
  
    gcc_assert (TREE_CODE_CLASS (code) == tcc_comparison);
  
-   fold_defer_overflow_warnings ();
    t = fold_binary_loc (gimple_location (stmt), code, type, op0, op1);
    if (!t)
!     {
!       fold_undefer_overflow_warnings (false, NULL, 0);
!       return NULL_TREE;
!     }
  
    /* Require that we got a boolean type out if we put one in.  */
    gcc_assert (TREE_CODE (TREE_TYPE (t)) == TREE_CODE (type));
--- 407,415 ----
  
    gcc_assert (TREE_CODE_CLASS (code) == tcc_comparison);
  
    t = fold_binary_loc (gimple_location (stmt), code, type, op0, op1);
    if (!t)
!     return NULL_TREE;
  
    /* Require that we got a boolean type out if we put one in.  */
    gcc_assert (TREE_CODE (TREE_TYPE (t)) == TREE_CODE (type));
*************** combine_cond_expr_cond (gimple *stmt, en
*** 423,435 ****
  
    /* Bail out if we required an invariant but didn't get one.  */
    if (!t || (invariant_only && !is_gimple_min_invariant (t)))
!     {
!       fold_undefer_overflow_warnings (false, NULL, 0);
!       return NULL_TREE;
!     }
! 
!   bool nowarn = warning_suppressed_p (stmt, OPT_Wstrict_overflow);
!   fold_undefer_overflow_warnings (!nowarn, stmt, 0);
  
    return t;
  }
--- 419,425 ----
  
    /* Bail out if we required an invariant but didn't get one.  */
    if (!t || (invariant_only && !is_gimple_min_invariant (t)))
!     return NULL_TREE;
  
    return t;
  }
*************** static tree
*** 1464,1470 ****
  new_src_based_on_copy (tree src2, tree dest, tree src)
  {
    /* If the second src is not exactly the same as dest,
!      try to handle it seperately; see it is address/size equivalent.
       Handles `a` and `a.b` and `MEM<char[N]>(&a)` which all have
       the same size and offsets as address/size equivalent.
       This allows copying over a memcpy and also one for copying
--- 1454,1460 ----
  new_src_based_on_copy (tree src2, tree dest, tree src)
  {
    /* If the second src is not exactly the same as dest,
!      try to handle it separately; see it is address/size equivalent.
       Handles `a` and `a.b` and `MEM<char[N]>(&a)` which all have
       the same size and offsets as address/size equivalent.
       This allows copying over a memcpy and also one for copying
*************** optimize_agr_copyprop_1 (gimple *stmt, g
*** 1605,1611 ****
    src = new_src_based_on_copy (src2, dest, src);
    if (!src)
      return;
!   /* For 2 memory refences and using a temporary to do the copy,
       don't remove the temporary as the 2 memory references might overlap.
       Note t does not need to be decl as it could be field.
       See PR 22237 for full details.
--- 1595,1601 ----
    src = new_src_based_on_copy (src2, dest, src);
    if (!src)
      return;
!   /* For 2 memory references and using a temporary to do the copy,
       don't remove the temporary as the 2 memory references might overlap.
       Note t does not need to be decl as it could be field.
       See PR 22237 for full details.
*************** public:
*** 5227,5233 ****
    bool m_full_walk = false;
  }; // class pass_forwprop
  
! /* Attemp to make the BB block of __builtin_unreachable unreachable by changing
     the incoming jumps.  Return true if at least one jump was changed.  */
  
  static bool
--- 5217,5223 ----
    bool m_full_walk = false;
  }; // class pass_forwprop
  
! /* Attempt to make the BB block of __builtin_unreachable unreachable by changing
     the incoming jumps.  Return true if at least one jump was changed.  */
  
  static bool
*************** pass_forwprop::execute (function *fun)
*** 5943,5949 ****
  	      propagate_value (use_p, val);
  	  }
  
!       /* Mark outgoing exectuable edges.  */
        if (edge e = find_taken_edge (bb, NULL))
  	{
  	  e->flags |= EDGE_EXECUTABLE;
--- 5933,5939 ----
  	      propagate_value (use_p, val);
  	  }
  
!       /* Mark outgoing executable edges.  */
        if (edge e = find_taken_edge (bb, NULL))
  	{
  	  e->flags |= EDGE_EXECUTABLE;
*************** pass_forwprop::execute (function *fun)
*** 6005,6011 ****
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the walk.  Do this
!      in reverse order so we don't inadvertedly remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!to_fixup.is_empty ())
      {
--- 5995,6001 ----
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the walk.  Do this
!      in reverse order so we don't inadvertently remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!to_fixup.is_empty ())
      {
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-ifcombine.cc gcc-17-20260531/gcc/tree-ssa-ifcombine.cc
*** gcc-17-20260524/gcc/tree-ssa-ifcombine.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-ifcombine.cc	Sun May 31 22:32:13 2026
*************** tree_ssa_ifcombine_bb_1 (basic_block inn
*** 1064,1070 ****
  			 basic_block phi_pred_bb, basic_block outer_succ_bb)
  {
    /* The && form is characterized by a common else_bb with
!      the two edges leading to it mergable.  The latter is
       guaranteed by matching PHI arguments in the else_bb and
       the inner cond_bb having no side-effects.  */
    if (phi_pred_bb != else_bb
--- 1064,1070 ----
  			 basic_block phi_pred_bb, basic_block outer_succ_bb)
  {
    /* The && form is characterized by a common else_bb with
!      the two edges leading to it mergeable.  The latter is
       guaranteed by matching PHI arguments in the else_bb and
       the inner cond_bb having no side-effects.  */
    if (phi_pred_bb != else_bb
*************** pass_tree_ifcombine::execute (function *
*** 1400,1406 ****
  
       We walk the blocks in order that guarantees that a block with
       a single predecessor is processed after the predecessor.
!      This ensures that we collapse outter ifs before visiting the
       inner ones, and also that we do not try to visit a removed
       block.  This is opposite of PHI-OPT, because we cascade the
       combining rather than cascading PHIs. */
--- 1400,1406 ----
  
       We walk the blocks in order that guarantees that a block with
       a single predecessor is processed after the predecessor.
!      This ensures that we collapse outer ifs before visiting the
       inner ones, and also that we do not try to visit a removed
       block.  This is opposite of PHI-OPT, because we cascade the
       combining rather than cascading PHIs. */
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-live.cc gcc-17-20260531/gcc/tree-ssa-live.cc
*** gcc-17-20260524/gcc/tree-ssa-live.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-live.cc	Sun May 31 22:32:13 2026
*************** remove_unused_scope_block_p (tree scope,
*** 446,453 ****
        next = &DECL_CHAIN (*t);
  
        /* Debug info of nested function refers to the block of the
! 	 function.  We might stil call it even if all statements
! 	 of function it was nested into was elliminated.
  
  	 TODO: We can actually look into cgraph to see if function
  	 will be output to file.  */
--- 446,453 ----
        next = &DECL_CHAIN (*t);
  
        /* Debug info of nested function refers to the block of the
! 	 function.  We might still call it even if all statements
! 	 of function it was nested into was eliminated.
  
  	 TODO: We can actually look into cgraph to see if function
  	 will be output to file.  */
*************** remove_unused_scope_block_p (tree scope,
*** 582,588 ****
     else if (inlined_function_outer_scope_p (scope))
       unused = false;
     else
!    /* Verfify that only blocks with source location set
        are entry points to the inlined functions.  */
       gcc_assert (LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (scope))
  		 == UNKNOWN_LOCATION);
--- 582,588 ----
     else if (inlined_function_outer_scope_p (scope))
       unused = false;
     else
!    /* Verify that only blocks with source location set
        are entry points to the inlined functions.  */
       gcc_assert (LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (scope))
  		 == UNKNOWN_LOCATION);
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-ch.cc gcc-17-20260531/gcc/tree-ssa-loop-ch.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-ch.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-ch.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 44,50 ****
  #include "tree-ssa-loop-niter.h"
  #include "tree-scalar-evolution.h"
  
! /* Return path query insteance for testing ranges of statements
     in headers of LOOP contained in basic block BB.
     Use RANGER instance.  */
  
--- 44,50 ----
  #include "tree-ssa-loop-niter.h"
  #include "tree-scalar-evolution.h"
  
! /* Return path query instance for testing ranges of statements
     in headers of LOOP contained in basic block BB.
     Use RANGER instance.  */
  
*************** loop_combined_static_and_iv_p (class loo
*** 171,177 ****
    return gimple_uid (SSA_NAME_DEF_STMT (op)) & 4;
  }
  
! /* Decision about posibility of copying a given header.  */
  
  enum ch_decision
  {
--- 171,177 ----
    return gimple_uid (SSA_NAME_DEF_STMT (op)) & 4;
  }
  
! /* Decision about possibility of copying a given header.  */
  
  enum ch_decision
  {
*************** should_duplicate_loop_header_p (basic_bl
*** 233,239 ****
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
! 		 "  Not duplicating bb %i: it has mutiple predecestors.\n",
  		 header->index);
        return ch_impossible;
      }
--- 233,239 ----
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
! 		 "  Not duplicating bb %i: it has multiple predecestors.\n",
  		 header->index);
        return ch_impossible;
      }
*************** should_duplicate_loop_header_p (basic_bl
*** 327,338 ****
  	     size costs.
  
  	     Similarly static computations will be optimized out in the
! 	     duplicatd header.  */
  	  if (inv || static_p)
  	    continue;
  
  	  /* Match the following:
! 	     _1 = i_1 < 10   <- static condtion
  	     _2 = n != 0     <- loop invariant condition
  	     _3 = _1 & _2    <- combined static and iv statement.  */
  	  tree_code code;
--- 327,338 ----
  	     size costs.
  
  	     Similarly static computations will be optimized out in the
! 	     duplicated header.  */
  	  if (inv || static_p)
  	    continue;
  
  	  /* Match the following:
! 	     _1 = i_1 < 10   <- static condition
  	     _2 = n != 0     <- loop invariant condition
  	     _3 = _1 & _2    <- combined static and iv statement.  */
  	  tree_code code;
*************** should_duplicate_loop_header_p (basic_bl
*** 372,378 ****
  	code_size_cost = true;
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
! 		 "    Acconting stmt as %i insns\n", insns);
        if (*limit < 0)
  	{
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 372,378 ----
  	code_size_cost = true;
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
! 		 "    Accounting stmt as %i insns\n", insns);
        if (*limit < 0)
  	{
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** should_duplicate_loop_header_p (basic_bl
*** 400,406 ****
  
    /* Combined conditional is a result of if combining:
  
!      _1 = i_1 < 10   <- static condtion
       _2 = n != 0     <- loop invariant condition
       _3 = _1 & _2    <- combined static and iv statement
       if (_3 != 0)    <- combined conditional
--- 400,406 ----
  
    /* Combined conditional is a result of if combining:
  
!      _1 = i_1 < 10   <- static condition
       _2 = n != 0     <- loop invariant condition
       _3 = _1 & _2    <- combined static and iv statement
       if (_3 != 0)    <- combined conditional
*************** should_duplicate_loop_header_p (basic_bl
*** 457,463 ****
  	      {
  		if (dump_file && (dump_flags & TDF_DETAILS))
  		  fprintf (dump_file,
! 			   "    Will elliminate invariant exit %i->%i\n",
  			   e->src->index, e->dest->index);
  		invariant_exits->add (e);
  	      }
--- 457,463 ----
  	      {
  		if (dump_file && (dump_flags & TDF_DETAILS))
  		  fprintf (dump_file,
! 			   "    Will eliminate invariant exit %i->%i\n",
  			   e->src->index, e->dest->index);
  		invariant_exits->add (e);
  	      }
*************** should_duplicate_loop_header_p (basic_bl
*** 500,506 ****
    *limit -= insns;
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file,
! 	     "    Acconting stmt as %i insns\n", insns);
    if (*limit < 0)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
--- 500,506 ----
    *limit -= insns;
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file,
! 	     "    Accounting stmt as %i insns\n", insns);
    if (*limit < 0)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
*************** public:
*** 737,743 ****
    /* opt_pass methods: */
    bool gate (function *) final override { return flag_tree_ch != 0; }
  
!   /* Initialize and finalize loop structures, copying headers inbetween.  */
    unsigned int execute (function *) final override;
  
    opt_pass * clone () final override { return new pass_ch (m_ctxt); }
--- 737,743 ----
    /* opt_pass methods: */
    bool gate (function *) final override { return flag_tree_ch != 0; }
  
!   /* Initialize and finalize loop structures, copying headers in between.  */
    unsigned int execute (function *) final override;
  
    opt_pass * clone () final override { return new pass_ch (m_ctxt); }
*************** ch_base::copy_headers (function *fun)
*** 1019,1068 ****
        delete candidate.invariant_exits;
        copied.safe_push (std::make_pair (entry, loop));
  
-       /* If the loop has the form "for (i = j; i < j + 10; i++)" then
- 	 this copying can introduce a case where we rely on undefined
- 	 signed overflow to eliminate the preheader condition, because
- 	 we assume that "j < j + 10" is true.  We don't want to warn
- 	 about that case for -Wstrict-overflow, because in general we
- 	 don't warn about overflow involving loops.  Prevent the
- 	 warning by setting the no_warning flag in the condition.  */
-       if (warn_strict_overflow > 0)
- 	{
- 	  unsigned int i;
- 
- 	  for (i = 0; i < n_bbs; ++i)
- 	    {
- 	      gimple_stmt_iterator bsi;
- 
- 	      for (bsi = gsi_start_bb (copied_bbs[i]);
- 		   !gsi_end_p (bsi);
- 		   gsi_next (&bsi))
- 		{
- 		  gimple *stmt = gsi_stmt (bsi);
- 		  if (gimple_code (stmt) == GIMPLE_COND)
- 		    {
- 		      tree lhs = gimple_cond_lhs (stmt);
- 		      if (gimple_cond_code (stmt) != EQ_EXPR
- 			  && gimple_cond_code (stmt) != NE_EXPR
- 			  && INTEGRAL_TYPE_P (TREE_TYPE (lhs))
- 			  && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (lhs)))
- 			suppress_warning (stmt, OPT_Wstrict_overflow_);
- 		    }
- 		  else if (is_gimple_assign (stmt))
- 		    {
- 		      enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
- 		      tree rhs1 = gimple_assign_rhs1 (stmt);
- 		      if (TREE_CODE_CLASS (rhs_code) == tcc_comparison
- 			  && rhs_code != EQ_EXPR
- 			  && rhs_code != NE_EXPR
- 			  && INTEGRAL_TYPE_P (TREE_TYPE (rhs1))
- 			  && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (rhs1)))
- 			suppress_warning (stmt, OPT_Wstrict_overflow_);
- 		    }
- 		}
- 	    }
- 	}
- 
        /* Update header of the loop.  */
        loop->header = header;
        /* Find correct latch.  We only duplicate chain of conditionals so
--- 1019,1024 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-im.cc gcc-17-20260531/gcc/tree-ssa-loop-im.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-im.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-im.cc	Sun May 31 22:32:13 2026
*************** static bitmap_obstack lim_bitmap_obstack
*** 261,267 ****
  static obstack mem_ref_obstack;
  
  static bool ref_indep_loop_p (class loop *, im_mem_ref *, dep_kind);
! static bool ref_always_accessed_p (class loop *, im_mem_ref *, bool);
  static bool refs_independent_p (im_mem_ref *, im_mem_ref *, bool = true);
  
  /* Minimum cost of an expensive expression.  */
--- 261,267 ----
  static obstack mem_ref_obstack;
  
  static bool ref_indep_loop_p (class loop *, im_mem_ref *, dep_kind);
! static bool ref_always_stored_p (class loop *, im_mem_ref *);
  static bool refs_independent_p (im_mem_ref *, im_mem_ref *, bool = true);
  
  /* Minimum cost of an expensive expression.  */
*************** get_coldest_out_loop (class loop *outerm
*** 493,499 ****
  	      || flow_loop_nested_p (outermost_loop, loop));
  
    /* If bb_colder_than_loop_preheader returns false due to three-state
!     comparision, OUTERMOST_LOOP is returned finally to preserve the behavior.
      Otherwise, return the coldest loop between OUTERMOST_LOOP and LOOP.  */
    if (curr_bb && bb_colder_than_loop_preheader (curr_bb, loop))
      return NULL;
--- 493,499 ----
  	      || flow_loop_nested_p (outermost_loop, loop));
  
    /* If bb_colder_than_loop_preheader returns false due to three-state
!     comparison, OUTERMOST_LOOP is returned finally to preserve the behavior.
      Otherwise, return the coldest loop between OUTERMOST_LOOP and LOOP.  */
    if (curr_bb && bb_colder_than_loop_preheader (curr_bb, loop))
      return NULL;
*************** determine_max_movement (gimple *stmt, bo
*** 855,861 ****
  	  if (!extract_true_false_args_from_phi (dom, phi, NULL, NULL))
  	    return false;
  
! 	/* Check if one of the depedent statement is a vector compare whether
  	   the target supports it,  otherwise it's invalid to hoist it out of
  	   the gcond it belonged to.  */
  	if (VECTOR_TYPE_P (TREE_TYPE (gimple_cond_lhs (cond))))
--- 855,861 ----
  	  if (!extract_true_false_args_from_phi (dom, phi, NULL, NULL))
  	    return false;
  
! 	/* Check if one of the dependent statement is a vector compare whether
  	   the target supports it,  otherwise it's invalid to hoist it out of
  	   the gcond it belonged to.  */
  	if (VECTOR_TYPE_P (TREE_TYPE (gimple_cond_lhs (cond))))
*************** execute_sm (class loop *loop, im_mem_ref
*** 2319,2325 ****
    fmt_data.orig_loop = loop;
    for_each_index (&ref->mem.ref, force_move_till, &fmt_data);
  
!   bool always_stored = ref_always_accessed_p (loop, ref, true);
    if (maybe_mt
        && (bb_in_transaction (loop_preheader_edge (loop)->src)
  	  || (ref_can_have_store_data_races (ref->mem.ref) && ! always_stored)
--- 2319,2325 ----
    fmt_data.orig_loop = loop;
    for_each_index (&ref->mem.ref, force_move_till, &fmt_data);
  
!   bool always_stored = ref_always_stored_p (loop, ref);
    if (maybe_mt
        && (bb_in_transaction (loop_preheader_edge (loop)->src)
  	  || (ref_can_have_store_data_races (ref->mem.ref) && ! always_stored)
*************** execute_sm_exit (class loop *loop, edge
*** 2416,2422 ****
  	      tree lhs = gimple_assign_lhs (ref->accesses_in_loop[0].stmt);
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "Re-issueing dependent ");
  		  print_generic_expr (dump_file, unshare_expr (seq[i-1].from));
  		  fprintf (dump_file, " of ");
  		  print_generic_expr (dump_file, lhs);
--- 2416,2422 ----
  	      tree lhs = gimple_assign_lhs (ref->accesses_in_loop[0].stmt);
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "Re-issuing dependent ");
  		  print_generic_expr (dump_file, unshare_expr (seq[i-1].from));
  		  fprintf (dump_file, " of ");
  		  print_generic_expr (dump_file, lhs);
*************** execute_sm_exit (class loop *loop, edge
*** 2431,2437 ****
  	    {
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "Re-issueing dependent store of ");
  		  print_generic_expr (dump_file, ref->mem.ref);
  		  fprintf (dump_file, " from loop %d on exit %d -> %d\n",
  			   loop->num, ex->src->index, ex->dest->index);
--- 2431,2437 ----
  	    {
  	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "Re-issuing dependent store of ");
  		  print_generic_expr (dump_file, ref->mem.ref);
  		  fprintf (dump_file, " from loop %d on exit %d -> %d\n",
  			   loop->num, ex->src->index, ex->dest->index);
*************** execute_sm_exit (class loop *loop, edge
*** 2462,2468 ****
  
  /* Push the SM candidate at index PTR in the sequence SEQ down until
     we hit the next SM candidate.  Return true if that went OK and
!    false if we could not disambiguate agains another unrelated ref.
     Update *AT to the index where the candidate now resides.  */
  
  static bool
--- 2462,2468 ----
  
  /* Push the SM candidate at index PTR in the sequence SEQ down until
     we hit the next SM candidate.  Return true if that went OK and
!    false if we could not disambiguate against another unrelated ref.
     Update *AT to the index where the candidate now resides.  */
  
  static bool
*************** hoist_memory_references (class loop *loo
*** 2778,2784 ****
    bitmap_iterator bi;
  
    /* There's a special case we can use ordered re-materialization for
!      conditionally excuted stores which is when all stores in the loop
       happen in the same basic-block.  In that case we know we'll reach
       all stores and thus can simply process that BB and emit a single
       conditional block of ordered materializations.  See PR102436.  */
--- 2778,2784 ----
    bitmap_iterator bi;
  
    /* There's a special case we can use ordered re-materialization for
!      conditionally executed stores which is when all stores in the loop
       happen in the same basic-block.  In that case we know we'll reach
       all stores and thus can simply process that BB and emit a single
       conditional block of ordered materializations.  See PR102436.  */
*************** hoist_memory_references (class loop *loo
*** 3104,3139 ****
      delete (*iter).second;
  }
  
! class ref_always_accessed
  {
  public:
!   ref_always_accessed (class loop *loop_, bool stored_p_)
!       : loop (loop_), stored_p (stored_p_) {}
    bool operator () (mem_ref_loc *loc);
    class loop *loop;
-   bool stored_p;
  };
  
  bool
! ref_always_accessed::operator () (mem_ref_loc *loc)
  {
!   class loop *must_exec;
  
    struct lim_aux_data *lim_data = get_lim_data (loc->stmt);
    if (!lim_data)
      return false;
  
!   /* If we require an always executed store make sure the statement
!      is a store.  */
!   if (stored_p)
!     {
!       tree lhs = gimple_get_lhs (loc->stmt);
!       if (!lhs
! 	  || !(DECL_P (lhs) || REFERENCE_CLASS_P (lhs)))
! 	return false;
!     }
! 
!   must_exec = lim_data->always_executed_in;
    if (!must_exec)
      return false;
  
--- 3104,3132 ----
      delete (*iter).second;
  }
  
! class ref_always_stored
  {
  public:
!   ref_always_stored (class loop *loop_)
!       : loop (loop_) {}
    bool operator () (mem_ref_loc *loc);
    class loop *loop;
  };
  
  bool
! ref_always_stored::operator () (mem_ref_loc *loc)
  {
!   /* Make sure the statement is a store.  */
!   tree lhs = gimple_get_lhs (loc->stmt);
!   if (!lhs
!       || !(DECL_P (lhs) || REFERENCE_CLASS_P (lhs)))
!     return false;
  
    struct lim_aux_data *lim_data = get_lim_data (loc->stmt);
    if (!lim_data)
      return false;
  
!   class loop *must_exec = lim_data->always_executed_in;
    if (!must_exec)
      return false;
  
*************** ref_always_accessed::operator () (mem_re
*** 3144,3157 ****
    return false;
  }
  
! /* Returns true if REF is always accessed in LOOP.  If STORED_P is true
!    make sure REF is always stored to in LOOP.  */
  
  static bool
! ref_always_accessed_p (class loop *loop, im_mem_ref *ref, bool stored_p)
  {
!   return for_all_locs_in_loop (loop, ref,
! 			       ref_always_accessed (loop, stored_p));
  }
  
  /* Returns true if LOAD_REF and STORE_REF form a "self write" pattern
--- 3137,3148 ----
    return false;
  }
  
! /* Returns true if REF is always stored in LOOP.  */
  
  static bool
! ref_always_stored_p (class loop *loop, im_mem_ref *ref)
  {
!   return for_all_locs_in_loop (loop, ref, ref_always_stored (loop));
  }
  
  /* Returns true if LOAD_REF and STORE_REF form a "self write" pattern
*************** can_sm_ref_p (class loop *loop, im_mem_r
*** 3384,3390 ****
  	 stored to later anyway.  So this would only guard
  	 the load we need to emit.  Thus when the ref is not
  	 loaded we can elide this completely?  */
!       && !ref_always_accessed_p (loop, ref, true))
      return false;
  
    /* Verify all loads of ref can be hoisted.  */
--- 3375,3381 ----
  	 stored to later anyway.  So this would only guard
  	 the load we need to emit.  Thus when the ref is not
  	 loaded we can elide this completely?  */
!       && !ref_always_stored_p (loop, ref))
      return false;
  
    /* Verify all loads of ref can be hoisted.  */
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-ivcanon.cc gcc-17-20260531/gcc/tree-ssa-loop-ivcanon.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-ivcanon.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-ivcanon.cc	Sun May 31 22:32:13 2026
*************** constant_after_peeling (tree op, gimple
*** 254,260 ****
  }
  
  /* Computes an estimated number of insns in LOOP.
!    EXIT (if non-NULL) is an exite edge that will be eliminated in all but last
     iteration of the loop.
     EDGE_TO_CANCEL (if non-NULL) is an non-exit edge eliminated in the last iteration
     of loop.
--- 254,260 ----
  }
  
  /* Computes an estimated number of insns in LOOP.
!    EXIT (if non-NULL) is an exit edge that will be eliminated in all but last
     iteration of the loop.
     EDGE_TO_CANCEL (if non-NULL) is an non-exit edge eliminated in the last iteration
     of loop.
*************** loop_edge_to_cancel (class loop *loop)
*** 514,520 ****
    FOR_EACH_VEC_ELT (exits, i, edge_to_cancel)
      {
         /* Find the other edge than the loop exit
!           leaving the conditoinal.  */
         if (EDGE_COUNT (edge_to_cancel->src->succs) != 2)
           continue;
         if (EDGE_SUCC (edge_to_cancel->src, 0) == edge_to_cancel)
--- 514,520 ----
    FOR_EACH_VEC_ELT (exits, i, edge_to_cancel)
      {
         /* Find the other edge than the loop exit
!           leaving the conditional.  */
         if (EDGE_COUNT (edge_to_cancel->src->succs) != 2)
           continue;
         if (EDGE_SUCC (edge_to_cancel->src, 0) == edge_to_cancel)
*************** static bitmap peeled_loops;
*** 674,680 ****
     IRRED_INVALIDATED is used to bookkeep if information about
     irreducible regions may become invalid as a result
     of the transformation.
!    LOOP_CLOSED_SSA_INVALIDATED is used to bookkepp the case
     when we need to go into loop closed SSA form.  */
  
  void
--- 674,680 ----
     IRRED_INVALIDATED is used to bookkeep if information about
     irreducible regions may become invalid as a result
     of the transformation.
!    LOOP_CLOSED_SSA_INVALIDATED is used to bookkeep the case
     when we need to go into loop closed SSA form.  */
  
  void
*************** unloop_loops (vec<class loop *> &loops_t
*** 737,743 ****
  /* Tries to unroll LOOP completely, i.e. NITER times.
     UL determines which loops we are allowed to unroll.
     EXIT is the exit of the loop that should be eliminated.
!    MAXITER specfy bound on number of iterations, -1 if it is
     not known or too large for HOST_WIDE_INT.  The location
     LOCUS corresponding to the loop is used when emitting
     a summary of the unroll to the dump file.  */
--- 737,743 ----
  /* Tries to unroll LOOP completely, i.e. NITER times.
     UL determines which loops we are allowed to unroll.
     EXIT is the exit of the loop that should be eliminated.
!    MAXITER specify bound on number of iterations, -1 if it is
     not known or too large for HOST_WIDE_INT.  The location
     LOCUS corresponding to the loop is used when emitting
     a summary of the unroll to the dump file.  */
*************** try_unroll_loop_completely (class loop *
*** 871,877 ****
  	      <= ninsns + (size.constant_iv != false))
  	    ;
  	  /* We unroll only inner loops, because we do not consider it
! 	     profitable otheriwse.  We still can cancel loopback edge
  	     of not rolling loop; this is always a good idea.  */
  	  else if (ul == UL_NO_GROWTH)
  	    {
--- 871,877 ----
  	      <= ninsns + (size.constant_iv != false))
  	    ;
  	  /* We unroll only inner loops, because we do not consider it
! 	     profitable otherwise.  We still can cancel loopback edge
  	     of not rolling loop; this is always a good idea.  */
  	  else if (ul == UL_NO_GROWTH)
  	    {
*************** adjust_loop_info_after_peeling (class lo
*** 1067,1073 ****
  	 iterations are special, it is not quite correct to
  	 assume that the remaining iterations will behave
  	 the same way.  However we do not have better info
! 	 so update the esitmate, since it is likely better
  	 than keeping it as it is.
  
  	 Remove it if it looks wrong.
--- 1067,1073 ----
  	 iterations are special, it is not quite correct to
  	 assume that the remaining iterations will behave
  	 the same way.  However we do not have better info
! 	 so update the estimate, since it is likely better
  	 than keeping it as it is.
  
  	 Remove it if it looks wrong.
*************** tree_unroll_loops_completely_1 (bool may
*** 1528,1534 ****
  /* Unroll LOOPS completely if they iterate just few times.  Unless
     MAY_INCREASE_SIZE is true, perform the unrolling only if the
     size of the code does not increase.
!    cunrolli is true when passs is cunrolli.  */
  
  static unsigned int
  tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer, bool cunrolli)
--- 1528,1534 ----
  /* Unroll LOOPS completely if they iterate just few times.  Unless
     MAY_INCREASE_SIZE is true, perform the unrolling only if the
     size of the code does not increase.
!    cunrolli is true when pass is cunrolli.  */
  
  static unsigned int
  tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer, bool cunrolli)
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-ivopts.cc gcc-17-20260531/gcc/tree-ssa-loop-ivopts.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-ivopts.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-ivopts.cc	Sun May 31 22:32:13 2026
*************** struct iv_inv_expr_ent
*** 524,530 ****
  {
    /* Tree expression of the entry.  */
    tree expr;
!   /* Unique indentifier.  */
    int id;
    /* Hash value.  */
    hashval_t hash;
--- 524,530 ----
  {
    /* Tree expression of the entry.  */
    tree expr;
!   /* Unique identifier.  */
    int id;
    /* Hash value.  */
    hashval_t hash;
*************** dump_cand (FILE *file, struct iv_cand *c
*** 869,875 ****
  
    if (cand->var_before)
      {
!       fprintf (file, "  Var befor: ");
        print_generic_expr (file, cand->var_before, TDF_SLIM);
        fprintf (file, "\n");
      }
--- 869,875 ----
  
    if (cand->var_before)
      {
!       fprintf (file, "  Var before: ");
        print_generic_expr (file, cand->var_before, TDF_SLIM);
        fprintf (file, "\n");
      }
*************** group_compare_offset (const void *a, con
*** 2578,2584 ****
     contains more than two uses with distinct addr_offsets.  Return
     false otherwise.  We want to split such groups because:
  
!      1) Small groups don't have much benefit and may interfer with
  	general candidate selection.
       2) Size for problem with only small groups is usually small and
  	general algorithm can handle it well.
--- 2578,2584 ----
     contains more than two uses with distinct addr_offsets.  Return
     false otherwise.  We want to split such groups because:
  
!      1) Small groups don't have much benefit and may interfere with
  	general candidate selection.
       2) Size for problem with only small groups is usually small and
  	general algorithm can handle it well.
*************** split_address_groups (struct ivopts_data
*** 2658,2664 ****
  	  struct iv_use *next = group->vuses[j];
  	  poly_int64 offset = next->addr_offset - use->addr_offset;
  
! 	  /* Split group if aksed to, or the offset against the first
  	     use can't fit in offset part of addressing mode.  IV uses
  	     having the same offset are still kept in one group.  */
  	  if (maybe_ne (offset, 0)
--- 2658,2664 ----
  	  struct iv_use *next = group->vuses[j];
  	  poly_int64 offset = next->addr_offset - use->addr_offset;
  
! 	  /* Split group if asked to, or the offset against the first
  	     use can't fit in offset part of addressing mode.  IV uses
  	     having the same offset are still kept in one group.  */
  	  if (maybe_ne (offset, 0)
*************** get_computation_aff_1 (struct ivopts_dat
*** 3997,4003 ****
  	  inner_type = TREE_TYPE (inner_base);
  	  /* If candidate is added from a biv whose type is smaller than
  	     ctype, we know both candidate and the biv won't overflow.
! 	     In this case, it's safe to skip the convertion in candidate.
  	     As an example, (unsigned short)((unsigned long)A) equals to
  	     (unsigned short)A, if A has a type no larger than short.  */
  	  if (TYPE_PRECISION (inner_type) <= TYPE_PRECISION (uutype))
--- 3997,4003 ----
  	  inner_type = TREE_TYPE (inner_base);
  	  /* If candidate is added from a biv whose type is smaller than
  	     ctype, we know both candidate and the biv won't overflow.
! 	     In this case, it's safe to skip the conversion in candidate.
  	     As an example, (unsigned short)((unsigned long)A) equals to
  	     (unsigned short)A, if A has a type no larger than short.  */
  	  if (TYPE_PRECISION (inner_type) <= TYPE_PRECISION (uutype))
*************** iv_ca_dump (struct ivopts_data *data, FI
*** 6626,6632 ****
  /* Try changing candidate in IVS to CAND for each use.  Return cost of the
     new set, and store differences in DELTA.  Number of induction variables
     in the new set is stored to N_IVS. MIN_NCAND is a flag. When it is true
!    the function will try to find a solution with mimimal iv candidates.  */
  
  static comp_cost
  iv_ca_extend (struct ivopts_data *data, class iv_ca *ivs,
--- 6626,6632 ----
  /* Try changing candidate in IVS to CAND for each use.  Return cost of the
     new set, and store differences in DELTA.  Number of induction variables
     in the new set is stored to N_IVS. MIN_NCAND is a flag. When it is true
!    the function will try to find a solution with minimal iv candidates.  */
  
  static comp_cost
  iv_ca_extend (struct ivopts_data *data, class iv_ca *ivs,
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-niter.cc gcc-17-20260531/gcc/tree-ssa-loop-niter.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-niter.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-niter.cc	Sun May 31 22:32:13 2026
*************** number_of_iterations_ne (class loop *loo
*** 1030,1036 ****
       Note, for NE_EXPR, base equals to FINAL is a special case, in
       which the loop exits immediately, and the iv does not overflow.
  
!      Also note, we prove condition 2) by checking base and final seperately
       along with condition 1) or 1').  Since we ensure the difference
       computation of c does not wrap with cond below and the adjusted s
       will fit a signed type as well as an unsigned we can safely do
--- 1030,1036 ----
       Note, for NE_EXPR, base equals to FINAL is a special case, in
       which the loop exits immediately, and the iv does not overflow.
  
!      Also note, we prove condition 2) by checking base and final separately
       along with condition 1) or 1').  Since we ensure the difference
       computation of c does not wrap with cond below and the adjusted s
       will fit a signed type as well as an unsigned we can safely do
*************** number_of_iterations_popcount (loop_p lo
*** 2129,2135 ****
  
    /* Check that _1 is defined by (_1 = iv_1 + -1).
       Also make sure that _1 is the same in and_stmt and _1 defining stmt.
!      Also canonicalize if _1 and _b11 are revrsed.  */
    if (ssa_defined_by_minus_one_stmt_p (iv_1, _1))
      std::swap (iv_1, _1);
    else if (ssa_defined_by_minus_one_stmt_p (_1, iv_1))
--- 2129,2135 ----
  
    /* Check that _1 is defined by (_1 = iv_1 + -1).
       Also make sure that _1 is the same in and_stmt and _1 defining stmt.
!      Also canonicalize if _1 and _b11 are reversed.  */
    if (ssa_defined_by_minus_one_stmt_p (iv_1, _1))
      std::swap (iv_1, _1);
    else if (ssa_defined_by_minus_one_stmt_p (_1, iv_1))
*************** expand_simple_operations (tree expr, tre
*** 2842,2850 ****
        if (!ret)
  	return expr;
  
-       fold_defer_overflow_warnings ();
        ret = fold (ret);
-       fold_undefer_and_ignore_overflow_warnings ();
        return ret;
      }
  
--- 2842,2848 ----
*************** number_of_iterations_exit_assumptions (c
*** 3288,3297 ****
    if (iv0_niters && iv1_niters)
      return false;
  
-   /* We don't want to see undefined signed overflow warnings while
-      computing the number of iterations.  */
-   fold_defer_overflow_warnings ();
- 
    iv0.base = expand_simple_operations (iv0.base);
    iv1.base = expand_simple_operations (iv1.base);
    bool body_from_caller = true;
--- 3286,3291 ----
*************** number_of_iterations_exit_assumptions (c
*** 3306,3312 ****
    if (!number_of_iterations_cond (loop, type, &iv0, code, &iv1, niter,
  				  only_exit_p, safe))
      {
-       fold_undefer_and_ignore_overflow_warnings ();
        return false;
      }
  
--- 3300,3305 ----
*************** number_of_iterations_exit_assumptions (c
*** 3349,3356 ****
  	  = simplify_using_initial_conditions (loop,
  					       niter->may_be_zero);
  
-   fold_undefer_and_ignore_overflow_warnings ();
- 
    /* If NITER has simplified into a constant, update MAX.  */
    if (TREE_CODE (niter->niter) == INTEGER_CST)
      niter->max = wi::to_widest (niter->niter);
--- 3342,3347 ----
*************** loop_niter_by_eval (class loop *loop, ed
*** 3747,3755 ****
  	}
      }
  
-   /* Don't issue signed overflow warnings.  */
-   fold_defer_overflow_warnings ();
- 
    for (i = 0; i < MAX_ITERATIONS_TO_TRACK; i++)
      {
        for (j = 0; j < 2; j++)
--- 3738,3743 ----
*************** loop_niter_by_eval (class loop *loop, ed
*** 3758,3764 ****
        acnd = fold_binary (cmp, boolean_type_node, aval[0], aval[1]);
        if (acnd && integer_zerop (acnd))
  	{
- 	  fold_undefer_and_ignore_overflow_warnings ();
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    fprintf (dump_file,
  		     "Proved that loop %d iterates %d times using brute force.\n",
--- 3746,3751 ----
*************** loop_niter_by_eval (class loop *loop, ed
*** 3771,3780 ****
  	  aval[j] = val[j];
  	  val[j] = get_val_for (next[j], val[j]);
  	  if (!is_gimple_min_invariant (val[j]))
! 	    {
! 	      fold_undefer_and_ignore_overflow_warnings ();
! 	      return chrec_dont_know;
! 	    }
  	}
  
        /* If the next iteration would use the same base values
--- 3758,3764 ----
  	  aval[j] = val[j];
  	  val[j] = get_val_for (next[j], val[j]);
  	  if (!is_gimple_min_invariant (val[j]))
! 	    return chrec_dont_know;
  	}
  
        /* If the next iteration would use the same base values
*************** loop_niter_by_eval (class loop *loop, ed
*** 3784,3791 ****
  	break;
      }
  
-   fold_undefer_and_ignore_overflow_warnings ();
- 
    return chrec_dont_know;
  }
  
--- 3768,3773 ----
*************** idx_infer_loop_bounds (tree base, tree *
*** 4361,4367 ****
        && tree_int_cst_compare (next, high) <= 0)
      return true;
  
!   /* If access is not executed on every iteration, we must ensure that overlow
       may not make the access valid later.  */
    if (!dominated_by_p (CDI_DOMINATORS, loop->latch, gimple_bb (data->stmt)))
      {
--- 4343,4349 ----
        && tree_int_cst_compare (next, high) <= 0)
      return true;
  
!   /* If access is not executed on every iteration, we must ensure that overflow
       may not make the access valid later.  */
    if (!dominated_by_p (CDI_DOMINATORS, loop->latch, gimple_bb (data->stmt)))
      {
*************** infer_loop_bounds_from_signedness (class
*** 4537,4543 ****
    record_nonwrapping_iv (loop, base, step, stmt, low, high, false, true);
  }
  
! /* The following analyzers are extracting informations on the bounds
     of LOOP from the following undefined behaviors:
  
     - data references should not access elements over the statically
--- 4519,4525 ----
    record_nonwrapping_iv (loop, base, step, stmt, low, high, false, true);
  }
  
! /* The following analyzers are extracting information on the bounds
     of LOOP from the following undefined behaviors:
  
     - data references should not access elements over the statically
*************** discover_iteration_bound_by_body_walk (c
*** 4736,4742 ****
  	      if (entry && *entry < bound_index)
  		bound_index = *entry;
  
! 	      /* Insert succesors into the queue, watch for latch edge
  		 and record greatest index we saw.  */
  	      FOR_EACH_EDGE (e, ei, bb->succs)
  		{
--- 4718,4724 ----
  	      if (entry && *entry < bound_index)
  		bound_index = *entry;
  
! 	      /* Insert successors into the queue, watch for latch edge
  		 and record greatest index we saw.  */
  	      FOR_EACH_EDGE (e, ei, bb->succs)
  		{
*************** discover_iteration_bound_by_body_walk (c
*** 4784,4790 ****
  }
  
  /* See if every path cross the loop goes through a statement that is known
!    to not execute at the last iteration. In that case we can decrese iteration
     count by 1.  */
  
  static void
--- 4766,4772 ----
  }
  
  /* See if every path cross the loop goes through a statement that is known
!    to not execute at the last iteration. In that case we can decrease iteration
     count by 1.  */
  
  static void
*************** estimated_stmt_executions (class loop *l
*** 5242,5255 ****
  void
  estimate_numbers_of_iterations (function *fn)
  {
-   /* We don't want to issue signed overflow warnings while getting
-      loop iteration estimates.  */
-   fold_defer_overflow_warnings ();
- 
    for (auto loop : loops_list (fn, 0))
      estimate_numbers_of_iterations (loop);
- 
-   fold_undefer_and_ignore_overflow_warnings ();
  }
  
  /* Returns true if statement S1 dominates statement S2.  */
--- 5224,5231 ----
*************** loop_exits_before_overflow (tree base, t
*** 5394,5402 ****
    tree type = TREE_TYPE (step);
    tree unsigned_type, valid_niter;
  
-   /* Don't issue signed overflow warnings.  */
-   fold_defer_overflow_warnings ();
- 
    /* Compute the number of iterations before we reach the bound of the
       type, and verify that the loop is exited before this occurs.  */
    unsigned_type = unsigned_type_for (type);
--- 5370,5375 ----
*************** loop_exits_before_overflow (tree base, t
*** 5428,5447 ****
  			   wide_int_to_tree (TREE_TYPE (valid_niter),
  					     niter))) != NULL
        && integer_nonzerop (e))
!     {
!       fold_undefer_and_ignore_overflow_warnings ();
!       return true;
!     }
    if (at_stmt)
      for (bound = loop->bounds; bound; bound = bound->next)
        {
  	if (n_of_executions_at_most (at_stmt, bound, valid_niter))
! 	  {
! 	    fold_undefer_and_ignore_overflow_warnings ();
! 	    return true;
! 	  }
        }
-   fold_undefer_and_ignore_overflow_warnings ();
  
    /* Try to prove loop is exited before {base, step} overflows with the
       help of analyzed loop control IV.  This is done only for IVs with
--- 5401,5413 ----
  			   wide_int_to_tree (TREE_TYPE (valid_niter),
  					     niter))) != NULL
        && integer_nonzerop (e))
!     return true;
    if (at_stmt)
      for (bound = loop->bounds; bound; bound = bound->next)
        {
  	if (n_of_executions_at_most (at_stmt, bound, valid_niter))
! 	  return true;
        }
  
    /* Try to prove loop is exited before {base, step} overflows with the
       help of analyzed loop control IV.  This is done only for IVs with
*************** loop_exits_before_overflow (tree base, t
*** 5572,5578 ****
       }
  
     VAR _6 doesn't overflow only with pre-condition (i_21 != 0), here we
!    can't use _6 to prove no-overlfow for _7.  In fact, var _7 takes value
     sequence (4294967295, 0, 1, ..., 65533) in loop life time, rather than
     (4294967295, 4294967296, ...).  */
  
--- 5538,5544 ----
       }
  
     VAR _6 doesn't overflow only with pre-condition (i_21 != 0), here we
!    can't use _6 to prove no-overflow for _7.  In fact, var _7 takes value
     sequence (4294967295, 0, 1, ..., 65533) in loop life time, rather than
     (4294967295, 4294967296, ...).  */
  
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-niter.h gcc-17-20260531/gcc/tree-ssa-loop-niter.h
*** gcc-17-20260524/gcc/tree-ssa-loop-niter.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-niter.h	Sun May 31 22:32:13 2026
***************
*** 1,4 ****
! /* Header file for loop interation estimates.
     Copyright (C) 2013-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Header file for loop iteration estimates.
     Copyright (C) 2013-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-prefetch.cc gcc-17-20260531/gcc/tree-ssa-loop-prefetch.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-prefetch.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-prefetch.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 131,137 ****
        heuristic that disables prefetching in a loop if the prefetching
        cost is above a certain limit.  The relative prefetching cost is
        estimated by taking the ratio between the prefetch count and the
!       total intruction count (this models the I-cache cost).
  
     The limits used in these heuristics are defined as parameters with
     reasonable default values. Machine-specific default values will be
--- 131,137 ----
        heuristic that disables prefetching in a loop if the prefetching
        cost is above a certain limit.  The relative prefetching cost is
        estimated by taking the ratio between the prefetch count and the
!       total instruction count (this models the I-cache cost).
  
     The limits used in these heuristics are defined as parameters with
     reasonable default values. Machine-specific default values will be
*************** should_issue_prefetch_p (struct mem_ref
*** 1015,1021 ****
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Step for reference %u:%u (" HOST_WIDE_INT_PRINT_DEC
! 		 ") is less than the mininum required stride of %d\n",
  		 ref->group->uid, ref->uid, int_cst_value (ref->group->step),
  		 param_prefetch_minimum_stride);
        return false;
--- 1015,1021 ----
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Step for reference %u:%u (" HOST_WIDE_INT_PRINT_DEC
! 		 ") is less than the minimum required stride of %d\n",
  		 ref->group->uid, ref->uid, int_cst_value (ref->group->step),
  		 param_prefetch_minimum_stride);
        return false;
*************** schedule_prefetches (struct mem_ref_grou
*** 1081,1087 ****
  	  continue;
  
          /* The loop is far from being sufficiently unrolled for this
!            prefetch.  Do not generate prefetch to avoid many redudant
             prefetches.  */
          if (ref->prefetch_mod / unroll_factor > PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO)
            continue;
--- 1081,1087 ----
  	  continue;
  
          /* The loop is far from being sufficiently unrolled for this
!            prefetch.  Do not generate prefetch to avoid many redundant
             prefetches.  */
          if (ref->prefetch_mod / unroll_factor > PREFETCH_MOD_TO_UNROLL_FACTOR_RATIO)
            continue;
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-loop-split.cc gcc-17-20260531/gcc/tree-ssa-loop-split.cc
*** gcc-17-20260524/gcc/tree-ssa-loop-split.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-loop-split.cc	Sun May 31 22:32:13 2026
*************** split_loop (class loop *loop1)
*** 730,736 ****
  	   they increase expected loop count, so account this accordingly.
  	   If we do not know the probability of split conditional, avoid
  	   reudcing loop estimates, since we do not really know how they are
! 	   split between of the two new loops.  Keep orignal estimate since
  	   it is likely better then completely dropping it.
  
  	   TODO: If we know that one of the new loops has constant
--- 730,736 ----
  	   they increase expected loop count, so account this accordingly.
  	   If we do not know the probability of split conditional, avoid
  	   reudcing loop estimates, since we do not really know how they are
! 	   split between of the two new loops.  Keep original estimate since
  	   it is likely better then completely dropping it.
  
  	   TODO: If we know that one of the new loops has constant
*************** split_loop (class loop *loop1)
*** 747,753 ****
  		? loop2_edge->probability.to_sreal () : (sreal)1;
  	    sreal div1 = loop1_prob.initialized_p ()
  			 ? loop1_prob.to_sreal () : (sreal)1/(sreal)2;
! 	    /* +1 to get header interations rather than latch iterations and then
  	       -1 to convert back.  */
  	    if (div1 != 0)
  	      loop1->nb_iterations_estimate
--- 747,753 ----
  		? loop2_edge->probability.to_sreal () : (sreal)1;
  	    sreal div1 = loop1_prob.initialized_p ()
  			 ? loop1_prob.to_sreal () : (sreal)1/(sreal)2;
! 	    /* +1 to get header iterations rather than latch iterations and then
  	       -1 to convert back.  */
  	    if (div1 != 0)
  	      loop1->nb_iterations_estimate
*************** find_vdef_in_loop (struct loop *loop)
*** 958,964 ****
  
  /* Two basic blocks have equivalent control dependency if one dominates to
     the other, and it is post-dominated by the latter.  Given a basic block
!    BB in LOOP, find farest equivalent dominating basic block.  For BB, there
     is a constraint that BB does not post-dominate loop header of LOOP, this
     means BB is control-dependent on at least one basic block in LOOP.  */
  
--- 958,964 ----
  
  /* Two basic blocks have equivalent control dependency if one dominates to
     the other, and it is post-dominated by the latter.  Given a basic block
!    BB in LOOP, find farthest equivalent dominating basic block.  For BB, there
     is a constraint that BB does not post-dominate loop header of LOOP, this
     means BB is control-dependent on at least one basic block in LOOP.  */
  
*************** get_cond_branch_to_split_loop (struct lo
*** 1634,1640 ****
  
     In the graph, loop1 represents the part derived from original one, and
     loop2 is duplicated using loop_version (), which corresponds to the part
!    of original one being splitted out.  In original latch edge of loop1, we
     insert a new conditional statement duplicated from the semi-invariant cond,
     and one of its branch goes back to loop1 header as a latch edge, and the
     other branch goes to loop2 pre-header as an entry edge.  And also in loop2,
--- 1634,1640 ----
  
     In the graph, loop1 represents the part derived from original one, and
     loop2 is duplicated using loop_version (), which corresponds to the part
!    of original one being split out.  In original latch edge of loop1, we
     insert a new conditional statement duplicated from the semi-invariant cond,
     and one of its branch goes back to loop1 header as a latch edge, and the
     other branch goes to loop2 pre-header as an entry edge.  And also in loop2,
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-math-opts.cc gcc-17-20260531/gcc/tree-ssa-math-opts.cc
*** gcc-17-20260524/gcc/tree-ssa-math-opts.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-math-opts.cc	Sun May 31 22:32:13 2026
*************** powi_as_mults (gimple_stmt_iterator *gsi
*** 1580,1586 ****
  /* ARG0 and N are the two arguments to a powi builtin in GSI with
     location info LOC.  If the arguments are appropriate, create an
     equivalent sequence of statements prior to GSI using an optimal
!    number of multiplications, and return an expession holding the
     result.  */
  
  static tree
--- 1580,1586 ----
  /* ARG0 and N are the two arguments to a powi builtin in GSI with
     location info LOC.  If the arguments are appropriate, create an
     equivalent sequence of statements prior to GSI using an optimal
!    number of multiplications, and return an expression holding the
     result.  */
  
  static tree
*************** expand_pow_as_sqrts (gimple_stmt_iterato
*** 1997,2003 ****
  /* ARG0 and ARG1 are the two arguments to a pow builtin call in GSI
     with location info LOC.  If possible, create an equivalent and
     less expensive sequence of statements prior to GSI, and return an
!    expession holding the result.  */
  
  static tree
  gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
--- 1997,2003 ----
  /* ARG0 and ARG1 are the two arguments to a pow builtin call in GSI
     with location info LOC.  If possible, create an equivalent and
     less expensive sequence of statements prior to GSI, and return an
!    expression holding the result.  */
  
  static tree
  gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
*************** gimple_expand_builtin_pow (gimple_stmt_i
*** 2096,2102 ****
  
  
    /* Attempt to expand the POW as a product of square root chains.
!      Expand the 0.25 case even when otpimising for size.  */
    if (flag_unsafe_math_optimizations
        && sqrtfn
        && hw_sqrt_exists
--- 2096,2102 ----
  
  
    /* Attempt to expand the POW as a product of square root chains.
!      Expand the 0.25 case even when optimising for size.  */
    if (flag_unsafe_math_optimizations
        && sqrtfn
        && hw_sqrt_exists
*************** convert_mult_to_widen (gimple *stmt, gim
*** 2737,2743 ****
      return false;
  
    /* if any one of rhs1 and rhs2 is subject to abnormal coalescing,
!      avoid the tranform. */
    if ((TREE_CODE (rhs1) == SSA_NAME
         && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs1))
        || (TREE_CODE (rhs2) == SSA_NAME
--- 2737,2743 ----
      return false;
  
    /* if any one of rhs1 and rhs2 is subject to abnormal coalescing,
!      avoid the transform. */
    if ((TREE_CODE (rhs1) == SSA_NAME
         && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs1))
        || (TREE_CODE (rhs2) == SSA_NAME
*************** convert_mult_to_widen (gimple *stmt, gim
*** 2802,2808 ****
  	}
      }
  
!   /* Ensure that the inputs to the handler are in the correct precison
       for the opcode.  This will be the full mode size.  */
    actual_precision = GET_MODE_PRECISION (actual_mode);
    if (2 * actual_precision > TYPE_PRECISION (type))
--- 2802,2808 ----
  	}
      }
  
!   /* Ensure that the inputs to the handler are in the correct precision
       for the opcode.  This will be the full mode size.  */
    actual_precision = GET_MODE_PRECISION (actual_mode);
    if (2 * actual_precision > TYPE_PRECISION (type))
*************** convert_plusminus_to_widen (gimple_stmt_
*** 3050,3056 ****
    if (handler == CODE_FOR_nothing)
      return false;
  
!   /* Ensure that the inputs to the handler are in the correct precison
       for the opcode.  This will be the full mode size.  */
    actual_precision = GET_MODE_PRECISION (actual_mode);
    if (actual_precision != TYPE_PRECISION (type1)
--- 3050,3056 ----
    if (handler == CODE_FOR_nothing)
      return false;
  
!   /* Ensure that the inputs to the handler are in the correct precision
       for the opcode.  This will be the full mode size.  */
    actual_precision = GET_MODE_PRECISION (actual_mode);
    if (actual_precision != TYPE_PRECISION (type1)
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-phiopt.cc gcc-17-20260531/gcc/tree-ssa-phiopt.cc
*** gcc-17-20260524/gcc/tree-ssa-phiopt.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-phiopt.cc	Sun May 31 22:32:13 2026
*************** replace_phi_edge_with_variable (basic_bl
*** 100,106 ****
  
    /* Duplicate range info if they are the only things setting the target PHI.
       This is needed as later on, the new_tree will be replacing
!      The assignement of the PHI.
       For an example:
       bb1:
       _4 = min<a_1, 255>
--- 100,106 ----
  
    /* Duplicate range info if they are the only things setting the target PHI.
       This is needed as later on, the new_tree will be replacing
!      The assignment of the PHI.
       For an example:
       bb1:
       _4 = min<a_1, 255>
*************** factor_out_conditional_operation (edge e
*** 331,337 ****
  
    gcc_assert (arg0 != NULL_TREE && arg1 != NULL_TREE);
  
!   /* Arugments that are the same don't have anything to be
       done to them. */
    if (operand_equal_for_phi_arg_p (arg0, arg1))
      return false;
--- 331,337 ----
  
    gcc_assert (arg0 != NULL_TREE && arg1 != NULL_TREE);
  
!   /* Arguments that are the same don't have anything to be
       done to them. */
    if (operand_equal_for_phi_arg_p (arg0, arg1))
      return false;
*************** factor_out_conditional_operation (edge e
*** 489,495 ****
  	}
        new_arg1 = fold_convert (TREE_TYPE (new_arg0), arg1);
  
!       /* Drop the overlow that fold_convert might add. */
        if (TREE_OVERFLOW (new_arg1))
  	new_arg1 = drop_tree_overflow (new_arg1);
  
--- 489,495 ----
  	}
        new_arg1 = fold_convert (TREE_TYPE (new_arg0), arg1);
  
!       /* Drop the overflow that fold_convert might add. */
        if (TREE_OVERFLOW (new_arg1))
  	new_arg1 = drop_tree_overflow (new_arg1);
  
*************** cond_removal_in_builtin_zero_pattern (ba
*** 2594,2600 ****
        if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	{
  	  tree type = TREE_TYPE (arg);
! 	  if (TREE_CODE (type) == BITINT_TYPE)
  	    {
  	      if (gimple_call_num_args (call) == 1)
  		{
--- 2594,2600 ----
        if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	{
  	  tree type = TREE_TYPE (arg);
! 	  if (BITINT_TYPE_P (type))
  	    {
  	      if (gimple_call_num_args (call) == 1)
  		{
*************** cond_removal_in_builtin_zero_pattern (ba
*** 2624,2630 ****
        if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	{
  	  tree type = TREE_TYPE (arg);
! 	  if (TREE_CODE (type) == BITINT_TYPE)
  	    {
  	      if (gimple_call_num_args (call) == 1)
  		{
--- 2624,2630 ----
        if (INTEGRAL_TYPE_P (TREE_TYPE (arg)))
  	{
  	  tree type = TREE_TYPE (arg);
! 	  if (BITINT_TYPE_P (type))
  	    {
  	      if (gimple_call_num_args (call) == 1)
  		{
*************** cond_if_else_store_replacement_1 (basic_
*** 3169,3175 ****
  
    if (!is_gimple_reg_type (TREE_TYPE (lhs)))
      {
!       /* Handle clobbers seperately as operand_equal_p does not check
  	 the kind of the clobbers being the same. */
        if (TREE_CLOBBER_P (then_rhs) && TREE_CLOBBER_P (else_rhs))
  	{
--- 3169,3175 ----
  
    if (!is_gimple_reg_type (TREE_TYPE (lhs)))
      {
!       /* Handle clobbers separately as operand_equal_p does not check
  	 the kind of the clobbers being the same. */
        if (TREE_CLOBBER_P (then_rhs) && TREE_CLOBBER_P (else_rhs))
  	{
*************** execute_over_cond_phis (func_type func)
*** 3874,3880 ****
  
     This fully replaces the old "Conditional Replacement",
     "ABS Replacement" and "MIN/MAX Replacement" transformations as they are now
!    implmeneted in match.pd.
  
     Value Replacement
     -----------------
--- 3874,3880 ----
  
     This fully replaces the old "Conditional Replacement",
     "ABS Replacement" and "MIN/MAX Replacement" transformations as they are now
!    implemented in match.pd.
  
     Value Replacement
     -----------------
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-phiprop.cc gcc-17-20260531/gcc/tree-ssa-phiprop.cc
*** gcc-17-20260524/gcc/tree-ssa-phiprop.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-phiprop.cc	Sun May 31 22:32:13 2026
*************** can_handle_load (gimple *load_stmt,
*** 282,288 ****
    if (aggregate)
      {
        /* If the vuse on the load is the same as the expected vuse,
! 	 there are no stores inbetween.  */
        if (vuse == expected_vuse)
  	return vuse;
        if (expected_vuse)
--- 282,288 ----
    if (aggregate)
      {
        /* If the vuse on the load is the same as the expected vuse,
! 	 there are no stores in between.  */
        if (vuse == expected_vuse)
  	return vuse;
        if (expected_vuse)
*************** can_handle_load (gimple *load_stmt,
*** 316,322 ****
      }
  
    /* If the vuse on the load is the same as the expected vuse,
!      there are no stores inbetween.  */
    if (vuse == expected_vuse)
      return vuse;
  
--- 316,322 ----
      }
  
    /* If the vuse on the load is the same as the expected vuse,
!      there are no stores in between.  */
    if (vuse == expected_vuse)
      return vuse;
  
*************** propagate_with_phi (basic_block bb, gphi
*** 559,565 ****
  	  phiprop_insert_phi (bb, phi, use_stmt, phivn, n,
  			      dce_ssa_names, other_vuse);
  
! 	  /* Remove old stmt. The phi and all of maybe its depedencies
  	     will be removed later via simple_dce_from_worklist. */
  	  gsi = gsi_for_stmt (use_stmt);
  	  /* Unlinking the VDEF here is fine as we are sure that we process
--- 559,565 ----
  	  phiprop_insert_phi (bb, phi, use_stmt, phivn, n,
  			      dce_ssa_names, other_vuse);
  
! 	  /* Remove old stmt. The phi and all of maybe its dependencies
  	     will be removed later via simple_dce_from_worklist. */
  	  gsi = gsi_for_stmt (use_stmt);
  	  /* Unlinking the VDEF here is fine as we are sure that we process
*************** propagate_with_phi (basic_block bb, gphi
*** 598,604 ****
  	  phivn[SSA_NAME_VERSION (ptr)].value = res;
  	  phivn[SSA_NAME_VERSION (ptr)].vuse = vuse;
  
! 	  /* Remove old stmt.  The phi and all of maybe its depedencies
  	     will be removed later via simple_dce_from_worklist. */
  	  gsi = gsi_for_stmt (use_stmt);
  	  gsi_remove (&gsi, true);
--- 598,604 ----
  	  phivn[SSA_NAME_VERSION (ptr)].value = res;
  	  phivn[SSA_NAME_VERSION (ptr)].vuse = vuse;
  
! 	  /* Remove old stmt.  The phi and all of maybe its dependencies
  	     will be removed later via simple_dce_from_worklist. */
  	  gsi = gsi_for_stmt (use_stmt);
  	  gsi_remove (&gsi, true);
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-pre.cc gcc-17-20260531/gcc/tree-ssa-pre.cc
*** gcc-17-20260524/gcc/tree-ssa-pre.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-pre.cc	Sun May 31 22:32:13 2026
*************** get_or_alloc_expr_for_nary (vn_nary_op_t
*** 454,460 ****
  /* Given an REFERENCE, get or create a pre_expr to represent it.  Assign
     VALUE_ID to it or allocate a new value-id if it is zero.  Record
     LOC as the original location of the expression.  If MOVE_OPERANDS
!    is true then ownership of REFERENCE->operands is transfered, otherwise
     a copy is made if necessary.  */
  
  static pre_expr
--- 454,460 ----
  /* Given an REFERENCE, get or create a pre_expr to represent it.  Assign
     VALUE_ID to it or allocate a new value-id if it is zero.  Record
     LOC as the original location of the expression.  If MOVE_OPERANDS
!    is true then ownership of REFERENCE->operands is transferred, otherwise
     a copy is made if necessary.  */
  
  static pre_expr
*************** sorted_array_from_bitmap_set (bitmap_set
*** 1052,1058 ****
  	      }
  	    else
  	      {
! 		/* If neither works for pairwise chosing a conservative
  		   alternative, drop all REFERENCE expressions for this value.
  		   REFERENCE are always toplevel, so no chain should be
  		   interrupted by pruning them.  */
--- 1052,1058 ----
  	      }
  	    else
  	      {
! 		/* If neither works for pairwise choosing a conservative
  		   alternative, drop all REFERENCE expressions for this value.
  		   REFERENCE are always toplevel, so no chain should be
  		   interrupted by pruning them.  */
*************** value_dies_in_block_x (pre_expr expr, ba
*** 2019,2025 ****
    /* A memory expression {e, VUSE} dies in the block if there is a
       statement that may clobber e.  If, starting statement walk from the
       top of the basic block, a statement uses VUSE there can be no kill
!      inbetween that use and the original statement that loaded {e, VUSE},
       so we can stop walking.  */
    ref.base = NULL_TREE;
    for (gsi = gsi_start_bb (block); !gsi_end_p (gsi); gsi_next (&gsi))
--- 2019,2025 ----
    /* A memory expression {e, VUSE} dies in the block if there is a
       statement that may clobber e.  If, starting statement walk from the
       top of the basic block, a statement uses VUSE there can be no kill
!      in between that use and the original statement that loaded {e, VUSE},
       so we can stop walking.  */
    ref.base = NULL_TREE;
    for (gsi = gsi_start_bb (block); !gsi_end_p (gsi); gsi_next (&gsi))
*************** compute_antic_aux (basic_block block, bo
*** 2409,2415 ****
    bitmap_ior_into (&ANTIC_IN (block)->values, &S->values);
    bitmap_ior_into (&ANTIC_IN (block)->expressions, &S->expressions);
  
!   /* clean (ANTIC_IN (block)) is defered to after the iteration converged
       because it can cause non-convergence, see for example PR81181.  */
  
    if (was_visited
--- 2409,2415 ----
    bitmap_ior_into (&ANTIC_IN (block)->values, &S->values);
    bitmap_ior_into (&ANTIC_IN (block)->expressions, &S->expressions);
  
!   /* clean (ANTIC_IN (block)) is deferred to after the iteration converged
       because it can cause non-convergence, see for example PR81181.  */
  
    if (was_visited
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-propagate.cc gcc-17-20260531/gcc/tree-ssa-propagate.cc
*** gcc-17-20260524/gcc/tree-ssa-propagate.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-propagate.cc	Sun May 31 22:32:13 2026
*************** private:
*** 698,704 ****
  
  /* Call post_new_stmt for each new statement that has been added
     to the current BB.  OLD_GSI is the statement iterator before the BB
!    changes ocurred.  NEW_GSI is the iterator which may contain new
     statements.  */
  
  void
--- 698,704 ----
  
  /* Call post_new_stmt for each new statement that has been added
     to the current BB.  OLD_GSI is the statement iterator before the BB
!    changes occurred.  NEW_GSI is the iterator which may contain new
     statements.  */
  
  void
*************** substitute_and_fold_engine::substitute_a
*** 1010,1016 ****
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk.  Do this
!      in reverse order so we don't inadvertedly remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!walker.stmts_to_fixup.is_empty ())
      {
--- 1010,1016 ----
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk.  Do this
!      in reverse order so we don't inadvertently remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!walker.stmts_to_fixup.is_empty ())
      {
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-reassoc.cc gcc-17-20260531/gcc/tree-ssa-reassoc.cc
*** gcc-17-20260524/gcc/tree-ssa-reassoc.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-reassoc.cc	Sun May 31 22:32:13 2026
*************** get_rank (tree e)
*** 481,487 ****
  	  /* Otherwise, find the maximum rank for the operands.  As an
  	     exception, remove the bias from loop-carried phis when propagating
  	     the rank so that dependent operations are not also biased.  */
! 	  /* Simply walk over all SSA uses - this takes advatage of the
  	     fact that non-SSA operands are is_gimple_min_invariant and
  	     thus have rank 0.  */
  	  rank = 0;
--- 481,487 ----
  	  /* Otherwise, find the maximum rank for the operands.  As an
  	     exception, remove the bias from loop-carried phis when propagating
  	     the rank so that dependent operations are not also biased.  */
! 	  /* Simply walk over all SSA uses - this takes advantage of the
  	     fact that non-SSA operands are is_gimple_min_invariant and
  	     thus have rank 0.  */
  	  rank = 0;
*************** init_range_entry (struct range_entry *r,
*** 2541,2551 ****
  {
    int in_p;
    tree low, high;
!   bool is_bool, strict_overflow_p;
  
    r->exp = NULL_TREE;
    r->in_p = false;
-   r->strict_overflow_p = false;
    r->low = NULL_TREE;
    r->high = NULL_TREE;
    if (exp != NULL_TREE
--- 2541,2550 ----
  {
    int in_p;
    tree low, high;
!   bool is_bool;
  
    r->exp = NULL_TREE;
    r->in_p = false;
    r->low = NULL_TREE;
    r->high = NULL_TREE;
    if (exp != NULL_TREE
*************** init_range_entry (struct range_entry *r,
*** 2560,2566 ****
    low = exp ? build_int_cst (TREE_TYPE (exp), 0) : boolean_false_node;
    high = low;
    in_p = 0;
-   strict_overflow_p = false;
    is_bool = false;
    if (exp == NULL_TREE)
      is_bool = true;
--- 2559,2564 ----
*************** init_range_entry (struct range_entry *r,
*** 2677,2683 ****
        r->in_p = in_p;
        r->low = low;
        r->high = high;
-       r->strict_overflow_p = strict_overflow_p;
      }
  }
  
--- 2675,2680 ----
*************** force_into_ssa_name (gimple_stmt_iterato
*** 2781,2787 ****
  }
  
  /* Helper routine of optimize_range_test.
!    [EXP, IN_P, LOW, HIGH, STRICT_OVERFLOW_P] is a merged range for
     RANGE and OTHERRANGE through OTHERRANGE + COUNT - 1 ranges,
     OPCODE and OPS are arguments of optimize_range_tests.  If OTHERRANGE
     is NULL, OTHERRANGEP should not be and then OTHERRANGEP points to
--- 2778,2784 ----
  }
  
  /* Helper routine of optimize_range_test.
!    [EXP, IN_P, LOW, HIGH] is a merged range for
     RANGE and OTHERRANGE through OTHERRANGE + COUNT - 1 ranges,
     OPCODE and OPS are arguments of optimize_range_tests.  If OTHERRANGE
     is NULL, OTHERRANGEP should not be and then OTHERRANGEP points to
*************** update_range_test (struct range_entry *r
*** 2797,2803 ****
  		   struct range_entry **otherrangep,
  		   unsigned int count, enum tree_code opcode,
  		   vec<operand_entry *> *ops, tree exp, gimple_seq seq,
! 		   bool in_p, tree low, tree high, bool strict_overflow_p)
  {
    unsigned int idx = range->idx;
    struct range_entry *swap_with = NULL;
--- 2794,2800 ----
  		   struct range_entry **otherrangep,
  		   unsigned int count, enum tree_code opcode,
  		   vec<operand_entry *> *ops, tree exp, gimple_seq seq,
! 		   bool in_p, tree low, tree high)
  {
    unsigned int idx = range->idx;
    struct range_entry *swap_with = NULL;
*************** update_range_test (struct range_entry *r
*** 2849,2855 ****
    tree optype = op ? TREE_TYPE (op) : boolean_type_node;
    tree tem = build_range_check (loc, optype, unshare_expr (exp),
  				in_p, low, high);
-   enum warn_strict_overflow_code wc = WARN_STRICT_OVERFLOW_COMPARISON;
    gimple_stmt_iterator gsi;
    unsigned int i, uid;
  
--- 2846,2851 ----
*************** update_range_test (struct range_entry *r
*** 2881,2891 ****
    if (swap_with)
      std::swap (range->idx, swap_with->idx);
  
-   if (strict_overflow_p && issue_strict_overflow_warning (wc))
-     warning_at (loc, OPT_Wstrict_overflow,
- 		"assuming signed overflow does not occur "
- 		"when simplifying range test");
- 
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        struct range_entry *r;
--- 2877,2882 ----
*************** update_range_test (struct range_entry *r
*** 3007,3013 ****
    range->low = low;
    range->high = high;
    range->in_p = in_p;
-   range->strict_overflow_p = false;
  
    for (i = 0; i < count; i++)
      {
--- 2998,3003 ----
*************** optimize_range_tests_xor (enum tree_code
*** 3085,3093 ****
    lowj = fold_build2 (BIT_AND_EXPR, type, lowi, tem);
    highj = fold_build2 (BIT_AND_EXPR, type, highi, tem);
    if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, exp,
! 			 NULL, rangei->in_p, lowj, highj,
! 			 rangei->strict_overflow_p
! 			 || rangej->strict_overflow_p))
      return true;
    return false;
  }
--- 3075,3081 ----
    lowj = fold_build2 (BIT_AND_EXPR, type, lowi, tem);
    highj = fold_build2 (BIT_AND_EXPR, type, highi, tem);
    if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, exp,
! 			 NULL, rangei->in_p, lowj, highj))
      return true;
    return false;
  }
*************** optimize_range_tests_diff (enum tree_cod
*** 3143,3151 ****
    tem1 = fold_build2 (BIT_AND_EXPR, type, tem1, mask);
    lowj = build_int_cst (type, 0);
    if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, tem1,
! 			 NULL, rangei->in_p, lowj, tem2,
! 			 rangei->strict_overflow_p
! 			 || rangej->strict_overflow_p))
      return true;
    return false;
  }
--- 3131,3137 ----
    tem1 = fold_build2 (BIT_AND_EXPR, type, tem1, mask);
    lowj = build_int_cst (type, 0);
    if (update_range_test (rangei, rangej, NULL, 1, opcode, ops, tem1,
! 			 NULL, rangei->in_p, lowj, tem2))
      return true;
    return false;
  }
*************** optimize_range_tests_to_bit_test (enum t
*** 3322,3328 ****
  					highi, &mask, &lowi);
        if (exp == NULL_TREE)
  	continue;
-       bool strict_overflow_p = ranges[i].strict_overflow_p;
        candidates.truncate (0);
        int end = MIN (i + 64, length);
        for (j = i + 1; j < end; j++)
--- 3308,3313 ----
*************** optimize_range_tests_to_bit_test (enum t
*** 3361,3367 ****
  	  if (exp2 != exp)
  	    continue;
  	  mask |= mask2;
- 	  strict_overflow_p |= ranges[j].strict_overflow_p;
  	  candidates.safe_push (&ranges[j]);
  	}
  
--- 3346,3351 ----
*************** optimize_range_tests_to_bit_test (enum t
*** 3487,3493 ****
  	  tree val = build_zero_cst (optype);
  	  if (update_range_test (&ranges[i], NULL, candidates.address (),
  				 candidates.length (), opcode, ops, exp,
! 				 seq, false, val, val, strict_overflow_p))
  	    {
  	      any_changes = true;
  	      if (tem)
--- 3471,3477 ----
  	  tree val = build_zero_cst (optype);
  	  if (update_range_test (&ranges[i], NULL, candidates.address (),
  				 candidates.length (), opcode, ops, exp,
! 				 seq, false, val, val))
  	    {
  	      any_changes = true;
  	      if (tem)
*************** optimize_range_tests_cmp_bitwise (enum t
*** 3628,3641 ****
  	  }
  	tree type1 = TREE_TYPE (ranges[k - 1].exp);
  	tree type2 = NULL_TREE;
- 	bool strict_overflow_p = false;
  	candidates.truncate (0);
  	if (POINTER_TYPE_P (type1) || TREE_CODE (type1) == OFFSET_TYPE)
  	  type1 = pointer_sized_int_node;
  	for (j = i; j; j = chains[j - 1])
  	  {
  	    tree type = TREE_TYPE (ranges[j - 1].exp);
- 	    strict_overflow_p |= ranges[j - 1].strict_overflow_p;
  	    if (POINTER_TYPE_P (type) || TREE_CODE (type) == OFFSET_TYPE)
  	      type = pointer_sized_int_node;
  	    if ((b % 4) == 3)
--- 3612,3623 ----
*************** optimize_range_tests_cmp_bitwise (enum t
*** 3749,3755 ****
  	if (update_range_test (&ranges[k - 1], NULL, candidates.address (),
  			       candidates.length (), opcode, ops, op,
  			       seq, ranges[k - 1].in_p, ranges[k - 1].low,
! 			       ranges[k - 1].high, strict_overflow_p))
  	  any_changes = true;
  	else
  	  gimple_seq_discard (seq);
--- 3731,3737 ----
  	if (update_range_test (&ranges[k - 1], NULL, candidates.address (),
  			       candidates.length (), opcode, ops, op,
  			       seq, ranges[k - 1].in_p, ranges[k - 1].low,
! 			       ranges[k - 1].high))
  	  any_changes = true;
  	else
  	  gimple_seq_discard (seq);
*************** optimize_range_tests_var_bound (enum tre
*** 3955,3968 ****
  	 and RHS2 is known to be RHS2 >= 0.  */
        tree utype = unsigned_type_for (TREE_TYPE (rhs1));
  
-       enum warn_strict_overflow_code wc = WARN_STRICT_OVERFLOW_COMPARISON;
-       if ((ranges[*idx].strict_overflow_p
- 	   || ranges[i].strict_overflow_p)
- 	  && issue_strict_overflow_warning (wc))
- 	warning_at (gimple_location (stmt), OPT_Wstrict_overflow,
- 		    "assuming signed overflow does not occur "
- 		    "when simplifying range test");
- 
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
  	  struct range_entry *r = &ranges[*idx];
--- 3937,3942 ----
*************** optimize_range_tests_var_bound (enum tre
*** 4044,4050 ****
  	  ranges[i].low = build_zero_cst (TREE_TYPE (ranges[i].exp));
  	  ranges[i].high = ranges[i].low;
  	}
-       ranges[i].strict_overflow_p = false;
        oe = (*ops)[ranges[*idx].idx];
        /* Now change all the other range test immediate uses, so that
  	 those tests will be optimized away.  */
--- 4018,4023 ----
*************** optimize_range_tests (enum tree_code opc
*** 4118,4124 ****
        tree low = ranges[i].low;
        tree high = ranges[i].high;
        int in_p = ranges[i].in_p;
-       bool strict_overflow_p = ranges[i].strict_overflow_p;
        int update_fail_count = 0;
  
        for (j = i + 1; j < length; j++)
--- 4091,4096 ----
*************** optimize_range_tests (enum tree_code opc
*** 4128,4134 ****
  	  if (!merge_ranges (&in_p, &low, &high, in_p, low, high,
  			     ranges[j].in_p, ranges[j].low, ranges[j].high))
  	    break;
- 	  strict_overflow_p |= ranges[j].strict_overflow_p;
  	}
  
        if (j == i + 1)
--- 4100,4105 ----
*************** optimize_range_tests (enum tree_code opc
*** 4136,4142 ****
  
        if (update_range_test (ranges + i, ranges + i + 1, NULL, j - i - 1,
  			     opcode, ops, ranges[i].exp, NULL, in_p,
! 			     low, high, strict_overflow_p))
  	{
  	  i = j - 1;
  	  any_changes = true;
--- 4107,4113 ----
  
        if (update_range_test (ranges + i, ranges + i + 1, NULL, j - i - 1,
  			     opcode, ops, ranges[i].exp, NULL, in_p,
! 			     low, high))
  	{
  	  i = j - 1;
  	  any_changes = true;
*************** remove_visited_stmt_chain (tree var)
*** 5168,5177 ****
      }
  }
  
! /* This function checks three consequtive operands in
     passed operands vector OPS starting from OPINDEX and
     swaps two operands if it is profitable for binary operation
!    consuming OPINDEX + 1 abnd OPINDEX + 2 operands.
  
     We pair ops with the same rank if possible.  */
  
--- 5139,5148 ----
      }
  }
  
! /* This function checks three consecutive operands in
     passed operands vector OPS starting from OPINDEX and
     swaps two operands if it is profitable for binary operation
!    consuming OPINDEX + 1 and OPINDEX + 2 operands.
  
     We pair ops with the same rank if possible.  */
  
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-reassoc.h gcc-17-20260531/gcc/tree-ssa-reassoc.h
*** gcc-17-20260524/gcc/tree-ssa-reassoc.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-reassoc.h	Sun May 31 22:32:13 2026
*************** struct range_entry
*** 36,42 ****
    tree low;
    tree high;
    bool in_p;
-   bool strict_overflow_p;
    unsigned int idx, next;
  };
  
--- 36,41 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-sccvn.cc gcc-17-20260531/gcc/tree-ssa-sccvn.cc
*** gcc-17-20260524/gcc/tree-ssa-sccvn.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-sccvn.cc	Sun May 31 22:32:13 2026
*************** vn_reference_eq (const_vn_reference_t co
*** 839,845 ****
        /* Vector boolean types can have padding, verify we are dealing with
  	 the same number of elements, aka the precision of the types.
  	 For example, In most architecture the precision_size of vbool*_t
! 	 types are caculated like below:
  	 precision_size = type_size * 8
  
  	 Unfortunately, the RISC-V will adjust the precision_size for the
--- 839,845 ----
        /* Vector boolean types can have padding, verify we are dealing with
  	 the same number of elements, aka the precision of the types.
  	 For example, In most architecture the precision_size of vbool*_t
! 	 types are calculated like below:
  	 precision_size = type_size * 8
  
  	 Unfortunately, the RISC-V will adjust the precision_size for the
*************** vn_walk_cb_data::push_partial_def (pd_da
*** 2349,2355 ****
       access size.  */
    if (INTEGRAL_TYPE_P (vr->type) && maxsizei != TYPE_PRECISION (vr->type))
      {
!       if (TREE_CODE (vr->type) == BITINT_TYPE
  	  && maxsizei > MAX_FIXED_MODE_SIZE)
  	type = build_bitint_type (maxsizei, TYPE_UNSIGNED (type));
        else
--- 2349,2355 ----
       access size.  */
    if (INTEGRAL_TYPE_P (vr->type) && maxsizei != TYPE_PRECISION (vr->type))
      {
!       if (BITINT_TYPE_P (vr->type)
  	  && maxsizei > MAX_FIXED_MODE_SIZE)
  	type = build_bitint_type (maxsizei, TYPE_UNSIGNED (type));
        else
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3285,3291 ****
  		      && maxsizei != TYPE_PRECISION (vr->type))
  		    {
  		      bool uns = TYPE_UNSIGNED (type);
! 		      if (TREE_CODE (vr->type) == BITINT_TYPE
  			  && maxsizei > MAX_FIXED_MODE_SIZE)
  			type = build_bitint_type (maxsizei, uns);
  		      else
--- 3285,3291 ----
  		      && maxsizei != TYPE_PRECISION (vr->type))
  		    {
  		      bool uns = TYPE_UNSIGNED (type);
! 		      if (BITINT_TYPE_P (vr->type)
  			  && maxsizei > MAX_FIXED_MODE_SIZE)
  			type = build_bitint_type (maxsizei, uns);
  		      else
*************** vn_reference_lookup_call (gcall *call, v
*** 4356,4362 ****
    vr->vuse = vuse ? SSA_VAL (vuse) : NULL_TREE;
    vr->operands = valueize_shared_reference_ops_from_call (call);
    tree lhs = gimple_call_lhs (call);
!   /* For non-SSA return values the referece ops contain the LHS.  */
    vr->type = ((lhs && TREE_CODE (lhs) == SSA_NAME)
  	      ? TREE_TYPE (lhs) : NULL_TREE);
    vr->punned = false;
--- 4356,4362 ----
    vr->vuse = vuse ? SSA_VAL (vuse) : NULL_TREE;
    vr->operands = valueize_shared_reference_ops_from_call (call);
    tree lhs = gimple_call_lhs (call);
!   /* For non-SSA return values the reference ops contain the LHS.  */
    vr->type = ((lhs && TREE_CODE (lhs) == SSA_NAME)
  	      ? TREE_TYPE (lhs) : NULL_TREE);
    vr->punned = false;
*************** vn_nary_op_eq (const_vn_nary_op_t const
*** 4544,4550 ****
      if (!expressions_equal_p (vno1->op[i], vno2->op[i]))
        return false;
  
!   /* BIT_INSERT_EXPR has an implict operand as the type precision
       of op1.  Need to check to make sure they are the same.  */
    if (vno1->opcode == BIT_INSERT_EXPR
        && TREE_CODE (vno1->op[1]) == INTEGER_CST
--- 4544,4550 ----
      if (!expressions_equal_p (vno1->op[i], vno2->op[i]))
        return false;
  
!   /* BIT_INSERT_EXPR has an implicit operand as the type precision
       of op1.  Need to check to make sure they are the same.  */
    if (vno1->opcode == BIT_INSERT_EXPR
        && TREE_CODE (vno1->op[1]) == INTEGER_CST
*************** vn_nary_op_insert_into (vn_nary_op_t vno
*** 4851,4857 ****
  	return *slot;
      }
  
!   /* ???  There's also optimistic vs. previous commited state merging
       that is problematic for the case of unwinding.  */
  
    /* ???  We should return NULL if we do not use 'vno' and have the
--- 4851,4857 ----
  	return *slot;
      }
  
!   /* ???  There's also optimistic vs. previous committed state merging
       that is problematic for the case of unwinding.  */
  
    /* ???  We should return NULL if we do not use 'vno' and have the
*************** visit_reference_op_call (tree lhs, gcall
*** 5928,5934 ****
  	   && summary->load_accesses < accesses_limit)
  	  || gimple_call_flags (stmt) & ECF_CONST))
      {
!       /* First search if we can do someting useful and build a
  	 vector of all loads we have to check.  */
        bool unknown_memory_access = false;
        auto_vec<ao_ref, accesses_limit> accesses;
--- 5928,5934 ----
  	   && summary->load_accesses < accesses_limit)
  	  || gimple_call_flags (stmt) & ECF_CONST))
      {
!       /* First search if we can do something useful and build a
  	 vector of all loads we have to check.  */
        bool unknown_memory_access = false;
        auto_vec<ao_ref, accesses_limit> accesses;
*************** visit_phi (gimple *phi, bool *inserted,
*** 6475,6481 ****
         the hashes.  */
      result = PHI_RESULT (phi);
    /* If none of the edges was executable keep the value-number at VN_TOP,
!      if only a single edge is exectuable use its value.  */
    else if (n_executable <= 1)
      result = seen_undef ? seen_undef : sameval;
    /* If we saw only undefined values and VN_TOP use one of the
--- 6475,6481 ----
         the hashes.  */
      result = PHI_RESULT (phi);
    /* If none of the edges was executable keep the value-number at VN_TOP,
!      if only a single edge is executable use its value.  */
    else if (n_executable <= 1)
      result = seen_undef ? seen_undef : sameval;
    /* If we saw only undefined values and VN_TOP use one of the
*************** eliminate_dom_walker::eliminate_stmt (ba
*** 7393,7399 ****
  	      || !DECL_BIT_FIELD_TYPE (TREE_OPERAND (lhs, 1)))
  	  && !type_has_mode_precision_p (TREE_TYPE (lhs)))
  	{
! 	  if (TREE_CODE (TREE_TYPE (lhs)) == BITINT_TYPE
  	      && TYPE_PRECISION (TREE_TYPE (lhs)) > MAX_FIXED_MODE_SIZE)
  	    lookup_lhs = NULL_TREE;
  	  else if (TREE_CODE (lhs) == COMPONENT_REF
--- 7393,7399 ----
  	      || !DECL_BIT_FIELD_TYPE (TREE_OPERAND (lhs, 1)))
  	  && !type_has_mode_precision_p (TREE_TYPE (lhs)))
  	{
! 	  if (BITINT_TYPE_P (TREE_TYPE (lhs))
  	      && TYPE_PRECISION (TREE_TYPE (lhs)) > MAX_FIXED_MODE_SIZE)
  	    lookup_lhs = NULL_TREE;
  	  else if (TREE_CODE (lhs) == COMPONENT_REF
*************** eliminate_dom_walker::eliminate_stmt (ba
*** 7558,7564 ****
        gsi_prev (&prev);
        if (fold_stmt (gsi, follow_all_ssa_edges))
  	{
! 	  /* fold_stmt may have created new stmts inbetween
  	     the previous stmt and the folded stmt.  Mark
  	     all defs created there as varying to not confuse
  	     the SCCVN machinery as we're using that even during
--- 7558,7564 ----
        gsi_prev (&prev);
        if (fold_stmt (gsi, follow_all_ssa_edges))
  	{
! 	  /* fold_stmt may have created new stmts in between
  	     the previous stmt and the folded stmt.  Mark
  	     all defs created there as varying to not confuse
  	     the SCCVN machinery as we're using that even during
*************** eliminate_dom_walker::eliminate_cleanup
*** 7915,7921 ****
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk.  Do this
!      in reverse order so we don't inadvertedly remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!to_fixup.is_empty ())
      {
--- 7915,7921 ----
  
    /* Fixup stmts that became noreturn calls.  This may require splitting
       blocks and thus isn't possible during the dominator walk.  Do this
!      in reverse order so we don't inadvertently remove a stmt we want to
       fixup by visiting a dominating now noreturn call first.  */
    while (!to_fixup.is_empty ())
      {
*************** process_bb (rpo_elim &avail, basic_block
*** 8529,8535 ****
  	    tree val = gimple_simplify (cmpcode,
  					boolean_type_node, lhs, rhs,
  					NULL, vn_valueize);
! 	    /* If the condition didn't simplfy see if we have recorded
  	       an expression from sofar taken edges.  */
  	    if (! val || TREE_CODE (val) != INTEGER_CST)
  	      {
--- 8529,8535 ----
  	    tree val = gimple_simplify (cmpcode,
  					boolean_type_node, lhs, rhs,
  					NULL, vn_valueize);
! 	    /* If the condition didn't simplify see if we have recorded
  	       an expression from sofar taken edges.  */
  	    if (! val || TREE_CODE (val) != INTEGER_CST)
  	      {
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-scopedtables.cc gcc-17-20260531/gcc/tree-ssa-scopedtables.cc
*** gcc-17-20260524/gcc/tree-ssa-scopedtables.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-scopedtables.cc	Sun May 31 22:32:13 2026
*************** hashable_expr_equal_p (const struct hash
*** 664,670 ****
  			       expr1->ops.ternary.opnd2, 0))
  	return false;
  
!       /* BIT_INSERT_EXPR has an implict operand as the type precision
           of op1.  Need to check to make sure they are the same.  */
        if (expr0->ops.ternary.op == BIT_INSERT_EXPR
  	  && TREE_CODE (expr0->ops.ternary.opnd1) == INTEGER_CST
--- 664,670 ----
  			       expr1->ops.ternary.opnd2, 0))
  	return false;
  
!       /* BIT_INSERT_EXPR has an implicit operand as the type precision
           of op1.  Need to check to make sure they are the same.  */
        if (expr0->ops.ternary.op == BIT_INSERT_EXPR
  	  && TREE_CODE (expr0->ops.ternary.opnd1) == INTEGER_CST
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-structalias.cc gcc-17-20260531/gcc/tree-ssa-structalias.cc
*** gcc-17-20260524/gcc/tree-ssa-structalias.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-structalias.cc	Sun May 31 22:32:13 2026
*************** determine_global_memory_access (gcall *s
*** 313,319 ****
    cgraph_node *node;
    modref_summary *summary;
  
!   /* We need to detrmine reads to set uses.  */
    gcc_assert (!uses_global_memory || reads_global_memory);
  
    if ((callee = gimple_call_fndecl (stmt)) != NULL_TREE
--- 313,319 ----
    cgraph_node *node;
    modref_summary *summary;
  
!   /* We need to determine reads to set uses.  */
    gcc_assert (!uses_global_memory || reads_global_memory);
  
    if ((callee = gimple_call_fndecl (stmt)) != NULL_TREE
*************** clear_dependence_clique (gimple *, tree
*** 1555,1561 ****
    return false;
  }
  
! /* Compute the set of independend memory references based on restrict
     tags and their conservative propagation to the points-to sets.  */
  
  static void
--- 1555,1561 ----
    return false;
  }
  
! /* Compute the set of independent memory references based on restrict
     tags and their conservative propagation to the points-to sets.  */
  
  static void
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-threadbackward.cc gcc-17-20260531/gcc/tree-ssa-threadbackward.cc
*** gcc-17-20260524/gcc/tree-ssa-threadbackward.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-threadbackward.cc	Sun May 31 22:32:13 2026
*************** back_threader_profitability::possibly_pr
*** 701,707 ****
  
    /* Threading is profitable if the path duplicated is hot but also
       in a case we separate cold path from hot path and permit optimization
!      of the hot path later.  Be on the agressive side here. In some testcases,
       as in PR 78407 this leads to noticeable improvements.  */
    if (m_speed_p)
      {
--- 701,707 ----
  
    /* Threading is profitable if the path duplicated is hot but also
       in a case we separate cold path from hot path and permit optimization
!      of the hot path later.  Be on the aggressive side here. In some testcases,
       as in PR 78407 this leads to noticeable improvements.  */
    if (m_speed_p)
      {
*************** back_threader_profitability::profitable_
*** 794,800 ****
  
    /* Threading is profitable if the path duplicated is hot but also
       in a case we separate cold path from hot path and permit optimization
!      of the hot path later.  Be on the agressive side here. In some testcases,
       as in PR 78407 this leads to noticeable improvements.  */
    if (m_speed_p
        && (optimize_edge_for_speed_p (taken_edge) || m_contains_hot_bb))
--- 794,800 ----
  
    /* Threading is profitable if the path duplicated is hot but also
       in a case we separate cold path from hot path and permit optimization
!      of the hot path later.  Be on the aggressive side here. In some testcases,
       as in PR 78407 this leads to noticeable improvements.  */
    if (m_speed_p
        && (optimize_edge_for_speed_p (taken_edge) || m_contains_hot_bb))
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-threadedge.cc gcc-17-20260531/gcc/tree-ssa-threadedge.cc
*** gcc-17-20260524/gcc/tree-ssa-threadedge.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-threadedge.cc	Sun May 31 22:32:13 2026
*************** jump_threader::simplify_control_stmt_con
*** 500,517 ****
    gimple_cond_set_lhs (dummy_cond, op0);
    gimple_cond_set_rhs (dummy_cond, op1);
  
-   /* We absolutely do not care about any type conversions
-      we only care about a zero/nonzero value.  */
-   fold_defer_overflow_warnings ();
- 
    tree res = fold_binary (cond_code, boolean_type_node, op0, op1);
    if (res)
      while (CONVERT_EXPR_P (res))
        res = TREE_OPERAND (res, 0);
  
-   fold_undefer_overflow_warnings ((res && is_gimple_min_invariant (res)),
- 				  stmt, WARN_STRICT_OVERFLOW_CONDITIONAL);
- 
    /* If we have not simplified the condition down to an invariant,
       then use the pass specific callback to simplify the condition.  */
    if (!res
--- 500,510 ----
*************** propagate_threaded_block_debug_into (bas
*** 658,664 ****
      fewvars.release ();
  }
  
! /* See if TAKEN_EDGE->dest is a threadable block with no side effecs (ie, it
     need not be duplicated as part of the CFG/SSA updating process).
  
     If it is threadable, add it to PATH and VISITED and recurse, ultimately
--- 651,657 ----
      fewvars.release ();
  }
  
! /* See if TAKEN_EDGE->dest is a threadable block with no side effects (ie, it
     need not be duplicated as part of the CFG/SSA updating process).
  
     If it is threadable, add it to PATH and VISITED and recurse, ultimately
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa-uninit.cc gcc-17-20260531/gcc/tree-ssa-uninit.cc
*** gcc-17-20260524/gcc/tree-ssa-uninit.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa-uninit.cc	Sun May 31 22:32:13 2026
*************** warn_uninit (opt_code opt, tree t, tree
*** 193,199 ****
       Or
  
       2. A call to .DEFERRED_INIT internal function. Since the original variable
!      has been eliminated by optimziation, we need to get the variable name,
       and variable declaration location from this call.  We recorded variable
       name into VAR_NAME_STR, and will get location info and record warning
       suppressed info to VAR_DEF_STMT, which is the .DEFERRED_INIT call.  */
--- 193,199 ----
       Or
  
       2. A call to .DEFERRED_INIT internal function. Since the original variable
!      has been eliminated by optimization, we need to get the variable name,
       and variable declaration location from this call.  We recorded variable
       name into VAR_NAME_STR, and will get location info and record warning
       suppressed info to VAR_DEF_STMT, which is the .DEFERRED_INIT call.  */
*************** execute_late_warn_uninitialized (functio
*** 1454,1460 ****
  
    timevar_push (TV_TREE_UNINIT);
  
!   /* Avoid quadratic beahvior when looking up case labels for edges.  */
    start_recording_case_labels ();
  
    possibly_undefined_names = new hash_set<tree>;
--- 1454,1460 ----
  
    timevar_push (TV_TREE_UNINIT);
  
!   /* Avoid quadratic behavior when looking up case labels for edges.  */
    start_recording_case_labels ();
  
    possibly_undefined_names = new hash_set<tree>;
diff -Nrcpad gcc-17-20260524/gcc/tree-ssa.cc gcc-17-20260531/gcc/tree-ssa.cc
*** gcc-17-20260524/gcc/tree-ssa.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssa.cc	Sun May 31 22:32:13 2026
*************** maybe_optimize_var (tree var, bitmap add
*** 1811,1817 ****
  	      fprintf (dump_file, "\n");
  	    }
  	}
!       else if (TREE_CODE (TREE_TYPE (var)) == BITINT_TYPE
  	       && (cfun->curr_properties & PROP_gimple_lbitint) != 0
  	       && TYPE_PRECISION (TREE_TYPE (var)) > MAX_FIXED_MODE_SIZE)
  	{
--- 1811,1817 ----
  	      fprintf (dump_file, "\n");
  	    }
  	}
!       else if (BITINT_TYPE_P (TREE_TYPE (var))
  	       && (cfun->curr_properties & PROP_gimple_lbitint) != 0
  	       && TYPE_PRECISION (TREE_TYPE (var)) > MAX_FIXED_MODE_SIZE)
  	{
diff -Nrcpad gcc-17-20260524/gcc/tree-ssanames.cc gcc-17-20260531/gcc/tree-ssanames.cc
*** gcc-17-20260524/gcc/tree-ssanames.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-ssanames.cc	Sun May 31 22:32:13 2026
*************** range_info_get_range (const_tree name, v
*** 119,125 ****
    SSA_NAME_RANGE_INFO (name)->get_vrange (r, TREE_TYPE (name));
  }
  
! /* Set the global range for NAME from R.  Return TRUE if successfull,
     or FALSE if we can't set a range of NAME's type.  */
  
  inline bool
--- 119,125 ----
    SSA_NAME_RANGE_INFO (name)->get_vrange (r, TREE_TYPE (name));
  }
  
! /* Set the global range for NAME from R.  Return TRUE if successful,
     or FALSE if we can't set a range of NAME's type.  */
  
  inline bool
diff -Nrcpad gcc-17-20260524/gcc/tree-switch-conversion.cc gcc-17-20260531/gcc/tree-switch-conversion.cc
*** gcc-17-20260524/gcc/tree-switch-conversion.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-switch-conversion.cc	Sun May 31 22:32:13 2026
*************** can_log2 (tree type, optimization_type o
*** 105,111 ****
  
  /* Assume that OP is a power of two.  Build a sequence of gimple statements
     efficiently computing the base two logarithm of OP using special optabs.
!    Return the ssa name represeting the result of the logarithm through RESULT.
  
     Before computing the logarithm, OP may have to be converted to another type.
     This should be specified in TYPE.  Use can_log2 to decide what this type
--- 105,111 ----
  
  /* Assume that OP is a power of two.  Build a sequence of gimple statements
     efficiently computing the base two logarithm of OP using special optabs.
!    Return the ssa name representing the result of the logarithm through RESULT.
  
     Before computing the logarithm, OP may have to be converted to another type.
     This should be specified in TYPE.  Use can_log2 to decide what this type
*************** switch_conversion::exp_index_transform (
*** 431,437 ****
    gsi_insert_after (&gsi, stmt_cond, GSI_NEW_STMT);
  
    /* We just added an edge going to default bb so fix PHI nodes in that bb:
!      For each PHI add new PHI arg.  It will be the same arg as when comming to
       the default bb from the switch bb.  */
    edge default_edge = find_edge (swtch_bb, default_bb);
    for (gphi_iterator gsi = gsi_start_phis (default_bb);
--- 431,437 ----
    gsi_insert_after (&gsi, stmt_cond, GSI_NEW_STMT);
  
    /* We just added an edge going to default bb so fix PHI nodes in that bb:
!      For each PHI add new PHI arg.  It will be the same arg as when coming to
       the default bb from the switch bb.  */
    edge default_edge = find_edge (swtch_bb, default_bb);
    for (gphi_iterator gsi = gsi_start_phis (default_bb);
*************** switch_conversion::array_value_type (tre
*** 894,900 ****
    type = TYPE_MAIN_VARIANT (type);
  
    if (!INTEGRAL_TYPE_P (type)
!       || (TREE_CODE (type) == BITINT_TYPE
  	  && (TYPE_PRECISION (type) > MAX_FIXED_MODE_SIZE
  	      || TYPE_MODE (type) == BLKmode)))
      return type;
--- 894,900 ----
    type = TYPE_MAIN_VARIANT (type);
  
    if (!INTEGRAL_TYPE_P (type)
!       || (BITINT_TYPE_P (type)
  	  && (TYPE_PRECISION (type) > MAX_FIXED_MODE_SIZE
  	      || TYPE_MODE (type) == BLKmode)))
      return type;
*************** switch_conversion::build_arrays ()
*** 1086,1092 ****
    utype = TREE_TYPE (m_index_expr);
    if (TREE_TYPE (utype))
      utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1);
!   else if (TREE_CODE (utype) == BITINT_TYPE
  	   && (TYPE_PRECISION (utype) > MAX_FIXED_MODE_SIZE
  	       || TYPE_MODE (utype) == BLKmode))
      utype = unsigned_type_for (utype);
--- 1086,1092 ----
    utype = TREE_TYPE (m_index_expr);
    if (TREE_TYPE (utype))
      utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1);
!   else if (BITINT_TYPE_P (utype)
  	   && (TYPE_PRECISION (utype) > MAX_FIXED_MODE_SIZE
  	       || TYPE_MODE (utype) == BLKmode))
      utype = unsigned_type_for (utype);
*************** jump_table_cluster::emit (tree index_exp
*** 1548,1554 ****
    /* For large/huge _BitInt, subtract low from index_expr, cast to unsigned
       DImode type (get_range doesn't support ranges larger than 64-bits)
       and subtract low from all case values as well.  */
!   if (TREE_CODE (TREE_TYPE (index_expr)) == BITINT_TYPE
        && TYPE_PRECISION (TREE_TYPE (index_expr)) > GET_MODE_PRECISION (DImode))
      {
        bitint = true;
--- 1548,1554 ----
    /* For large/huge _BitInt, subtract low from index_expr, cast to unsigned
       DImode type (get_range doesn't support ranges larger than 64-bits)
       and subtract low from all case values as well.  */
!   if (BITINT_TYPE_P (TREE_TYPE (index_expr))
        && TYPE_PRECISION (TREE_TYPE (index_expr)) > GET_MODE_PRECISION (DImode))
      {
        bitint = true;
*************** case_bit_test::cmp (const void *p1, cons
*** 1950,1957 ****
      return d2->bits - d1->bits;
  
    /* Stabilize the sort.  */
!   return (LABEL_DECL_UID (CASE_LABEL (d2->label))
! 	  - LABEL_DECL_UID (CASE_LABEL (d1->label)));
  }
  
  /*  Expand a switch statement by a short sequence of bit-wise
--- 1950,1957 ----
      return d2->bits - d1->bits;
  
    /* Stabilize the sort.  */
!   return (d2->target_bb->index
! 	  - d1->target_bb->index);
  }
  
  /*  Expand a switch statement by a short sequence of bit-wise
*************** bit_test_cluster::emit (tree index_expr,
*** 2010,2016 ****
  	  gcc_checking_assert (count < m_max_case_bit_tests);
  	  test[k].mask = wi::zero (prec);
  	  test[k].target_bb = n->m_case_bb;
- 	  test[k].label = n->m_case_label_expr;
  	  test[k].bits = 0;
  	  test[k].prob = profile_probability::never ();
  	  count++;
--- 2010,2015 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-switch-conversion.h gcc-17-20260531/gcc/tree-switch-conversion.h
*** gcc-17-20260524/gcc/tree-switch-conversion.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-switch-conversion.h	Sun May 31 22:32:13 2026
*************** enum cluster_type
*** 35,41 ****
  
  /* Abstract base class for representing a cluster of cases.
  
!    Here is the inheritance hierarachy, and the enum_cluster_type
     values for the concrete subclasses:
  
     cluster
--- 35,41 ----
  
  /* Abstract base class for representing a cluster of cases.
  
!    Here is the inheritance hierarchy, and the enum_cluster_type
     values for the concrete subclasses:
  
     cluster
*************** as a single bit test:
*** 312,318 ****
  	if ((1<<x) & ((1<<4)|(1<<6)|(1<<9)|(1<<11)))
  
  This transformation is only applied if the number of case targets is small,
! if CST constains at least 3 bits, and "1 << x" is cheap.  The bit tests are
  performed in "word_mode".
  
  The following example shows the code the transformation generates:
--- 312,318 ----
  	if ((1<<x) & ((1<<4)|(1<<6)|(1<<9)|(1<<11)))
  
  This transformation is only applied if the number of case targets is small,
! if CST contains at least 3 bits, and "1 << x" is cheap.  The bit tests are
  performed in "word_mode".
  
  The following example shows the code the transformation generates:
*************** class case_bit_test
*** 556,562 ****
  public:
    wide_int mask;
    basic_block target_bb;
-   tree label;
    int bits;
    profile_probability prob;
  
--- 556,561 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-data-refs.cc gcc-17-20260531/gcc/tree-vect-data-refs.cc
*** gcc-17-20260524/gcc/tree-vect-data-refs.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-data-refs.cc	Sun May 31 22:32:13 2026
*************** vect_get_smallest_scalar_type (stmt_vec_
*** 218,224 ****
  	    i = ~0U;
  	  else if (internal_store_fn_p (ifn))
  	    {
! 	      /* For stores use the tyep of the stored value.  */
  	      i = internal_fn_stored_value_index (ifn);
  	      scalar_type = TREE_TYPE (gimple_call_arg (call, i));
  	      i = ~0U;
--- 218,224 ----
  	    i = ~0U;
  	  else if (internal_store_fn_p (ifn))
  	    {
! 	      /* For stores use the type of the stored value.  */
  	      i = internal_fn_stored_value_index (ifn);
  	      scalar_type = TREE_TYPE (gimple_call_arg (call, i));
  	      i = ~0U;
*************** vect_preserves_scalar_order_p (dr_vec_in
*** 300,306 ****
      return true;
  
    /* If there is a loop invariant read involved we might vectorize it in
!      the prologue, breaking scalar oder with respect to the in-loop store.  */
    if ((DR_IS_READ (dr_info_a->dr) && integer_zerop (DR_STEP (dr_info_a->dr)))
        || (DR_IS_READ (dr_info_b->dr) && integer_zerop (DR_STEP (dr_info_b->dr))))
      return false;
--- 300,306 ----
      return true;
  
    /* If there is a loop invariant read involved we might vectorize it in
!      the prologue, breaking scalar order with respect to the in-loop store.  */
    if ((DR_IS_READ (dr_info_a->dr) && integer_zerop (DR_STEP (dr_info_a->dr)))
        || (DR_IS_READ (dr_info_b->dr) && integer_zerop (DR_STEP (dr_info_b->dr))))
      return false;
*************** vect_analyze_early_break_dependences (lo
*** 889,894 ****
--- 889,901 ----
  			     dest_bb->index);
  
    LOOP_VINFO_EARLY_BRK_DEST_BB (loop_vinfo) = dest_bb;
+   /* Check if loop has a side-effect (stores), force scalar epilogue.  */
+   for (auto dr : LOOP_VINFO_DATAREFS (loop_vinfo))
+     if (DR_IS_WRITE (dr))
+       {
+ 	LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo) = true;
+ 	break;
+       }
  
    if (!LOOP_VINFO_EARLY_BRK_VUSES (loop_vinfo).is_empty ())
      {
*************** vect_slp_analyze_instance_dependence (ve
*** 1261,1267 ****
  
  	  /* For now concern ourselves with write-after-read as we also
  	     only look for re-use of the store within the same SLP instance.
! 	     We can still get a RAW here when the instance contais a PHI
  	     with a backedge though, thus this test.  */
  	  if (! vect_stmt_dominates_stmt_p (STMT_VINFO_STMT (load_info),
  					    STMT_VINFO_STMT (store_info)))
--- 1268,1274 ----
  
  	  /* For now concern ourselves with write-after-read as we also
  	     only look for re-use of the store within the same SLP instance.
! 	     We can still get a RAW here when the instance contains a PHI
  	     with a backedge though, thus this test.  */
  	  if (! vect_stmt_dominates_stmt_p (STMT_VINFO_STMT (load_info),
  					    STMT_VINFO_STMT (store_info)))
*************** vect_enhance_data_refs_alignment (loop_v
*** 2614,2620 ****
        || !slpeel_can_duplicate_loop_p (loop, LOOP_VINFO_MAIN_EXIT (loop_vinfo),
  				       loop_preheader_edge (loop))
        || loop->inner
!       /* We don't currently maintaing the LCSSA for prologue peeled inversed
  	 loops.  */
        || (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo)
  	  && !LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)))
--- 2621,2627 ----
        || !slpeel_can_duplicate_loop_p (loop, LOOP_VINFO_MAIN_EXIT (loop_vinfo),
  				       loop_preheader_edge (loop))
        || loop->inner
!       /* We don't currently maintain the LCSSA for prologue peeled inversed
  	 loops.  */
        || (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED (loop_vinfo)
  	  && !LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)))
*************** vect_check_gather_scatter (stmt_vec_info
*** 4817,4823 ****
  
  	  /* In pattern recog we simply used a ZERO else value that
  	     we need to correct here.  To that end just re-use the
! 	     (already succesful) check if we support a gather IFN
  	     and have it populate the else values.  */
  	  if (DR_IS_READ (dr) && internal_fn_mask_index (ifn) >= 0 && elsvals)
  	    supports_vec_gather_load_p (TYPE_MODE (vectype), elsvals);
--- 4824,4830 ----
  
  	  /* In pattern recog we simply used a ZERO else value that
  	     we need to correct here.  To that end just re-use the
! 	     (already successful) check if we support a gather IFN
  	     and have it populate the else values.  */
  	  if (DR_IS_READ (dr) && internal_fn_mask_index (ifn) >= 0 && elsvals)
  	    supports_vec_gather_load_p (TYPE_MODE (vectype), elsvals);
*************** vect_grouped_store_supported (tree vecty
*** 6180,6186 ****
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			 "the size of the group of accesses"
! 			 " is not a power of 2 or not eqaul to 3\n");
        return false;
      }
  
--- 6187,6193 ----
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			 "the size of the group of accesses"
! 			 " is not a power of 2 or not equal to 3\n");
        return false;
      }
  
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-generic.cc gcc-17-20260531/gcc/tree-vect-generic.cc
*** gcc-17-20260524/gcc/tree-vect-generic.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-generic.cc	Sun May 31 22:32:13 2026
*************** type_for_widest_vector_mode (tree origin
*** 1509,1515 ****
     ARRAY_REF expression.
  
     GSI is required to insert temporary variables while building a
!    refernece to the element of the vector VECT.
  
     PTMPVEC is a pointer to the temporary variable for caching
     purposes.  In case when PTMPVEC is NULL new temporary variable
--- 1509,1515 ----
     ARRAY_REF expression.
  
     GSI is required to insert temporary variables while building a
!    reference to the element of the vector VECT.
  
     PTMPVEC is a pointer to the temporary variable for caching
     purposes.  In case when PTMPVEC is NULL new temporary variable
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-loop-manip.cc gcc-17-20260531/gcc/tree-vect-loop-manip.cc
*** gcc-17-20260524/gcc/tree-vect-loop-manip.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-loop-manip.cc	Sun May 31 22:32:13 2026
*************** vect_set_loop_condition_partial_vectors_
*** 1010,1016 ****
  	 continue;
  
       Where the constant is built with elements at most VF - 1 and
!      repetitions according to max_nscalars_per_iter which is guarnateed
       to be the same within a group.  */
  
    /* Convert NITERS to the determined IV type.  */
--- 1010,1016 ----
  	 continue;
  
       Where the constant is built with elements at most VF - 1 and
!      repetitions according to max_nscalars_per_iter which is guaranteed
       to be the same within a group.  */
  
    /* Convert NITERS to the determined IV type.  */
*************** get_live_virtual_operand_on_edge (edge e
*** 1473,1479 ****
     where the contents of the loop body are split but the iteration space of both
     copies remains the same.
  
!    If UPDATED_DOMS is not NULL it is update with the list of basic blocks whoms
     dominators were updated during the peeling.  When doing early break vectorization
     then LOOP_VINFO needs to be provided and is used to keep track of any newly created
     memory references that need to be updated should we decide to vectorize.  */
--- 1473,1479 ----
     where the contents of the loop body are split but the iteration space of both
     copies remains the same.
  
!    If UPDATED_DOMS is not NULL it is update with the list of basic blocks whose
     dominators were updated during the peeling.  When doing early break vectorization
     then LOOP_VINFO needs to be provided and is used to keep track of any newly created
     memory references that need to be updated should we decide to vectorize.  */
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1484,1490 ****
  					edge scalar_exit, edge e, edge *new_e,
  					bool flow_loops,
  					vec<basic_block> *updated_doms,
! 					bool uncounted_p, bool create_main_e)
  {
    class loop *new_loop;
    basic_block *new_bbs, *bbs, *pbbs;
--- 1484,1491 ----
  					edge scalar_exit, edge e, edge *new_e,
  					bool flow_loops,
  					vec<basic_block> *updated_doms,
! 					bool uncounted_p, bool create_main_e,
! 					bool redirect_exits)
  {
    class loop *new_loop;
    basic_block *new_bbs, *bbs, *pbbs;
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1601,1607 ****
        }
  
    auto loop_exits = get_loop_exit_edges (loop);
!   bool multiple_exits_p = loop_exits.length () > 1;
    auto_vec<basic_block> doms;
  
    if (at_exit) /* Add the loop copy at exit.  */
--- 1602,1612 ----
        }
  
    auto loop_exits = get_loop_exit_edges (loop);
!   bool has_multiple_exits_p = loop_exits.length () > 1;
! 
!   /* If REDIRECT_EXITS is false we leave the alternative exits untouched and
!      treat the duplication as if the loop only had the main exit.  */
!   bool redirect_multiple_exits_p = redirect_exits && has_multiple_exits_p;
    auto_vec<basic_block> doms;
  
    if (at_exit) /* Add the loop copy at exit.  */
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1641,1650 ****
  		       loop_exit, UNKNOWN_LOCATION);
  	}
  
-       bool multiple_exits_p = loop_exits.length () > 1;
        basic_block main_loop_exit_block = new_preheader;
!       basic_block alt_loop_exit_block = NULL;
!       /* Create the CFG for multiple exits.
  		   | loop_exit               | alt1   | altN
  		   v                         v   ...  v
  	    main_loop_exit_block:       alt_loop_exit_block:
--- 1646,1655 ----
  		       loop_exit, UNKNOWN_LOCATION);
  	}
  
        basic_block main_loop_exit_block = new_preheader;
!       basic_block alt_loop_exit_block = new_preheader;
!       /* When we redirect the other exits create the CFG
! 	 below to funnel everything through the merge block:
  		   | loop_exit               | alt1   | altN
  		   v                         v   ...  v
  	    main_loop_exit_block:       alt_loop_exit_block:
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1655,1693 ****
  	 the continuation values into the epilogue header.
  	 Do not bother with exit PHIs for the early exits but
  	 their live virtual operand.  We'll fix up things below.  */
!       if (multiple_exits_p || uncounted_p)
  	{
  	  edge loop_e = single_succ_edge (new_preheader);
  	  new_preheader = split_edge (loop_e);
  
! 	  gphi *vphi = NULL;
! 	  alt_loop_exit_block = new_preheader;
! 	  for (auto exit : loop_exits)
! 	    if (exit != loop_exit)
! 	      {
! 		tree vphi_def = NULL_TREE;
! 		if (gphi *evphi = get_virtual_phi (exit->dest))
! 		  vphi_def = gimple_phi_arg_def_from_edge (evphi, exit);
! 		edge res = redirect_edge_and_branch (exit, alt_loop_exit_block);
! 		gcc_assert (res == exit);
! 		redirect_edge_var_map_clear (exit);
! 		if (alt_loop_exit_block == new_preheader)
! 		  alt_loop_exit_block = split_edge (exit);
! 		if (!need_virtual_phi)
! 		  continue;
! 		/* When the edge has no virtual LC PHI get at the live
! 		   virtual operand by other means.  */
! 		if (!vphi_def)
! 		  vphi_def = get_live_virtual_operand_on_edge (exit);
! 		if (!vphi)
! 		  vphi = create_phi_node (copy_ssa_name (vphi_def),
  					  alt_loop_exit_block);
! 		else
! 		  /* Edge redirection might re-allocate the PHI node
! 		     so we have to rediscover it.  */
! 		  vphi = get_virtual_phi (alt_loop_exit_block);
! 		add_phi_arg (vphi, vphi_def, exit, UNKNOWN_LOCATION);
! 	      }
  
  	  set_immediate_dominator (CDI_DOMINATORS, new_preheader,
  				   loop->header);
--- 1660,1705 ----
  	 the continuation values into the epilogue header.
  	 Do not bother with exit PHIs for the early exits but
  	 their live virtual operand.  We'll fix up things below.  */
!       if (redirect_multiple_exits_p || uncounted_p)
  	{
  	  edge loop_e = single_succ_edge (new_preheader);
  	  new_preheader = split_edge (loop_e);
  
! 	if (redirect_exits)
! 	  {
! 	    gphi *vphi = NULL;
! 	    alt_loop_exit_block = new_preheader;
! 	    for (auto exit : loop_exits)
! 	      if (exit != loop_exit)
! 		{
! 		  tree vphi_def = NULL_TREE;
! 		  if (gphi *evphi = get_virtual_phi (exit->dest))
! 		    vphi_def = gimple_phi_arg_def_from_edge (evphi, exit);
! 		  edge res
! 		    = redirect_edge_and_branch (exit, alt_loop_exit_block);
! 		  gcc_assert (res == exit);
! 		  redirect_edge_var_map_clear (exit);
! 
! 		  if (alt_loop_exit_block == new_preheader)
! 		    alt_loop_exit_block = split_edge (exit);
! 		  if (!need_virtual_phi)
! 		    continue;
! 
! 		  /* When the edge has no virtual LC PHI get at the live
! 		     virtual operand by other means.  */
! 		  if (!vphi_def)
! 		    vphi_def = get_live_virtual_operand_on_edge (exit);
! 
! 		  if (!vphi)
! 		    vphi = create_phi_node (copy_ssa_name (vphi_def),
  					  alt_loop_exit_block);
! 		  else
! 		    /* Edge redirection might re-allocate the PHI node
! 		       so we have to rediscover it.  */
! 		    vphi = get_virtual_phi (alt_loop_exit_block);
! 		  add_phi_arg (vphi, vphi_def, exit, UNKNOWN_LOCATION);
! 		}
! 	  }
  
  	  set_immediate_dominator (CDI_DOMINATORS, new_preheader,
  				   loop->header);
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1741,1747 ****
  
  	  /* Create the merge PHI nodes in new_preheader and populate the
  	     arguments for the exits.  */
! 	  if (multiple_exits_p || uncounted_p)
  	    {
  	      for (auto gsi_from = gsi_start_phis (loop->header),
  		   gsi_to = gsi_start_phis (new_loop->header);
--- 1753,1759 ----
  
  	  /* Create the merge PHI nodes in new_preheader and populate the
  	     arguments for the exits.  */
! 	  if (redirect_multiple_exits_p)
  	    {
  	      for (auto gsi_from = gsi_start_phis (loop->header),
  		   gsi_to = gsi_start_phis (new_loop->header);
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1795,1801 ****
  		}
  	    }
  
! 	  if (multiple_exits_p)
  	    {
  	      /* After creating the merge PHIs handle the early exits those
  		 should use the values at the start of the loop.  */
--- 1807,1813 ----
  		}
  	    }
  
! 	  if (redirect_multiple_exits_p)
  	    {
  	      /* After creating the merge PHIs handle the early exits those
  		 should use the values at the start of the loop.  */
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1826,1839 ****
  			SET_PHI_ARG_DEF (lc_phi, i, alt_arg);
  		      alt_arg = alt_def;
  		    }
  		  edge alt_e = single_succ_edge (alt_loop_exit_block);
  		  SET_PHI_ARG_DEF_ON_EDGE (to_phi, alt_e, alt_arg);
  		}
  	    }
  	  /* For the single exit case only create the missing LC PHI nodes
  	     for the continuation of the loop IVs that are not also already
! 	     reductions and thus had LC PHI nodes on the exit already.  */
! 	  if (!multiple_exits_p && !uncounted_p)
  	    {
  	      for (auto gsi_from = gsi_start_phis (loop->header),
  		   gsi_to = gsi_start_phis (new_loop->header);
--- 1838,1861 ----
  			SET_PHI_ARG_DEF (lc_phi, i, alt_arg);
  		      alt_arg = alt_def;
  		    }
+ 
+ 		  /* The merge PHIs live in NEW_PREHEADER; their
+ 		     alternative argument always comes from the
+ 		     successor edge of ALT_LOOP_EXIT_BLOCK.  */
  		  edge alt_e = single_succ_edge (alt_loop_exit_block);
  		  SET_PHI_ARG_DEF_ON_EDGE (to_phi, alt_e, alt_arg);
  		}
  	    }
+ 
  	  /* For the single exit case only create the missing LC PHI nodes
  	     for the continuation of the loop IVs that are not also already
! 	     reductions and thus had LC PHI nodes on the exit already.  When
! 	     we are not redirecting the alternative exits the layout is:
! 
! 		   loop_exit ---> new_preheader ---> epilog
! 		   alt_exit ---------------> original dest
! 	   */
! 	  if (!redirect_multiple_exits_p)
  	    {
  	      for (auto gsi_from = gsi_start_phis (loop->header),
  		   gsi_to = gsi_start_phis (new_loop->header);
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1842,1862 ****
  		{
  		  gimple *from_phi = gsi_stmt (gsi_from);
  		  gimple *to_phi = gsi_stmt (gsi_to);
! 		  tree new_arg = PHI_ARG_DEF_FROM_EDGE (from_phi,
! 							loop_latch_edge (loop));
  
  		  /* Check if we've already created a new phi node during edge
  		     redirection.  If we have, only propagate the value
  		     downwards.  */
  		  if (tree *res = new_phi_args.get (new_arg))
  		    {
! 		      adjust_phi_and_debug_stmts (to_phi, loop_entry, *res);
! 		      continue;
  		    }
  
  		  tree new_res = copy_ssa_name (gimple_phi_result (from_phi));
! 		  gphi *lcssa_phi = create_phi_node (new_res, new_preheader);
! 		  SET_PHI_ARG_DEF_ON_EDGE (lcssa_phi, loop_exit, new_arg);
  		  adjust_phi_and_debug_stmts (to_phi, loop_entry, new_res);
  		}
  	    }
--- 1864,1917 ----
  		{
  		  gimple *from_phi = gsi_stmt (gsi_from);
  		  gimple *to_phi = gsi_stmt (gsi_to);
! 		  tree new_arg;
! 
! 		  /* Use the value on the exiting path.  When the exit is from
! 		     the latch edge we want the post-iteration value on that
! 		     edge; when the exit is from the loop header (before the
! 		     latch ever executes) we must use the current header value,
! 		     otherwise we pick up a name that was never defined.  */
! 		  if (!has_multiple_exits_p && !uncounted_p)
! 		    new_arg = PHI_ARG_DEF_FROM_EDGE (from_phi,
! 						     loop_latch_edge (loop));
! 		  else
! 		    new_arg = gimple_phi_result (from_phi);
! 
! 		  /* Re-use the virtual LC PHI we already built when we are not
! 		     redirecting the other exits to avoid creating duplicate
! 		     virtual SSA names.  */
! 		  if (virtual_operand_p (new_arg))
! 		    {
! 		      if (gphi *vphi = get_virtual_phi (main_loop_exit_block))
! 			{
! 			  adjust_phi_and_debug_stmts (to_phi, loop_entry,
! 						      gimple_phi_result (vphi));
! 			  continue;
! 			}
! 		    }
  
  		  /* Check if we've already created a new phi node during edge
  		     redirection.  If we have, only propagate the value
  		     downwards.  */
  		  if (tree *res = new_phi_args.get (new_arg))
  		    {
! 		      /* Check if the new dest block already contains a use.  */
! 		      gimple *stmt = SSA_NAME_DEF_STMT (*res);
! 
! 		      /* If the value already exist, just update the destination
! 			 and if it doesn't we want a new node.  */
! 		      if (gimple_bb (stmt) == main_loop_exit_block)
! 			{
! 			  adjust_phi_and_debug_stmts (to_phi, loop_entry, *res);
! 			  continue;
! 			}
! 		      else
! 			new_arg = *res;
  		    }
  
  		  tree new_res = copy_ssa_name (gimple_phi_result (from_phi));
! 		  gphi *lcssa_phi = create_phi_node (new_res, main_loop_exit_block);
! 		  SET_PHI_ARG_DEF (lcssa_phi, loop_exit->dest_idx, new_arg);
  		  adjust_phi_and_debug_stmts (to_phi, loop_entry, new_res);
  		}
  	    }
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 1876,1882 ****
        /* Finally after wiring the new epilogue we need to update its main exit
  	 to the original function exit we recorded.  Other exits are already
  	 correct.  */
!       if (multiple_exits_p || uncounted_p)
  	{
  	  class loop *update_loop = new_loop;
  	  doms = get_all_dominated_blocks (CDI_DOMINATORS, loop->header);
--- 1931,1937 ----
        /* Finally after wiring the new epilogue we need to update its main exit
  	 to the original function exit we recorded.  Other exits are already
  	 correct.  */
!       if (has_multiple_exits_p || uncounted_p)
  	{
  	  class loop *update_loop = new_loop;
  	  doms = get_all_dominated_blocks (CDI_DOMINATORS, loop->header);
*************** slpeel_tree_duplicate_loop_to_edge_cfg (
*** 2000,2006 ****
  			       loop_preheader_edge (new_loop)->src);
  
        /* Update dominators for multiple exits.  */
!       if (multiple_exits_p || create_main_e)
  	{
  	  for (edge alt_e : loop_exits)
  	    {
--- 2055,2061 ----
  			       loop_preheader_edge (new_loop)->src);
  
        /* Update dominators for multiple exits.  */
!       if (has_multiple_exits_p || create_main_e)
  	{
  	  for (edge alt_e : loop_exits)
  	    {
*************** vect_can_peel_nonlinear_iv_p (loop_vec_i
*** 2201,2207 ****
      = STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE (stmt_info);
    tree niters_skip;
    /* Init_expr will be update by vect_update_ivs_after_vectorizer,
!      if niters or vf is unkown:
       For shift, when shift mount >= precision, there would be UD.
       For mult, don't known how to generate
       init_expr * pow (step, niters) for variable niters.
--- 2256,2262 ----
      = STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE (stmt_info);
    tree niters_skip;
    /* Init_expr will be update by vect_update_ivs_after_vectorizer,
!      if niters or vf is unknown:
       For shift, when shift mount >= precision, there would be UD.
       For mult, don't known how to generate
       init_expr * pow (step, niters) for variable niters.
*************** vect_can_peel_nonlinear_iv_p (loop_vec_i
*** 2251,2257 ****
  	}
      }
  
!   /* Also doens't support peel for neg when niter is variable.
       ??? generate something like niter_expr & 1 ? init_expr : -init_expr?  */
    niters_skip = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
    if ((niters_skip != NULL_TREE
--- 2306,2312 ----
  	}
      }
  
!   /* Also doesn't support peel for neg when niter is variable.
       ??? generate something like niter_expr & 1 ? init_expr : -init_expr?  */
    niters_skip = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
    if ((niters_skip != NULL_TREE
*************** vect_can_peel_nonlinear_iv_p (loop_vec_i
*** 2262,2268 ****
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			 "Peeling for alignement is not supported"
  			 " for nonlinear induction when niters_skip"
  			 " is not constant.\n");
        return false;
--- 2317,2323 ----
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			 "Peeling for alignment is not supported"
  			 " for nonlinear induction when niters_skip"
  			 " is not constant.\n");
        return false;
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3251,3262 ****
  
    /* For early breaks the scalar loop needs to execute at most VF times
       to find the element that caused the break.  */
!   if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo))
      bound_epilog = vf;
  
    bool epilog_peeling = maybe_ne (bound_epilog, 0U);
    poly_uint64 bound_scalar = bound_epilog;
  
    if (!prolog_peeling && !epilog_peeling)
      return NULL;
  
--- 3306,3322 ----
  
    /* For early breaks the scalar loop needs to execute at most VF times
       to find the element that caused the break.  */
!   if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
!       && LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo))
      bound_epilog = vf;
  
    bool epilog_peeling = maybe_ne (bound_epilog, 0U);
    poly_uint64 bound_scalar = bound_epilog;
  
+   if (!LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo) && dump_enabled_p ())
+     dump_printf_loc (MSG_NOTE, vect_location,
+ 		     "early break does not require epilog.\n");
+ 
    if (!prolog_peeling && !epilog_peeling)
      return NULL;
  
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3327,3333 ****
       introduces clobbers of the temporary vector array, which in turn
       needs new vdefs.  If the scalar loop doesn't write to memory, these
       new vdefs will be the only ones in the vector loop.
!      We are currently defering updating virtual SSA form and creating
       of a virtual PHI for this case so we do not have to make sure the
       newly introduced virtual def is in LCSSA form.  */
  
--- 3387,3393 ----
       introduces clobbers of the temporary vector array, which in turn
       needs new vdefs.  If the scalar loop doesn't write to memory, these
       new vdefs will be the only ones in the vector loop.
!      We are currently deferring updating virtual SSA form and creating
       of a virtual PHI for this case so we do not have to make sure the
       newly introduced virtual def is in LCSSA form.  */
  
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3446,3455 ****
        /* Peel prolog and put it on preheader edge of loop.  */
        edge scalar_e = LOOP_VINFO_SCALAR_MAIN_EXIT (loop_vinfo);
        edge prolog_e = NULL;
        prolog = slpeel_tree_duplicate_loop_to_edge_cfg (loop, exit_e,
  						       scalar_loop, scalar_e,
  						       e, &prolog_e, true, NULL,
! 						       false, uncounted_p);
  
        gcc_assert (prolog);
        prolog->force_vectorize = false;
--- 3506,3517 ----
        /* Peel prolog and put it on preheader edge of loop.  */
        edge scalar_e = LOOP_VINFO_SCALAR_MAIN_EXIT (loop_vinfo);
        edge prolog_e = NULL;
+       bool early_break_peel_p = LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo);
        prolog = slpeel_tree_duplicate_loop_to_edge_cfg (loop, exit_e,
  						       scalar_loop, scalar_e,
  						       e, &prolog_e, true, NULL,
! 						       uncounted_p, uncounted_p,
! 						       early_break_peel_p);
  
        gcc_assert (prolog);
        prolog->force_vectorize = false;
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3561,3570 ****
        edge epilog_e = vect_epilogues ? e : scalar_e;
        edge new_epilog_e = NULL;
        auto_vec<basic_block> doms;
        epilog
  	= slpeel_tree_duplicate_loop_to_edge_cfg (loop, e, epilog, epilog_e, e,
  						  &new_epilog_e, true, &doms,
! 						  uncounted_p);
  
        LOOP_VINFO_EPILOGUE_MAIN_EXIT (loop_vinfo) = new_epilog_e;
        gcc_assert (epilog);
--- 3623,3634 ----
        edge epilog_e = vect_epilogues ? e : scalar_e;
        edge new_epilog_e = NULL;
        auto_vec<basic_block> doms;
+       bool early_break_peel_p = LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo);
        epilog
  	= slpeel_tree_duplicate_loop_to_edge_cfg (loop, e, epilog, epilog_e, e,
  						  &new_epilog_e, true, &doms,
! 						  uncounted_p, false,
! 						  early_break_peel_p);
  
        LOOP_VINFO_EPILOGUE_MAIN_EXIT (loop_vinfo) = new_epilog_e;
        gcc_assert (epilog);
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3614,3619 ****
--- 3678,3684 ----
  	  /* Handle any remaining dominator updates needed after
  	     inserting the loop skip edge above.  */
  	  if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
+ 	      && LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo)
  	      && prolog_peeling)
  	    {
  	      /* Adding a skip edge to skip a loop with multiple exits
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3675,3681 ****
  				       niters_no_overflow);
  	  if (!integer_onep (*step_vector))
  	    {
! 	      /* On exit from the loop we will have an easy way of calcalating
  		 NITERS_VECTOR / STEP * STEP.  Install a dummy definition
  		 until then.  */
  	      niters_vector_mult_vf
--- 3740,3746 ----
  				       niters_no_overflow);
  	  if (!integer_onep (*step_vector))
  	    {
! 	      /* On exit from the loop we will have an easy way of calculating
  		 NITERS_VECTOR / STEP * STEP.  Install a dummy definition
  		 until then.  */
  	      niters_vector_mult_vf
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3761,3767 ****
  	    = make_ssa_name (LOOP_VINFO_EARLY_BRK_IV_TYPE (loop_vinfo));
  
  	  if (!(LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)
! 		&& get_loop_exit_edges (loop).length () == 1))
  	  {
  	    basic_block exit_bb = NULL;
  	    edge update_e = NULL;
--- 3826,3833 ----
  	    = make_ssa_name (LOOP_VINFO_EARLY_BRK_IV_TYPE (loop_vinfo));
  
  	  if (!(LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)
! 		&& get_loop_exit_edges (loop).length () == 1)
! 	      && LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo))
  	  {
  	    basic_block exit_bb = NULL;
  	    edge update_e = NULL;
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-loop.cc gcc-17-20260531/gcc/tree-vect-loop.cc
*** gcc-17-20260524/gcc/tree-vect-loop.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-loop.cc	Sun May 31 22:32:13 2026
*************** edge
*** 656,662 ****
  vec_init_loop_exit_info (class loop *loop)
  {
    /* Before we begin we must first determine which exit is the main one and
!      which are auxilary exits.  */
    auto_vec<edge> exits = get_loop_exit_edges (loop);
    if (exits.length () == 0)
      return NULL;
--- 656,662 ----
  vec_init_loop_exit_info (class loop *loop)
  {
    /* Before we begin we must first determine which exit is the main one and
!      which are auxiliary exits.  */
    auto_vec<edge> exits = get_loop_exit_edges (loop);
    if (exits.length () == 0)
      return NULL;
*************** _loop_vec_info::_loop_vec_info (class lo
*** 775,781 ****
      drs_advanced_by (NULL_TREE),
      vec_loop_main_exit (NULL),
      vec_epilogue_loop_main_exit (NULL),
!     scalar_loop_main_exit (NULL)
  {
    /* CHECKME: We want to visit all BBs before their successors (except for
       latch blocks, for which this assertion wouldn't hold).  In the simple
--- 775,783 ----
      drs_advanced_by (NULL_TREE),
      vec_loop_main_exit (NULL),
      vec_epilogue_loop_main_exit (NULL),
!     scalar_loop_main_exit (NULL),
!     early_break_needs_epilogue (false),
!     early_break_niters_var (NULL)
  {
    /* CHECKME: We want to visit all BBs before their successors (except for
       latch blocks, for which this assertion wouldn't hold).  In the simple
*************** vect_verify_full_masking_avx512 (loop_ve
*** 1244,1250 ****
    return true;
  }
  
! /* Check whether we can use vector access with length based on precison
     comparison.  So far, to keep it simple, we only allow the case that the
     precision of the target supported length is larger than the precision
     required by loop niters.  */
--- 1246,1252 ----
    return true;
  }
  
! /* Check whether we can use vector access with length based on precision
     comparison.  So far, to keep it simple, we only allow the case that the
     precision of the target supported length is larger than the precision
     required by loop niters.  */
*************** vect_verify_loop_lens (loop_vec_info loo
*** 1307,1313 ****
       - the Pmode precision
  
       If min_ni_prec is less than the precision of the current niters,
!      we perfer to still use the niters type.  Prefer to use Pmode and
       wider IV to avoid narrow conversions.  */
  
    unsigned int ni_prec
--- 1309,1315 ----
       - the Pmode precision
  
       If min_ni_prec is less than the precision of the current niters,
!      we prefer to still use the niters type.  Prefer to use Pmode and
       wider IV to avoid narrow conversions.  */
  
    unsigned int ni_prec
*************** vect_create_loop_vinfo (class loop *loop
*** 1705,1710 ****
--- 1707,1719 ----
    LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
      = !LOOP_VINFO_LOOP_CONDS (loop_vinfo).is_empty ();
  
+   /* At the moment we can't support no epilogs for multiple exits, result of
+      the first compare should be masked by that of the second.  We can only
+      allow it if the early exits have the same live values.  for differing
+      values we have to calculate a third mask to disambiguate. */
+   LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo)
+     = LOOP_VINFO_LOOP_CONDS (loop_vinfo).length () > 1;
+ 
    if (info->inner_loop_cond)
      {
        /* If we have an estimate on the number of iterations of the inner
*************** vect_analyze_loop_costing (loop_vec_info
*** 1767,1773 ****
  
    /* If we know the number of iterations we can do better, for the
       epilogue we can also decide whether the main loop leaves us
!      with enough iterations, prefering a smaller vector epilog then
       also possibly used for the case we skip the vector loop.  */
    if (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo))
      {
--- 1776,1782 ----
  
    /* If we know the number of iterations we can do better, for the
       epilogue we can also decide whether the main loop leaves us
!      with enough iterations, preferring a smaller vector epilog then
       also possibly used for the case we skip the vector loop.  */
    if (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo))
      {
*************** vect_analyze_loop_2 (loop_vec_info loop_
*** 2159,2165 ****
      orig_loop_vinfo = loop_vinfo;
    gcc_assert (orig_loop_vinfo);
  
!   /* We can't mask on niters for uncounted loops due to unkown upper bound.  */
    if (LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo))
      LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
  
--- 2168,2174 ----
      orig_loop_vinfo = loop_vinfo;
    gcc_assert (orig_loop_vinfo);
  
!   /* We can't mask on niters for uncounted loops due to unknown upper bound.  */
    if (LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo))
      LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
  
*************** start_over:
*** 2302,2308 ****
    gcc_assert (LOOP_VINFO_MASKS (loop_vinfo).is_empty ());
  
    /* Apply the suggested unrolling factor, this was determined by the backend
!      during finish_cost the first time we ran the analyzis for this
       vector mode.  */
    if (applying_suggested_uf)
      LOOP_VINFO_VECT_FACTOR (loop_vinfo) *= loop_vinfo->suggested_unroll_factor;
--- 2311,2317 ----
    gcc_assert (LOOP_VINFO_MASKS (loop_vinfo).is_empty ());
  
    /* Apply the suggested unrolling factor, this was determined by the backend
!      during finish_cost the first time we ran the analysis for this
       vector mode.  */
    if (applying_suggested_uf)
      LOOP_VINFO_VECT_FACTOR (loop_vinfo) *= loop_vinfo->suggested_unroll_factor;
*************** vect_analyze_loop (class loop *loop, gim
*** 2998,3004 ****
  
        if (loop_vinfo)
  	{
! 	  /*  Analyzis has been successful so update the VF value.  The
  	      VF should always be a multiple of unroll_factor and we want to
  	      capture the original VF here.  */
  	  cached_vf_per_mode[last_mode_i]
--- 3007,3013 ----
  
        if (loop_vinfo)
  	{
! 	  /*  Analysis has been successful so update the VF value.  The
  	      VF should always be a multiple of unroll_factor and we want to
  	      capture the original VF here.  */
  	  cached_vf_per_mode[last_mode_i]
*************** vect_analyze_loop (class loop *loop, gim
*** 3175,3181 ****
  		break;
  	    }
  
! 	  /* Revert back to the default from the suggested prefered
  	     epilogue vectorization mode.  */
  	  masked_p = -1;
  	  if (mode_i == vector_modes.length ())
--- 3184,3190 ----
  		break;
  	    }
  
! 	  /* Revert back to the default from the suggested preferred
  	     epilogue vectorization mode.  */
  	  masked_p = -1;
  	  if (mode_i == vector_modes.length ())
*************** vect_is_simple_reduction (loop_vec_info
*** 3801,3807 ****
      }
  
    /* If this isn't a nested cycle or if the nested cycle reduction value
!      is used ouside of the inner loop we cannot handle uses of the reduction
       value.  */
    if (nlatch_def_loop_uses > 1 || nphi_def_loop_uses > 1)
      {
--- 3810,3816 ----
      }
  
    /* If this isn't a nested cycle or if the nested cycle reduction value
!      is used outside of the inner loop we cannot handle uses of the reduction
       value.  */
    if (nlatch_def_loop_uses > 1 || nphi_def_loop_uses > 1)
      {
*************** vect_create_epilog_for_reduction (loop_v
*** 5905,5911 ****
  							neutral_op);
        for (unsigned int i = 0; i < group_size; ++i)
  	{
! 	  /* If there's no univeral neutral value, we can use the
  	     initial scalar value from the original PHI.  This is used
  	     for MIN and MAX reduction, for example.  */
  	  if (!neutral_op)
--- 5914,5920 ----
  							neutral_op);
        for (unsigned int i = 0; i < group_size; ++i)
  	{
! 	  /* If there's no universal neutral value, we can use the
  	     initial scalar value from the original PHI.  This is used
  	     for MIN and MAX reduction, for example.  */
  	  if (!neutral_op)
*************** vectorizable_lane_reducing (loop_vec_inf
*** 6806,6812 ****
      return false;
  
    /* Lane-reducing pattern inside any inner loop of LOOP_VINFO is not
!      recoginized.  */
    gcc_assert (!nested_in_vect_loop_p (LOOP_VINFO_LOOP (loop_vinfo), stmt_info));
    gcc_assert (VECT_REDUC_INFO_TYPE (reduc_info) == TREE_CODE_REDUCTION);
  
--- 6815,6821 ----
      return false;
  
    /* Lane-reducing pattern inside any inner loop of LOOP_VINFO is not
!      recognized.  */
    gcc_assert (!nested_in_vect_loop_p (LOOP_VINFO_LOOP (loop_vinfo), stmt_info));
    gcc_assert (VECT_REDUC_INFO_TYPE (reduc_info) == TREE_CODE_REDUCTION);
  
*************** vectorizable_reduction (loop_vec_info lo
*** 7438,7444 ****
        else if (needs_fold_left_reduction_p (op.type, orig_code))
  	{
  	  /* When vectorizing a reduction chain w/o SLP the reduction PHI
! 	     is not directy used in stmt.  */
  	  if (reduc_chain_length != 1)
  	    {
  	      if (dump_enabled_p ())
--- 7447,7453 ----
        else if (needs_fold_left_reduction_p (op.type, orig_code))
  	{
  	  /* When vectorizing a reduction chain w/o SLP the reduction PHI
! 	     is not directly used in stmt.  */
  	  if (reduc_chain_length != 1)
  	    {
  	      if (dump_enabled_p ())
*************** vectorizable_live_operation (vec_info *v
*** 10433,10439 ****
  		if (dump_enabled_p ())
  		  dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  				   "Using original scalar computation for "
! 				   "live lane because use preceeds vector "
  				   "def\n");
  		continue;
  	      }
--- 10442,10448 ----
  		if (dump_enabled_p ())
  		  dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  				   "Using original scalar computation for "
! 				   "live lane because use precedes vector "
  				   "def\n");
  		continue;
  	      }
*************** vect_record_loop_len (loop_vec_info loop
*** 10705,10711 ****
  /* Given a complete set of lengths LENS, extract length number INDEX
     for an rgroup that operates on NVECTORS vectors of type VECTYPE,
     where 0 <= INDEX < NVECTORS.  Return a value that contains FACTOR
!    multipled by the number of elements that should be processed.
     Insert any set-up statements before GSI.  */
  
  tree
--- 10714,10720 ----
  /* Given a complete set of lengths LENS, extract length number INDEX
     for an rgroup that operates on NVECTORS vectors of type VECTYPE,
     where 0 <= INDEX < NVECTORS.  Return a value that contains FACTOR
!    multiplied by the number of elements that should be processed.
     Insert any set-up statements before GSI.  */
  
  tree
*************** scale_profile_for_vect_loop (class loop
*** 10860,10866 ****
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Vectorization factor %i seems too large for profile "
! 		 "prevoiusly believed to be consistent; reducing.\n", vf);
        vf /= 2;
      }
  
--- 10869,10875 ----
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
  		 "Vectorization factor %i seems too large for profile "
! 		 "previously believed to be consistent; reducing.\n", vf);
        vf /= 2;
      }
  
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11058,11068 ****
  {
    DUMP_VECT_SCOPE ("vect_update_ivs_after_vectorizer_for_early_breaks");
  
!   if (!LOOP_VINFO_EARLY_BREAKS (loop_vinfo))
      return;
  
-   gcc_assert (LOOP_VINFO_EARLY_BRK_NITERS_VAR (loop_vinfo));
- 
    tree phi_var = LOOP_VINFO_EARLY_BRK_NITERS_VAR (loop_vinfo);
    tree niters_skip = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
    poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
--- 11067,11077 ----
  {
    DUMP_VECT_SCOPE ("vect_update_ivs_after_vectorizer_for_early_breaks");
  
!   if (!LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
!       /* If no peeling was done then we have no IV to update.  */
!       || !LOOP_VINFO_EARLY_BRK_NITERS_VAR (loop_vinfo))
      return;
  
    tree phi_var = LOOP_VINFO_EARLY_BRK_NITERS_VAR (loop_vinfo);
    tree niters_skip = LOOP_VINFO_MASK_SKIP_NITERS (loop_vinfo);
    poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11144,11150 ****
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
!   /* Wite the adjustments in the header block.  */
    basic_block bb = loop->header;
    auto si = gsi_after_labels (bb);
    gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
--- 11153,11159 ----
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
!   /* Write the adjustments in the header block.  */
    basic_block bb = loop->header;
    auto si = gsi_after_labels (bb);
    gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-patterns.cc gcc-17-20260531/gcc/tree-vect-patterns.cc
*** gcc-17-20260524/gcc/tree-vect-patterns.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-patterns.cc	Sun May 31 22:32:13 2026
*************** vect_recog_bit_insert_pattern (vec_info
*** 3002,3008 ****
     needed to maintain the type correctness of the IR.
  
     vect_determine_precisions has already determined the minimum
!    precison of the operation and the minimum precision required
     by users of the result.  */
  
  static gimple *
--- 3002,3008 ----
     needed to maintain the type correctness of the IR.
  
     vect_determine_precisions has already determined the minimum
!    precision of the operation and the minimum precision required
     by users of the result.  */
  
  static gimple *
*************** vect_recog_build_binary_gimple_stmt (vec
*** 4625,4631 ****
   *   _10 = -_9;
   *   _12 = _7 | _10;
   *
!  * And then simplied to
   *   _12 = .SAT_ADD (_4, _6);
   */
  
--- 4625,4631 ----
   *   _10 = -_9;
   *   _12 = _7 | _10;
   *
!  * And then simplified to
   *   _12 = .SAT_ADD (_4, _6);
   */
  
*************** vect_recog_sat_sub_pattern_transform (ve
*** 4732,4738 ****
   *   _10 = (long unsigned int) _7;
   *   _9 = _8 * _10;
   *
!  * And then simplied to
   *   _9 = .SAT_SUB (_1, _2);
   *
   * Signed:
--- 4732,4738 ----
   *   _10 = (long unsigned int) _7;
   *   _9 = _8 * _10;
   *
!  * And then simplified to
   *   _9 = .SAT_SUB (_1, _2);
   *
   * Signed:
*************** vect_recog_sat_sub_pattern_transform (ve
*** 4753,4759 ****
   *   _41 = _42 & _44;
   *   iftmp.2_11 = _41 ? _26 : minus_19;
   *
!  * And then simplied to
   *   iftmp.2_11 = .SAT_SUB (x_16, y_18);
   */
  
--- 4753,4759 ----
   *   _41 = _42 & _44;
   *   iftmp.2_11 = _41 ? _26 : minus_19;
   *
!  * And then simplified to
   *   iftmp.2_11 = .SAT_SUB (x_16, y_18);
   */
  
*************** vect_recog_sat_sub_pattern (vec_info *vi
*** 4794,4800 ****
   *   _3 = -_2;
   *   _6 = _1 | _3;
   *
!  * And then simplied to
   *   _6 = .SAT_TRUNC (x_4(D));
   */
  
--- 4794,4800 ----
   *   _3 = -_2;
   *   _6 = _1 | _3;
   *
!  * And then simplified to
   *   _6 = .SAT_TRUNC (x_4(D));
   */
  
*************** add_code_for_floorceilround_divmod (tree
*** 5064,5070 ****
  	unsigned HOST_WIDE_INT mid_d = (abs_d - 1) >> 1;
  	if (!unsigned_p)
  	  {
! 	    // check availibility of abs expression for vector
  	    if (!target_has_vecop_for_code (ABS_EXPR, vectype))
  	      return NULL;
  	    // abs (r)
--- 5064,5070 ----
  	unsigned HOST_WIDE_INT mid_d = (abs_d - 1) >> 1;
  	if (!unsigned_p)
  	  {
! 	    // check availability of abs expression for vector
  	    if (!target_has_vecop_for_code (ABS_EXPR, vectype))
  	      return NULL;
  	    // abs (r)
*************** vect_recog_bool_pattern (vec_info *vinfo
*** 6247,6253 ****
  /* Function vect_recog_mask_conversion_pattern
  
     Try to find statements which require boolean type
!    converison.  Additional conversion statements are
     added to handle such cases.  For example:
  
     bool m_1, m_2, m_3;
--- 6247,6253 ----
  /* Function vect_recog_mask_conversion_pattern
  
     Try to find statements which require boolean type
!    conversion.  Additional conversion statements are
     added to handle such cases.  For example:
  
     bool m_1, m_2, m_3;
*************** struct vect_recog_func
*** 7436,7442 ****
  };
  
  /* Note that ordering matters - the first pattern matching on a stmt is
!    taken which means usually the more complex one needs to preceed the
     less comples onex (widen_sum only after dot_prod or sad for example).  */
  static vect_recog_func vect_vect_recog_func_ptrs[] = {
    { vect_recog_bitfield_ref_pattern, "bitfield_ref" },
--- 7436,7442 ----
  };
  
  /* Note that ordering matters - the first pattern matching on a stmt is
!    taken which means usually the more complex one needs to precede the
     less comples onex (widen_sum only after dot_prod or sad for example).  */
  static vect_recog_func vect_vect_recog_func_ptrs[] = {
    { vect_recog_bitfield_ref_pattern, "bitfield_ref" },
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-slp-patterns.cc gcc-17-20260531/gcc/tree-vect-slp-patterns.cc
*** gcc-17-20260524/gcc/tree-vect-slp-patterns.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-slp-patterns.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 69,75 ****
   ******************************************************************************/
  
  /* Default implementation of recognize that performs matching, validation and
!    replacement of nodes but that can be overriden if required.  */
  
  static bool
  vect_pattern_validate_optab (internal_fn ifn, slp_tree node)
--- 69,75 ----
   ******************************************************************************/
  
  /* Default implementation of recognize that performs matching, validation and
!    replacement of nodes but that can be overridden if required.  */
  
  static bool
  vect_pattern_validate_optab (internal_fn ifn, slp_tree node)
*************** class complex_pattern : public vect_patt
*** 517,523 ****
     statement is created as call to internal function IFN with m_num_args
     arguments.
  
!    Futhermore the new pattern is also added to the vectorization information
     structure VINFO and the old statement STMT_INFO is marked as unused while
     the new statement is marked as used and the number of SLP uses of the new
     statement is incremented.
--- 517,523 ----
     statement is created as call to internal function IFN with m_num_args
     arguments.
  
!    Furthermore the new pattern is also added to the vectorization information
     structure VINFO and the old statement STMT_INFO is marked as unused while
     the new statement is marked as used and the number of SLP uses of the new
     statement is incremented.
*************** compatible_complex_nodes_p (slp_compat_n
*** 850,860 ****
  }
  
  
! /* Check to see if the oprands to two multiplies, 2 each in LEFT_OP and
     RIGHT_OP match a complex multiplication  or complex multiply-and-accumulate
     or complex multiply-and-subtract pattern.  Do this using the permute cache
     PERM_CACHE and the combination compatibility list COMPAT_CACHE.  If
!    the operation is successful the macthing operands are returned in OPS and
     _STATUS indicates if the operation matched includes a conjugate of one of the
     operands.  If the operation succeeds True is returned, otherwise False and
     the values in ops are meaningless.  */
--- 850,860 ----
  }
  
  
! /* Check to see if the operands to two multiplies, 2 each in LEFT_OP and
     RIGHT_OP match a complex multiplication  or complex multiply-and-accumulate
     or complex multiply-and-subtract pattern.  Do this using the permute cache
     PERM_CACHE and the combination compatibility list COMPAT_CACHE.  If
!    the operation is successful the matching operands are returned in OPS and
     _STATUS indicates if the operation matched includes a conjugate of one of the
     operands.  If the operation succeeds True is returned, otherwise False and
     the values in ops are meaningless.  */
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-slp.cc gcc-17-20260531/gcc/tree-vect-slp.cc
*** gcc-17-20260524/gcc/tree-vect-slp.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-slp.cc	Sun May 31 22:32:13 2026
*************** vect_slp_tree_uniform_p (slp_tree node)
*** 374,380 ****
    gcc_assert (SLP_TREE_DEF_TYPE (node) == vect_constant_def
  	      || SLP_TREE_DEF_TYPE (node) == vect_external_def);
  
!   /* Pre-exsting vectors.  */
    if (SLP_TREE_SCALAR_OPS (node).is_empty ())
      return false;
  
--- 374,380 ----
    gcc_assert (SLP_TREE_DEF_TYPE (node) == vect_constant_def
  	      || SLP_TREE_DEF_TYPE (node) == vect_external_def);
  
!   /* Pre-existing vectors.  */
    if (SLP_TREE_SCALAR_OPS (node).is_empty ())
      return false;
  
*************** vect_def_types_match (enum vect_def_type
*** 518,524 ****
     - for each child node, the index of the argument associated with that node.
       The special index -1 is the first operand of an embedded comparison and
       the special index -2 is the second operand of an embedded comparison.
!      The special indes -3 is the offset of a gather as analyzed by
       vect_check_gather_scatter.
  
     SWAP is as for vect_get_and_check_slp_defs.  */
--- 518,524 ----
     - for each child node, the index of the argument associated with that node.
       The special index -1 is the first operand of an embedded comparison and
       the special index -2 is the second operand of an embedded comparison.
!      The special index -3 is the offset of a gather as analyzed by
       vect_check_gather_scatter.
  
     SWAP is as for vect_get_and_check_slp_defs.  */
*************** vect_record_max_nunits (vec_info *vinfo,
*** 1142,1148 ****
     operands.  Set SWAP[i] to 1 if stmt I is COND_EXPR and isomorphic to
     the first stmt by swapping the two operands of comparison; set SWAP[i]
     to 2 if stmt I is isormorphic to the first stmt by inverting the code
!    of comparison.  Take A1 >= B1 ? X1 : Y1 as an exmple, it can be swapped
     to (B1 <= A1 ? X1 : Y1); or be inverted to (A1 < B1) ? Y1 : X1.  */
  
  static bool
--- 1142,1148 ----
     operands.  Set SWAP[i] to 1 if stmt I is COND_EXPR and isomorphic to
     the first stmt by swapping the two operands of comparison; set SWAP[i]
     to 2 if stmt I is isormorphic to the first stmt by inverting the code
!    of comparison.  Take A1 >= B1 ? X1 : Y1 as an example, it can be swapped
     to (B1 <= A1 ? X1 : Y1); or be inverted to (A1 < B1) ? Y1 : X1.  */
  
  static bool
*************** out:
*** 2976,2982 ****
  	}
  
        /* If the SLP build for operand zero failed and operand zero
! 	 and one can be commutated try that for the scalar stmts
  	 that failed the match.  */
        if (i == 0
  	  /* A first scalar stmt mismatch signals a fatal mismatch.  */
--- 2976,2982 ----
  	}
  
        /* If the SLP build for operand zero failed and operand zero
! 	 and one can be commuted try that for the scalar stmts
  	 that failed the match.  */
        if (i == 0
  	  /* A first scalar stmt mismatch signals a fatal mismatch.  */
*************** vect_analyze_slp_instance (vec_info *vin
*** 5261,5267 ****
  		  substmts.release ();
  		  if (end - start == 1)
  		    {
! 		      /* Single-lane discovery failed.  Free ressources.  */
  		      for (auto node : rhs_nodes)
  			vect_free_slp_tree (node);
  		      scalar_stmts.release ();
--- 5261,5267 ----
  		  substmts.release ();
  		  if (end - start == 1)
  		    {
! 		      /* Single-lane discovery failed.  Free resources.  */
  		      for (auto node : rhs_nodes)
  			vect_free_slp_tree (node);
  		      scalar_stmts.release ();
*************** vect_lower_load_permutations (loop_vec_i
*** 5637,5643 ****
  	     interleaving scheme.  For this try to compute whether all
  	     elements needed for this load are in even or odd elements of
  	     an even/odd decomposition with N consecutive elements.
! 	     Thus { e, e, o, o, e, e, o, o } woud be an even/odd decomposition
  	     with N == 2.  */
  	  /* ???  Only an even number of lanes can be handed this way, but the
  	     fallback below could work for any number.  We have to make sure
--- 5637,5643 ----
  	     interleaving scheme.  For this try to compute whether all
  	     elements needed for this load are in even or odd elements of
  	     an even/odd decomposition with N consecutive elements.
! 	     Thus { e, e, o, o, e, e, o, o } would be an even/odd decomposition
  	     with N == 2.  */
  	  /* ???  Only an even number of lanes can be handed this way, but the
  	     fallback below could work for any number.  We have to make sure
*************** vect_optimize_slp_pass::is_compatible_la
*** 6968,6974 ****
    return true;
  }
  
! /* Return the cost (in arbtirary units) of going from layout FROM_LAYOUT_I
     to layout TO_LAYOUT_I for a node like NODE.  Return -1 if either of the
     layouts is incompatible with NODE or if the change is not possible for
     some other reason.
--- 6968,6974 ----
    return true;
  }
  
! /* Return the cost (in arbitrary units) of going from layout FROM_LAYOUT_I
     to layout TO_LAYOUT_I for a node like NODE.  Return -1 if either of the
     layouts is incompatible with NODE or if the change is not possible for
     some other reason.
diff -Nrcpad gcc-17-20260524/gcc/tree-vect-stmts.cc gcc-17-20260531/gcc/tree-vect-stmts.cc
*** gcc-17-20260524/gcc/tree-vect-stmts.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vect-stmts.cc	Sun May 31 22:32:13 2026
*************** vect_stmt_relevant_p (stmt_vec_info stmt
*** 413,418 ****
--- 413,419 ----
  	      gcc_assert (gimple_code (USE_STMT (use_p)) == GIMPLE_PHI);
  
                *live_p = true;
+ 	      LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG (loop_vinfo) = true;
  	    }
  	}
      }
*************** vect_get_strided_load_store_ops (stmt_ve
*** 3235,3241 ****
  /* Prepare the pointer IVs which needs to be updated by a variable amount.
     Such variable amount is the outcome of .SELECT_VL. In this case, we can
     allow each iteration process the flexible number of elements as long as
!    the number <= vf elments.
  
     Return data reference according to SELECT_VL.
     If new statements are needed, insert them before GSI.  */
--- 3236,3242 ----
  /* Prepare the pointer IVs which needs to be updated by a variable amount.
     Such variable amount is the outcome of .SELECT_VL. In this case, we can
     allow each iteration process the flexible number of elements as long as
!    the number <= vf elements.
  
     Return data reference according to SELECT_VL.
     If new statements are needed, insert them before GSI.  */
*************** vectorizable_simd_clone_call (vec_info *
*** 4270,4276 ****
  	unsigned int num_calls;
  	/* The number of arguments in the call and the number of parameters in
  	   the simdclone should match.  However, when the simdclone is
! 	   'inbranch', it could have one more paramater than nargs when using
  	   an inbranch simdclone to call a non-inbranch call, either in a
  	   non-masked loop using a all true constant mask, or inside a masked
  	   loop using it's mask.  */
--- 4271,4277 ----
  	unsigned int num_calls;
  	/* The number of arguments in the call and the number of parameters in
  	   the simdclone should match.  However, when the simdclone is
! 	   'inbranch', it could have one more parameter than nargs when using
  	   an inbranch simdclone to call a non-inbranch call, either in a
  	   non-masked loop using a all true constant mask, or inside a masked
  	   loop using it's mask.  */
*************** vectorizable_store (vec_info *vinfo,
*** 8685,8691 ****
       during transform but it is allowed during analysis.
       Shouldn't go with length-based approach if fully masked.  */
    if (cost_vec == NULL)
!     /* The cost_vec is NULL during transfrom.  */
      gcc_assert ((!loop_lens || !loop_masks));
  
    /* Targets with store-lane instructions must not require explicit
--- 8686,8692 ----
       during transform but it is allowed during analysis.
       Shouldn't go with length-based approach if fully masked.  */
    if (cost_vec == NULL)
!     /* The cost_vec is NULL during transform.  */
      gcc_assert ((!loop_lens || !loop_masks));
  
    /* Targets with store-lane instructions must not require explicit
*************** vectorizable_load (vec_info *vinfo,
*** 10153,10159 ****
        tree ivstep;
        tree running_off;
        vec<constructor_elt, va_gc> *v = NULL;
!       tree stride_base, stride_step, alias_off;
        /* Checked by get_load_store_type.  */
        unsigned int const_nunits = nunits.to_constant ();
        unsigned HOST_WIDE_INT cst_offset = 0;
--- 10154,10160 ----
        tree ivstep;
        tree running_off;
        vec<constructor_elt, va_gc> *v = NULL;
!       tree stride_base, stride_step = NULL_TREE, alias_off;
        /* Checked by get_load_store_type.  */
        unsigned int const_nunits = nunits.to_constant ();
        unsigned HOST_WIDE_INT cst_offset = 0;
*************** vectorizable_load (vec_info *vinfo,
*** 10576,10582 ****
       during transform but it is allowed during analysis.
       Shouldn't go with length-based approach if fully masked.  */
    if (cost_vec == NULL)
!     /* The cost_vec is NULL during transfrom.  */
      gcc_assert ((!loop_lens || !loop_masks));
  
    /* Targets with store-lane instructions must not require explicit
--- 10577,10583 ----
       during transform but it is allowed during analysis.
       Shouldn't go with length-based approach if fully masked.  */
    if (cost_vec == NULL)
!     /* The cost_vec is NULL during transform.  */
      gcc_assert ((!loop_lens || !loop_masks));
  
    /* Targets with store-lane instructions must not require explicit
*************** vectorizable_condition (vec_info *vinfo,
*** 12493,12499 ****
  
        /* If we decided to apply a loop mask to the result of the vector
  	 comparison, AND the comparison with the mask now.  Later passes
! 	 should then be able to reuse the AND results between mulitple
  	 vector statements.
  
  	 For example:
--- 12494,12500 ----
  
        /* If we decided to apply a loop mask to the result of the vector
  	 comparison, AND the comparison with the mask now.  Later passes
! 	 should then be able to reuse the AND results between multiple
  	 vector statements.
  
  	 For example:
*************** vectorizable_early_exit (loop_vec_info l
*** 13080,13086 ****
        return true;
      }
  
!   /* Tranform.  */
  
    tree new_temp = NULL_TREE;
    gimple *new_stmt = NULL;
--- 13081,13087 ----
        return true;
      }
  
!   /* Transform.  */
  
    tree new_temp = NULL_TREE;
    gimple *new_stmt = NULL;
*************** vectorizable_early_exit (loop_vec_info l
*** 13102,13108 ****
    auto_vec<tree> stmts;
    stmts.safe_splice (SLP_TREE_VEC_DEFS (slp_node));
  
!   /* If we're comparing against a previous forall we need to negate the resullts
       before we do the final comparison or reduction.  */
    if (flipped)
      {
--- 13103,13109 ----
    auto_vec<tree> stmts;
    stmts.safe_splice (SLP_TREE_VEC_DEFS (slp_node));
  
!   /* If we're comparing against a previous forall we need to negate the results
       before we do the final comparison or reduction.  */
    if (flipped)
      {
diff -Nrcpad gcc-17-20260524/gcc/tree-vectorizer.cc gcc-17-20260531/gcc/tree-vectorizer.cc
*** gcc-17-20260524/gcc/tree-vectorizer.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vectorizer.cc	Sun May 31 22:32:13 2026
*************** vector_costs::compare_inside_loop_cost (
*** 2046,2052 ****
    HOST_WIDE_INT est_rel_other_max
      = estimated_poly_value (rel_other, POLY_VALUE_MAX);
  
!   /* Check first if we can make out an unambigous total order from the minimum
       and maximum estimates.  */
    if (est_rel_this_min < est_rel_other_min
        && est_rel_this_max < est_rel_other_max)
--- 2046,2052 ----
    HOST_WIDE_INT est_rel_other_max
      = estimated_poly_value (rel_other, POLY_VALUE_MAX);
  
!   /* Check first if we can make out an unambiguous total order from the minimum
       and maximum estimates.  */
    if (est_rel_this_min < est_rel_other_min
        && est_rel_this_max < est_rel_other_max)
diff -Nrcpad gcc-17-20260524/gcc/tree-vectorizer.h gcc-17-20260531/gcc/tree-vectorizer.h
*** gcc-17-20260524/gcc/tree-vectorizer.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vectorizer.h	Sun May 31 22:32:13 2026
*************** enum vect_reduction_type {
*** 107,113 ****
         for (int i = 0; i < VF; ++i)
  	 res = res OP val[i];
  
!      (with no reassocation).  */
    FOLD_LEFT_REDUCTION
  };
  
--- 107,113 ----
         for (int i = 0; i < VF; ++i)
  	 res = res OP val[i];
  
!      (with no reassociation).  */
    FOLD_LEFT_REDUCTION
  };
  
*************** public:
*** 1218,1224 ****
    _loop_vec_info *main_loop_info;
  
    /* For loops being epilogues of already vectorized loops
!      this points to the preceeding vectorized (possibly epilogue) loop.
       Otherwise NULL.  */
    _loop_vec_info *orig_loop_info;
  
--- 1218,1224 ----
    _loop_vec_info *main_loop_info;
  
    /* For loops being epilogues of already vectorized loops
!      this points to the preceding vectorized (possibly epilogue) loop.
       Otherwise NULL.  */
    _loop_vec_info *orig_loop_info;
  
*************** public:
*** 1241,1246 ****
--- 1241,1250 ----
       For counted loops, this IV controls the natural exits of the loop.  */
    edge scalar_loop_main_exit;
  
+   /* Indicate if the multiple exit loop has any side-effects that require it to
+      have a scalar epilogue.  */
+   bool early_break_needs_epilogue;
+ 
    /* Used to store the list of stores needing to be moved if doing early
       break vectorization as they would violate the scalar loop semantics if
       vectorized in their current location.  These are stored in order that they
*************** public:
*** 1256,1262 ****
    auto_vec<gimple*> early_break_vuses;
  
    /* The IV adjustment value for inductions that needs to be materialized
!      inside the relavent exit blocks in order to adjust for early break.  */
    tree early_break_niters_var;
  
    /* The type of the variable to be used to create the scalar IV for early break
--- 1260,1266 ----
    auto_vec<gimple*> early_break_vuses;
  
    /* The IV adjustment value for inductions that needs to be materialized
!      inside the relevant exit blocks in order to adjust for early break.  */
    tree early_break_niters_var;
  
    /* The type of the variable to be used to create the scalar IV for early break
*************** public:
*** 1325,1330 ****
--- 1329,1335 ----
  #define LOOP_VINFO_PEELING_FOR_GAPS(L)     (L)->peeling_for_gaps
  #define LOOP_VINFO_PEELING_FOR_NITER(L)    (L)->peeling_for_niter
  #define LOOP_VINFO_EARLY_BREAKS(L)         (L)->early_breaks
+ #define LOOP_VINFO_EARLY_BRK_NEEDS_EPILOG(L) (L)->early_break_needs_epilogue
  #define LOOP_VINFO_EARLY_BRK_STORES(L)     (L)->early_break_stores
  #define LOOP_VINFO_EARLY_BREAKS_VECT_PEELED(L)  \
    ((single_pred ((L)->loop->latch) != (L)->vec_loop_main_exit->src) \
*************** class loop *slpeel_tree_duplicate_loop_t
*** 2486,2492 ****
  						    class loop *, edge,
  						    edge, edge *, bool = true,
  						    vec<basic_block> * = NULL,
! 						    bool = false, bool = false);
  class loop *vect_loop_versioning (loop_vec_info, gimple *);
  extern class loop *vect_do_peeling (loop_vec_info, tree, tree,
  				    tree *, tree *, tree *, int, bool, bool,
--- 2491,2498 ----
  						    class loop *, edge,
  						    edge, edge *, bool = true,
  						    vec<basic_block> * = NULL,
! 						    bool = false, bool = false,
! 						    bool = true);
  class loop *vect_loop_versioning (loop_vec_info, gimple *);
  extern class loop *vect_do_peeling (loop_vec_info, tree, tree,
  				    tree *, tree *, tree *, int, bool, bool,
*************** extern size_t num__slp_patterns;
*** 2894,2900 ****
     The following routines are provided to simplify costing decisions in
     target code.  Please add more as needed.  */
  
! /* Return true if an operaton of kind KIND for STMT_INFO represents
     the extraction of an element from a vector in preparation for
     storing the element to memory.  */
  inline bool
--- 2900,2906 ----
     The following routines are provided to simplify costing decisions in
     target code.  Please add more as needed.  */
  
! /* Return true if an operation of kind KIND for STMT_INFO represents
     the extraction of an element from a vector in preparation for
     storing the element to memory.  */
  inline bool
diff -Nrcpad gcc-17-20260524/gcc/tree-vrp.cc gcc-17-20260531/gcc/tree-vrp.cc
*** gcc-17-20260524/gcc/tree-vrp.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vrp.cc	Sun May 31 22:32:13 2026
*************** remove_unreachable::fully_replaceable (t
*** 199,205 ****
  void
  remove_unreachable::handle_early (gimple *s, edge e)
  {
!   // If there is no gori_ssa, there is no early processsing.
    if (!m_ranger.gori_ssa ())
      return ;
    bool lhs_p = TREE_CODE (gimple_cond_lhs (s)) == SSA_NAME;
--- 199,205 ----
  void
  remove_unreachable::handle_early (gimple *s, edge e)
  {
!   // If there is no gori_ssa, there is no early processing.
    if (!m_ranger.gori_ssa ())
      return ;
    bool lhs_p = TREE_CODE (gimple_cond_lhs (s)) == SSA_NAME;
*************** get_single_symbol (tree t, bool *neg, tr
*** 547,560 ****
  	+2 if VAL1 != VAL2
  
     This is similar to tree_int_cst_compare but supports pointer values
!    and values that cannot be compared at compile time.
! 
!    If STRICT_OVERFLOW_P is not NULL, then set *STRICT_OVERFLOW_P to
!    true if the return value is only valid if we assume that signed
!    overflow is undefined.  */
  
  int
! compare_values_warnv (tree val1, tree val2, bool *strict_overflow_p)
  {
    if (val1 == val2)
      return 0;
--- 547,556 ----
  	+2 if VAL1 != VAL2
  
     This is similar to tree_int_cst_compare but supports pointer values
!    and values that cannot be compared at compile time.  */
  
  int
! compare_values (tree val1, tree val2)
  {
    if (val1 == val2)
      return 0;
*************** compare_values_warnv (tree val1, tree va
*** 593,605 ****
        if (!overflow_undefined)
  	return -2;
  
-       if (strict_overflow_p != NULL
- 	  /* Symbolic range building sets the no-warning bit to declare
- 	     that overflow doesn't happen.  */
- 	  && (!inv1 || !warning_suppressed_p (val1, OPT_Woverflow))
- 	  && (!inv2 || !warning_suppressed_p (val2, OPT_Woverflow)))
- 	*strict_overflow_p = true;
- 
        if (!inv1)
  	inv1 = build_int_cst (TREE_TYPE (val1), 0);
        if (!inv2)
--- 589,594 ----
*************** compare_values_warnv (tree val1, tree va
*** 619,631 ****
        if (!overflow_undefined)
  	return -2;
  
-       if (strict_overflow_p != NULL
- 	  /* Symbolic range building sets the no-warning bit to declare
- 	     that overflow doesn't happen.  */
- 	  && (!sym1 || !warning_suppressed_p (val1, OPT_Woverflow))
- 	  && (!sym2 || !warning_suppressed_p (val2, OPT_Woverflow)))
- 	*strict_overflow_p = true;
- 
        const signop sgn = TYPE_SIGN (TREE_TYPE (val1));
        tree cst = cst1 ? val1 : val2;
        tree inv = cst1 ? inv2 : inv1;
--- 608,613 ----
*************** compare_values_warnv (tree val1, tree va
*** 688,714 ****
        if (operand_equal_p (val1, val2, 0))
  	return 0;
  
-       fold_defer_overflow_warnings ();
- 
        /* If VAL1 is a lower address than VAL2, return -1.  */
        tree t = fold_binary_to_constant (LT_EXPR, boolean_type_node, val1, val2);
        if (t && integer_onep (t))
! 	{
! 	  fold_undefer_and_ignore_overflow_warnings ();
! 	  return -1;
! 	}
  
        /* If VAL1 is a higher address than VAL2, return +1.  */
        t = fold_binary_to_constant (LT_EXPR, boolean_type_node, val2, val1);
        if (t && integer_onep (t))
! 	{
! 	  fold_undefer_and_ignore_overflow_warnings ();
! 	  return 1;
! 	}
  
        /* If VAL1 is different than VAL2, return +2.  */
        t = fold_binary_to_constant (NE_EXPR, boolean_type_node, val1, val2);
-       fold_undefer_and_ignore_overflow_warnings ();
        if (t && integer_onep (t))
  	return 2;
  
--- 670,687 ----
        if (operand_equal_p (val1, val2, 0))
  	return 0;
  
        /* If VAL1 is a lower address than VAL2, return -1.  */
        tree t = fold_binary_to_constant (LT_EXPR, boolean_type_node, val1, val2);
        if (t && integer_onep (t))
! 	return -1;
  
        /* If VAL1 is a higher address than VAL2, return +1.  */
        t = fold_binary_to_constant (LT_EXPR, boolean_type_node, val2, val1);
        if (t && integer_onep (t))
! 	return 1;
  
        /* If VAL1 is different than VAL2, return +2.  */
        t = fold_binary_to_constant (NE_EXPR, boolean_type_node, val1, val2);
        if (t && integer_onep (t))
  	return 2;
  
*************** compare_values_warnv (tree val1, tree va
*** 716,730 ****
      }
  }
  
- /* Compare values like compare_values_warnv.  */
- 
- int
- compare_values (tree val1, tree val2)
- {
-   bool sop;
-   return compare_values_warnv (val1, val2, &sop);
- }
- 
  /* Helper for overflow_comparison_p
  
     OP0 CODE OP1 is a comparison.  Examine the comparison and potentially
--- 689,694 ----
diff -Nrcpad gcc-17-20260524/gcc/tree-vrp.h gcc-17-20260531/gcc/tree-vrp.h
*** gcc-17-20260524/gcc/tree-vrp.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree-vrp.h	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  #include "value-range.h"
  
  extern int compare_values (tree, tree);
- extern int compare_values_warnv (tree, tree, bool *);
  
  extern enum value_range_kind intersect_range_with_nonzero_bits
    (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop);
--- 23,28 ----
diff -Nrcpad gcc-17-20260524/gcc/tree.cc gcc-17-20260531/gcc/tree.cc
*** gcc-17-20260524/gcc/tree.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree.cc	Sun May 31 22:32:13 2026
*************** build5 (enum tree_code code, tree tt, tr
*** 5455,5461 ****
    return t;
  }
  
! /* Build a simple MEM_REF tree with the sematics of a plain INDIRECT_REF
     on the pointer PTR.  */
  
  tree
--- 5455,5461 ----
    return t;
  }
  
! /* Build a simple MEM_REF tree with the semantics of a plain INDIRECT_REF
     on the pointer PTR.  */
  
  tree
*************** get_file_function_name (const char *type
*** 9123,9129 ****
    /* If the target is handling the constructors/destructors, they
       will be local to this file and the name is only necessary for
       debugging purposes.
!      We also assign sub_I and sub_D sufixes to constructors called from
       the global static constructors.  These are always local.
       OpenMP "declare target" offloaded constructors/destructors use "off_I" and
       "off_D" for the same purpose.  */
--- 9123,9129 ----
    /* If the target is handling the constructors/destructors, they
       will be local to this file and the name is only necessary for
       debugging purposes.
!      We also assign sub_I and sub_D suffixes to constructors called from
       the global static constructors.  These are always local.
       OpenMP "declare target" offloaded constructors/destructors use "off_I" and
       "off_D" for the same purpose.  */
*************** build_opaque_vector_type (tree innertype
*** 10559,10565 ****
        && TYPE_VECTOR_OPAQUE (cand)
        && check_qualified_type (cand, t, TYPE_QUALS (t)))
      return cand;
!   /* Othewise build a variant type and make sure to queue it after
       the non-opaque type.  */
    cand = build_distinct_type_copy (t);
    TYPE_VECTOR_OPAQUE (cand) = true;
--- 10559,10565 ----
        && TYPE_VECTOR_OPAQUE (cand)
        && check_qualified_type (cand, t, TYPE_QUALS (t)))
      return cand;
!   /* Otherwise build a variant type and make sure to queue it after
       the non-opaque type.  */
    cand = build_distinct_type_copy (t);
    TYPE_VECTOR_OPAQUE (cand) = true;
*************** array_ref_up_bound (tree exp)
*** 13231,13237 ****
  bool
  array_ref_flexible_size_p (tree ref, bool *is_trailing_array /* = NULL */)
  {
!   /* The TYPE for this array referece.  */
    tree atype = NULL_TREE;
    /* The FIELD_DECL for the array field in the containing structure.  */
    tree afield_decl = NULL_TREE;
--- 13231,13237 ----
  bool
  array_ref_flexible_size_p (tree ref, bool *is_trailing_array /* = NULL */)
  {
!   /* The TYPE for this array reference.  */
    tree atype = NULL_TREE;
    /* The FIELD_DECL for the array field in the containing structure.  */
    tree afield_decl = NULL_TREE;
*************** verify_type_variant (const_tree t, tree
*** 13795,13801 ****
       - main variant may be TYPE_COMPLETE_P and variant types !TYPE_COMPLETE_P
         in this case some values may not be set in the variant types
         (see TYPE_COMPLETE_P checks).
!      - it is possible to have TYPE_ARTIFICIAL variant of non-artifical type
       - by TYPE_NAME and attributes (i.e. when variant originate by typedef)
       - TYPE_CANONICAL (TYPE_ALIAS_SET is the same among variants)
       - by the alignment: TYPE_ALIGN and TYPE_USER_ALIGN
--- 13795,13801 ----
       - main variant may be TYPE_COMPLETE_P and variant types !TYPE_COMPLETE_P
         in this case some values may not be set in the variant types
         (see TYPE_COMPLETE_P checks).
!      - it is possible to have TYPE_ARTIFICIAL variant of non-artificial type
       - by TYPE_NAME and attributes (i.e. when variant originate by typedef)
       - TYPE_CANONICAL (TYPE_ALIAS_SET is the same among variants)
       - by the alignment: TYPE_ALIGN and TYPE_USER_ALIGN
*************** verify_type_variant (const_tree t, tree
*** 13873,13879 ****
      verify_variant_match (TYPE_TRANSPARENT_AGGR);
    else if (TREE_CODE (t) == ARRAY_TYPE)
      verify_variant_match (TYPE_NONALIASED_COMPONENT);
!   /* During LTO we merge variant lists from diferent translation units
       that may differ BY TYPE_CONTEXT that in turn may point
       to TRANSLATION_UNIT_DECL.
       Ada also builds variants of types with different TYPE_CONTEXT.   */
--- 13873,13879 ----
      verify_variant_match (TYPE_TRANSPARENT_AGGR);
    else if (TREE_CODE (t) == ARRAY_TYPE)
      verify_variant_match (TYPE_NONALIASED_COMPONENT);
!   /* During LTO we merge variant lists from different translation units
       that may differ BY TYPE_CONTEXT that in turn may point
       to TRANSLATION_UNIT_DECL.
       Ada also builds variants of types with different TYPE_CONTEXT.   */
*************** gimple_canonical_types_compatible_p (con
*** 14084,14090 ****
       need to ensure that we are never called on it.
  
       FIXME: For more correctness the function probably should have three modes
! 	1) mode assuming that types are complete mathcing their structure
  	2) mode allowing incomplete types but producing equivalence classes
  	   and thus ignoring all info from complete types
  	3) mode allowing incomplete types to match complete but checking
--- 14084,14090 ----
       need to ensure that we are never called on it.
  
       FIXME: For more correctness the function probably should have three modes
! 	1) mode assuming that types are complete matching their structure
  	2) mode allowing incomplete types but producing equivalence classes
  	   and thus ignoring all info from complete types
  	3) mode allowing incomplete types to match complete but checking
diff -Nrcpad gcc-17-20260524/gcc/tree.h gcc-17-20260531/gcc/tree.h
*** gcc-17-20260524/gcc/tree.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/tree.h	Sun May 31 22:32:13 2026
*************** extern void omp_clause_range_check_faile
*** 633,641 ****
          || VECTOR_TYPE_P (TYPE))		\
         && INTEGRAL_TYPE_P (TREE_TYPE (TYPE))))
  
! /* Nonzero if TYPE is bit-precise integer type.  */
  
! #define BITINT_TYPE_P(TYPE) (TREE_CODE (TYPE) == BITINT_TYPE)
  
  /* Nonzero if TYPE represents a non-saturating fixed-point type.  */
  
--- 633,646 ----
          || VECTOR_TYPE_P (TYPE))		\
         && INTEGRAL_TYPE_P (TREE_TYPE (TYPE))))
  
! /* Nonzero if TYPE is bit-precise integer type or enumeral type
!    with bit-precise integer type as underlying type.  */
  
! #define BITINT_TYPE_P(TYPE) \
!   (TREE_CODE (TYPE) == BITINT_TYPE			\
!    || (TREE_CODE (TYPE) == ENUMERAL_TYPE		\
!        && TREE_TYPE (TYPE)				\
!        && TREE_CODE (TREE_TYPE (TYPE)) == BITINT_TYPE))
  
  /* Nonzero if TYPE represents a non-saturating fixed-point type.  */
  
*************** extern vec<tree, va_gc> **decl_debug_arg
*** 3689,3695 ****
     (FUNCTION_DECL_CHECK (NODE)->function_decl.versioned_function)
  
  /* In FUNCTION_DECL, this is set if this function is a C++ constructor.
!    Devirtualization machinery uses this knowledge for determing type of the
     object constructed.  Also we assume that constructor address is not
     important.  */
  #define DECL_CXX_CONSTRUCTOR_P(NODE)\
--- 3694,3700 ----
     (FUNCTION_DECL_CHECK (NODE)->function_decl.versioned_function)
  
  /* In FUNCTION_DECL, this is set if this function is a C++ constructor.
!    Devirtualization machinery uses this knowledge for determining type of the
     object constructed.  Also we assume that constructor address is not
     important.  */
  #define DECL_CXX_CONSTRUCTOR_P(NODE)\
*************** strip_pointer_types (const_tree type)
*** 5178,5184 ****
    return type;
  }
  
! /* Desription of the reason why the argument of valid_constant_size_p
     is not a valid size.  */
  enum cst_size_error {
    cst_size_ok,
--- 5183,5189 ----
    return type;
  }
  
! /* Description of the reason why the argument of valid_constant_size_p
     is not a valid size.  */
  enum cst_size_error {
    cst_size_ok,
diff -Nrcpad gcc-17-20260524/gcc/typed-splay-tree.h gcc-17-20260531/gcc/typed-splay-tree.h
*** gcc-17-20260524/gcc/typed-splay-tree.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/typed-splay-tree.h	Sun May 31 22:32:13 2026
*************** class typed_splay_tree
*** 94,100 ****
    /* The root of the tree.  */
    splay_tree_node root;
  
!   /* The comparision function.  */
    compare_fn comp;
  
    /* The deallocate-key function.  NULL if no cleanup is necessary.  */
--- 94,100 ----
    /* The root of the tree.  */
    splay_tree_node root;
  
!   /* The comparison function.  */
    compare_fn comp;
  
    /* The deallocate-key function.  NULL if no cleanup is necessary.  */
diff -Nrcpad gcc-17-20260524/gcc/ubsan.cc gcc-17-20260531/gcc/ubsan.cc
*** gcc-17-20260524/gcc/ubsan.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/ubsan.cc	Sun May 31 22:32:13 2026
*************** tree
*** 127,133 ****
  ubsan_encode_value (tree t, enum ubsan_encode_value_phase phase)
  {
    tree type = TREE_TYPE (t);
!   if (TREE_CODE (type) == BITINT_TYPE)
      {
        if (TYPE_PRECISION (type) <= POINTER_SIZE)
  	{
--- 127,133 ----
  ubsan_encode_value (tree t, enum ubsan_encode_value_phase phase)
  {
    tree type = TREE_TYPE (t);
!   if (BITINT_TYPE_P (type))
      {
        if (TYPE_PRECISION (type) <= POINTER_SIZE)
  	{
*************** ubsan_type_descriptor (tree type, enum u
*** 374,381 ****
      {
        /* Temporary hack for -fsanitize=shift with _BitInt(129) and more.
  	 libubsan crashes if it is not TK_Integer type.  */
!       if (TREE_CODE (type) == BITINT_TYPE
! 	  && TYPE_PRECISION (type) > MAX_FIXED_MODE_SIZE)
  	type3 = build_qualified_type (type, TYPE_QUAL_CONST);
        if (type3 == type)
  	pstyle = UBSAN_PRINT_NORMAL;
--- 374,380 ----
      {
        /* Temporary hack for -fsanitize=shift with _BitInt(129) and more.
  	 libubsan crashes if it is not TK_Integer type.  */
!       if (BITINT_TYPE_P (type) && TYPE_PRECISION (type) > MAX_FIXED_MODE_SIZE)
  	type3 = build_qualified_type (type, TYPE_QUAL_CONST);
        if (type3 == type)
  	pstyle = UBSAN_PRINT_NORMAL;
*************** ubsan_type_descriptor (tree type, enum u
*** 432,438 ****
  
    if (tname == NULL)
      {
!       if (TREE_CODE (type2) == BITINT_TYPE)
  	{
  	  snprintf (tname_bitint, sizeof (tname_bitint),
  	  	    "%s_BitInt(%d)", TYPE_UNSIGNED (type2) ? "unsigned " : "",
--- 431,437 ----
  
    if (tname == NULL)
      {
!       if (BITINT_TYPE_P (type2))
  	{
  	  snprintf (tname_bitint, sizeof (tname_bitint),
  	  	    "%s_BitInt(%d)", TYPE_UNSIGNED (type2) ? "unsigned " : "",
*************** ubsan_type_descriptor (tree type, enum u
*** 506,515 ****
    switch (TREE_CODE (eltype))
      {
      case BOOLEAN_TYPE:
-     case ENUMERAL_TYPE:
      case INTEGER_TYPE:
        tkind = 0x0000;
        break;
      case BITINT_TYPE:
        if (TYPE_PRECISION (eltype) <= MAX_FIXED_MODE_SIZE)
  	tkind = 0x0000;
--- 505,520 ----
    switch (TREE_CODE (eltype))
      {
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
        tkind = 0x0000;
        break;
+     case ENUMERAL_TYPE:
+       if (!BITINT_TYPE_P (eltype))
+ 	{
+ 	  tkind = 0x0000;
+ 	  break;
+ 	}
+       /* FALLTHRU */
      case BITINT_TYPE:
        if (TYPE_PRECISION (eltype) <= MAX_FIXED_MODE_SIZE)
  	tkind = 0x0000;
*************** instrument_si_overflow (gimple_stmt_iter
*** 1667,1673 ****
       Also punt on bit-fields.  */
    if (!INTEGRAL_TYPE_P (lhsinner)
        || TYPE_OVERFLOW_WRAPS (lhsinner)
!       || (TREE_CODE (lhsinner) != BITINT_TYPE
  	  && maybe_ne (GET_MODE_BITSIZE (TYPE_MODE (lhsinner)),
  		       TYPE_PRECISION (lhsinner))))
      return;
--- 1672,1678 ----
       Also punt on bit-fields.  */
    if (!INTEGRAL_TYPE_P (lhsinner)
        || TYPE_OVERFLOW_WRAPS (lhsinner)
!       || (!BITINT_TYPE_P (lhsinner)
  	  && maybe_ne (GET_MODE_BITSIZE (TYPE_MODE (lhsinner)),
  		       TYPE_PRECISION (lhsinner))))
      return;
*************** instrument_bool_enum_load (gimple_stmt_i
*** 1856,1862 ****
  }
  
  /* Determine if we can propagate given LOCATION to ubsan_data descriptor to use
!    new style handlers.  Libubsan uses heuristics to destinguish between old and
     new styles and relies on these properties for filename:
  
     a) Location's filename must not be NULL.
--- 1861,1867 ----
  }
  
  /* Determine if we can propagate given LOCATION to ubsan_data descriptor to use
!    new style handlers.  Libubsan uses heuristics to distinguish between old and
     new styles and relies on these properties for filename:
  
     a) Location's filename must not be NULL.
diff -Nrcpad gcc-17-20260524/gcc/value-prof.cc gcc-17-20260531/gcc/value-prof.cc
*** gcc-17-20260524/gcc/value-prof.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/value-prof.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 82,88 ****
     compute_value_histograms() that translates the collected data to
     histograms and attaches them to the profiled statements via
     gimple_add_histogram_value().  Histograms are stored in a hash table
!    that is attached to every intrumented function, see VALUE_HISTOGRAMS
     in function.h.
  
     The value-profile transformations driver is the function
--- 82,88 ----
     compute_value_histograms() that translates the collected data to
     histograms and attaches them to the profiled statements via
     gimple_add_histogram_value().  Histograms are stored in a hash table
!    that is attached to every instrumented function, see VALUE_HISTOGRAMS
     in function.h.
  
     The value-profile transformations driver is the function
diff -Nrcpad gcc-17-20260524/gcc/value-range.cc gcc-17-20260531/gcc/value-range.cc
*** gcc-17-20260524/gcc/value-range.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/value-range.cc	Sun May 31 22:32:13 2026
*************** irange::irange_single_pair_union (const
*** 1823,1830 ****
  bool
  irange::union_append (const irange &r)
  {
!   // Check if the first range in R is an immmediate successor to the last
!   // range, ths requiring a merge.
    signop sign = TYPE_SIGN (m_type);
    wide_int lb = r.lower_bound ();
    wide_int ub = upper_bound ();
--- 1823,1830 ----
  bool
  irange::union_append (const irange &r)
  {
!   // Check if the first range in R is an immediate successor to the last
!   // range, thus requiring a merge.
    signop sign = TYPE_SIGN (m_type);
    wide_int lb = r.lower_bound ();
    wide_int ub = upper_bound ();
*************** irange::snap (const wide_int &lb, const
*** 2456,2462 ****
  }
  
  // This method loops through the subranges in THIS, and adjusts any bounds
! // to satisfy the contraints of the BITMASK.  If a subrange is invalid,
  // it is removed.   TRUE is returned if there were any changes.
  
  bool
--- 2456,2462 ----
  }
  
  // This method loops through the subranges in THIS, and adjusts any bounds
! // to satisfy the constraints of the BITMASK.  If a subrange is invalid,
  // it is removed.   TRUE is returned if there were any changes.
  
  bool
*************** irange::snap_subranges ()
*** 2495,2501 ****
  }
  
  // If the bitmask has a range representation, intersect this range with
! // the bitmasks range.  Then ensure all enpoints match the bitmask.
  // Return TRUE if the range changes at all.
  
  bool
--- 2495,2501 ----
  }
  
  // If the bitmask has a range representation, intersect this range with
! // the bitmasks range.  Then ensure all endpoints match the bitmask.
  // Return TRUE if the range changes at all.
  
  bool
*************** irange::get_bitmask () const
*** 2565,2571 ****
    irange_bitmask bm (type (), lower_bound (), upper_bound ());
    if (!m_bitmask.unknown_p ())
      {
!       // If the new intersection is unknown, it means there are inconstent
        // bits, so simply return the original bitmask.
        if (!bm.intersect (m_bitmask))
  	return m_bitmask;
--- 2565,2571 ----
    irange_bitmask bm (type (), lower_bound (), upper_bound ());
    if (!m_bitmask.unknown_p ())
      {
!       // If the new intersection is unknown, it means there are inconsistent
        // bits, so simply return the original bitmask.
        if (!bm.intersect (m_bitmask))
  	return m_bitmask;
diff -Nrcpad gcc-17-20260524/gcc/value-range.h gcc-17-20260531/gcc/value-range.h
*** gcc-17-20260524/gcc/value-range.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/value-range.h	Sun May 31 22:32:13 2026
*************** irange_bitmask::get_precision () const
*** 209,215 ****
    return m_mask.get_precision ();
  }
  
! // The following two functions are meant for backwards compatability
  // with the nonzero bitmask.  A cleared bit means the value must be 0.
  // A set bit means we have no information for the bit.
  
--- 209,215 ----
    return m_mask.get_precision ();
  }
  
! // The following two functions are meant for backwards compatibility
  // with the nonzero bitmask.  A cleared bit means the value must be 0.
  // A set bit means we have no information for the bit.
  
diff -Nrcpad gcc-17-20260524/gcc/value-relation.cc gcc-17-20260531/gcc/value-relation.cc
*** gcc-17-20260524/gcc/value-relation.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/value-relation.cc	Sun May 31 22:32:13 2026
*************** public:
*** 957,963 ****
  };
  
  // Given relation record PTR in block BB, return the next relation in the
! // list.  If PTR is NULL, retreive the first relation in BB.
  // If NAME is sprecified, return only relations which include NAME.
  // Return NULL when there are no relations left.
  
--- 957,963 ----
  };
  
  // Given relation record PTR in block BB, return the next relation in the
! // list.  If PTR is NULL, retrieve the first relation in BB.
  // If NAME is sprecified, return only relations which include NAME.
  // Return NULL when there are no relations left.
  
*************** dom_oracle::next_relation (basic_block b
*** 966,972 ****
  			   tree name) const
  {
    relation_chain *p;
!   // No value_relation pointer is used to intialize the iterator.
    if (!ptr)
      {
        int bbi = bb->index;
--- 966,972 ----
  			   tree name) const
  {
    relation_chain *p;
!   // No value_relation pointer is used to initialize the iterator.
    if (!ptr)
      {
        int bbi = bb->index;
*************** dom_oracle::next_relation (basic_block b
*** 985,991 ****
    return p;
  }
  
! // Instatiate a block relation iterator to iterate over the relations
  // on exit from block BB in ORACLE.  Limit this to relations involving NAME
  // if specified.  Return the first such relation in VR if there is one.
  
--- 985,991 ----
    return p;
  }
  
! // Instantiate a block relation iterator to iterate over the relations
  // on exit from block BB in ORACLE.  Limit this to relations involving NAME
  // if specified.  Return the first such relation in VR if there is one.
  
*************** block_relation_iterator::block_relation_
*** 1007,1013 ****
      m_done = true;
  }
  
! // Retreive the next relation from the iterator and return it in VR.
  
  void
  block_relation_iterator::get_next_relation (value_relation &vr)
--- 1007,1013 ----
      m_done = true;
  }
  
! // Retrieve the next relation from the iterator and return it in VR.
  
  void
  block_relation_iterator::get_next_relation (value_relation &vr)
diff -Nrcpad gcc-17-20260524/gcc/var-tracking.cc gcc-17-20260531/gcc/var-tracking.cc
*** gcc-17-20260524/gcc/var-tracking.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/var-tracking.cc	Sun May 31 22:32:13 2026
*************** shared_hash_find (shared_hash *vars, dec
*** 1711,1717 ****
    return shared_hash_find_1 (vars, dv, dv_htab_hash (dv));
  }
  
! /* Return true if TVAL is better than CVAL as a canonival value.  We
     choose lowest-numbered VALUEs, using the RTX address as a
     tie-breaker.  The idea is to arrange them into a star topology,
     such that all of them are at most one step away from the canonical
--- 1711,1717 ----
    return shared_hash_find_1 (vars, dv, dv_htab_hash (dv));
  }
  
! /* Return true if TVAL is better than CVAL as a canonical value.  We
     choose lowest-numbered VALUEs, using the RTX address as a
     tie-breaker.  The idea is to arrange them into a star topology,
     such that all of them are at most one step away from the canonical
*************** emit_note_insn_var_location (variable **
*** 8788,8794 ****
        mode = GET_MODE (var->var_part[i].cur_loc);
        if (mode == VOIDmode && var->onepart)
  	mode = DECL_MODE (decl);
!       /* We ony track subparts of constant-sized objects, since at present
  	 there's no representation for polynomial pieces.  */
        if (!GET_MODE_SIZE (mode).is_constant (&size))
  	{
--- 8788,8794 ----
        mode = GET_MODE (var->var_part[i].cur_loc);
        if (mode == VOIDmode && var->onepart)
  	mode = DECL_MODE (decl);
!       /* We only track subparts of constant-sized objects, since at present
  	 there's no representation for polynomial pieces.  */
        if (!GET_MODE_SIZE (mode).is_constant (&size))
  	{
diff -Nrcpad gcc-17-20260524/gcc/varasm.cc gcc-17-20260531/gcc/varasm.cc
*** gcc-17-20260524/gcc/varasm.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/varasm.cc	Sun May 31 22:32:13 2026
*************** mergeable_constant_section (machine_mode
*** 963,969 ****
  			    unsigned HOST_WIDE_INT align,
  			    unsigned int flags)
  {
!   /* If the mode is unknown (BLK or VOID), then return a non mergable section.  */
    if (mode == BLKmode || mode == VOIDmode)
      return readonly_data_section;
    unsigned HOST_WIDE_INT size;
--- 963,969 ----
  			    unsigned HOST_WIDE_INT align,
  			    unsigned int flags)
  {
!   /* If the mode is unknown (BLK or VOID), then return a non mergeable section.  */
    if (mode == BLKmode || mode == VOIDmode)
      return readonly_data_section;
    unsigned HOST_WIDE_INT size;
*************** output_constant (tree exp, unsigned HOST
*** 5530,5538 ****
       Otherwise, break and ensure SIZE is the size written.  */
    switch (code)
      {
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
-     case ENUMERAL_TYPE:
      case POINTER_TYPE:
      case REFERENCE_TYPE:
      case OFFSET_TYPE:
--- 5530,5541 ----
       Otherwise, break and ensure SIZE is the size written.  */
    switch (code)
      {
+     case ENUMERAL_TYPE:
+       if (BITINT_TYPE_P (TREE_TYPE (exp)))
+ 	goto do_bitint;
+       /* FALLTHRU */
      case BOOLEAN_TYPE:
      case INTEGER_TYPE:
      case POINTER_TYPE:
      case REFERENCE_TYPE:
      case OFFSET_TYPE:
*************** output_constant (tree exp, unsigned HOST
*** 5564,5569 ****
--- 5567,5573 ----
        break;
  
      case BITINT_TYPE:
+     do_bitint:
        if (TREE_CODE (exp) != INTEGER_CST)
  	error ("initializer for %<_BitInt(%d)%> value is not an integer "
  	       "constant", TYPE_PRECISION (TREE_TYPE (exp)));
*************** finish_tm_clone_pairs (void)
*** 6836,6842 ****
    if (tm_clone_hash == NULL)
      return;
  
!   /* We need a determenistic order for the .tm_clone_table, otherwise
       we will get bootstrap comparison failures, so dump the hash table
       to a vector, sort it, and dump the vector.  */
  
--- 6840,6846 ----
    if (tm_clone_hash == NULL)
      return;
  
!   /* We need a deterministic order for the .tm_clone_table, otherwise
       we will get bootstrap comparison failures, so dump the hash table
       to a vector, sort it, and dump the vector.  */
  
*************** default_binds_local_p_3 (const_tree exp,
*** 7907,7913 ****
    /* Weakrefs may not bind locally, even though the weakref itself is always
       static and therefore local.  Similarly, the resolver for ifunc functions
       might resolve to a non-local function.
!      FIXME: We can resolve the weakref case more curefuly by looking at the
       weakref alias.  */
    if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp))
        || (!targetm.ifunc_ref_local_ok ()
--- 7911,7917 ----
    /* Weakrefs may not bind locally, even though the weakref itself is always
       static and therefore local.  Similarly, the resolver for ifunc functions
       might resolve to a non-local function.
!      FIXME: We can resolve the weakref case more carefully by looking at the
       weakref alias.  */
    if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp))
        || (!targetm.ifunc_ref_local_ok ()
diff -Nrcpad gcc-17-20260524/gcc/vr-values.cc gcc-17-20260531/gcc/vr-values.cc
*** gcc-17-20260524/gcc/vr-values.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/vr-values.cc	Sun May 31 22:32:13 2026
*************** simplify_using_ranges::simplify_bit_ops_
*** 868,877 ****
     a known value range VR.
  
     If there is one and only one value which will satisfy the
!    conditional, then return that value.  Else return NULL.
! 
!    If signed overflow must be undefined for the value to satisfy
!    the conditional, then set *STRICT_OVERFLOW_P to true.  */
  
  static tree
  test_for_singularity (enum tree_code cond_code, tree op0,
--- 868,874 ----
     a known value range VR.
  
     If there is one and only one value which will satisfy the
!    conditional, then return that value.  Else return NULL.  */
  
  static tree
  test_for_singularity (enum tree_code cond_code, tree op0,
*************** test_for_singularity (enum tree_code con
*** 891,899 ****
  	{
  	  tree one = build_int_cst (TREE_TYPE (op0), 1);
  	  max = fold_build2 (MINUS_EXPR, TREE_TYPE (op0), max, one);
- 	  /* Signal to compare_values_warnv this expr doesn't overflow.  */
- 	  if (EXPR_P (max))
- 	    suppress_warning (max, OPT_Woverflow);
  	}
      }
    else if (cond_code == GE_EXPR || cond_code == GT_EXPR)
--- 888,893 ----
*************** test_for_singularity (enum tree_code con
*** 905,913 ****
  	{
  	  tree one = build_int_cst (TREE_TYPE (op0), 1);
  	  min = fold_build2 (PLUS_EXPR, TREE_TYPE (op0), min, one);
- 	  /* Signal to compare_values_warnv this expr doesn't overflow.  */
- 	  if (EXPR_P (min))
- 	    suppress_warning (min, OPT_Woverflow);
  	}
      }
  
--- 899,904 ----
*************** simplify_using_ranges::simplify_float_co
*** 1561,1567 ****
  
    /* The code below doesn't work for large/huge _BitInt, nor is really
       needed for those, bitint lowering does use ranges already.  */
!   if (TREE_CODE (TREE_TYPE (rhs1)) == BITINT_TYPE
        && TYPE_MODE (TREE_TYPE (rhs1)) == BLKmode)
      return false;
    /* First check if we can use a signed type in place of an unsigned.  */
--- 1552,1558 ----
  
    /* The code below doesn't work for large/huge _BitInt, nor is really
       needed for those, bitint lowering does use ranges already.  */
!   if (BITINT_TYPE_P (TREE_TYPE (rhs1))
        && TYPE_MODE (TREE_TYPE (rhs1)) == BLKmode)
      return false;
    /* First check if we can use a signed type in place of an unsigned.  */
*************** simplify_using_ranges::simplify (gimple_
*** 1812,1818 ****
  	      cmp_var = rhs1;
  	    }
  
! 	  /* If we could not find two-vals or the optimzation is invalid as
  	     in divide by zero, new_rhs1 / new_rhs will be NULL_TREE.  */
  	  if (new_rhs1 && new_rhs2)
  	    {
--- 1803,1809 ----
  	      cmp_var = rhs1;
  	    }
  
! 	  /* If we could not find two-vals or the optimization is invalid as
  	     in divide by zero, new_rhs1 / new_rhs will be NULL_TREE.  */
  	  if (new_rhs1 && new_rhs2)
  	    {
diff -Nrcpad gcc-17-20260524/gcc/vtable-verify.cc gcc-17-20260531/gcc/vtable-verify.cc
*** gcc-17-20260524/gcc/vtable-verify.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/vtable-verify.cc	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 86,92 ****
    The vtable verification feature is controlled by the flag
    '-fvtable-verify='.  There are three flavors of this:
    '-fvtable-verify=std', '-fvtable-verify=preinit', and
!   '-fvtable-verify=none'.  If the option '-fvtable-verfy=preinit' is
    used, then our constructor initialization function gets put into the
    preinit array.  This is necessary if there are data sets that need
    to be built very early in execution.  If the constructor
--- 86,92 ----
    The vtable verification feature is controlled by the flag
    '-fvtable-verify='.  There are three flavors of this:
    '-fvtable-verify=std', '-fvtable-verify=preinit', and
!   '-fvtable-verify=none'.  If the option '-fvtable-verify=preinit' is
    used, then our constructor initialization function gets put into the
    preinit array.  This is necessary if there are data sets that need
    to be built very early in execution.  If the constructor
diff -Nrcpad gcc-17-20260524/gcc/warning-control.cc gcc-17-20260531/gcc/warning-control.cc
*** gcc-17-20260524/gcc/warning-control.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/warning-control.cc	Sun May 31 22:32:13 2026
*************** bool has_warning_spec (const_tree t)
*** 265,271 ****
    return !RESERVED_LOCATION_P (loc) && get_no_warning_bit (t);
  }
  
! /* Retrieve warning dispostion bitmap for tree streaming.  */
  
  unsigned
  get_warning_spec (const_tree t)
--- 265,271 ----
    return !RESERVED_LOCATION_P (loc) && get_no_warning_bit (t);
  }
  
! /* Retrieve warning disposition bitmap for tree streaming.  */
  
  unsigned
  get_warning_spec (const_tree t)
diff -Nrcpad gcc-17-20260524/gcc/wide-int.cc gcc-17-20260531/gcc/wide-int.cc
*** gcc-17-20260524/gcc/wide-int.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/wide-int.cc	Sun May 31 22:32:13 2026
*************** wi::from_mpz (const_tree type, mpz_t x,
*** 319,325 ****
  
  /* Return the largest SGNed number that is representable in PRECISION bits.
  
!    TODO: There is still code from the double_int era that trys to
     make up for the fact that double int's could not represent the
     min and max values of all types.  This code should be removed
     because the min and max values can always be represented in
--- 319,325 ----
  
  /* Return the largest SGNed number that is representable in PRECISION bits.
  
!    TODO: There is still code from the double_int era that tries to
     make up for the fact that double int's could not represent the
     min and max values of all types.  This code should be removed
     because the min and max values can always be represented in
*************** wi::force_to_size (HOST_WIDE_INT *val, c
*** 401,407 ****
  }
  
  /* This function hides the fact that we cannot rely on the bits beyond
!    the precision.  This issue comes up in the relational comparisions
     where we do allow comparisons of values of different precisions.  */
  static inline HOST_WIDE_INT
  selt (const HOST_WIDE_INT *a, unsigned int len,
--- 401,407 ----
  }
  
  /* This function hides the fact that we cannot rely on the bits beyond
!    the precision.  This issue comes up in the relational comparisons
     where we do allow comparisons of values of different precisions.  */
  static inline HOST_WIDE_INT
  selt (const HOST_WIDE_INT *a, unsigned int len,
*************** wi::divmod_internal (HOST_WIDE_INT *quot
*** 1865,1871 ****
      overflow = true;
  
    /* Handle the overflow cases.  Viewed as unsigned value, the quotient of
!      (signed min / -1) has the same representation as the orignal dividend.
       We have traditionally made division by zero act as division by one,
       so there too we use the original dividend.  */
    if (overflow)
--- 1865,1871 ----
      overflow = true;
  
    /* Handle the overflow cases.  Viewed as unsigned value, the quotient of
!      (signed min / -1) has the same representation as the original dividend.
       We have traditionally made division by zero act as division by one,
       so there too we use the original dividend.  */
    if (overflow)
diff -Nrcpad gcc-17-20260524/gcc/wide-int.h gcc-17-20260531/gcc/wide-int.h
*** gcc-17-20260524/gcc/wide-int.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/gcc/wide-int.h	Sun May 31 22:32:13 2026
*************** along with GCC; see the file COPYING3.
*** 36,42 ****
       bits above the precision that has been specified.  Because of
       this, the default flavor has semantics that are simple to
       understand and in general model the underlying hardware that the
!      compiler is targetted for.
  
       This flavor must be used at the RTL level of gcc because there
       is, in general, not enough information in the RTL representation
--- 36,42 ----
       bits above the precision that has been specified.  Because of
       this, the default flavor has semantics that are simple to
       understand and in general model the underlying hardware that the
!      compiler is targeted for.
  
       This flavor must be used at the RTL level of gcc because there
       is, in general, not enough information in the RTL representation
*************** along with GCC; see the file COPYING3.
*** 119,125 ****
  
     The offset_int and the widest_int flavors are more expensive
     than the default wide int, so in addition to the caveats with these
!    two, the default is the prefered representation.
  
     All three flavors of wide_int are represented as a vector of
     HOST_WIDE_INTs.  The default and widest_int vectors contain enough elements
--- 119,125 ----
  
     The offset_int and the widest_int flavors are more expensive
     than the default wide int, so in addition to the caveats with these
!    two, the default is the preferred representation.
  
     All three flavors of wide_int are represented as a vector of
     HOST_WIDE_INTs.  The default and widest_int vectors contain enough elements
*************** wi::two (unsigned int precision)
*** 2036,2042 ****
  
  namespace wi
  {
!   /* ints_for<T>::zero (X) returns a zero that, when asssigned to a T,
       gives that T the same precision as X.  */
    template<typename T, precision_type = int_traits<T>::precision_type>
    struct ints_for
--- 2036,2042 ----
  
  namespace wi
  {
!   /* ints_for<T>::zero (X) returns a zero that, when assigned to a T,
       gives that T the same precision as X.  */
    template<typename T, precision_type = int_traits<T>::precision_type>
    struct ints_for
*************** wi::bitreverse (const T &x)
*** 2684,2690 ****
    return result;
  }
  
! /* Return the mininum of X and Y, treating them both as having
     signedness SGN.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 2684,2690 ----
    return result;
  }
  
! /* Return the minimum of X and Y, treating them both as having
     signedness SGN.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::umin (const T1 &x, const T2 &y)
*** 2715,2721 ****
    return wi::min (x, y, UNSIGNED);
  }
  
! /* Return the maxinum of X and Y, treating them both as having
     signedness SGN.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 2715,2721 ----
    return wi::min (x, y, UNSIGNED);
  }
  
! /* Return the maximum of X and Y, treating them both as having
     signedness SGN.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::mul_high (const T1 &x, const T2 &y,
*** 3116,3122 ****
    return result;
  }
  
! /* Return X / Y, rouding towards 0.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
--- 3116,3122 ----
    return result;
  }
  
! /* Return X / Y, rounding towards 0.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
*************** wi::div_trunc (const T1 &x, const T2 &y,
*** 3141,3147 ****
    return quotient;
  }
  
! /* Return X / Y, rouding towards 0.  Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::sdiv_trunc (const T1 &x, const T2 &y)
--- 3141,3147 ----
    return quotient;
  }
  
! /* Return X / Y, rounding towards 0.  Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::sdiv_trunc (const T1 &x, const T2 &y)
*************** wi::sdiv_trunc (const T1 &x, const T2 &y
*** 3149,3155 ****
    return div_trunc (x, y, SIGNED);
  }
  
! /* Return X / Y, rouding towards 0.  Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::udiv_trunc (const T1 &x, const T2 &y)
--- 3149,3155 ----
    return div_trunc (x, y, SIGNED);
  }
  
! /* Return X / Y, rounding towards 0.  Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::udiv_trunc (const T1 &x, const T2 &y)
*************** wi::udiv_trunc (const T1 &x, const T2 &y
*** 3157,3163 ****
    return div_trunc (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rouding towards -inf.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
--- 3157,3163 ----
    return div_trunc (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rounding towards -inf.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
*************** wi::div_floor (const T1 &x, const T2 &y,
*** 3192,3198 ****
    return quotient;
  }
  
! /* Return X / Y, rouding towards -inf.  Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::sdiv_floor (const T1 &x, const T2 &y)
--- 3192,3198 ----
    return quotient;
  }
  
! /* Return X / Y, rounding towards -inf.  Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::sdiv_floor (const T1 &x, const T2 &y)
*************** wi::sdiv_floor (const T1 &x, const T2 &y
*** 3200,3206 ****
    return div_floor (x, y, SIGNED);
  }
  
! /* Return X / Y, rouding towards -inf.  Treat X and Y as unsigned values.  */
  /* ??? Why do we have both this and udiv_trunc.  Aren't they the same?  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 3200,3206 ----
    return div_floor (x, y, SIGNED);
  }
  
! /* Return X / Y, rounding towards -inf.  Treat X and Y as unsigned values.  */
  /* ??? Why do we have both this and udiv_trunc.  Aren't they the same?  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::udiv_floor (const T1 &x, const T2 &y
*** 3209,3215 ****
    return div_floor (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rouding towards +inf.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
--- 3209,3215 ----
    return div_floor (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rounding towards +inf.  Treat X and Y as having the
     signedness given by SGN.  Indicate in *OVERFLOW if the result
     overflows.  */
  template <typename T1, typename T2>
*************** wi::div_ceil (const T1 &x, const T2 &y,
*** 3244,3250 ****
    return quotient;
  }
  
! /* Return X / Y, rouding towards +inf.  Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::udiv_ceil (const T1 &x, const T2 &y)
--- 3244,3250 ----
    return quotient;
  }
  
! /* Return X / Y, rounding towards +inf.  Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
  wi::udiv_ceil (const T1 &x, const T2 &y)
*************** wi::udiv_ceil (const T1 &x, const T2 &y)
*** 3252,3258 ****
    return div_ceil (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rouding towards nearest with ties away from zero.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the result overflows.  */
  template <typename T1, typename T2>
--- 3252,3258 ----
    return div_ceil (x, y, UNSIGNED);
  }
  
! /* Return X / Y, rounding towards nearest with ties away from zero.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the result overflows.  */
  template <typename T1, typename T2>
*************** wi::div_round (const T1 &x, const T2 &y,
*** 3305,3311 ****
    return quotient;
  }
  
! /* Return X / Y, rouding towards 0.  Treat X and Y as having the
     signedness given by SGN.  Store the remainder in *REMAINDER_PTR.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 3305,3311 ----
    return quotient;
  }
  
! /* Return X / Y, rounding towards 0.  Treat X and Y as having the
     signedness given by SGN.  Store the remainder in *REMAINDER_PTR.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::gcd (const T1 &a, const T2 &b, signo
*** 3360,3366 ****
    return y;
  }
  
! /* Compute X / Y, rouding towards 0, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
--- 3360,3366 ----
    return y;
  }
  
! /* Compute X / Y, rounding towards 0, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
*************** wi::mod_trunc (const T1 &x, const T2 &y,
*** 3387,3393 ****
    return remainder;
  }
  
! /* Compute X / Y, rouding towards 0, and return the remainder.
     Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 3387,3393 ----
    return remainder;
  }
  
! /* Compute X / Y, rounding towards 0, and return the remainder.
     Treat X and Y as signed values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::smod_trunc (const T1 &x, const T2 &y
*** 3396,3402 ****
    return mod_trunc (x, y, SIGNED);
  }
  
! /* Compute X / Y, rouding towards 0, and return the remainder.
     Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
--- 3396,3402 ----
    return mod_trunc (x, y, SIGNED);
  }
  
! /* Compute X / Y, rounding towards 0, and return the remainder.
     Treat X and Y as unsigned values.  */
  template <typename T1, typename T2>
  inline WI_BINARY_RESULT (T1, T2)
*************** wi::umod_trunc (const T1 &x, const T2 &y
*** 3405,3411 ****
    return mod_trunc (x, y, UNSIGNED);
  }
  
! /* Compute X / Y, rouding towards -inf, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
--- 3405,3411 ----
    return mod_trunc (x, y, UNSIGNED);
  }
  
! /* Compute X / Y, rounding towards -inf, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
*************** wi::mod_floor (const T1 &x, const T2 &y,
*** 3441,3447 ****
    return remainder;
  }
  
! /* Compute X / Y, rouding towards -inf, and return the remainder.
     Treat X and Y as unsigned values.  */
  /* ??? Why do we have both this and umod_trunc.  Aren't they the same?  */
  template <typename T1, typename T2>
--- 3441,3447 ----
    return remainder;
  }
  
! /* Compute X / Y, rounding towards -inf, and return the remainder.
     Treat X and Y as unsigned values.  */
  /* ??? Why do we have both this and umod_trunc.  Aren't they the same?  */
  template <typename T1, typename T2>
*************** wi::umod_floor (const T1 &x, const T2 &y
*** 3451,3457 ****
    return mod_floor (x, y, UNSIGNED);
  }
  
! /* Compute X / Y, rouding towards +inf, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
--- 3451,3457 ----
    return mod_floor (x, y, UNSIGNED);
  }
  
! /* Compute X / Y, rounding towards +inf, and return the remainder.
     Treat X and Y as having the signedness given by SGN.  Indicate
     in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
*************** wi::mod_ceil (const T1 &x, const T2 &y,
*** 3487,3493 ****
    return remainder;
  }
  
! /* Compute X / Y, rouding towards nearest with ties away from zero,
     and return the remainder.  Treat X and Y as having the signedness
     given by SGN.  Indicate in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
--- 3487,3493 ----
    return remainder;
  }
  
! /* Compute X / Y, rounding towards nearest with ties away from zero,
     and return the remainder.  Treat X and Y as having the signedness
     given by SGN.  Indicate in *OVERFLOW if the division overflows.  */
  template <typename T1, typename T2>
diff -Nrcpad gcc-17-20260524/include/ChangeLog gcc-17-20260531/include/ChangeLog
*** gcc-17-20260524/include/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,35 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* hsa.h: Reflow long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* demangle.h (enum demangle_component_type): Fix typos.
+ 	* doubly-linked-list.h: Likewise.
+ 	* floatformat.h (struct floatformat): Likewise.
+ 	* gcc-cp-fe.def (GCC_METHOD1): Likewise.
+ 	(GCC_METHOD2): Likewise.
+ 	* gomp-constants.h (enum gomp_map_kind): Likewise.
+ 	(GOMP_TARGET_ARG_THREAD_LIMIT): Likewise.
+ 	* hsa.h: Likewise.
+ 	* hsa_ext_amd.h (hsa_amd_signal_value_pointer): Likewise.
+ 	(hsa_amd_memory_lock): Likewise.
+ 	(hsa_amd_pointer_info): Likewise.
+ 	(hsa_amd_ipc_memory_create): Likewise.
+ 	(hsa_amd_ipc_signal_create): Likewise.
+ 	* libiberty.h (PEX_STDOUT_APPEND): Likewise.
+ 	* longlong.h: Likewise.
+ 	* plugin-api.h (enum ld_plugin_status): Likewise.
+ 	* splay-tree.h (struct splay_tree_s): Likewise.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* gomp-constants.h (GOMP_OMP_PREDEF_ALLOC_THREADS): Rename to ...
+ 	(GOMP_OMP_PREDEF_ALLOC_THREAD): ... this.
+ 	(GOMP_OMP_PREDEF_ALLOC_CGROUP, GOMP_OMP_PREDEF_ALLOC_PTEAM): Define
+ 	with the value of omp_{cgroup,pteam}_mem_alloc
+ 
  2026-02-05  Matthieu Longo  <matthieu.longo@arm.com>
  
  	* doubly-linked-list.h
diff -Nrcpad gcc-17-20260524/include/demangle.h gcc-17-20260531/include/demangle.h
*** gcc-17-20260524/include/demangle.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/demangle.h	Sun May 31 22:32:13 2026
*************** enum demangle_component_type
*** 314,320 ****
    /* C++11: An rvalue reference modifying a member function.  The one
       subtree is the type which is being referenced.  */
    DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS,
!   /* C++23: A member function with explict object parameter.  */
    DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION,
    /* A vendor qualifier.  The left subtree is the type which is being
       qualified, and the right subtree is the name of the
--- 314,320 ----
    /* C++11: An rvalue reference modifying a member function.  The one
       subtree is the type which is being referenced.  */
    DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS,
!   /* C++23: A member function with explicit object parameter.  */
    DEMANGLE_COMPONENT_XOBJ_MEMBER_FUNCTION,
    /* A vendor qualifier.  The left subtree is the type which is being
       qualified, and the right subtree is the name of the
diff -Nrcpad gcc-17-20260524/include/doubly-linked-list.h gcc-17-20260531/include/doubly-linked-list.h
*** gcc-17-20260524/include/doubly-linked-list.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/doubly-linked-list.h	Sun May 31 22:32:13 2026
***************
*** 64,70 ****
     or as a whole via LINKED_LIST_MUTATIVE_OPS_PROTOTYPE for the prototypes, and
     LINKED_LIST_MUTATIVE_OPS_DECL for the implementations.  */
  
! /* Append the given node new_ to the exising list.
     Precondition: prev and next of new_ must be NULL.  */
  #define LINKED_LIST_APPEND(LTYPE)		LTYPE##_append
  
--- 64,70 ----
     or as a whole via LINKED_LIST_MUTATIVE_OPS_PROTOTYPE for the prototypes, and
     LINKED_LIST_MUTATIVE_OPS_DECL for the implementations.  */
  
! /* Append the given node new_ to the existing list.
     Precondition: prev and next of new_ must be NULL.  */
  #define LINKED_LIST_APPEND(LTYPE)		LTYPE##_append
  
diff -Nrcpad gcc-17-20260524/include/floatformat.h gcc-17-20260531/include/floatformat.h
*** gcc-17-20260524/include/floatformat.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/floatformat.h	Sun May 31 22:32:13 2026
*************** struct floatformat
*** 67,73 ****
    unsigned int exp_start;
    unsigned int exp_len;
    /* Bias added to a "true" exponent to form the biased exponent.  It
!      is intentionally signed as, otherwize, -exp_bias can turn into a
       very large number (e.g., given the exp_bias of 0x3fff and a 64
       bit long, the equation (long)(1 - exp_bias) evaluates to
       4294950914) instead of -16382).  */
--- 67,73 ----
    unsigned int exp_start;
    unsigned int exp_len;
    /* Bias added to a "true" exponent to form the biased exponent.  It
!      is intentionally signed as, otherwise, -exp_bias can turn into a
       very large number (e.g., given the exp_bias of 0x3fff and a 64
       bit long, the equation (long)(1 - exp_bias) evaluates to
       4294950914) instead of -16382).  */
diff -Nrcpad gcc-17-20260524/include/gcc-cp-fe.def gcc-17-20260531/include/gcc-cp-fe.def
*** gcc-17-20260524/include/gcc-cp-fe.def	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/gcc-cp-fe.def	Sun May 31 22:32:13 2026
*************** GCC_METHOD1 (int /* bool */, push_functi
*** 138,144 ****
     Then, as we set up the binding context to compile a code snippet at
     point 3, we may choose to activate c_1, o_0 and p upfront,
     declaring and discarding c, c_0 and o, and then reentering the
!    funciton scope to declare c_1, o_0 and p; or we can wait for oracle
     lookups of c, o or p.  If c is looked up, and the debugger resolves
     c in the scope to c_1, it is expected to enter the function scope
     from the top level, declare c, leave it, reenter it, declare c_0,
--- 138,144 ----
     Then, as we set up the binding context to compile a code snippet at
     point 3, we may choose to activate c_1, o_0 and p upfront,
     declaring and discarding c, c_0 and o, and then reentering the
!    function scope to declare c_1, o_0 and p; or we can wait for oracle
     lookups of c, o or p.  If c is looked up, and the debugger resolves
     c in the scope to c_1, it is expected to enter the function scope
     from the top level, declare c, leave it, reenter it, declare c_0,
*************** GCC_METHOD2 (int /* bool */, add_using_d
*** 258,264 ****
     SYM_KIND, in addition to any other applicable flags, and pass as
     NAME a string starting with the two-character mangling for operator
     name: "ps" for unary plus, "mL" for multiply and assign, *=; etc.
!    Use "cv" for type converstion operators (the target type portion
     may be omitted, as it is taken from the return type in SYM_TYPE).
     For operator"", use "li" followed by the identifier (the mangled
     name mandates digits specifying the length of the identifier; if
--- 258,264 ----
     SYM_KIND, in addition to any other applicable flags, and pass as
     NAME a string starting with the two-character mangling for operator
     name: "ps" for unary plus, "mL" for multiply and assign, *=; etc.
!    Use "cv" for type conversion operators (the target type portion
     may be omitted, as it is taken from the return type in SYM_TYPE).
     For operator"", use "li" followed by the identifier (the mangled
     name mandates digits specifying the length of the identifier; if
diff -Nrcpad gcc-17-20260524/include/gomp-constants.h gcc-17-20260531/include/gomp-constants.h
*** gcc-17-20260524/include/gomp-constants.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/gomp-constants.h	Sun May 31 22:32:13 2026
*************** enum gomp_map_kind
*** 160,166 ****
  					 | GOMP_MAP_FLAG_SPECIAL_2
  					 | GOMP_MAP_FLAG_SPECIAL | 0),
      /* On a location of a pointer/reference that is assumed to be already mapped
!        earlier, store the translated address of the preceeding mapping.
         No refcount is bumped by this, and the store is done unconditionally.  */
      GOMP_MAP_ALWAYS_POINTER =		(GOMP_MAP_FLAG_SPECIAL_2
  					 | GOMP_MAP_FLAG_SPECIAL | 1),
--- 160,166 ----
  					 | GOMP_MAP_FLAG_SPECIAL_2
  					 | GOMP_MAP_FLAG_SPECIAL | 0),
      /* On a location of a pointer/reference that is assumed to be already mapped
!        earlier, store the translated address of the preceding mapping.
         No refcount is bumped by this, and the store is done unconditionally.  */
      GOMP_MAP_ALWAYS_POINTER =		(GOMP_MAP_FLAG_SPECIAL_2
  					 | GOMP_MAP_FLAG_SPECIAL | 1),
*************** enum gomp_map_kind
*** 381,387 ****
  /* Target argument index of THREAD_LIMIT.  */
  #define GOMP_TARGET_ARG_THREAD_LIMIT		(2 << 8)
  
! /* If the value is directly embeded in target argument, it should be a 16-bit
     at most and shifted by this many bits.  */
  #define GOMP_TARGET_ARG_VALUE_SHIFT		16
  
--- 381,387 ----
  /* Target argument index of THREAD_LIMIT.  */
  #define GOMP_TARGET_ARG_THREAD_LIMIT		(2 << 8)
  
! /* If the value is directly embedded in target argument, it should be a 16-bit
     at most and shifted by this many bits.  */
  #define GOMP_TARGET_ARG_VALUE_SHIFT		16
  
*************** enum gomp_map_kind
*** 402,409 ****
  #define GOMP_OMPX_PREDEF_MEMSPACE_MIN	200
  #define GOMP_OMPX_PREDEF_MEMSPACE_MAX	200
  
! /* Predefined allocator with access == thread.  */
! #define GOMP_OMP_PREDEF_ALLOC_THREADS	8
  
  /* Flag values for OpenMP 'requires' directive features.  */
  // compiler use only: OMP_REQUIRES_ATOMIC_DEFAULT_MEM_ORDER  0xf
--- 402,411 ----
  #define GOMP_OMPX_PREDEF_MEMSPACE_MIN	200
  #define GOMP_OMPX_PREDEF_MEMSPACE_MAX	200
  
! /* Predefined allocator with access == cgroup, pteam, and thread.  */
! #define GOMP_OMP_PREDEF_ALLOC_CGROUP	6
! #define GOMP_OMP_PREDEF_ALLOC_PTEAM	7
! #define GOMP_OMP_PREDEF_ALLOC_THREAD	8
  
  /* Flag values for OpenMP 'requires' directive features.  */
  // compiler use only: OMP_REQUIRES_ATOMIC_DEFAULT_MEM_ORDER  0xf
diff -Nrcpad gcc-17-20260524/include/hsa.h gcc-17-20260531/include/hsa.h
*** gcc-17-20260524/include/hsa.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/hsa.h	Sun May 31 22:32:13 2026
*************** typedef enum {
*** 802,808 ****
     */
    HSA_AGENT_INFO_FEATURE = 2,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_MACHINE_MODELS for a given intruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 802,808 ----
     */
    HSA_AGENT_INFO_FEATURE = 2,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_MACHINE_MODELS for a given instruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 812,818 ****
     */
    HSA_AGENT_INFO_MACHINE_MODEL = 3,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_PROFILES for a given intruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 812,818 ----
     */
    HSA_AGENT_INFO_MACHINE_MODEL = 3,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_PROFILES for a given instruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 823,829 ****
    HSA_AGENT_INFO_PROFILE = 4,
    /**
     * @deprecated Query ::HSA_ISA_INFO_DEFAULT_FLOAT_ROUNDING_MODES for a given
!    * intruction set architecture supported by the agent instead.  If more than
     * one ISA is supported by the agent, the returned value corresponds to the
     * first ISA enumerated by ::hsa_agent_iterate_isas.
     *
--- 823,829 ----
    HSA_AGENT_INFO_PROFILE = 4,
    /**
     * @deprecated Query ::HSA_ISA_INFO_DEFAULT_FLOAT_ROUNDING_MODES for a given
!    * instruction set architecture supported by the agent instead.  If more than
     * one ISA is supported by the agent, the returned value corresponds to the
     * first ISA enumerated by ::hsa_agent_iterate_isas.
     *
*************** typedef enum {
*** 834,842 ****
    HSA_AGENT_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 5,
    /**
     * @deprecated Query ::HSA_ISA_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES
!    * for a given intruction set architecture supported by the agent instead.  If
!    * more than one ISA is supported by the agent, the returned value corresponds
!    * to the first ISA enumerated by ::hsa_agent_iterate_isas.
     *
     * A bit-mask of ::hsa_default_float_rounding_mode_t values, representing the
     * default floating-point rounding modes supported by the agent in the Base
--- 834,842 ----
    HSA_AGENT_INFO_DEFAULT_FLOAT_ROUNDING_MODE = 5,
    /**
     * @deprecated Query ::HSA_ISA_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES
!    * for a given instruction set architecture supported by the agent instead.
!    * If more than one ISA is supported by the agent, the returned value
!    * corresponds to the first ISA enumerated by ::hsa_agent_iterate_isas.
     *
     * A bit-mask of ::hsa_default_float_rounding_mode_t values, representing the
     * default floating-point rounding modes supported by the agent in the Base
*************** typedef enum {
*** 846,852 ****
     */
    HSA_AGENT_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES = 23,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_FAST_F16_OPERATION for a given intruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 846,852 ----
     */
    HSA_AGENT_INFO_BASE_PROFILE_DEFAULT_FLOAT_ROUNDING_MODES = 23,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_FAST_F16_OPERATION for a given instruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 859,865 ****
    HSA_AGENT_INFO_FAST_F16_OPERATION = 24,
    /**
     * @deprecated Query ::HSA_WAVEFRONT_INFO_SIZE for a given wavefront and
!    * intruction set architecture supported by the agent instead.  If more than
     * one ISA is supported by the agent, the returned value corresponds to the
     * first ISA enumerated by ::hsa_agent_iterate_isas and the first wavefront
     * enumerated by ::hsa_isa_iterate_wavefronts for that ISA.
--- 859,865 ----
    HSA_AGENT_INFO_FAST_F16_OPERATION = 24,
    /**
     * @deprecated Query ::HSA_WAVEFRONT_INFO_SIZE for a given wavefront and
!    * instruction set architecture supported by the agent instead.  If more than
     * one ISA is supported by the agent, the returned value corresponds to the
     * first ISA enumerated by ::hsa_agent_iterate_isas and the first wavefront
     * enumerated by ::hsa_isa_iterate_wavefronts for that ISA.
*************** typedef enum {
*** 870,876 ****
     */
    HSA_AGENT_INFO_WAVEFRONT_SIZE = 6,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_WORKGROUP_MAX_DIM for a given intruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 870,876 ----
     */
    HSA_AGENT_INFO_WAVEFRONT_SIZE = 6,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_WORKGROUP_MAX_DIM for a given instruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 883,889 ****
     */
    HSA_AGENT_INFO_WORKGROUP_MAX_DIM = 7,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_WORKGROUP_MAX_SIZE for a given intruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 883,889 ----
     */
    HSA_AGENT_INFO_WORKGROUP_MAX_DIM = 7,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_WORKGROUP_MAX_SIZE for a given instruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 894,900 ****
     */
    HSA_AGENT_INFO_WORKGROUP_MAX_SIZE = 8,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_GRID_MAX_DIM for a given intruction set
     * architecture supported by the agent instead.
     *
     * Maximum number of work-items of each dimension of a grid. Each maximum must
--- 894,900 ----
     */
    HSA_AGENT_INFO_WORKGROUP_MAX_SIZE = 8,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_GRID_MAX_DIM for a given instruction set
     * architecture supported by the agent instead.
     *
     * Maximum number of work-items of each dimension of a grid. Each maximum must
*************** typedef enum {
*** 906,912 ****
     */
    HSA_AGENT_INFO_GRID_MAX_DIM = 9,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_GRID_MAX_SIZE for a given intruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 906,912 ----
     */
    HSA_AGENT_INFO_GRID_MAX_DIM = 9,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_GRID_MAX_SIZE for a given instruction set
     * architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 917,923 ****
     */
    HSA_AGENT_INFO_GRID_MAX_SIZE = 10,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_FBARRIER_MAX_SIZE for a given intruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
--- 917,923 ----
     */
    HSA_AGENT_INFO_GRID_MAX_SIZE = 10,
    /**
!    * @deprecated Query ::HSA_ISA_INFO_FBARRIER_MAX_SIZE for a given instruction
     * set architecture supported by the agent instead.  If more than one ISA is
     * supported by the agent, the returned value corresponds to the first ISA
     * enumerated by ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 1093,1099 ****
  } hsa_exception_policy_t;
  
  /**
!  * @deprecated Use ::hsa_isa_get_exception_policies for a given intruction set
   * architecture supported by the agent instead. If more than one ISA is
   * supported by the agent, this function uses the first value returned by
   * ::hsa_agent_iterate_isas.
--- 1093,1099 ----
  } hsa_exception_policy_t;
  
  /**
!  * @deprecated Use ::hsa_isa_get_exception_policies for a given instruction set
   * architecture supported by the agent instead. If more than one ISA is
   * supported by the agent, this function uses the first value returned by
   * ::hsa_agent_iterate_isas.
*************** typedef enum {
*** 3191,3197 ****
    /**
     * Updates to memory in this region can be performed by a single agent at
     * a time. If a different agent in the system is allowed to access the
!    * region, the application must explicitely invoke ::hsa_memory_assign_agent
     * in order to transfer ownership to that agent for a particular buffer.
     */
    HSA_REGION_GLOBAL_FLAG_COARSE_GRAINED = 4
--- 3191,3197 ----
    /**
     * Updates to memory in this region can be performed by a single agent at
     * a time. If a different agent in the system is allowed to access the
!    * region, the application must explicitly invoke ::hsa_memory_assign_agent
     * in order to transfer ownership to that agent for a particular buffer.
     */
    HSA_REGION_GLOBAL_FLAG_COARSE_GRAINED = 4
*************** hsa_status_t HSA_API hsa_memory_copy(
*** 3402,3408 ****
   * @brief Change the ownership of a global, coarse-grained buffer.
   *
   * @details The contents of a coarse-grained buffer are visible to an agent
!  * only after ownership has been explicitely transferred to that agent. Once the
   * operation completes, the previous owner cannot longer access the data in the
   * buffer.
   *
--- 3402,3408 ----
   * @brief Change the ownership of a global, coarse-grained buffer.
   *
   * @details The contents of a coarse-grained buffer are visible to an agent
!  * only after ownership has been explicitly transferred to that agent. Once the
   * operation completes, the previous owner cannot longer access the data in the
   * buffer.
   *
diff -Nrcpad gcc-17-20260524/include/hsa_ext_amd.h gcc-17-20260531/include/hsa_ext_amd.h
*** gcc-17-20260524/include/hsa_ext_amd.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/hsa_ext_amd.h	Sun May 31 22:32:13 2026
*************** hsa_status_t hsa_amd_signal_value_pointe
*** 634,640 ****
                                            volatile hsa_signal_value_t** value_ptr);
  
  /**
!  * @brief Asyncronous signal handler function type.
   *
   * @details Type definition of callback function to be used with
   * hsa_amd_signal_async_handler. This callback is invoked if the associated
--- 634,640 ----
                                            volatile hsa_signal_value_t** value_ptr);
  
  /**
!  * @brief Asynchronous signal handler function type.
   *
   * @details Type definition of callback function to be used with
   * hsa_amd_signal_async_handler. This callback is invoked if the associated
*************** hsa_status_t HSA_API hsa_amd_memory_lock
*** 1528,1534 ****
   * locked memory, then the overlap area is kept locked (i.e. multiple mappings are permitted).
   * In this case, the same input @p host_ptr may give different locked @p agent_ptr and when it
   * does, they are not necessarily coherent (i.e. accessing either @p agent_ptr is not equivalent).
!  * Acesses to the memory via @p agent_ptr have the same access properties as memory allocated from
   * @p pool as determined by ::hsa_amd_memory_pool_get_info and ::hsa_amd_agent_memory_pool_get_info
   * (ex. coarse/fine grain, platform atomic support, link info).  Physical composition and placement
   * of the memory (ex. page size, NUMA binding) is not changed.
--- 1528,1534 ----
   * locked memory, then the overlap area is kept locked (i.e. multiple mappings are permitted).
   * In this case, the same input @p host_ptr may give different locked @p agent_ptr and when it
   * does, they are not necessarily coherent (i.e. accessing either @p agent_ptr is not equivalent).
!  * Accesses to the memory via @p agent_ptr have the same access properties as memory allocated from
   * @p pool as determined by ::hsa_amd_memory_pool_get_info and ::hsa_amd_agent_memory_pool_get_info
   * (ex. coarse/fine grain, platform atomic support, link info).  Physical composition and placement
   * of the memory (ex. page size, NUMA binding) is not changed.
*************** typedef struct hsa_amd_pointer_info_s {
*** 1814,1823 ****
   * @param[in] alloc Function pointer to an allocator used to allocate the
   * @p accessible array.  If NULL @p accessible will not be returned.
   *
!  * @param[out] num_agents_accessible Recieves the count of agents in
   * @p accessible.  If NULL @p accessible will not be returned.
   *
!  * @param[out] accessible Recieves a pointer to the array, allocated by @p alloc,
   * holding the list of agents which may directly access the allocation.
   * May be NULL.
   *
--- 1814,1823 ----
   * @param[in] alloc Function pointer to an allocator used to allocate the
   * @p accessible array.  If NULL @p accessible will not be returned.
   *
!  * @param[out] num_agents_accessible Receives the count of agents in
   * @p accessible.  If NULL @p accessible will not be returned.
   *
!  * @param[out] accessible Receives a pointer to the array, allocated by @p alloc,
   * holding the list of agents which may directly access the allocation.
   * May be NULL.
   *
*************** hsa_status_t HSA_API hsa_amd_pointer_inf
*** 1843,1849 ****
   * @param[in] ptr Pointer to the first byte of an allocation known to ROCr
   * with which to associate @p userdata.
   *
!  * @param[in] userdata Abitrary pointer to associate with the allocation.
   *
   * @retval HSA_STATUS_SUCCESS @p userdata successfully stored.
   *
--- 1843,1849 ----
   * @param[in] ptr Pointer to the first byte of an allocation known to ROCr
   * with which to associate @p userdata.
   *
!  * @param[in] userdata Arbitrary pointer to associate with the allocation.
   *
   * @retval HSA_STATUS_SUCCESS @p userdata successfully stored.
   *
*************** hsa_status_t HSA_API hsa_amd_ipc_memory_
*** 1915,1921 ****
   * @param[in] mapping_agents List of agents to access the shared memory.
   * Ignored if @p num_agents is zero.
   *
!  * @param[out] mapped_ptr Recieves a process local pointer to the shared memory.
   *
   * @retval HSA_STATUS_SUCCESS if memory is successfully imported.
   *
--- 1915,1921 ----
   * @param[in] mapping_agents List of agents to access the shared memory.
   * Ignored if @p num_agents is zero.
   *
!  * @param[out] mapped_ptr Receives a process local pointer to the shared memory.
   *
   * @retval HSA_STATUS_SUCCESS if memory is successfully imported.
   *
*************** hsa_status_t HSA_API hsa_amd_ipc_signal_
*** 1991,1997 ****
   *
   * @param[in] handle Pointer to the identifier for the shared signal.
   *
!  * @param[out] signal Recieves a process local signal handle to the shared signal.
   *
   * @retval HSA_STATUS_SUCCESS if the signal is successfully imported.
   *
--- 1991,1997 ----
   *
   * @param[in] handle Pointer to the identifier for the shared signal.
   *
!  * @param[out] signal Receives a process local signal handle to the shared signal.
   *
   * @retval HSA_STATUS_SUCCESS if the signal is successfully imported.
   *
*************** typedef enum hsa_amd_queue_priority_s {
*** 2111,2117 ****
  } hsa_amd_queue_priority_t;
  
  /**
!  * @brief Modifies the dispatch and wavefront scheduling prioirty for a
   * given compute queue. The default is HSA_AMD_QUEUE_PRIORITY_NORMAL.
   *
   * @param[in] queue Compute queue to apply new priority to.
--- 2111,2117 ----
  } hsa_amd_queue_priority_t;
  
  /**
!  * @brief Modifies the dispatch and wavefront scheduling priority for a
   * given compute queue. The default is HSA_AMD_QUEUE_PRIORITY_NORMAL.
   *
   * @param[in] queue Compute queue to apply new priority to.
diff -Nrcpad gcc-17-20260524/include/libiberty.h gcc-17-20260531/include/libiberty.h
*** gcc-17-20260524/include/libiberty.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/libiberty.h	Sun May 31 22:32:13 2026
***************
*** 3,9 ****
     Copyright (C) 1997-2026 Free Software Foundation, Inc.
  
     Note - certain prototypes declared in this header file are for
!    functions whoes implementation copyright does not belong to the
     FSF.  Those prototypes are present in this file for reference
     purposes only and their presence in this file should not construed
     as an indication of ownership by the FSF of the implementation of
--- 3,9 ----
     Copyright (C) 1997-2026 Free Software Foundation, Inc.
  
     Note - certain prototypes declared in this header file are for
!    functions whose implementation copyright does not belong to the
     FSF.  Those prototypes are present in this file for reference
     purposes only and their presence in this file should not construed
     as an indication of ownership by the FSF of the implementation of
*************** extern struct pex_obj *pex_init (int fla
*** 494,500 ****
  /* Append stdout to existing file instead of truncating it.  */
  #define PEX_STDOUT_APPEND	0x100
  
! /* Thes same as PEX_STDOUT_APPEND, but for STDERR.  */
  #define PEX_STDERR_APPEND	0x200
  
  /* Execute one program.  Returns NULL on success.  On error returns an
--- 494,500 ----
  /* Append stdout to existing file instead of truncating it.  */
  #define PEX_STDOUT_APPEND	0x100
  
! /* The same as PEX_STDOUT_APPEND, but for STDERR.  */
  #define PEX_STDERR_APPEND	0x200
  
  /* Execute one program.  Returns NULL on success.  On error returns an
diff -Nrcpad gcc-17-20260524/include/longlong.h gcc-17-20260531/include/longlong.h
*** gcc-17-20260524/include/longlong.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/longlong.h	Sun May 31 22:32:13 2026
*************** extern UDItype __umulsidi3 (USItype, USI
*** 1084,1090 ****
  #elif __riscv_xlen == 64
    #define MULUW3 "call __muldi3"
  #else
! #error unsupport xlen
  #endif /* __riscv_xlen */
  /* We rely on the fact that MULUW3 doesn't clobber the t-registers.
     It can get better register allocation result.  */
--- 1084,1090 ----
  #elif __riscv_xlen == 64
    #define MULUW3 "call __muldi3"
  #else
! #error unsupported xlen
  #endif /* __riscv_xlen */
  /* We rely on the fact that MULUW3 doesn't clobber the t-registers.
     It can get better register allocation result.  */
diff -Nrcpad gcc-17-20260524/include/plugin-api.h gcc-17-20260531/include/plugin-api.h
*** gcc-17-20260524/include/plugin-api.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/plugin-api.h	Sun May 31 22:32:13 2026
***************
*** 37,43 ****
  #error cannot find uint64_t type
  #endif
  
! /* Detect endianess based on gcc's (>=4.6.0) __BYTE_ORDER__ macro.  */
  #if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
      defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_PDP_ENDIAN__)
  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
--- 37,43 ----
  #error cannot find uint64_t type
  #endif
  
! /* Detect endianness based on gcc's (>=4.6.0) __BYTE_ORDER__ macro.  */
  #if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
      defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_PDP_ENDIAN__)
  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
***************
*** 64,70 ****
  #include <machine/endian.h>
  #endif
  
! /* Detect endianess based on __BYTE_ORDER.  */
  #ifdef __BYTE_ORDER
  #if __BYTE_ORDER == __LITTLE_ENDIAN
  #define PLUGIN_LITTLE_ENDIAN 1
--- 64,70 ----
  #include <machine/endian.h>
  #endif
  
! /* Detect endianness based on __BYTE_ORDER.  */
  #ifdef __BYTE_ORDER
  #if __BYTE_ORDER == __LITTLE_ENDIAN
  #define PLUGIN_LITTLE_ENDIAN 1
***************
*** 72,78 ****
  #define PLUGIN_BIG_ENDIAN 1
  #endif
  
! /* Detect endianess based on _BYTE_ORDER.  */
  #elif defined _BYTE_ORDER
  #if _BYTE_ORDER == _LITTLE_ENDIAN
  #define PLUGIN_LITTLE_ENDIAN 1
--- 72,78 ----
  #define PLUGIN_BIG_ENDIAN 1
  #endif
  
! /* Detect endianness based on _BYTE_ORDER.  */
  #elif defined _BYTE_ORDER
  #if _BYTE_ORDER == _LITTLE_ENDIAN
  #define PLUGIN_LITTLE_ENDIAN 1
*************** struct ld_plugin_symbol
*** 160,166 ****
    char unused;
    char section_kind;
  #else
! #error "Could not detect architecture endianess"
  #endif
    int visibility;
    uint64_t size;
--- 160,166 ----
    char unused;
    char section_kind;
  #else
! #error "Could not detect architecture endianness"
  #endif
    int visibility;
    uint64_t size;
*************** enum ld_plugin_status
*** 403,409 ****
                                           size_t* len);
  
  /* The linker's interface for specifying the desired order of sections.
!    The sections should be specifed using the array SECTION_LIST in the
     order in which they should appear in the final layout.  NUM_SECTIONS
     specifies the number of entries in each array.  This should be invoked
     in the all_symbols_read handler.  */
--- 403,409 ----
                                           size_t* len);
  
  /* The linker's interface for specifying the desired order of sections.
!    The sections should be specified using the array SECTION_LIST in the
     order in which they should appear in the final layout.  NUM_SECTIONS
     specifies the number of entries in each array.  This should be invoked
     in the all_symbols_read handler.  */
diff -Nrcpad gcc-17-20260524/include/splay-tree.h gcc-17-20260531/include/splay-tree.h
*** gcc-17-20260524/include/splay-tree.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/include/splay-tree.h	Sun May 31 22:32:13 2026
*************** struct splay_tree_s {
*** 105,111 ****
    /* The root of the tree.  */
    splay_tree_node root;
  
!   /* The comparision function.  */
    splay_tree_compare_fn comp;
  
    /* The deallocate-key function.  NULL if no cleanup is necessary.  */
--- 105,111 ----
    /* The root of the tree.  */
    splay_tree_node root;
  
!   /* The comparison function.  */
    splay_tree_compare_fn comp;
  
    /* The deallocate-key function.  NULL if no cleanup is necessary.  */
diff -Nrcpad gcc-17-20260524/libatomic/ChangeLog gcc-17-20260531/libatomic/ChangeLog
*** gcc-17-20260524/libatomic/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libatomic/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* acinclude.m4: Fix typos.
+ 	* libatomic_i.h (__attribute__): Likewise.
+ 	* configure: Regenerate.
+ 
  2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* Makefile.in: Regenerate.
diff -Nrcpad gcc-17-20260524/libatomic/acinclude.m4 gcc-17-20260531/libatomic/acinclude.m4
*** gcc-17-20260524/libatomic/acinclude.m4	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libatomic/acinclude.m4	Sun May 31 22:32:13 2026
*************** if test x$enable_symvers = xsun ; then
*** 440,446 ****
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targetting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
--- 440,446 ----
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targeting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
diff -Nrcpad gcc-17-20260524/libatomic/configure gcc-17-20260531/libatomic/configure
*** gcc-17-20260524/libatomic/configure	Sun May 24 22:32:17 2026
--- gcc-17-20260531/libatomic/configure	Sun May 31 22:32:17 2026
*************** if test x$enable_symvers = xsun ; then
*** 15863,15870 ****
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
--- 15863,15870 ----
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targeting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targeting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
diff -Nrcpad gcc-17-20260524/libatomic/libatomic_i.h gcc-17-20260531/libatomic/libatomic_i.h
*** gcc-17-20260524/libatomic/libatomic_i.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libatomic/libatomic_i.h	Sun May 31 22:32:13 2026
*************** typedef unsigned UWORD __attribute__((mo
*** 146,152 ****
     granularity.
  
     Not actually declared here so that they can be defined static inline
!    in a target-specfic <host-config.h>.
  
  UWORD protect_start (void *ptr);
  void protect_end (void *ptr, UWORD);
--- 146,152 ----
     granularity.
  
     Not actually declared here so that they can be defined static inline
!    in a target-specific <host-config.h>.
  
  UWORD protect_start (void *ptr);
  void protect_end (void *ptr, UWORD);
diff -Nrcpad gcc-17-20260524/libbacktrace/ChangeLog gcc-17-20260531/libbacktrace/ChangeLog
*** gcc-17-20260524/libbacktrace/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libbacktrace/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* allocfail.sh: Fix typos.
+ 	* elf.c (elf_fetch_bits): Likewise.
+ 
  2026-05-04  Ian Lance Taylor  <iant@golang.org>
  
  	* elf.c (elf_zstd_decompress_frame): New static function,
diff -Nrcpad gcc-17-20260524/libbacktrace/allocfail.sh gcc-17-20260531/libbacktrace/allocfail.sh
*** gcc-17-20260524/libbacktrace/allocfail.sh	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libbacktrace/allocfail.sh	Sun May 31 22:32:13 2026
*************** while [ $i -le $allocs ]; do
*** 77,83 ****
  	exit 1
      fi
  
!     # The test-case would run too long if we would excercise all allocs.
      # So, run with step 1 initially, and increase the step once we have 10
      # subsequent passes, and drop back to step 1 once we encounter another
      # failure.  This takes ~2.6 seconds on an i7-6600U CPU @ 2.60GHz.
--- 77,83 ----
  	exit 1
      fi
  
!     # The test-case would run too long if we would exercise all allocs.
      # So, run with step 1 initially, and increase the step once we have 10
      # subsequent passes, and drop back to step 1 once we encounter another
      # failure.  This takes ~2.6 seconds on an i7-6600U CPU @ 2.60GHz.
diff -Nrcpad gcc-17-20260524/libbacktrace/elf.c gcc-17-20260531/libbacktrace/elf.c
*** gcc-17-20260524/libbacktrace/elf.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libbacktrace/elf.c	Sun May 31 22:32:13 2026
*************** elf_fetch_bits (const unsigned char **pp
*** 1166,1172 ****
    return 1;
  }
  
! /* This is like elf_fetch_bits, but it fetchs the bits backward, and ensures at
     least 16 bits.  This is for zstd.  */
  
  static int
--- 1166,1172 ----
    return 1;
  }
  
! /* This is like elf_fetch_bits, but it fetches the bits backward, and ensures at
     least 16 bits.  This is for zstd.  */
  
  static int
diff -Nrcpad gcc-17-20260524/libcody/ChangeLog gcc-17-20260531/libcody/ChangeLog
*** gcc-17-20260524/libcody/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcody/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,13 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* README.md: Fix typos.
+ 
+ 2026-05-28  Jean-Christian CÎRSTEA  <jean.christian.cirstea@gmail.com>
+ 
+ 	PR c++/120458
+ 	* buffer.cc (S2C): Allow non-ASCII chars in quoted words.
+ 	* cody.hh: Use unsigned char for S2C().
+ 
  2025-11-21  Jakub Jelinek  <jakub@redhat.com>
  
  	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
diff -Nrcpad gcc-17-20260524/libcody/README.md gcc-17-20260531/libcody/README.md
*** gcc-17-20260524/libcody/README.md	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcody/README.md	Sun May 31 22:32:13 2026
*************** omitted the value 0 is implied.  The fol
*** 181,187 ****
  * `1<<0`, `NameOnly`: The request is for the name only, and not the
    CMI contents.
  
! The `NameOnly` flag may be provded in a handshake response, and
  indicates that the server is interested in requests only for their
  implied dependency information.  It may be provided on a request to
  indicate that only the CMI name is required, not its contents (for
--- 181,187 ----
  * `1<<0`, `NameOnly`: The request is for the name only, and not the
    CMI contents.
  
! The `NameOnly` flag may be provided in a handshake response, and
  indicates that the server is interested in requests only for their
  implied dependency information.  It may be provided on a request to
  indicate that only the CMI name is required, not its contents (for
*************** Importation, including that of header-un
*** 263,269 ****
  A PATHNAME response names the CMI file to be read.  Should the builder
  have to invoke a compilation to produce the CMI, the response should
  be delayed until that occurs.  If such a compilation fails, an error
! response should be provided to the requestor &mdash; which will then
  presumably fail in some manner.
  
  #### Include Translation
--- 263,269 ----
  A PATHNAME response names the CMI file to be read.  Should the builder
  have to invoke a compilation to produce the CMI, the response should
  be delayed until that occurs.  If such a compilation fails, an error
! response should be provided to the requester &mdash; which will then
  presumably fail in some manner.
  
  #### Include Translation
diff -Nrcpad gcc-17-20260524/libcody/buffer.cc gcc-17-20260531/libcody/buffer.cc
*** gcc-17-20260524/libcody/buffer.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcody/buffer.cc	Sun May 31 22:32:13 2026
***************
*** 30,36 ****
  namespace Cody {
  namespace Detail {
  
! static const char CONTINUE = S2C(u8";");
  
  void MessageBuffer::BeginLine ()
  {
--- 30,36 ----
  namespace Cody {
  namespace Detail {
  
! static const unsigned char CONTINUE = S2C(u8";");
  
  void MessageBuffer::BeginLine ()
  {
*************** int MessageBuffer::Lex (std::vector<std:
*** 239,245 ****
  
    for (std::string *word = nullptr;;)
      {
!       char c = *iter;
  
        ++iter;
        if (c == S2C(u8" ") || c == S2C(u8"\t"))
--- 239,245 ----
  
    for (std::string *word = nullptr;;)
      {
!       unsigned char c = *iter;
  
        ++iter;
        if (c == S2C(u8" ") || c == S2C(u8"\t"))
*************** int MessageBuffer::Lex (std::vector<std:
*** 292,298 ****
  		  return EINVAL;
  		}
  
! 	      if (c < S2C(u8" ") || c >= 0x7f)
  		goto malformed;
  
  	      ++iter;
--- 292,298 ----
  		  return EINVAL;
  		}
  
! 	      if (c < S2C(u8" "))
  		goto malformed;
  
  	      ++iter;
diff -Nrcpad gcc-17-20260524/libcody/cody.hh gcc-17-20260531/libcody/cody.hh
*** gcc-17-20260524/libcody/cody.hh	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcody/cody.hh	Sun May 31 22:32:13 2026
*************** namespace Detail  {
*** 49,62 ****
  
  #if __cpp_char8_t >= 201811
  template<unsigned I>
! constexpr char S2C (char8_t const (&s)[I])
  {
    static_assert (I == 2, "only single octet strings may be converted");
    return s[0];
  }
  #else
  template<unsigned I>
! constexpr char S2C (char const (&s)[I])
  {
    static_assert (I == 2, "only single octet strings may be converted");
    return s[0];
--- 49,62 ----
  
  #if __cpp_char8_t >= 201811
  template<unsigned I>
! constexpr unsigned char S2C (char8_t const (&s)[I])
  {
    static_assert (I == 2, "only single octet strings may be converted");
    return s[0];
  }
  #else
  template<unsigned I>
! constexpr unsigned char S2C (char const (&s)[I])
  {
    static_assert (I == 2, "only single octet strings may be converted");
    return s[0];
diff -Nrcpad gcc-17-20260524/libcpp/ChangeLog gcc-17-20260531/libcpp/ChangeLog
*** gcc-17-20260524/libcpp/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,25 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* files.cc (_cpp_stack_translated_file): Fix typos.
+ 	(_cpp_get_file_path): Likewise.
+ 	* include/cpplib.h (PREV_FALLTHROUGH): Likewise.
+ 	(struct cpp_options): Likewise.
+ 	* include/line-map.h (enum lc_reason): Likewise.
+ 	* internal.h (struct cpp_buffer): Likewise.
+ 	* lex.cc (lex_raw_string): Likewise.
+ 	(cpp_directive_only_process): Likewise.
+ 	* line-map.cc (linemap_add): Likewise.
+ 	(linemap_module_restore): Likewise.
+ 	(rich_location::get_last_fixit_hint): Likewise.
+ 	* macro.cc (_cpp_builtin_macro_text): Likewise.
+ 	(arg_token_ptr_at): Likewise.
+ 	(replace_args): Likewise.
+ 	(reached_end_of_context): Likewise.
+ 	(cpp_get_token_1): Likewise.
+ 	(create_iso_definition): Likewise.
+ 	(get_deferred_or_lazy_macro): Likewise.
+ 	* traditional.cc (check_output_buffer): Likewise.
+ 
  2026-04-21  Marek Polacek  <polacek@redhat.com>
  
  	PR preprocessor/124930
diff -Nrcpad gcc-17-20260524/libcpp/files.cc gcc-17-20260531/libcpp/files.cc
*** gcc-17-20260524/libcpp/files.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/files.cc	Sun May 31 22:32:13 2026
*************** _cpp_stack_translated_file (cpp_reader *
*** 1007,1013 ****
    /* We don't increment the line number at the end of a buffer,
       because we don't usually need that location (we're popping an
       include file).  However in this case we do want to do the
!      increment.  So push a writable buffer of two newlines to acheive
       that.  (We also need an extra newline, so this looks like a regular
       file, which we do that to to make sure we don't fall off the end in the
       middle of a line.  */
--- 1007,1013 ----
    /* We don't increment the line number at the end of a buffer,
       because we don't usually need that location (we're popping an
       include file).  However in this case we do want to do the
!      increment.  So push a writable buffer of two newlines to achieve
       that.  (We also need an extra newline, so this looks like a regular
       file, which we do that to to make sure we don't fall off the end in the
       middle of a line.  */
*************** _cpp_get_file_path (_cpp_file *f)
*** 2377,2383 ****
    return f->path;
  }
  
! /* Inteface to file statistics record in _cpp_file structure. */
  struct stat *
  _cpp_get_file_stat (_cpp_file *file)
  {
--- 2377,2383 ----
    return f->path;
  }
  
! /* Interface to file statistics record in _cpp_file structure. */
  struct stat *
  _cpp_get_file_stat (_cpp_file *file)
  {
diff -Nrcpad gcc-17-20260524/libcpp/include/cpplib.h gcc-17-20260531/libcpp/include/cpplib.h
*** gcc-17-20260524/libcpp/include/cpplib.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/include/cpplib.h	Sun May 31 22:32:13 2026
*************** struct GTY(()) cpp_string {
*** 201,207 ****
  #define STRINGIFY_ARG	(1 << 2) /* If macro argument to be stringified.  */
  #define PASTE_LEFT	(1 << 3) /* If on LHS of a ## operator.  */
  #define NAMED_OP	(1 << 4) /* C++ named operators.  */
! #define PREV_FALLTHROUGH (1 << 5) /* On a token preceeded by FALLTHROUGH
  				     comment.  */
  #define DECIMAL_INT     (1 << 6) /* Decimal integer, set in c-lex.cc.  */
  #define PURE_ZERO	(1 << 7) /* Single 0 digit, used by the C++ frontend,
--- 201,207 ----
  #define STRINGIFY_ARG	(1 << 2) /* If macro argument to be stringified.  */
  #define PASTE_LEFT	(1 << 3) /* If on LHS of a ## operator.  */
  #define NAMED_OP	(1 << 4) /* C++ named operators.  */
! #define PREV_FALLTHROUGH (1 << 5) /* On a token preceded by FALLTHROUGH
  				     comment.  */
  #define DECIMAL_INT     (1 << 6) /* Decimal integer, set in c-lex.cc.  */
  #define PURE_ZERO	(1 << 7) /* Single 0 digit, used by the C++ frontend,
*************** struct cpp_options
*** 515,521 ****
    unsigned char user_literals;
  
    /* Nonzero means warn when a string or character literal is followed by a
!      ud-suffix which does not beging with an underscore.  */
    unsigned char warn_literal_suffix;
  
    /* Nonzero means interpret imaginary, fixed-point, or other gnu extension
--- 515,521 ----
    unsigned char user_literals;
  
    /* Nonzero means warn when a string or character literal is followed by a
!      ud-suffix which does not begin with an underscore.  */
    unsigned char warn_literal_suffix;
  
    /* Nonzero means interpret imaginary, fixed-point, or other gnu extension
diff -Nrcpad gcc-17-20260524/libcpp/include/line-map.h gcc-17-20260531/libcpp/include/line-map.h
*** gcc-17-20260524/libcpp/include/line-map.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/include/line-map.h	Sun May 31 22:32:13 2026
*************** enum lc_reason
*** 142,148 ****
               |   This packing scheme means we effectively have
               |     (column_bits - range_bits)
               |   of bits for the columns, typically (12 - 5) = 7, for 128
!              |   columns; longer line widths are accomodated by starting a
               |   new ordmap with a higher column_bits.
               |
               | ordmap[2]->start_location-1   | Final location in ordmap 1
--- 142,148 ----
               |   This packing scheme means we effectively have
               |     (column_bits - range_bits)
               |   of bits for the columns, typically (12 - 5) = 7, for 128
!              |   columns; longer line widths are accommodated by starting a
               |   new ordmap with a higher column_bits.
               |
               | ordmap[2]->start_location-1   | Final location in ordmap 1
diff -Nrcpad gcc-17-20260524/libcpp/internal.h gcc-17-20260531/libcpp/internal.h
*** gcc-17-20260524/libcpp/internal.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/internal.h	Sun May 31 22:32:13 2026
*************** struct cpp_buffer
*** 359,365 ****
    struct _cpp_file *file;
  
    /* Saved value of __TIMESTAMP__ macro - date and time of last modification
!      of the assotiated file.  */
    const unsigned char *timestamp;
  
    /* Value of if_stack at start of this file.
--- 359,365 ----
    struct _cpp_file *file;
  
    /* Saved value of __TIMESTAMP__ macro - date and time of last modification
!      of the associated file.  */
    const unsigned char *timestamp;
  
    /* Value of if_stack at start of this file.
diff -Nrcpad gcc-17-20260524/libcpp/lex.cc gcc-17-20260531/libcpp/lex.cc
*** gcc-17-20260524/libcpp/lex.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/lex.cc	Sun May 31 22:32:13 2026
*************** lex_raw_string (cpp_reader *pfile, cpp_t
*** 2631,2637 ****
  
  	  case '\n':
  	    /* This can happen for ??/<NEWLINE> when trigraphs are not
! 	       being interpretted.  */
  	    gcc_checking_assert (!CPP_OPTION (pfile, trigraphs));
  	    note->type = 0;
  	    note++;
--- 2631,2637 ----
  
  	  case '\n':
  	    /* This can happen for ??/<NEWLINE> when trigraphs are not
! 	       being interpreted.  */
  	    gcc_checking_assert (!CPP_OPTION (pfile, trigraphs));
  	    note->type = 0;
  	    note++;
*************** cpp_directive_only_process (cpp_reader *
*** 5416,5422 ****
  
  	    case '\\':
  	      /* <backslash><newline> is removed, and doesn't undo any
! 		 preceeding escape or whatnot.  */
  	      if (*pos == '\n')
  		{
  		  pos++;
--- 5416,5422 ----
  
  	    case '\\':
  	      /* <backslash><newline> is removed, and doesn't undo any
! 		 preceding escape or whatnot.  */
  	      if (*pos == '\n')
  		{
  		  pos++;
diff -Nrcpad gcc-17-20260524/libcpp/line-map.cc gcc-17-20260531/libcpp/line-map.cc
*** gcc-17-20260524/libcpp/line-map.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/line-map.cc	Sun May 31 22:32:13 2026
*************** linemap_add (line_maps *set, enum lc_rea
*** 679,685 ****
        else
  	{
  	  /* Compute location from whence this line map was included.
! 	     For #include this should be preferrably column 0 of the
  	     line on which #include directive appears.
  	     map[-1] is the just closed map and usually included_from
  	     falls within that map.  In rare cases linemap_line_start
--- 679,685 ----
        else
  	{
  	  /* Compute location from whence this line map was included.
! 	     For #include this should be preferably column 0 of the
  	     line on which #include directive appears.
  	     map[-1] is the just closed map and usually included_from
  	     falls within that map.  In rare cases linemap_line_start
*************** linemap_module_restore (line_maps *set,
*** 757,763 ****
  		       ORDINARY_MAP_IN_SYSTEM_HEADER_P (pre_map),
  		       ORDINARY_MAP_FILE_NAME (pre_map), src_line))))
      {
!       /* linemap_add will think we were included from the same as the preceeding
  	 map.  */
        const_cast <line_map_ordinary *> (post_map)->included_from = inc_at;
  
--- 757,763 ----
  		       ORDINARY_MAP_IN_SYSTEM_HEADER_P (pre_map),
  		       ORDINARY_MAP_FILE_NAME (pre_map), src_line))))
      {
!       /* linemap_add will think we were included from the same as the preceding
  	 map.  */
        const_cast <line_map_ordinary *> (post_map)->included_from = inc_at;
  
*************** rich_location::get_last_fixit_hint () co
*** 2556,2562 ****
  }
  
  /* If WHERE is an "awkward" location, then mark this rich_location as not
!    supporting fixits, purging any thay were already added, and return true.
  
     Otherwise (the common case), return false.  */
  
--- 2556,2562 ----
  }
  
  /* If WHERE is an "awkward" location, then mark this rich_location as not
!    supporting fixits, purging any that were already added, and return true.
  
     Otherwise (the common case), return false.  */
  
diff -Nrcpad gcc-17-20260524/libcpp/macro.cc gcc-17-20260531/libcpp/macro.cc
*** gcc-17-20260524/libcpp/macro.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/macro.cc	Sun May 31 22:32:13 2026
*************** _cpp_builtin_macro_text (cpp_reader *pfi
*** 582,588 ****
  	cpp_buffer *pbuffer = cpp_get_buffer (pfile);
  	if (pbuffer->timestamp == NULL)
  	  {
! 	    /* Initialize timestamp value of the assotiated file. */
              struct _cpp_file *file = cpp_get_file (pbuffer);
  	    if (file)
  	      {
--- 582,588 ----
  	cpp_buffer *pbuffer = cpp_get_buffer (pfile);
  	if (pbuffer->timestamp == NULL)
  	  {
! 	    /* Initialize timestamp value of the associated file. */
              struct _cpp_file *file = cpp_get_file (pbuffer);
  	    if (file)
  	      {
*************** arg_token_ptr_at (const macro_arg *arg,
*** 1800,1806 ****
  
    if (tokens_ptr == NULL)
      /* This can happen for e.g, an empty token argument to a
!        funtion-like macro.  */
      return tokens_ptr;
  
    if (virt_location)
--- 1800,1806 ----
  
    if (tokens_ptr == NULL)
      /* This can happen for e.g, an empty token argument to a
!        function-like macro.  */
      return tokens_ptr;
  
    if (virt_location)
*************** replace_args (cpp_reader *pfile, cpp_has
*** 2247,2253 ****
        /* SRC is a macro parameter that we need to replace with its
  	 corresponding argument.  So at some point we'll need to
  	 iterate over the tokens of the macro argument and copy them
! 	 into the "place" now holding the correspondig macro
  	 parameter.  We are going to use the iterator type
  	 macro_argo_token_iter to handle that iterating.  The 'if'
  	 below is to initialize the iterator depending on the type of
--- 2247,2253 ----
        /* SRC is a macro parameter that we need to replace with its
  	 corresponding argument.  So at some point we'll need to
  	 iterate over the tokens of the macro argument and copy them
! 	 into the "place" now holding the corresponding macro
  	 parameter.  We are going to use the iterator type
  	 macro_argo_token_iter to handle that iterating.  The 'if'
  	 below is to initialize the iterator depending on the type of
*************** reached_end_of_context (cpp_context *con
*** 2931,2937 ****
  
  /* Consume the next token contained in the current context of PFILE,
     and return it in *TOKEN. It's "full location" is returned in
!    *LOCATION. If -ftrack-macro-location is in effeect, fFull location"
     means the location encoding the locus of the token across macro
     expansion; otherwise it's just is the "normal" location of the
     token which (*TOKEN)->src_loc.  */
--- 2931,2937 ----
  
  /* Consume the next token contained in the current context of PFILE,
     and return it in *TOKEN. It's "full location" is returned in
!    *LOCATION. If -ftrack-macro-location is in effect, fFull location"
     means the location encoding the locus of the token across macro
     expansion; otherwise it's just is the "normal" location of the
     token which (*TOKEN)->src_loc.  */
*************** cpp_get_token_1 (cpp_reader *pfile, loca
*** 3009,3015 ****
    /* This token is a virtual token that either encodes a location
       related to macro expansion or a spelling location.  */
    location_t virt_loc = 0;
!   /* pfile->about_to_expand_macro_p can be overriden by indirect calls
       to functions that push macro contexts.  So let's save it so that
       we can restore it when we are about to leave this routine.  */
    bool saved_about_to_expand_macro = pfile->about_to_expand_macro_p;
--- 3009,3015 ----
    /* This token is a virtual token that either encodes a location
       related to macro expansion or a spelling location.  */
    location_t virt_loc = 0;
!   /* pfile->about_to_expand_macro_p can be overridden by indirect calls
       to functions that push macro contexts.  So let's save it so that
       we can restore it when we are about to leave this routine.  */
    bool saved_about_to_expand_macro = pfile->about_to_expand_macro_p;
*************** cpp_get_token_1 (cpp_reader *pfile, loca
*** 3160,3166 ****
        && !(result->type == CPP_PADDING || result->type == CPP_COMMENT)
        && !(15 & --pfile->state.directive_file_token))
      {
!       /* Do header-name frobbery.  Concatenate < ... > as approprate.
  	 Do header search if needed, and finally drop the outer <> or
  	 "".  */
        pfile->state.angled_headers = false;
--- 3160,3166 ----
        && !(result->type == CPP_PADDING || result->type == CPP_COMMENT)
        && !(15 & --pfile->state.directive_file_token))
      {
!       /* Do header-name frobbery.  Concatenate < ... > as appropriate.
  	 Do header search if needed, and finally drop the outer <> or
  	 "".  */
        pfile->state.angled_headers = false;
*************** create_iso_definition (cpp_reader *pfile
*** 3710,3716 ****
    pfile->cur_token = saved_cur_token;
  
    if (token->flags & PREV_WHITE)
!     /* Preceeded by space, must be part of expansion.  */;
    else if (token->type == CPP_OPEN_PAREN)
      {
        /* An open-paren, get a parameter list.  */
--- 3710,3716 ----
    pfile->cur_token = saved_cur_token;
  
    if (token->flags & PREV_WHITE)
!     /* Preceded by space, must be part of expansion.  */;
    else if (token->type == CPP_OPEN_PAREN)
      {
        /* An open-paren, get a parameter list.  */
*************** get_deferred_or_lazy_macro (cpp_reader *
*** 4074,4080 ****
  }
  
  /* Notify the use of NODE in a macro-aware context (i.e. expanding it,
!    or testing its existance).  Also applies any lazy definition.
     Return FALSE if the macro isn't really there.  */
  
  extern bool
--- 4074,4080 ----
  }
  
  /* Notify the use of NODE in a macro-aware context (i.e. expanding it,
!    or testing its existence).  Also applies any lazy definition.
     Return FALSE if the macro isn't really there.  */
  
  extern bool
diff -Nrcpad gcc-17-20260524/libcpp/traditional.cc gcc-17-20260531/libcpp/traditional.cc
*** gcc-17-20260524/libcpp/traditional.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libcpp/traditional.cc	Sun May 31 22:32:13 2026
*************** check_output_buffer (cpp_reader *pfile,
*** 120,126 ****
  /* Skip a C-style block comment in a macro as a result of -CC.
     PFILE->buffer->cur points to the initial asterisk of the comment,
     change it to point to after the '*' and '/' characters that terminate it.
!    Return true if the macro has not been termined, in that case set
     PFILE->buffer->cur to the end of the buffer.  */
  static bool
  skip_macro_block_comment (cpp_reader *pfile)
--- 120,126 ----
  /* Skip a C-style block comment in a macro as a result of -CC.
     PFILE->buffer->cur points to the initial asterisk of the comment,
     change it to point to after the '*' and '/' characters that terminate it.
!    Return true if the macro has not been terminated, in that case set
     PFILE->buffer->cur to the end of the buffer.  */
  static bool
  skip_macro_block_comment (cpp_reader *pfile)
diff -Nrcpad gcc-17-20260524/libdecnumber/ChangeLog gcc-17-20260531/libdecnumber/ChangeLog
*** gcc-17-20260524/libdecnumber/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,19 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* decBasic.c (decCanonical): Fix typos.
+ 	(decDivide): Likewise.
+ 	(decFiniteMultiply): Likewise.
+ 	(decFloatMultiply): Likewise.
+ 	(decFloatQuantize): Likewise.
+ 	(decToInt32): Likewise.
+ 	* decCommon.c (decFinalize): Likewise.
+ 	(decFloatFromString): Likewise.
+ 	* decContext.c (decContextGetStatus): Likewise.
+ 	* decNumber.c (decToString): Likewise.
+ 	(decAddOp): Likewise.
+ 	(decMalloc): Likewise.
+ 	* decNumberLocal.h: Likewise.
+ 
  2026-01-09  Ben Boeckel  <ben.boeckel@kitware.com>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260524/libdecnumber/decBasic.c gcc-17-20260531/libdecnumber/decBasic.c
*** gcc-17-20260524/libdecnumber/decBasic.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/decBasic.c	Sun May 31 22:32:13 2026
*************** static decFloat * decCanonical(decFloat
*** 123,129 ****
    #endif
    } /* block */
  
!   /* Loop to repair a non-canonical coefficent, as needed */
    inword=DECWORDS-1;		   /* current input word */
    uoff=0;			   /* bit offset of declet */
    encode=DFWORD(result, inword);
--- 123,129 ----
    #endif
    } /* block */
  
!   /* Loop to repair a non-canonical coefficient, as needed */
    inword=DECWORDS-1;		   /* current input word */
    uoff=0;			   /* bit offset of declet */
    encode=DFWORD(result, inword);
*************** static decFloat * decDivide(decFloat *re
*** 178,184 ****
  			    const decFloat *dfr, decContext *set, uInt op) {
    decFloat quotient;		   /* for remainders */
    bcdnum num;			   /* for final conversion */
!   uInt	 acc[DIVACCLEN];	   /* coefficent in base-billion .. */
    uInt	 div[DIVOPLEN]; 	   /* divisor in base-billion .. */
    uInt	 quo[DIVOPLEN+1];	   /* quotient in base-billion .. */
    uByte  bcdacc[(DIVOPLEN+1)*9+2]; /* for quotient in BCD, +1, +1 */
--- 178,184 ----
  			    const decFloat *dfr, decContext *set, uInt op) {
    decFloat quotient;		   /* for remainders */
    bcdnum num;			   /* for final conversion */
!   uInt	 acc[DIVACCLEN];	   /* coefficient in base-billion .. */
    uInt	 div[DIVOPLEN]; 	   /* divisor in base-billion .. */
    uInt	 quo[DIVOPLEN+1];	   /* quotient in base-billion .. */
    uByte  bcdacc[(DIVOPLEN+1)*9+2]; /* for quotient in BCD, +1, +1 */
*************** static decFloat * decDivide(decFloat *re
*** 255,261 ****
      } /* 0/x */
    /* [here, both operands are known to be finite and non-zero] */
  
!   /* extract the operand coefficents into 'units' which are */
    /* base-billion; the lhs is high-aligned in acc and the msu of both */
    /* acc and div is at the right-hand end of array (offset length-1); */
    /* the quotient can need one more unit than the operands as digits */
--- 255,261 ----
      } /* 0/x */
    /* [here, both operands are known to be finite and non-zero] */
  
!   /* extract the operand coefficients into 'units' which are */
    /* base-billion; the lhs is high-aligned in acc and the msu of both */
    /* acc and div is at the right-hand end of array (offset length-1); */
    /* the quotient can need one more unit than the operands as digits */
*************** static void decFiniteMultiply(bcdnum *nu
*** 726,732 ****
    #if DECUSE64
    uLong  accl[MULACCLEN];	   /* lazy accumulator (base-billion+) */
    uLong  *pl;			   /* work -> lazy accumulator */
!   uInt	 acc[MULACCLEN];	   /* coefficent in base-billion .. */
    #else
    uInt	 acc[MULACCLEN*2];	   /* accumulator in base-billion .. */
    #endif
--- 726,732 ----
    #if DECUSE64
    uLong  accl[MULACCLEN];	   /* lazy accumulator (base-billion+) */
    uLong  *pl;			   /* work -> lazy accumulator */
!   uInt	 acc[MULACCLEN];	   /* coefficient in base-billion .. */
    #else
    uInt	 acc[MULACCLEN*2];	   /* accumulator in base-billion .. */
    #endif
*************** static void decFiniteMultiply(bcdnum *nu
*** 766,772 ****
    #endif
  
    /* Effect the multiplication */
!   /* The multiplcation proceeds using MFC's lazy-carry resolution */
    /* algorithm from decNumber.	First, the multiplication is */
    /* effected, allowing accumulation of the partial products (which */
    /* are in base-billion at each column position) into 64 bits */
--- 766,772 ----
    #endif
  
    /* Effect the multiplication */
!   /* The multiplication proceeds using MFC's lazy-carry resolution */
    /* algorithm from decNumber.	First, the multiplication is */
    /* effected, allowing accumulation of the partial products (which */
    /* are in base-billion at each column position) into 64 bits */
*************** decFloat * decFloatMultiply(decFloat *re
*** 2661,2667 ****
  			    const decFloat *dfl, const decFloat *dfr,
  			    decContext *set) {
    bcdnum num;			   /* for final conversion */
!   uByte  bcdacc[DECPMAX9*18+1];    /* for coefficent in BCD */
  
    if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { /* either is special? */
      /* NaNs are handled as usual */
--- 2661,2667 ----
  			    const decFloat *dfl, const decFloat *dfr,
  			    decContext *set) {
    bcdnum num;			   /* for final conversion */
!   uByte  bcdacc[DECPMAX9*18+1];    /* for coefficient in BCD */
  
    if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { /* either is special? */
      /* NaNs are handled as usual */
*************** decFloat * decFloatQuantize(decFloat *re
*** 3072,3078 ****
        } /* inexact rounding */
  
      /* now clear zeros to the left so exactly DECPMAX digits will be */
!     /* available in the coefficent -- the first word to the left was */
      /* cleared earlier for safe carry; now add any more needed */
      if (drop>4) {
        UBFROMUI(BUFOFF-8, 0);		     /* must be at least 5 */
--- 3072,3078 ----
        } /* inexact rounding */
  
      /* now clear zeros to the left so exactly DECPMAX digits will be */
!     /* available in the coefficient -- the first word to the left was */
      /* cleared earlier for safe carry; now add any more needed */
      if (drop>4) {
        UBFROMUI(BUFOFF-8, 0);		     /* must be at least 5 */
*************** decFloat * decFloatQuantize(decFloat *re
*** 3091,3097 ****
        ulsd=BUFOFF+DECPMAX-1;
        }
       else { /* padding will fit (but may still be too long) */
!       /* final-word mask depends on endianess */
        #if DECLITEND
        static const uInt dmask[]={0, 0x000000ff, 0x0000ffff, 0x00ffffff};
        #else
--- 3091,3097 ----
        ulsd=BUFOFF+DECPMAX-1;
        }
       else { /* padding will fit (but may still be too long) */
!       /* final-word mask depends on endianness */
        #if DECLITEND
        static const uInt dmask[]={0, 0x000000ff, 0x0000ffff, 0x00ffffff};
        #else
*************** static uInt decToInt32(const decFloat *d
*** 3833,3839 ****
      set->status|=DEC_Invalid_operation; /* Invalid or out of range */
      return 0;
      }
!   /* get last twelve digits of the coefficent into hi & ho, base */
    /* 10**9 (see GETCOEFFBILL): */
    sourlo=DFWORD(&result, DECWORDS-1);
    lo=DPD2BIN0[sourlo&0x3ff]
--- 3833,3839 ----
      set->status|=DEC_Invalid_operation; /* Invalid or out of range */
      return 0;
      }
!   /* get last twelve digits of the coefficient into hi & ho, base */
    /* 10**9 (see GETCOEFFBILL): */
    sourlo=DFWORD(&result, DECWORDS-1);
    lo=DPD2BIN0[sourlo&0x3ff]
diff -Nrcpad gcc-17-20260524/libdecnumber/decCommon.c gcc-17-20260531/libdecnumber/decCommon.c
*** gcc-17-20260524/libdecnumber/decCommon.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/decCommon.c	Sun May 31 22:32:13 2026
*************** static decFloat * decFinalize(decFloat *
*** 252,258 ****
    #if DECCHECK
    Int clen=ulsd-umsd+1;
    #if QUAD
!     #define COEXTRA 2			     /* extra-long coefficent */
    #else
      #define COEXTRA 0
    #endif
--- 252,258 ----
    #if DECCHECK
    Int clen=ulsd-umsd+1;
    #if QUAD
!     #define COEXTRA 2			     /* extra-long coefficient */
    #else
      #define COEXTRA 0
    #endif
*************** decFloat * decFloatFromString(decFloat *
*** 795,801 ****
    uInt	 uiwork;		   /* for macros */
    bcdnum num;			   /* collects data for finishing */
    uInt	 error=DEC_Conversion_syntax;	/* assume the worst */
!   uByte  buffer[ROUNDUP(DECSTRING+11, 8)]; /* room for most coefficents, */
  				   /* some common rounding, +3, & pad */
    #if DECTRACE
    /* printf("FromString %s ...\n", string); */
--- 795,801 ----
    uInt	 uiwork;		   /* for macros */
    bcdnum num;			   /* collects data for finishing */
    uInt	 error=DEC_Conversion_syntax;	/* assume the worst */
!   uByte  buffer[ROUNDUP(DECSTRING+11, 8)]; /* room for most coefficients, */
  				   /* some common rounding, +3, & pad */
    #if DECTRACE
    /* printf("FromString %s ...\n", string); */
diff -Nrcpad gcc-17-20260524/libdecnumber/decContext.c gcc-17-20260531/libdecnumber/decContext.c
*** gcc-17-20260524/libdecnumber/decContext.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/decContext.c	Sun May 31 22:32:13 2026
*************** uInt decContextGetStatus(decContext *con
*** 170,176 ****
  /*  newstatus is the source for the bits to be restored 	      */
  /*  mask indicates the bits to be restored (the status bit that       */
  /*    corresponds to each 1 bit in the mask is set to the value of    */
! /*    the correspnding bit in newstatus)			      */
  /*  returns context						      */
  /*								      */
  /* No error is possible.					      */
--- 170,176 ----
  /*  newstatus is the source for the bits to be restored 	      */
  /*  mask indicates the bits to be restored (the status bit that       */
  /*    corresponds to each 1 bit in the mask is set to the value of    */
! /*    the corresponding bit in newstatus)			      */
  /*  returns context						      */
  /*								      */
  /* No error is possible.					      */
diff -Nrcpad gcc-17-20260524/libdecnumber/decNumber.c gcc-17-20260531/libdecnumber/decNumber.c
*** gcc-17-20260524/libdecnumber/decNumber.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/decNumber.c	Sun May 31 22:32:13 2026
*************** static void decToString(const decNumber
*** 3792,3798 ****
  /*								      */
  /* Addition, especially x=x+1, is speed-critical.		      */
  /* The static buffer is larger than might be expected to allow for    */
! /* calls from higher-level funtions (notable exp).		      */
  /* ------------------------------------------------------------------ */
  static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
  			    const decNumber *rhs, decContext *set,
--- 3792,3798 ----
  /*								      */
  /* Addition, especially x=x+1, is speed-critical.		      */
  /* The static buffer is larger than might be expected to allow for    */
! /* calls from higher-level functions (notable exp).		      */
  /* ------------------------------------------------------------------ */
  static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
  			    const decNumber *rhs, decContext *set,
*************** static decNumber * decAddOp(decNumber *r
*** 4206,4212 ****
  /* long subtractions.  These are acc and var1 respectively.	      */
  /* var1 is a copy of the lhs coefficient, var2 is the rhs coefficient.*/
  /* The static buffers may be larger than might be expected to allow   */
! /* for calls from higher-level funtions (notable exp).		      */
  /* ------------------------------------------------------------------ */
  static decNumber * decDivideOp(decNumber *res,
  			       const decNumber *lhs, const decNumber *rhs,
--- 4206,4212 ----
  /* long subtractions.  These are acc and var1 respectively.	      */
  /* var1 is a copy of the lhs coefficient, var2 is the rhs coefficient.*/
  /* The static buffers may be larger than might be expected to allow   */
! /* for calls from higher-level functions (notable exp).		      */
  /* ------------------------------------------------------------------ */
  static decNumber * decDivideOp(decNumber *res,
  			       const decNumber *lhs, const decNumber *rhs,
*************** const uShort LNnn[90]={9016,  8652,  831
*** 5571,5577 ****
  /*    would certainly save at least one if it were made ten times     */
  /*    bigger, too (for truncated fractions 0.100 through 0.999).      */
  /*    However, for most practical evaluations, at least four or five  */
! /*    iterations will be neede -- so this would only speed up by      */
  /*    20-25% and that probably does not justify increasing the table  */
  /*    size.							      */
  /*								      */
--- 5571,5577 ----
  /*    would certainly save at least one if it were made ten times     */
  /*    bigger, too (for truncated fractions 0.100 through 0.999).      */
  /*    However, for most practical evaluations, at least four or five  */
! /*    iterations will be needed -- so this would only speed up by      */
  /*    20-25% and that probably does not justify increasing the table  */
  /*    size.							      */
  /*								      */
*************** static void *decMalloc(size_t n) {
*** 8091,8097 ****
    uInt	uiwork; 		   /* for macros */
  
    alloc=malloc(size);		   /* -> allocated storage */
!   if (alloc==NULL) return NULL;    /* out of strorage */
    b0=(uByte *)alloc;		   /* as bytes */
    decAllocBytes+=n;		   /* account for storage */
    UBFROMUI(alloc, n);		   /* save n */
--- 8091,8097 ----
    uInt	uiwork; 		   /* for macros */
  
    alloc=malloc(size);		   /* -> allocated storage */
!   if (alloc==NULL) return NULL;    /* out of storage */
    b0=(uByte *)alloc;		   /* as bytes */
    decAllocBytes+=n;		   /* account for storage */
    UBFROMUI(alloc, n);		   /* save n */
diff -Nrcpad gcc-17-20260524/libdecnumber/decNumberLocal.h gcc-17-20260531/libdecnumber/decNumberLocal.h
*** gcc-17-20260524/libdecnumber/decNumberLocal.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libdecnumber/decNumberLocal.h	Sun May 31 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 173,179 ****
  
  
    /* ---------------------------------------------------------------- */
!   /* Definitions for arbitary-precision modules (only valid after     */
    /* decNumber.h has been included)				      */
    /* ---------------------------------------------------------------- */
  
--- 173,179 ----
  
  
    /* ---------------------------------------------------------------- */
!   /* Definitions for arbitrary-precision modules (only valid after     */
    /* decNumber.h has been included)				      */
    /* ---------------------------------------------------------------- */
  
diff -Nrcpad gcc-17-20260524/libffi/ChangeLog gcc-17-20260531/libffi/ChangeLog
*** gcc-17-20260524/libffi/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libffi/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,10 ----
+ 2026-05-26  Pietro Monteiro  <pietro@sociotechnical.xyz>
+ 
+ 	PR libffi/125417
+ 	* testsuite/lib/libffi.exp (libffi_target_compile): Use
+ 	${libffi_include} and ${blddirffi} instead of "../include" and
+ 	".." for include paths.
+ 
  2026-05-21  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* LOCAL_PATCHES: Update list.
diff -Nrcpad gcc-17-20260524/libffi/testsuite/lib/libffi.exp gcc-17-20260531/libffi/testsuite/lib/libffi.exp
*** gcc-17-20260524/libffi/testsuite/lib/libffi.exp	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libffi/testsuite/lib/libffi.exp	Sun May 31 22:32:13 2026
*************** proc libffi_target_compile { source dest
*** 398,406 ****
          lappend  options "additional_flags=$TOOL_OPTIONS"
      }
  
!     # search for ffi_mips.h in srcdir, too
!     # lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
!     lappend options "additional_flags=-I ../include -I ${srcdir}/../include  -I .."
      if { [string match $type "executable"] } {
  
          lappend options "additional_flags=${libffi_link_flags}"
--- 398,406 ----
          lappend  options "additional_flags=$TOOL_OPTIONS"
      }
  
!     # Search for include files in build_dir/include, build_dir and source_dir/include.
!     # The .. in the last path is necessary because srcdir points to libffi source/testsuite.
!     lappend options "additional_flags=-I${libffi_include} -I${blddirffi} -I${srcdir}/../include"
      if { [string match $type "executable"] } {
  
          lappend options "additional_flags=${libffi_link_flags}"
diff -Nrcpad gcc-17-20260524/libga68/ChangeLog gcc-17-20260531/libga68/ChangeLog
*** gcc-17-20260524/libga68/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libga68/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,10 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* ga68-error.c: Fix typos.
+ 	* ga68-unistr.c (_libga68_u32_cmp): Likewise.
+ 	(_libga68_u8_uctomb): Likewise.
+ 	(_libga68_u32_to_u8): Likewise.
+ 
  2026-05-08  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* Makefile.in: Regenerate.
diff -Nrcpad gcc-17-20260524/libga68/ga68-error.c gcc-17-20260531/libga68/ga68-error.c
*** gcc-17-20260524/libga68/ga68-error.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libga68/ga68-error.c	Sun May 31 22:32:13 2026
***************
*** 28,34 ****
  
  /* Run-time error handling.
  
!    Please use the following format when outputing runtime error messages:
  
       FILE:LINE:[COLUMN:] TEXT
  
--- 28,34 ----
  
  /* Run-time error handling.
  
!    Please use the following format when outputting runtime error messages:
  
       FILE:LINE:[COLUMN:] TEXT
  
diff -Nrcpad gcc-17-20260524/libga68/ga68-unistr.c gcc-17-20260531/libga68/ga68-unistr.c
*** gcc-17-20260524/libga68/ga68-unistr.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libga68/ga68-unistr.c	Sun May 31 22:32:13 2026
***************
*** 54,60 ****
  # define MIN(a,b) ((a) < (b) ? (a) : (b))
  #endif
  
! /* Compare two UCS-4 strings of same lenght, lexicographically.
     Return -1, 0 or 1.  */
  
  static int
--- 54,60 ----
  # define MIN(a,b) ((a) < (b) ? (a) : (b))
  #endif
  
! /* Compare two UCS-4 strings of same length, lexicographically.
     Return -1, 0 or 1.  */
  
  static int
*************** _libga68_u32_cmp (const uint32_t *s1, si
*** 83,89 ****
    return 0;
  }
  
! /* Compare two UCS-4 strings of perhaps different lenghts, lexicographically.
     Return -1, 0 or 1.  */
  
  int
--- 83,89 ----
    return 0;
  }
  
! /* Compare two UCS-4 strings of perhaps different lengths, lexicographically.
     Return -1, 0 or 1.  */
  
  int
*************** _libga68_u8_uctomb (uint8_t *s, uint32_t
*** 307,313 ****
  
  /* Convert S of size N with stride STRIDE UCS-4 to UTF-8.
     Returns a pointer to the converted string with a traiiling '\0'.
!    The string length, not counting the trailling '\0', is returned on LENGTHP.
     Returns NULL on error.
     Callers *must* call _libga68_free_internal on a non-null result.  */
  
--- 307,313 ----
  
  /* Convert S of size N with stride STRIDE UCS-4 to UTF-8.
     Returns a pointer to the converted string with a traiiling '\0'.
!    The string length, not counting the trailing '\0', is returned on LENGTHP.
     Returns NULL on error.
     Callers *must* call _libga68_free_internal on a non-null result.  */
  
*************** _libga68_u32_to_u8 (const uint32_t *s, s
*** 380,386 ****
      {
        if (length + 1 != allocated)
  	{
! 	  /* Resize the allocated memory to fit the string plus the trailling NULL.  */
  	  uint8_t *memory;
  
  	  memory =
--- 380,386 ----
      {
        if (length + 1 != allocated)
  	{
! 	  /* Resize the allocated memory to fit the string plus the trailing NULL.  */
  	  uint8_t *memory;
  
  	  memory =
diff -Nrcpad gcc-17-20260524/libgcc/ChangeLog gcc-17-20260531/libgcc/ChangeLog
*** gcc-17-20260524/libgcc/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,26 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* fixed-bit.c: Fix typos.
+ 	* libgcov-interface.c (__gcov_reset_int): Likewise.
+ 	(__gcov_dump_int): Likewise.
+ 	* libgcov-util.c (FLAG_ONE_HOT): Likewise.
+ 	(calculate_overlap): Likewise.
+ 	* unwind-dw2.c: Likewise.
+ 	* unwind-seh.c (_Unwind_GetTextRelBase): Likewise.
+ 
+ 2026-05-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config.host <i[34567]86-*-freebsd*> (tmake_file): Add
+ 	i386/t-msabi.
+ 	<x86_64-*-freebsd*>: Likewise.
+ 	* config/i386/i386-asm.h: Update comment.
+ 	* config/i386/resms64.h: Use .note.GNU-stack on FreeBSD, too.
+ 	* config/i386/resms64f.h: Likewise.
+ 	* config/i386/resms64fx.h: Likewise.
+ 	* config/i386/resms64x.h: Likewise.
+ 	* config/i386/savms64.h: Likewise.
+ 	* config/i386/savms64f.h: Likewise.
+ 
  2026-05-21  Christoph Müllner  <christoph.muellner@vrull.eu>
  
  	* config/riscv/feature_bits.c (ZICFISS_GROUPID,
diff -Nrcpad gcc-17-20260524/libgcc/config/avr/libf7/ChangeLog gcc-17-20260531/libgcc/config/avr/libf7/ChangeLog
*** gcc-17-20260524/libgcc/config/avr/libf7/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/avr/libf7/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* libf7.h: Add "[len=...]]" notes to all non-empty inline asm's.
+ 	* libf7.c: Dito.
+ 
  2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
  
  	PR target/122222
diff -Nrcpad gcc-17-20260524/libgcc/config/avr/libf7/libf7.c gcc-17-20260531/libgcc/config/avr/libf7/libf7.c
*** gcc-17-20260524/libgcc/config/avr/libf7/libf7.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/avr/libf7/libf7.c	Sun May 31 22:32:13 2026
*************** float f7_get_float (const f7_t *aa)
*** 344,350 ****
  
    __asm ("cbr %T0%t2, 1 << (7 & %2)"  "\n\t"
  	 "or  %C0, %A1"		      "\n\t"
! 	 "or  %D0, %B1"
  	 : "+d" (mant)
  	 : "r" (expo16), "n" (FLT_DIG_MANT));
  
--- 344,350 ----
  
    __asm ("cbr %T0%t2, 1 << (7 & %2)"  "\n\t"
  	 "or  %C0, %A1"		      "\n\t"
! 	 "or  %D0, %B1 ; [[len=3]]"
  	 : "+d" (mant)
  	 : "r" (expo16), "n" (FLT_DIG_MANT));
  
*************** uint64_t clr_r18 (void)
*** 410,416 ****
  {
    extern void __clr_8 (void);
    register uint64_t r18 __asm ("r18");
!   __asm ("%~call %x[f]" : "=r" (r18) : [f] "i" (__clr_8));
    return r18;
  }
  
--- 410,417 ----
  {
    extern void __clr_8 (void);
    register uint64_t r18 __asm ("r18");
!   __asm ("%~call %x[f] ; [[len=%~call]]"
! 	 : "=r" (r18) : [f] "i" (__clr_8));
    return r18;
  }
  
*************** f7_double_t f7_get_double (const f7_t *a
*** 459,465 ****
    // dex = Overflow ? 1 : 0.
    __asm ("bst %T[mant]%T[bitno]"  "\n\t"
  	 "clr %0"		  "\n\t"
! 	 "bld %0,0"
  	 : "=r" (dex), [mant] "+r" (r18)
  	 : [bitno] "n" (64 - 8));
  
--- 460,466 ----
    // dex = Overflow ? 1 : 0.
    __asm ("bst %T[mant]%T[bitno]"  "\n\t"
  	 "clr %0"		  "\n\t"
! 	 "bld %0,0 ; [[len=3]]"
  	 : "=r" (dex), [mant] "+r" (r18)
  	 : [bitno] "n" (64 - 8));
  
*************** f7_double_t f7_get_double (const f7_t *a
*** 504,510 ****
    r18 = mant;
    __asm ("cbr %T0%t2, 1 << (7 & %2)"  "\n\t"
  	 "or  %r0+6, %A1"	      "\n\t"
! 	 "or  %r0+7, %B1"
  	 : "+r" (r18)
  	 : "r" (expo16), "n" (DBL_DIG_MANT));
  
--- 505,511 ----
    r18 = mant;
    __asm ("cbr %T0%t2, 1 << (7 & %2)"  "\n\t"
  	 "or  %r0+6, %A1"	      "\n\t"
! 	 "or  %r0+7, %B1 ; [[len=3]]"
  	 : "+r" (r18)
  	 : "r" (expo16), "n" (DBL_DIG_MANT));
  
*************** int8_t cmp_u8 (uint8_t a_class, uint8_t
*** 672,678 ****
  	 "sbci %[c], -1"      "\n\t"
  	 "sbrc %[s], 0"	      "\n\t"
  	 "neg  %[c]"	      "\n\t"
! 	 "1:"
  	 : [c] "=d" (c)
  	 : [a] "0" (a_class), [b] "r" (b_class), [s] "r" (sign_a));
    return c;
--- 673,679 ----
  	 "sbci %[c], -1"      "\n\t"
  	 "sbrc %[s], 0"	      "\n\t"
  	 "neg  %[c]"	      "\n\t"
! 	 "1: ; [[len=6]]"
  	 : [c] "=d" (c)
  	 : [a] "0" (a_class), [b] "r" (b_class), [s] "r" (sign_a));
    return c;
*************** void f7_fdim (f7_t *cc, const f7_t *aa,
*** 944,950 ****
  #ifdef F7MOD_addsub_
  static void return_with_sign (f7_t *cc, const f7_t *aa, int8_t c_sign)
  {
!   __asm (";;; return with sign");
    f7_copy (cc, aa);
    if (c_sign != -1)
      f7_set_sign (cc, c_sign);
--- 945,951 ----
  #ifdef F7MOD_addsub_
  static void return_with_sign (f7_t *cc, const f7_t *aa, int8_t c_sign)
  {
!   __asm (";;; return with sign ; [[len=0]]");
    f7_copy (cc, aa);
    if (c_sign != -1)
      f7_set_sign (cc, c_sign);
diff -Nrcpad gcc-17-20260524/libgcc/config/avr/libf7/libf7.h gcc-17-20260531/libgcc/config/avr/libf7/libf7.h
*** gcc-17-20260524/libgcc/config/avr/libf7/libf7.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/avr/libf7/libf7.h	Sun May 31 22:32:13 2026
*************** uint8_t f7_classify (const f7_t *aa)
*** 159,165 ****
  {
    extern void f7_classify_asm (void);
    register uint8_t rclass __asm ("r24");
!   __asm ("%~call %x[f]"
  	 : "=r" (rclass)
  	 : [f] "i" (f7_classify_asm), "z" (aa));
    return rclass;
--- 159,165 ----
  {
    extern void f7_classify_asm (void);
    register uint8_t rclass __asm ("r24");
!   __asm ("%~call %x[f] ; [[len=%~call]]"
  	 : "=r" (rclass)
  	 : [f] "i" (f7_classify_asm), "z" (aa));
    return rclass;
*************** static F7_INLINE
*** 268,274 ****
  void f7_clr (f7_t *cc)
  {
    extern void f7_clr_asm (void);
!   __asm ("%~call %x[f]"
  	 :
  	 : [f] "i" (f7_clr_asm), "z" (cc)
  	 : "memory");
--- 268,274 ----
  void f7_clr (f7_t *cc)
  {
    extern void f7_clr_asm (void);
!   __asm ("%~call %x[f] ; [[len=%~call]]"
  	 :
  	 : [f] "i" (f7_clr_asm), "z" (cc)
  	 : "memory");
*************** static F7_INLINE
*** 278,284 ****
  f7_t* f7_copy (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_asm (void);
!   __asm ("%~call %x[f]"
  	 :
  	 : [f] "i" (f7_copy_asm), "z" (cc), "x" (aa)
  	 : "memory");
--- 278,284 ----
  f7_t* f7_copy (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_asm (void);
!   __asm ("%~call %x[f] ; [[len=%~call]]"
  	 :
  	 : [f] "i" (f7_copy_asm), "z" (cc), "x" (aa)
  	 : "memory");
*************** static F7_INLINE
*** 289,295 ****
  f7_t* f7_copy_P (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_P_asm (void);
!   __asm ("%~call %x[f]"
  	 :
  	 : [f] "i" (f7_copy_P_asm), "x" (cc), "z" (aa)
  	 : "memory");
--- 289,295 ----
  f7_t* f7_copy_P (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_P_asm (void);
!   __asm ("%~call %x[f] ; [[len=%~call]]"
  	 :
  	 : [f] "i" (f7_copy_P_asm), "x" (cc), "z" (aa)
  	 : "memory");
*************** static F7_INLINE
*** 300,306 ****
  void f7_copy_mant (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_mant_asm (void);
!   __asm ("%~call %x[f]"
  	 :
  	 : [f] "i" (f7_copy_mant_asm), "z" (cc), "x" (aa)
  	 : "memory");
--- 300,306 ----
  void f7_copy_mant (f7_t *cc, const f7_t *aa)
  {
    extern void f7_copy_mant_asm (void);
!   __asm ("%~call %x[f] ; [[len=%~call]]"
  	 :
  	 : [f] "i" (f7_copy_mant_asm), "z" (cc), "x" (aa)
  	 : "memory");
*************** int8_t f7_cmp_mant (const f7_t *aa, cons
*** 337,343 ****
  {
    extern void f7_cmp_mant_asm (void);
    register int8_t r24 __asm ("r24");
!   __asm ("%~call %x[f] ;; %1 %3"
  	 : "=r" (r24)
  	 : [f] "i" (f7_cmp_mant_asm), "x" (aa), "z" (bb));
    return r24;
--- 337,343 ----
  {
    extern void f7_cmp_mant_asm (void);
    register int8_t r24 __asm ("r24");
!   __asm ("%~call %x[f] ;; %1 %3 ; [[len=%~call]]"
  	 : "=r" (r24)
  	 : [f] "i" (f7_cmp_mant_asm), "x" (aa), "z" (bb));
    return r24;
*************** bool f7_store_expo (f7_t *cc, int16_t ex
*** 349,355 ****
    extern void f7_store_expo_asm (void);
    register bool r24 __asm ("r24");
    register int16_t rexpo __asm ("r24") = expo;
!   __asm ("%~call %x[f] ;; %0 %2 %3"
  	 : "=r" (r24)
  	 : [f] "i" (f7_store_expo_asm), "z" (cc), "r" (rexpo));
    return r24;
--- 349,355 ----
    extern void f7_store_expo_asm (void);
    register bool r24 __asm ("r24");
    register int16_t rexpo __asm ("r24") = expo;
!   __asm ("%~call %x[f] ;; %0 %2 %3 ; [[len=%~call]]"
  	 : "=r" (r24)
  	 : [f] "i" (f7_store_expo_asm), "z" (cc), "r" (rexpo));
    return r24;
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/i386-asm.h gcc-17-20260531/libgcc/config/i386/i386-asm.h
*** gcc-17-20260524/libgcc/config/i386/i386-asm.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/i386-asm.h	Sun May 31 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 58,64 ****
  #define PASTE2(a, b) PASTE2a(a, b)
  #define PASTE2a(a, b) a ## b
  
! /* These macros currently support GNU/Linux, Solaris and Darwin.  */
  
  #ifdef __ELF__
  # define FN_TYPE(fn) .type fn,@function
--- 58,64 ----
  #define PASTE2(a, b) PASTE2a(a, b)
  #define PASTE2a(a, b) a ## b
  
! /* These macros currently support GNU/Linux, Solaris, FreeBSD, and Darwin.  */
  
  #ifdef __ELF__
  # define FN_TYPE(fn) .type fn,@function
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/resms64.h gcc-17-20260531/libgcc/config/i386/resms64.h
*** gcc-17-20260524/libgcc/config/i386/resms64.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/resms64.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(resms64_18)
*** 58,64 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 58,64 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/resms64f.h gcc-17-20260531/libgcc/config/i386/resms64f.h
*** gcc-17-20260524/libgcc/config/i386/resms64f.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/resms64f.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(resms64f_17)
*** 56,62 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 56,62 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/resms64fx.h gcc-17-20260531/libgcc/config/i386/resms64fx.h
*** gcc-17-20260524/libgcc/config/i386/resms64fx.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/resms64fx.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(resms64fx_17)
*** 63,69 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 63,69 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/resms64x.h gcc-17-20260531/libgcc/config/i386/resms64x.h
*** gcc-17-20260524/libgcc/config/i386/resms64x.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/resms64x.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(resms64x_18)
*** 64,70 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 64,70 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/savms64.h gcc-17-20260531/libgcc/config/i386/savms64.h
*** gcc-17-20260524/libgcc/config/i386/savms64.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/savms64.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(savms64_18)
*** 58,64 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 58,64 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config/i386/savms64f.h gcc-17-20260531/libgcc/config/i386/savms64f.h
*** gcc-17-20260524/libgcc/config/i386/savms64f.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config/i386/savms64f.h	Sun May 31 22:32:13 2026
*************** MS2SYSV_STUB_END(savms64f_17)
*** 56,62 ****
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && defined(__linux__)
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
--- 56,62 ----
  
  #endif /* __x86_64__ */
  
! #if defined(__ELF__) && (defined(__linux__) || defined(__FreeBSD__))
  	.section .note.GNU-stack,"",@progbits
  	.previous
  #endif
diff -Nrcpad gcc-17-20260524/libgcc/config.host gcc-17-20260531/libgcc/config.host
*** gcc-17-20260524/libgcc/config.host	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/config.host	Sun May 31 22:32:13 2026
*************** x86_64-*-dragonfly*)
*** 766,776 ****
  	md_unwind_header=i386/dragonfly-unwind.h
  	;;
  i[34567]86-*-freebsd*)
! 	tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
  	md_unwind_header=i386/freebsd-unwind.h
  	;;
  x86_64-*-freebsd*)
! 	tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
  	md_unwind_header=i386/freebsd-unwind.h
  	;;
  i[34567]86-*-netbsdelf*)
--- 766,776 ----
  	md_unwind_header=i386/dragonfly-unwind.h
  	;;
  i[34567]86-*-freebsd*)
! 	tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff i386/t-msabi"
  	md_unwind_header=i386/freebsd-unwind.h
  	;;
  x86_64-*-freebsd*)
! 	tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff i386/t-msabi"
  	md_unwind_header=i386/freebsd-unwind.h
  	;;
  i[34567]86-*-netbsdelf*)
diff -Nrcpad gcc-17-20260524/libgcc/fixed-bit.c gcc-17-20260531/libgcc/fixed-bit.c
*** gcc-17-20260524/libgcc/fixed-bit.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/fixed-bit.c	Sun May 31 22:32:13 2026
*************** SATFRACT (FROM_FIXED_C_TYPE a)
*** 832,838 ****
  	       && (BIG_UINT_C_TYPE) low < (BIG_UINT_C_TYPE) min_low))
      low = min_low; /* Minimum.  */
  #elif FROM_MODE_UNSIGNED == 1 && TO_MODE_UNSIGNED == 1
!   /* Unigned -> Unsigned.  */
    if ((BIG_UINT_C_TYPE) high > (BIG_UINT_C_TYPE) max_high
        || ((BIG_UINT_C_TYPE) high == (BIG_UINT_C_TYPE) max_high
  	  && (BIG_UINT_C_TYPE) low > (BIG_UINT_C_TYPE) max_low))
--- 832,838 ----
  	       && (BIG_UINT_C_TYPE) low < (BIG_UINT_C_TYPE) min_low))
      low = min_low; /* Minimum.  */
  #elif FROM_MODE_UNSIGNED == 1 && TO_MODE_UNSIGNED == 1
!   /* Unsigned -> Unsigned.  */
    if ((BIG_UINT_C_TYPE) high > (BIG_UINT_C_TYPE) max_high
        || ((BIG_UINT_C_TYPE) high == (BIG_UINT_C_TYPE) max_high
  	  && (BIG_UINT_C_TYPE) low > (BIG_UINT_C_TYPE) max_low))
*************** SATFRACTUNS (FROM_INT_C_TYPE a)
*** 1102,1108 ****
  #endif
  
  #if TO_MODE_UNSIGNED == 1
!   /* Unigned -> Unsigned.  */
    if ((BIG_UINT_C_TYPE) high > (BIG_UINT_C_TYPE) max_high
        || ((BIG_UINT_C_TYPE) high == (BIG_UINT_C_TYPE) max_high
            && (BIG_UINT_C_TYPE) low > (BIG_UINT_C_TYPE) max_low))
--- 1102,1108 ----
  #endif
  
  #if TO_MODE_UNSIGNED == 1
!   /* Unsigned -> Unsigned.  */
    if ((BIG_UINT_C_TYPE) high > (BIG_UINT_C_TYPE) max_high
        || ((BIG_UINT_C_TYPE) high == (BIG_UINT_C_TYPE) max_high
            && (BIG_UINT_C_TYPE) low > (BIG_UINT_C_TYPE) max_low))
diff -Nrcpad gcc-17-20260524/libgcc/libgcov-interface.c gcc-17-20260531/libgcc/libgcov-interface.c
*** gcc-17-20260524/libgcc/libgcov-interface.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/libgcov-interface.c	Sun May 31 22:32:13 2026
*************** __gcov_reset_int (void)
*** 121,127 ****
    struct gcov_root *root;
  
    /* If we're compatible with the master, iterate over everything,
!      otherise just do us.  */
    for (root = __gcov_master.version == GCOV_VERSION
  	 ? __gcov_master.root : &__gcov_root; root; root = root->next)
      {
--- 121,127 ----
    struct gcov_root *root;
  
    /* If we're compatible with the master, iterate over everything,
!      otherwise just do us.  */
    for (root = __gcov_master.version == GCOV_VERSION
  	 ? __gcov_master.root : &__gcov_root; root; root = root->next)
      {
*************** __gcov_dump_int (void)
*** 154,160 ****
    struct gcov_root *root;
  
    /* If we're compatible with the master, iterate over everything,
!      otherise just do us.  */
    for (root = __gcov_master.version == GCOV_VERSION
  	 ? __gcov_master.root : &__gcov_root; root; root = root->next)
      __gcov_dump_one (root);
--- 154,160 ----
    struct gcov_root *root;
  
    /* If we're compatible with the master, iterate over everything,
!      otherwise just do us.  */
    for (root = __gcov_master.version == GCOV_VERSION
  	 ? __gcov_master.root : &__gcov_root; root; root = root->next)
      __gcov_dump_one (root);
diff -Nrcpad gcc-17-20260524/libgcc/libgcov-util.c gcc-17-20260531/libgcc/libgcov-util.c
*** gcc-17-20260524/libgcc/libgcov-util.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/libgcov-util.c	Sun May 31 22:32:13 2026
*************** struct overlap_t {
*** 1174,1180 ****
  #define FLAG_BOTH_COLD(flag) ((flag & 0x2) && (flag & 0x20))
  #define FLAG_ONE_HOT(flag) ((flag & 0x4) || (flag & 0x40))
  
! /* Cumlative overlap dscore for profile1 and profile2.  */
  static double overlap_sum_1, overlap_sum_2;
  
  /* The number of gcda files in the profiles.  */
--- 1174,1180 ----
  #define FLAG_BOTH_COLD(flag) ((flag & 0x2) && (flag & 0x20))
  #define FLAG_ONE_HOT(flag) ((flag & 0x4) || (flag & 0x40))
  
! /* Cumulative overlap dscore for profile1 and profile2.  */
  static double overlap_sum_1, overlap_sum_2;
  
  /* The number of gcda files in the profiles.  */
*************** calculate_overlap (struct gcov_info *gco
*** 1451,1457 ****
  
  /* Compute the overlap score of two lists of gcov_info objects PROFILE1 and
     PROFILE2.
!    Return 0 on success: without mismatch. Reutrn 1 on error.  */
  
  int
  gcov_profile_overlap (struct gcov_info *profile1, struct gcov_info *profile2)
--- 1451,1457 ----
  
  /* Compute the overlap score of two lists of gcov_info objects PROFILE1 and
     PROFILE2.
!    Return 0 on success: without mismatch. Return 1 on error.  */
  
  int
  gcov_profile_overlap (struct gcov_info *profile1, struct gcov_info *profile2)
diff -Nrcpad gcc-17-20260524/libgcc/unwind-dw2.c gcc-17-20260531/libgcc/unwind-dw2.c
*** gcc-17-20260524/libgcc/unwind-dw2.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/unwind-dw2.c	Sun May 31 22:32:13 2026
***************
*** 61,67 ****
     although so far in a case that doesn't actually matter.
  
     See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
!    the call-saved xmm registers and annotates them.  We havn't bothered
     providing support for the xmm registers for the x86_64 port primarily
     because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
     SEH instead.  Adding the support for unix targets would generally be a
--- 61,67 ----
     although so far in a case that doesn't actually matter.
  
     See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
!    the call-saved xmm registers and annotates them.  We haven't bothered
     providing support for the xmm registers for the x86_64 port primarily
     because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
     SEH instead.  Adding the support for unix targets would generally be a
***************
*** 78,84 ****
     unlikely to be able to get the new annotation.
  
     Barring a magic solution to restore the ms abi defined 128-bit xmm registers
!    (as distictly opposed to the full runtime width) without causing extra
     overhead for normal unix abis, the best solution seems to be to simply
     ignore unwind data for unknown columns.  */
  
--- 78,84 ----
     unlikely to be able to get the new annotation.
  
     Barring a magic solution to restore the ms abi defined 128-bit xmm registers
!    (as distinctly opposed to the full runtime width) without causing extra
     overhead for normal unix abis, the best solution seems to be to simply
     ignore unwind data for unknown columns.  */
  
diff -Nrcpad gcc-17-20260524/libgcc/unwind-seh.c gcc-17-20260531/libgcc/unwind-seh.c
*** gcc-17-20260524/libgcc/unwind-seh.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcc/unwind-seh.c	Sun May 31 22:32:13 2026
*************** _Unwind_GetTextRelBase (struct _Unwind_C
*** 187,193 ****
  /* The "real" language-specific personality handler forwards to here
     where we handle the MS SEH state and transforms it into the GCC
     unwind state as per GCC's <unwind.h>, at which point we defer to
!    the regular language-specfic exception handler, which is passed in.  */
  
  EXCEPTION_DISPOSITION
  _GCC_specific_handler (PEXCEPTION_RECORD ms_exc, void *this_frame,
--- 187,193 ----
  /* The "real" language-specific personality handler forwards to here
     where we handle the MS SEH state and transforms it into the GCC
     unwind state as per GCC's <unwind.h>, at which point we defer to
!    the regular language-specific exception handler, which is passed in.  */
  
  EXCEPTION_DISPOSITION
  _GCC_specific_handler (PEXCEPTION_RECORD ms_exc, void *this_frame,
diff -Nrcpad gcc-17-20260524/libgcobol/ChangeLog gcc-17-20260531/libgcobol/ChangeLog
*** gcc-17-20260524/libgcobol/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,158 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* README: Reflow long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* README: Fix typos.
+ 	* charmaps.cc (__gg__iconverter): Likewise.
+ 	* common-defs.h (enum cbl_field_attr_t): Likewise.
+ 	* gcobolio.h: Likewise.
+ 	* gfileio.cc (__gg__file_stash): Likewise.
+ 	* gmath.cc (__gg__pow): Likewise.
+ 	* inspect.cc (inspect_backward_format_1): Likewise.
+ 	(__gg__inspect_format_1): Likewise.
+ 	(inspect_backward_format_2): Likewise.
+ 	(__gg__inspect_format_2): Likewise.
+ 	(__gg__inspect_format_1_sbc): Likewise.
+ 	* intrinsic.cc (gets_month): Likewise.
+ 	* libgcobol.cc (get_time_nanoseconds_local): Likewise.
+ 	(__gg__compare_2): Likewise.
+ 	(display_both): Likewise.
+ 	(accept_envar): Likewise.
+ 	(__gg__set_pointer): Likewise.
+ 	(struct cbl_exception_t): Likewise.
+ 	(default_exception_handler): Likewise.
+ 	(convert_for_convert): Likewise.
+ 	* valconv.cc: Likewise.
+ 	* xmlparse.cc (struct xml_ec_value_t): Likewise.
+ 
+ 2026-05-30  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125503
+ 	* m4/autoconf.m4: New file.
+ 
+ 2026-05-29  Robert Dubner  <rdubner@symas.com>
+ 	    James K. Lowden  <jklowden@cobolworx.com>
+ 	    Xavier Del Campo  <xdelcampo@symas.com>
+ 
+ 	* Makefile.am: Add AM_COBC and AM_COBFLAGS; update
+ 	toolexeclib_LTLIBRARIES with libgcobol_posix.la and
+ 	libgcobol_compat_gnu.la.
+ 	* Makefile.in: POSIX compatibility support.
+ 	* aclocal.m4: Regenerate.
+ 	* charmaps.cc (__gg__iconverter): Restore map of encoding pairs.
+ 	(__gg__get_charmap): Change how encodings are mapped.
+ 	* charmaps.h (CHARMAPS_H): Include #include <map>.
+ 	(DEFAULT_32_ENCODING): Wrap in __FreeBSD__ conditional.
+ 	(error_msg_direct): Wrap in IN_TARGET_LIBS.
+ 	(class cbl_iconv_t): Wrapper for iconv() calls.
+ 	(class charmap_t): Explicit constructor.
+ 	* compat/README.md: POSIX compatibility layer.
+ 	* compat/gnu/lib/CBL_ALLOC_MEM.cbl: Likewise.
+ 	* compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl: Likewise.
+ 	* compat/gnu/lib/CBL_DELETE_FILE.cbl: Likewise.
+ 	* compat/gnu/lib/CBL_FREE_MEM.cbl: Likewise.
+ 	* compat/gnu/udf/stored-char-length.cbl: Likewise.
+ 	* compat/t/Makefile: Likewise.
+ 	* compat/t/smoke.cbl: Likewise.
+ 	* configure: Regenerate.
+ 	* configure.ac: New macros
+ 	* configure.tgt: Likewise.
+ 	* ec.h (enum ec_type_t): New implementor-defined ec_imp_iconv_open_e
+ 	exception.
+ 	* encodings.h (_ENCODINGS_H_): #include <type_traits> for mapping
+ 	the cbl_encoding_t values.
+ 	(struct cbl_encoding_t_hash): Likewise.
+ 	* exceptl.h (ec_type_of): Remove "extern" from declaration.
+ 	* gcobolio.h (FILE_BUFFER_SIZE): READ FILE buffer size.
+ 	* gfileio.cc (sequential_file_write): Honor non-ascii encodings.
+ 	(line_sequential_file_read): Buffered FILE READ.
+ 	(line_sequential_file_read_sbc): Buffered FILE READ.
+ 	* intrinsic.cc (string_to_dest): Eliminate function.
+ 	(get_all_time): Replace __gg__convert_encoding() with
+ 	__gg__iconverter().
+ 	(__gg__when_compiled): Likewise.
+ 	* io.cc (__compat_file_status_word): POSIX compatibility layer.
+ 	* io.h (enum file_high_t): Likewise.
+ 	(enum file_status_t): Likewise.
+ 	* libgcobol.cc (init_var_both): Eliminate call to
+ 	initialize_program_state().
+ 	(__gg__move): Eliminate call to __gg__convert_encoding_length;
+ 	handle REFER_T_ADDRESS_OF.
+ 	(display_both): Handle REFER_T_ADDRESS_OF.
+ 	(__gg__display_clean): Likewise.
+ 	(__gg__convert_encoding): Eliminate function.
+ 	(__gg__convert_encoding_length): Likewise.
+ 	(default_exception_handler): Improve exception handling.
+ 	(ec_type_descr): Likewise.
+ 	(ec_type_disposition): Likewise.
+ 	(ec_is_fatal): Likewise.
+ 	(__gg__check_fatal_exception): Likewise.
+ 	(__gg__set_env_value): Remove call to __gg__convert_encoding.
+ 	* libgcobol.h (__gg__convert_encoding): Eliminate.
+ 	(__gg__convert_encoding_length): Eliminate.
+ 	* posix/bin/udf-gen: POSIX compatibility.
+ 	* posix/cpy/posix-errno.cbl: Likewise.
+ 	* posix/cpy/psx-lseek.cpy: Likewise.
+ 	* posix/cpy/psx-open.cpy: Likewise.
+ 	* posix/cpy/statbuf.cpy: Likewise.
+ 	* posix/cpy/tm.cpy: Likewise.
+ 	* posix/shim/lseek.cc (offsetof): Likewise.
+ 	(posix_lseek): Likewise.
+ 	* posix/shim/open.cc (posix_open): Likewise.
+ 	* posix/t/errno.cbl: Likewise.
+ 	* posix/t/exit.cbl: Likewise.
+ 	* posix/t/localtime.cbl: Likewise.
+ 	* posix/t/stat.cbl: Likewise.
+ 	* posix/udf/posix-exit.cbl: Likewise.
+ 	* posix/udf/posix-ftruncate.cbl: Likewise.
+ 	* posix/udf/posix-localtime.cbl: Likewise.
+ 	* posix/udf/posix-lseek.cbl: Likewise.
+ 	* posix/udf/posix-mkdir.cbl: Likewise.
+ 	* posix/udf/posix-open.cbl: Likewise.
+ 	* posix/udf/posix-read.cbl: Likewise.
+ 	* posix/udf/posix-stat.cbl: Likewise.
+ 	* posix/udf/posix-unlink.cbl: Likewise.
+ 	* posix/udf/posix-write.cbl: Likewise.
+ 	* valconv.cc: New exceptions.
+ 	* compat/gnu/cpy/cblproto.cpy: New file.
+ 	* compat/gnu/cpy/cbltypes.cpy: New file.
+ 	* compat/gnu/cpy/stored-char-length.cpy: New file.
+ 	* compat/gnu/lib/CBL_CLOSE_FILE.cbl: New file.
+ 	* compat/gnu/lib/CBL_CREATE_FILE.cbl: New file.
+ 	* compat/gnu/lib/CBL_OPEN_FILE.cbl: New file.
+ 	* compat/gnu/lib/CBL_READ_FILE.cbl: New file.
+ 	* compat/gnu/lib/CBL_WRITE_FILE.cbl: New file.
+ 	* compat/gnu/lib/cbl_alloc_mem.3: New file.
+ 	* compat/gnu/lib/cbl_alloc_mem.cbl3: New file.
+ 	* compat/gnu/lib/cbl_check_file_exist.3: New file.
+ 	* compat/gnu/lib/cbl_close_file.3: New file.
+ 	* compat/gnu/lib/cbl_create_file.3: New file.
+ 	* compat/gnu/lib/cbl_delete_file.3: New file.
+ 	* compat/gnu/lib/cbl_free_mem.3: New file.
+ 	* compat/gnu/lib/cbl_open_file.3: New file.
+ 	* compat/gnu/lib/cbl_read_file.3: New file.
+ 	* compat/gnu/lib/cbl_write_file.3: New file.
+ 	* compat/gnu/udf/cobrt-file-status.cbl: New file.
+ 	* posix/cpy/posix-close.cpy: New file.
+ 	* posix/cpy/posix-errno.cpy: New file.
+ 	* posix/cpy/posix-exit.cpy: New file.
+ 	* posix/cpy/posix-fstat.cpy: New file.
+ 	* posix/cpy/posix-ftruncate.cpy: New file.
+ 	* posix/cpy/posix-localtime.cpy: New file.
+ 	* posix/cpy/posix-lseek.cpy: New file.
+ 	* posix/cpy/posix-mkdir.cpy: New file.
+ 	* posix/cpy/posix-open.cpy: New file.
+ 	* posix/cpy/posix-read.cpy: New file.
+ 	* posix/cpy/posix-stat.cpy: New file.
+ 	* posix/cpy/posix-unlink.cpy: New file.
+ 	* posix/cpy/posix-write.cpy: New file.
+ 	* posix/shim/fstat.cc: New file.
+ 	* posix/udf/posix-close.cbl: New file.
+ 	* posix/udf/posix-errno.cbl: New file.
+ 	* posix/udf/posix-fstat.cbl: New file.
+ 
  2026-05-12  Robert Dubner  <rdubner@symas.com>
  
  	* charmaps.h (class charmap_t): Remove an abort().
diff -Nrcpad gcc-17-20260524/libgcobol/Makefile.am gcc-17-20260531/libgcobol/Makefile.am
*** gcc-17-20260524/libgcobol/Makefile.am	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/Makefile.am	Sun May 31 22:32:13 2026
*************** build = @build@
*** 27,32 ****
--- 27,36 ----
  target = @target@
  prefix = @prefix@
  
+ AM_COBC = ../../gcc/gcobol -B $(PWD)/../../gcc
+ AM_COBFLAGS = -dialect gnu -ffixed-form					\
+ 		-I ${srcdir}/compat/gnu/cpy -I ${srcdir}/posix/cpy
+ 
  target_noncanonical = @target_noncanonical@
  version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
  
*************** gcc_version := $(shell @get_gcc_base_ver
*** 38,53 ****
  
  # Skip the whole process if we are not building libgcobol.
  if BUILD_LIBGCOBOL
! toolexeclib_LTLIBRARIES  = libgcobol.la
  toolexeclib_DATA = libgcobol.spec
  
  libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
  libsubincludedir = $(libsubdir)
  
- ##
  ## 2.2.12 Automatic Dependency Tracking
  ## Automake generates code for automatic dependency tracking by default
- ##
  
  libgcobol_la_SOURCES =				\
  	charmaps.cc				\
--- 42,55 ----
  
  # Skip the whole process if we are not building libgcobol.
  if BUILD_LIBGCOBOL
! toolexeclib_LTLIBRARIES  = libgcobol.la libgcobol_posix.la libgcobol_compat_gnu.la
  toolexeclib_DATA = libgcobol.spec
  
  libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
  libsubincludedir = $(libsubdir)
  
  ## 2.2.12 Automatic Dependency Tracking
  ## Automake generates code for automatic dependency tracking by default
  
  libgcobol_la_SOURCES =				\
  	charmaps.cc				\
*************** libgcobol_la_SOURCES =				\
*** 59,87 ****
  	io.cc					\
  	libgcobol.cc				\
  	posix/shim/errno.cc			\
  	posix/shim/localtime.cc			\
  	posix/shim/open.cc			\
  	posix/shim/stat.cc			\
  	stringbin.cc				\
  	valconv.cc				\
  	xmlparse.cc
  
! libgcobol_la_LIBADD = -lxml2
  
! nobase_libsubinclude_HEADERS =			\
! 	posix/cpy/posix-errno.cbl		\
! 	posix/cpy/statbuf.cpy			\
  	posix/udf/posix-exit.cbl		\
  	posix/udf/posix-localtime.cbl		\
  	posix/udf/posix-mkdir.cbl		\
  	posix/udf/posix-open.cbl		\
  	posix/udf/posix-stat.cbl		\
  	posix/udf/posix-unlink.cbl		\
! 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
  	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
  	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
  	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! 	compat/gnu/udf/stored-char-length.cbl
  
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
--- 61,133 ----
  	io.cc					\
  	libgcobol.cc				\
  	posix/shim/errno.cc			\
+ 	posix/shim/fstat.cc			\
  	posix/shim/localtime.cc			\
+ 	posix/shim/lseek.cc			\
  	posix/shim/open.cc			\
  	posix/shim/stat.cc			\
  	stringbin.cc				\
  	valconv.cc				\
  	xmlparse.cc
  
! libgcobol_compat_gnu_la_SOURCES =		\
! 	compat/gnu/udf/cobrt-file-status.cbl	\
! 	compat/gnu/udf/stored-char-length.cbl	\
! 	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
! 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
! 	compat/gnu/lib/CBL_CLOSE_FILE.cbl	\
! 	compat/gnu/lib/CBL_CREATE_FILE.cbl	\
! 	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
! 	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! 	compat/gnu/lib/CBL_OPEN_FILE.cbl	\
! 	compat/gnu/lib/CBL_READ_FILE.cbl	\
! 	compat/gnu/lib/CBL_WRITE_FILE.cbl
  
! libgcobol_posix_la_SOURCES =			\
! 	posix/udf/posix-close.cbl		\
! 	posix/udf/posix-errno.cbl		\
  	posix/udf/posix-exit.cbl		\
+ 	posix/udf/posix-fstat.cbl		\
+ 	posix/udf/posix-ftruncate.cbl		\
  	posix/udf/posix-localtime.cbl		\
+ 	posix/udf/posix-lseek.cbl		\
  	posix/udf/posix-mkdir.cbl		\
  	posix/udf/posix-open.cbl		\
+ 	posix/udf/posix-read.cbl		\
  	posix/udf/posix-stat.cbl		\
  	posix/udf/posix-unlink.cbl		\
! 	posix/udf/posix-write.cbl
! 
! # Install the COBOL for the POSIX and compatibility libraries.
! nobase_libsubinclude_HEADERS =			\
! 	posix/cpy/posix-errno.cpy		\
! 	posix/cpy/posix-exit.cpy		\
! 	posix/cpy/posix-fstat.cpy		\
! 	posix/cpy/posix-ftruncate.cpy		\
! 	posix/cpy/posix-localtime.cpy		\
! 	posix/cpy/posix-lseek.cpy		\
! 	posix/cpy/posix-mkdir.cpy		\
! 	posix/cpy/posix-open.cpy		\
! 	posix/cpy/posix-read.cpy		\
! 	posix/cpy/posix-stat.cpy		\
! 	posix/cpy/psx-lseek.cpy			\
! 	posix/cpy/psx-open.cpy			\
! 	posix/cpy/statbuf.cpy			\
! 	posix/cpy/tm.cpy			\
! 	compat/gnu/cpy/stored-char-length.cpy	\
! 	compat/gnu/cpy/cblproto.cpy		\
! 	compat/gnu/cpy/cbltypes.cpy		\
  	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
+ 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
+ 	compat/gnu/lib/CBL_CLOSE_FILE.cbl	\
+ 	compat/gnu/lib/CBL_CREATE_FILE.cbl	\
  	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
  	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! 	compat/gnu/lib/CBL_OPEN_FILE.cbl	\
! 	compat/gnu/lib/CBL_READ_FILE.cbl	\
! 	compat/gnu/lib/CBL_WRITE_FILE.cbl
! 
! libgcobol_la_LIBADD = -lxml2
  
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
*************** extra_ldflags_libgcobol += -Wc,-nodefaul
*** 100,110 ****
  extra_ldflags_libgcobol += -Wl,-rpath,@loader_path
  endif
  
  # We want to link with the c++ runtime.
  libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  version_arg = -version-info $(LIBGCOBOL_VERSION)
  libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
  	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  
  endif BUILD_LIBGCOBOL
--- 146,200 ----
  extra_ldflags_libgcobol += -Wl,-rpath,@loader_path
  endif
  
+ # Bring compat copybooks into the build tree because dg tests rely on them.
+ LC_COPYDIR_BUILD = $(PWD)/compat/gnu/cpy
+ LC_COPYBOOKS = \
+ 	$(LC_COPYDIR_BUILD)/cblproto.cpy \
+ 	$(LC_COPYDIR_BUILD)/cbltypes.cpy \
+ 	$(LC_COPYDIR_BUILD)/stored-char-length.cpy
+ 
+ $(LC_COPYDIR_BUILD)/%.cpy: ${srcdir}/compat/gnu/cpy/%.cpy
+ 	mkdir -p `dirname $@`
+ 	cp $< $@
+ 
  # We want to link with the c++ runtime.
  libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  version_arg = -version-info $(LIBGCOBOL_VERSION)
  libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
  	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP) $(LC_COPYBOOKS)
! 
! # Rules for libgcobol_posix.so and libgcobol_compat_gnu.so, which have
! # COBOL sources.  They require gcobol and libgcobol to have already
! # been built.
! #
! # Here we adopt for the first time what is perhaps a useful convention:
! # 1.  CC => COBC
! #     Because CC means "C compiler", COBC means "COBOL compiler".
! # 2.  CFLAGS => COBFLAGS
! #     Because CFLAGS means "C flags", COBFLAGS means "COBOL flags".
! 
! 
! libgcobol_posix_la_LINK = $(CXXLINK) $(libgcobol_posix_la_LDFLAGS)
! libgcobol_posix_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! 	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! libgcobol_posix_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
! 
! libgcobol_compat_gnu_la_LINK = $(CXXLINK) $(libgcobol_compat_gnu_la_LDFLAGS)
! libgcobol_compat_gnu_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! 	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! libgcobol_compat_gnu_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
! 
! 
! LTCOBCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
! 	--mode=compile $(AM_COBC) $(AM_COBFLAGS)
! 
! .cbl.o:
! 	$(COBC) -o $@ $(COBFLAGS) -c $<
! 
! .cbl.lo:
! 	$(LTCOBCOMPILE) $(COBFLAGS) $(MULTIFLAGS) -c -o $@ $<
! 
! 
  
  endif BUILD_LIBGCOBOL
diff -Nrcpad gcc-17-20260524/libgcobol/Makefile.in gcc-17-20260531/libgcobol/Makefile.in
*** gcc-17-20260524/libgcobol/Makefile.in	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/Makefile.in	Sun May 31 22:32:13 2026
*************** target_triplet = @target@
*** 119,125 ****
  @BUILD_LIBGCOBOL_FALSE@libgcobol_la_DEPENDENCIES =
  subdir = .
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
! am__aclocal_m4_deps = $(top_srcdir)/../config/clang-plugin.m4 \
  	$(top_srcdir)/../config/depstand.m4 \
  	$(top_srcdir)/../config/gcc-plugin.m4 \
  	$(top_srcdir)/../config/iconv.m4 \
--- 119,126 ----
  @BUILD_LIBGCOBOL_FALSE@libgcobol_la_DEPENDENCIES =
  subdir = .
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
! am__aclocal_m4_deps = $(top_srcdir)/m4/autoconf.m4 \
! 	$(top_srcdir)/../config/clang-plugin.m4 \
  	$(top_srcdir)/../config/depstand.m4 \
  	$(top_srcdir)/../config/gcc-plugin.m4 \
  	$(top_srcdir)/../config/iconv.m4 \
*************** am__dirstamp = $(am__leading_dot)dirstam
*** 183,193 ****
  @BUILD_LIBGCOBOL_TRUE@	constants.lo gfileio.lo gmath.lo \
  @BUILD_LIBGCOBOL_TRUE@	inspect.lo intrinsic.lo io.lo \
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.lo posix/shim/errno.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/open.lo posix/shim/stat.lo \
! @BUILD_LIBGCOBOL_TRUE@	stringbin.lo valconv.lo xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
  am__v_P_0 = false
--- 184,231 ----
  @BUILD_LIBGCOBOL_TRUE@	constants.lo gfileio.lo gmath.lo \
  @BUILD_LIBGCOBOL_TRUE@	inspect.lo intrinsic.lo io.lo \
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.lo posix/shim/errno.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/shim/fstat.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/lseek.lo posix/shim/open.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.lo stringbin.lo \
! @BUILD_LIBGCOBOL_TRUE@	valconv.lo xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
+ libgcobol_compat_gnu_la_LIBADD =
+ @BUILD_LIBGCOBOL_TRUE@am_libgcobol_compat_gnu_la_OBJECTS =  \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/cobrt-file-status.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/stored-char-length.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_ALLOC_MEM.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CHECK_FILE_EXIST.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CLOSE_FILE.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CREATE_FILE.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_DELETE_FILE.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_FREE_MEM.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_OPEN_FILE.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_READ_FILE.lo \
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_WRITE_FILE.lo
+ libgcobol_compat_gnu_la_OBJECTS =  \
+ 	$(am_libgcobol_compat_gnu_la_OBJECTS)
+ @BUILD_LIBGCOBOL_TRUE@am_libgcobol_compat_gnu_la_rpath = -rpath \
+ @BUILD_LIBGCOBOL_TRUE@	$(toolexeclibdir)
+ libgcobol_posix_la_LIBADD =
+ @BUILD_LIBGCOBOL_TRUE@am_libgcobol_posix_la_OBJECTS =  \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-close.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-errno.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-fstat.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-ftruncate.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-lseek.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-open.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-read.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.lo \
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-write.lo
+ libgcobol_posix_la_OBJECTS = $(am_libgcobol_posix_la_OBJECTS)
+ @BUILD_LIBGCOBOL_TRUE@am_libgcobol_posix_la_rpath = -rpath \
+ @BUILD_LIBGCOBOL_TRUE@	$(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
  am__v_P_0 = false
*************** AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
*** 226,248 ****
  am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
  am__v_CXXLD_0 = @echo "  CXXLD   " $@;
  am__v_CXXLD_1 = 
! SOURCES = $(libgcobol_la_SOURCES)
  am__can_run_installinfo = \
    case $$AM_UPDATE_INFO_DIR in \
      n|no|NO) false;; \
      *) (install-info --version) >/dev/null 2>&1;; \
    esac
  DATA = $(toolexeclib_DATA)
! am__nobase_libsubinclude_HEADERS_DIST = posix/cpy/posix-errno.cbl \
! 	posix/cpy/statbuf.cpy posix/udf/posix-exit.cbl \
! 	posix/udf/posix-localtime.cbl posix/udf/posix-mkdir.cbl \
! 	posix/udf/posix-open.cbl posix/udf/posix-stat.cbl \
! 	posix/udf/posix-unlink.cbl \
! 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl \
  	compat/gnu/lib/CBL_ALLOC_MEM.cbl \
  	compat/gnu/lib/CBL_DELETE_FILE.cbl \
  	compat/gnu/lib/CBL_FREE_MEM.cbl \
! 	compat/gnu/udf/stored-char-length.cbl
  HEADERS = $(nobase_libsubinclude_HEADERS)
  am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
  	$(LISP)config.h.in
--- 264,295 ----
  am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
  am__v_CXXLD_0 = @echo "  CXXLD   " $@;
  am__v_CXXLD_1 = 
! SOURCES = $(libgcobol_la_SOURCES) $(libgcobol_compat_gnu_la_SOURCES) \
! 	$(libgcobol_posix_la_SOURCES)
  am__can_run_installinfo = \
    case $$AM_UPDATE_INFO_DIR in \
      n|no|NO) false;; \
      *) (install-info --version) >/dev/null 2>&1;; \
    esac
  DATA = $(toolexeclib_DATA)
! am__nobase_libsubinclude_HEADERS_DIST = posix/cpy/posix-errno.cpy \
! 	posix/cpy/posix-exit.cpy posix/cpy/posix-fstat.cpy \
! 	posix/cpy/posix-ftruncate.cpy posix/cpy/posix-localtime.cpy \
! 	posix/cpy/posix-lseek.cpy posix/cpy/posix-mkdir.cpy \
! 	posix/cpy/posix-open.cpy posix/cpy/posix-read.cpy \
! 	posix/cpy/posix-stat.cpy posix/cpy/psx-lseek.cpy \
! 	posix/cpy/psx-open.cpy posix/cpy/statbuf.cpy posix/cpy/tm.cpy \
! 	compat/gnu/cpy/stored-char-length.cpy \
! 	compat/gnu/cpy/cblproto.cpy compat/gnu/cpy/cbltypes.cpy \
  	compat/gnu/lib/CBL_ALLOC_MEM.cbl \
+ 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl \
+ 	compat/gnu/lib/CBL_CLOSE_FILE.cbl \
+ 	compat/gnu/lib/CBL_CREATE_FILE.cbl \
  	compat/gnu/lib/CBL_DELETE_FILE.cbl \
  	compat/gnu/lib/CBL_FREE_MEM.cbl \
! 	compat/gnu/lib/CBL_OPEN_FILE.cbl \
! 	compat/gnu/lib/CBL_READ_FILE.cbl \
! 	compat/gnu/lib/CBL_WRITE_FILE.cbl
  HEADERS = $(nobase_libsubinclude_HEADERS)
  am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
  	$(LISP)config.h.in
*************** AWK = @AWK@
*** 277,282 ****
--- 324,331 ----
  CC = @CC@
  CCDEPMODE = @CCDEPMODE@
  CFLAGS = @CFLAGS@
+ COBC = @COBC@
+ COBFLAGS = @COBFLAGS@
  CPP = @CPP@
  CPPFLAGS = @CPPFLAGS@
  CXX = @CXX@
*************** toolexeclibdir = @toolexeclibdir@
*** 410,415 ****
--- 459,468 ----
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
+ AM_COBC = ../../gcc/gcobol -B $(PWD)/../../gcc
+ AM_COBFLAGS = -dialect gnu -ffixed-form					\
+ 		-I ${srcdir}/compat/gnu/cpy -I ${srcdir}/posix/cpy
+ 
  version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
  AUTOMAKE_OPTIONS = 1.8 foreign subdir-objects
  ACLOCAL_AMFLAGS = -I .. -I ../config
*************** ACLOCAL_AMFLAGS = -I .. -I ../config
*** 418,424 ****
  gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
  
  # Skip the whole process if we are not building libgcobol.
! @BUILD_LIBGCOBOL_TRUE@toolexeclib_LTLIBRARIES = libgcobol.la
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_DATA = libgcobol.spec
  @BUILD_LIBGCOBOL_TRUE@libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
  @BUILD_LIBGCOBOL_TRUE@libsubincludedir = $(libsubdir)
--- 471,477 ----
  gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
  
  # Skip the whole process if we are not building libgcobol.
! @BUILD_LIBGCOBOL_TRUE@toolexeclib_LTLIBRARIES = libgcobol.la libgcobol_posix.la libgcobol_compat_gnu.la
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_DATA = libgcobol.spec
  @BUILD_LIBGCOBOL_TRUE@libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
  @BUILD_LIBGCOBOL_TRUE@libsubincludedir = $(libsubdir)
*************** gcc_version := $(shell @get_gcc_base_ver
*** 432,460 ****
  @BUILD_LIBGCOBOL_TRUE@	io.cc					\
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.cc				\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/open.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.cc			\
  @BUILD_LIBGCOBOL_TRUE@	stringbin.cc				\
  @BUILD_LIBGCOBOL_TRUE@	valconv.cc				\
  @BUILD_LIBGCOBOL_TRUE@	xmlparse.cc
  
! @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LIBADD = -lxml2
! @BUILD_LIBGCOBOL_TRUE@nobase_libsubinclude_HEADERS = \
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-errno.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/statbuf.cpy			\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-open.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/stored-char-length.cbl
  
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
  @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I posix/shim \
  @BUILD_LIBGCOBOL_TRUE@	$(LIBQUADINCLUDE) $(LIBXML2_CPPFLAGS)
--- 485,558 ----
  @BUILD_LIBGCOBOL_TRUE@	io.cc					\
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.cc				\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.cc			\
+ @BUILD_LIBGCOBOL_TRUE@	posix/shim/fstat.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.cc			\
+ @BUILD_LIBGCOBOL_TRUE@	posix/shim/lseek.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/open.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.cc			\
  @BUILD_LIBGCOBOL_TRUE@	stringbin.cc				\
  @BUILD_LIBGCOBOL_TRUE@	valconv.cc				\
  @BUILD_LIBGCOBOL_TRUE@	xmlparse.cc
  
! @BUILD_LIBGCOBOL_TRUE@libgcobol_compat_gnu_la_SOURCES = \
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/cobrt-file-status.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/stored-char-length.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CLOSE_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CREATE_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_OPEN_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_READ_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_WRITE_FILE.cbl
! 
! @BUILD_LIBGCOBOL_TRUE@libgcobol_posix_la_SOURCES = \
! @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-close.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-errno.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-fstat.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-ftruncate.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-lseek.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-open.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-read.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-write.cbl
! 
! 
! # Install the COBOL for the POSIX and compatibility libraries.
! @BUILD_LIBGCOBOL_TRUE@nobase_libsubinclude_HEADERS = \
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-errno.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-exit.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-fstat.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-ftruncate.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-localtime.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-lseek.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-mkdir.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-open.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-read.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-stat.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/psx-lseek.cpy			\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/psx-open.cpy			\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/statbuf.cpy			\
! @BUILD_LIBGCOBOL_TRUE@	posix/cpy/tm.cpy			\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/cpy/stored-char-length.cpy	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/cpy/cblproto.cpy		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/cpy/cbltypes.cpy		\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CLOSE_FILE.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CREATE_FILE.cbl	\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
  @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_OPEN_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_READ_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_WRITE_FILE.cbl
  
+ @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LIBADD = -lxml2
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
  @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I posix/shim \
  @BUILD_LIBGCOBOL_TRUE@	$(LIBQUADINCLUDE) $(LIBXML2_CPPFLAGS)
*************** gcc_version := $(shell @get_gcc_base_ver
*** 463,480 ****
  @BUILD_LIBGCOBOL_TRUE@	-DIN_TARGET_LIBS -fstrict-aliasing \
  @BUILD_LIBGCOBOL_TRUE@	-Wstrict-aliasing -Wstrict-aliasing=3
  
  # We want to link with the c++ runtime.
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  @BUILD_LIBGCOBOL_TRUE@version_arg = -version-info $(LIBGCOBOL_VERSION)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
  @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
  
! @BUILD_LIBGCOBOL_TRUE@libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  all: config.h
  	$(MAKE) $(AM_MAKEFLAGS) all-am
  
  .SUFFIXES:
! .SUFFIXES: .cc .lo .o .obj
  am--refresh: Makefile
  	@:
  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
--- 561,609 ----
  @BUILD_LIBGCOBOL_TRUE@	-DIN_TARGET_LIBS -fstrict-aliasing \
  @BUILD_LIBGCOBOL_TRUE@	-Wstrict-aliasing -Wstrict-aliasing=3
  
+ # Bring compat copybooks into the build tree because dg tests rely on them.
+ @BUILD_LIBGCOBOL_TRUE@LC_COPYDIR_BUILD = $(PWD)/compat/gnu/cpy
+ @BUILD_LIBGCOBOL_TRUE@LC_COPYBOOKS = \
+ @BUILD_LIBGCOBOL_TRUE@	$(LC_COPYDIR_BUILD)/cblproto.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LC_COPYDIR_BUILD)/cbltypes.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LC_COPYDIR_BUILD)/stored-char-length.cpy
+ 
+ 
  # We want to link with the c++ runtime.
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  @BUILD_LIBGCOBOL_TRUE@version_arg = -version-info $(LIBGCOBOL_VERSION)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
  @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
  
! @BUILD_LIBGCOBOL_TRUE@libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP) $(LC_COPYBOOKS)
! 
! # Rules for libgcobol_posix.so and libgcobol_compat_gnu.so, which have
! # COBOL sources.  They require gcobol and libgcobol to have already
! # been built.
! #
! # Here we adopt for the first time what is perhaps a useful convention:
! # 1.  CC => COBC
! #     Because CC means "C compiler", COBC means "COBOL compiler".
! # 2.  CFLAGS => COBFLAGS
! #     Because CFLAGS means "C flags", COBFLAGS means "COBOL flags".
! @BUILD_LIBGCOBOL_TRUE@libgcobol_posix_la_LINK = $(CXXLINK) $(libgcobol_posix_la_LDFLAGS)
! @BUILD_LIBGCOBOL_TRUE@libgcobol_posix_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! 
! @BUILD_LIBGCOBOL_TRUE@libgcobol_posix_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
! @BUILD_LIBGCOBOL_TRUE@libgcobol_compat_gnu_la_LINK = $(CXXLINK) $(libgcobol_compat_gnu_la_LDFLAGS)
! @BUILD_LIBGCOBOL_TRUE@libgcobol_compat_gnu_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) $(LIBXML2_LIBS) $(version_arg)
! 
! @BUILD_LIBGCOBOL_TRUE@libgcobol_compat_gnu_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
! @BUILD_LIBGCOBOL_TRUE@LTCOBCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
! @BUILD_LIBGCOBOL_TRUE@	--mode=compile $(AM_COBC) $(AM_COBFLAGS)
! 
  all: config.h
  	$(MAKE) $(AM_MAKEFLAGS) all-am
  
  .SUFFIXES:
! .SUFFIXES: .cbl .cc .lo .o .obj
  am--refresh: Makefile
  	@:
  $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
*************** posix/shim/$(DEPDIR)/$(am__dirstamp):
*** 568,575 ****
--- 697,708 ----
  	@: > posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/errno.lo: posix/shim/$(am__dirstamp) \
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
+ posix/shim/fstat.lo: posix/shim/$(am__dirstamp) \
+ 	posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/localtime.lo: posix/shim/$(am__dirstamp) \
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
+ posix/shim/lseek.lo: posix/shim/$(am__dirstamp) \
+ 	posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/open.lo: posix/shim/$(am__dirstamp) \
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/stat.lo: posix/shim/$(am__dirstamp) \
*************** posix/shim/stat.lo: posix/shim/$(am__dir
*** 577,587 ****
--- 710,799 ----
  
  libgcobol.la: $(libgcobol_la_OBJECTS) $(libgcobol_la_DEPENDENCIES) $(EXTRA_libgcobol_la_DEPENDENCIES) 
  	$(AM_V_GEN)$(libgcobol_la_LINK) $(am_libgcobol_la_rpath) $(libgcobol_la_OBJECTS) $(libgcobol_la_LIBADD) $(LIBS)
+ compat/gnu/udf/$(am__dirstamp):
+ 	@$(MKDIR_P) compat/gnu/udf
+ 	@: > compat/gnu/udf/$(am__dirstamp)
+ compat/gnu/udf/$(DEPDIR)/$(am__dirstamp):
+ 	@$(MKDIR_P) compat/gnu/udf/$(DEPDIR)
+ 	@: > compat/gnu/udf/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/udf/cobrt-file-status.lo: compat/gnu/udf/$(am__dirstamp) \
+ 	compat/gnu/udf/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/udf/stored-char-length.lo: compat/gnu/udf/$(am__dirstamp) \
+ 	compat/gnu/udf/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/$(am__dirstamp):
+ 	@$(MKDIR_P) compat/gnu/lib
+ 	@: > compat/gnu/lib/$(am__dirstamp)
+ compat/gnu/lib/$(DEPDIR)/$(am__dirstamp):
+ 	@$(MKDIR_P) compat/gnu/lib/$(DEPDIR)
+ 	@: > compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_ALLOC_MEM.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_CHECK_FILE_EXIST.lo:  \
+ 	compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_CLOSE_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_CREATE_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_DELETE_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_FREE_MEM.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_OPEN_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_READ_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ compat/gnu/lib/CBL_WRITE_FILE.lo: compat/gnu/lib/$(am__dirstamp) \
+ 	compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ 
+ libgcobol_compat_gnu.la: $(libgcobol_compat_gnu_la_OBJECTS) $(libgcobol_compat_gnu_la_DEPENDENCIES) $(EXTRA_libgcobol_compat_gnu_la_DEPENDENCIES) 
+ 	$(AM_V_GEN)$(libgcobol_compat_gnu_la_LINK) $(am_libgcobol_compat_gnu_la_rpath) $(libgcobol_compat_gnu_la_OBJECTS) $(libgcobol_compat_gnu_la_LIBADD) $(LIBS)
+ posix/udf/$(am__dirstamp):
+ 	@$(MKDIR_P) posix/udf
+ 	@: > posix/udf/$(am__dirstamp)
+ posix/udf/$(DEPDIR)/$(am__dirstamp):
+ 	@$(MKDIR_P) posix/udf/$(DEPDIR)
+ 	@: > posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-close.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-errno.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-exit.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-fstat.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-ftruncate.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-localtime.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-lseek.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-mkdir.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-open.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-read.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-stat.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-unlink.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ posix/udf/posix-write.lo: posix/udf/$(am__dirstamp) \
+ 	posix/udf/$(DEPDIR)/$(am__dirstamp)
+ 
+ libgcobol_posix.la: $(libgcobol_posix_la_OBJECTS) $(libgcobol_posix_la_DEPENDENCIES) $(EXTRA_libgcobol_posix_la_DEPENDENCIES) 
+ 	$(AM_V_GEN)$(libgcobol_posix_la_LINK) $(am_libgcobol_posix_la_rpath) $(libgcobol_posix_la_OBJECTS) $(libgcobol_posix_la_LIBADD) $(LIBS)
  
  mostlyclean-compile:
  	-rm -f *.$(OBJEXT)
+ 	-rm -f compat/gnu/lib/*.$(OBJEXT)
+ 	-rm -f compat/gnu/lib/*.lo
+ 	-rm -f compat/gnu/udf/*.$(OBJEXT)
+ 	-rm -f compat/gnu/udf/*.lo
  	-rm -f posix/shim/*.$(OBJEXT)
  	-rm -f posix/shim/*.lo
+ 	-rm -f posix/udf/*.$(OBJEXT)
+ 	-rm -f posix/udf/*.lo
  
  distclean-compile:
  	-rm -f *.tab.c
*************** distclean-compile:
*** 598,604 ****
--- 810,818 ----
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valconv.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/errno.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/fstat.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/localtime.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/lseek.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/open.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/stat.Plo@am__quote@
  
*************** mostlyclean-libtool:
*** 631,637 ****
--- 845,854 ----
  
  clean-libtool:
  	-rm -rf .libs _libs
+ 	-rm -rf compat/gnu/lib/.libs compat/gnu/lib/_libs
+ 	-rm -rf compat/gnu/udf/.libs compat/gnu/udf/_libs
  	-rm -rf posix/shim/.libs posix/shim/_libs
+ 	-rm -rf posix/udf/.libs posix/udf/_libs
  
  distclean-libtool:
  	-rm -f libtool config.lt
*************** clean-generic:
*** 772,779 ****
--- 989,1002 ----
  distclean-generic:
  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ 	-rm -f compat/gnu/lib/$(DEPDIR)/$(am__dirstamp)
+ 	-rm -f compat/gnu/lib/$(am__dirstamp)
+ 	-rm -f compat/gnu/udf/$(DEPDIR)/$(am__dirstamp)
+ 	-rm -f compat/gnu/udf/$(am__dirstamp)
  	-rm -f posix/shim/$(DEPDIR)/$(am__dirstamp)
  	-rm -f posix/shim/$(am__dirstamp)
+ 	-rm -f posix/udf/$(DEPDIR)/$(am__dirstamp)
+ 	-rm -f posix/udf/$(am__dirstamp)
  
  maintainer-clean-generic:
  	@echo "This command is intended for maintainers to use"
*************** uninstall-am: uninstall-nobase_libsubinc
*** 877,882 ****
--- 1100,1115 ----
  .PRECIOUS: Makefile
  
  
+ @BUILD_LIBGCOBOL_TRUE@$(LC_COPYDIR_BUILD)/%.cpy: ${srcdir}/compat/gnu/cpy/%.cpy
+ @BUILD_LIBGCOBOL_TRUE@	mkdir -p `dirname $@`
+ @BUILD_LIBGCOBOL_TRUE@	cp $< $@
+ 
+ @BUILD_LIBGCOBOL_TRUE@.cbl.o:
+ @BUILD_LIBGCOBOL_TRUE@	$(COBC) -o $@ $(COBFLAGS) -c $<
+ 
+ @BUILD_LIBGCOBOL_TRUE@.cbl.lo:
+ @BUILD_LIBGCOBOL_TRUE@	$(LTCOBCOMPILE) $(COBFLAGS) $(MULTIFLAGS) -c -o $@ $<
+ 
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
  # Otherwise a system limit (for SysV at least) may be exceeded.
  .NOEXPORT:
diff -Nrcpad gcc-17-20260524/libgcobol/README gcc-17-20260531/libgcobol/README
*** gcc-17-20260524/libgcobol/README	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/README	Sun May 31 22:32:13 2026
***************
*** 1,8 ****
  The libgcobol is intended for use entirely and solely by executables created
  from COBOL source code by the GCOBOL "COBOL for GCC" front end.
  
! libgcobol.a can be staticly linked in, but it makes for very large binaries. We
! tend to use that for debugging the GCOBOL compiler, and not much else
  
  Many of the functions in the library are called by the executable code generated
  by the GCOBOL compiler through GIMPLE tags, and thus prototypes -- which are 
--- 1,8 ----
  The libgcobol is intended for use entirely and solely by executables created
  from COBOL source code by the GCOBOL "COBOL for GCC" front end.
  
! libgcobol.a can be statically linked in, but it makes for very large binaries.
! We tend to use that for debugging the GCOBOL compiler, and not much else
  
  Many of the functions in the library are called by the executable code generated
  by the GCOBOL compiler through GIMPLE tags, and thus prototypes -- which are 
diff -Nrcpad gcc-17-20260524/libgcobol/aclocal.m4 gcc-17-20260531/libgcobol/aclocal.m4
*** gcc-17-20260524/libgcobol/aclocal.m4	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/aclocal.m4	Sun May 31 22:32:13 2026
*************** AC_SUBST([am__tar])
*** 1167,1172 ****
--- 1167,1173 ----
  AC_SUBST([am__untar])
  ]) # _AM_PROG_TAR
  
+ m4_include([m4/autoconf.m4])
  m4_include([../config/clang-plugin.m4])
  m4_include([../config/depstand.m4])
  m4_include([../config/gcc-plugin.m4])
diff -Nrcpad gcc-17-20260524/libgcobol/charmaps.cc gcc-17-20260531/libgcobol/charmaps.cc
*** gcc-17-20260524/libgcobol/charmaps.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/charmaps.cc	Sun May 31 22:32:13 2026
*************** static encodings_t encodings[] = {
*** 1418,1425 ****
  };
  
  /*
!  * Because this variable is static, the contructor runs before main and is
!  * guaranted to run.
   */
  static class rt_encoding_t
    {
--- 1418,1425 ----
  };
  
  /*
!  * Because this variable is static, the constructor runs before main and is
!  * guaranteed to run.
   */
  static class rt_encoding_t
    {
*************** __gg__iconverter( cbl_encoding_t from,
*** 1534,1539 ****
--- 1534,1542 ----
    static size_t retsize = 1;
    static char *retval = static_cast<char *>(malloc(retsize));
  
+   if( outlength_p ) *outlength_p = 0;
+   if( iconv_retval_p ) *iconv_retval_p = 0;
+ 
    size_t needed = 4*(length+1);
    if( retsize < needed )
      {
*************** __gg__iconverter( cbl_encoding_t from,
*** 1555,1562 ****
      }
    else
      {
!     // We attempt to minimize overhead by using a map to call
!     // iconv_open but once for each from/to pairing.
  
      iconv_t cd;
  
--- 1558,1567 ----
      }
    else
      {
!     // We minimize overhead by using a map to call iconv_open but once for
!     // each from/to pairing.  Do not remove this map.  It was once removed, and
!     // the execution time for Coughlan Listion17-3 went from half a second to
!     // one-and-a-half seconds.
  
      iconv_t cd;
  
*************** __gg__iconverter( cbl_encoding_t from,
*** 1568,1577 ****
      if( it == pairings.end() )
        {
        // This pairing is new to us.
        assert(to   > custom_encoding_e);
        assert(from > custom_encoding_e);
!       cd = iconv_open(__gg__encoding_iconv_name(to),
!                       __gg__encoding_iconv_name(from));
        pairings[pairing] = cd;
        }
      else
--- 1573,1589 ----
      if( it == pairings.end() )
        {
        // This pairing is new to us.
+       static cbl_iconv_t cbl_iconv;
+ 
        assert(to   > custom_encoding_e);
        assert(from > custom_encoding_e);
! 
!       cd = cbl_iconv.open(to, from);
! 
!       if( ! cbl_iconv.valid(cd) )
!         {
!         return retval;
!         }
        pairings[pairing] = cd;
        }
      else
*************** __gg__iconverter( cbl_encoding_t from,
*** 1617,1623 ****
      // When the caller supplies iconv_retval_p, we only try to convert once,
      // because they are telling us they will handle errors.
  
!     // Otherwise, we just keep trying to convert, replacing unconvertable
      // characters with a replacement.
  
      iconv_retval = 1; // This primes the pump:
--- 1629,1635 ----
      // When the caller supplies iconv_retval_p, we only try to convert once,
      // because they are telling us they will handle errors.
  
!     // Otherwise, we just keep trying to convert, replacing unconvertible
      // characters with a replacement.
  
      iconv_retval = 1; // This primes the pump:
*************** __gg__miconverter( cbl_encoding_t from,
*** 1726,1733 ****
    return retval;
    }
  
  static
! std::unordered_map<cbl_encoding_t, charmap_t *>map_of_encodings;
  
  charmap_t *
  __gg__get_charmap(cbl_encoding_t encoding)
--- 1738,1748 ----
    return retval;
    }
  
+ typedef std::unordered_map<cbl_encoding_t, charmap_t *, cbl_encoding_t_hash>
+ cbl_encoding_charmap_map;
+ 
  static
! cbl_encoding_charmap_map map_of_encodings;
  
  charmap_t *
  __gg__get_charmap(cbl_encoding_t encoding)
*************** __gg__get_charmap(cbl_encoding_t encodin
*** 1749,1756 ****
      }
  
    charmap_t *retval;
!   std::unordered_map<cbl_encoding_t, charmap_t *>::const_iterator it
!                           = map_of_encodings.find(encoding);
    if( it != map_of_encodings.end() )
      {
      retval = it->second;
--- 1764,1770 ----
      }
  
    charmap_t *retval;
!   cbl_encoding_charmap_map::const_iterator it = map_of_encodings.find(encoding);
    if( it != map_of_encodings.end() )
      {
      retval = it->second;
diff -Nrcpad gcc-17-20260524/libgcobol/charmaps.h gcc-17-20260531/libgcobol/charmaps.h
*** gcc-17-20260524/libgcobol/charmaps.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/charmaps.h	Sun May 31 22:32:13 2026
***************
*** 31,36 ****
--- 31,37 ----
  #ifndef CHARMAPS_H
  #define CHARMAPS_H
  
+ #include <map>
  #include <string>
  #include <vector>
  
*************** char * __gg__miconverter(cbl_encoding_t
*** 301,310 ****
--- 302,396 ----
  
  
  #define DEFAULT_SOURCE_ENCODING (iconv_CP1252_e)
+ 
+ #if __FreeBSD__
+ #define DEFAULT_32_ENCODING (iconv_UTF_32LE_e)
+ #else
  #define DEFAULT_32_ENCODING (iconv_UTF32LE_e)
+ #endif
+ 
+ #ifndef IN_TARGET_LIBS
+ void error_msg_direct( const char gmsgid[], ... );
+   //// ATTRIBUTE_GCOBOL_DIAG(1, 2);  can't appear here?
+ #endif
  
  class charmap_t;
  
+ /*
+  * cbl_iconv_t calls iconv_open(3) using either names or cbl_encoding_t pairs.
+  * If used in the compiler, failure results in a compiler error message.  If
+  * used in libgcobol, failure raises EC-IMP-ICONV-OPEN.
+  *
+  * The destructor closes all handles successfully opened. 
+  */
+ class cbl_iconv_t {
+   struct iconv_key_t {
+     cbl_encoding_t to, from;
+     const char *tocode, *fromcode; // these are the names used by iconv_open(3)
+     iconv_key_t() : to(no_encoding_e),
+                     from(no_encoding_e),
+                     tocode(NULL),
+                     fromcode(NULL) {}
+     iconv_key_t( cbl_encoding_t to, cbl_encoding_t from )
+       : to(to), from(from)
+       , tocode(__gg__encoding_iconv_name(to))
+       , fromcode(__gg__encoding_iconv_name(from))
+     
+     {}
+     iconv_key_t( const char *tocode, const char *fromcode )
+       : to(__gg__encoding_iconv_type(tocode))
+       , from(__gg__encoding_iconv_type(fromcode))
+       , tocode(tocode)
+       , fromcode(fromcode)
+     {}
+     bool operator<( const iconv_key_t& that ) const {
+       if( from == that.from ) {
+         return to < that.to;
+       }
+       return from < that.from;
+     }
+   };
+   std::map<iconv_key_t, iconv_t> cds;
+  protected:
+   void close_all() {
+     for( auto elem : cds ) {
+       iconv_t cd = elem.second;
+       if( valid(cd) ) {
+         iconv_close(cd);
+       }
+     }
+   }
+ 
+   template <typename T> // T may be const char* or cbl_encoding_t
+   iconv_t open_impl( T tocode, T fromcode ) {
+     iconv_key_t key(tocode, fromcode);
+     auto p = cds.find(key);
+     if( p != cds.end() ) return p->second;
+ 
+     iconv_t cd = iconv_open(key.tocode, key.fromcode);
+     cds[key] = cd; // whether or not failed
+ 
+     if( ! valid(cd) ) {
+ #ifdef IN_TARGET_LIBS
+       exception_raise(ec_imp_iconv_open_e);
+ #else
+       error_msg_direct( "%s: cannot convert to %qs from %qs",
+                         "iconv_open", key.tocode, key.fromcode );
+ #endif
+     }
+     return cd;
+   }
+  public:
+   ~cbl_iconv_t() { close_all(); }
+   static bool valid( iconv_t cd ) { return cd != iconv_t(-1); }
+   iconv_t open( const char *tocode, const char *fromcode ) {
+     return open_impl(tocode, fromcode);
+   }
+   iconv_t open( cbl_encoding_t to, cbl_encoding_t from ) {
+     return open_impl(to, from);
+   }
+ };
+ 
  charmap_t *__gg__get_charmap(cbl_encoding_t encoding);
  
  class charmap_t
*************** class charmap_t
*** 329,335 ****
      std::unordered_map<cbl_char_t, cbl_char_t>m_map_of_encodings;
  
    public:
!     explicit charmap_t(cbl_encoding_t e) : m_encoding(e)
        {
        // We are constructing a new charmap_t from an arbitrary encoding.  We
        // need to figure out how wide it is, its endianness, whether or not
--- 415,427 ----
      std::unordered_map<cbl_char_t, cbl_char_t>m_map_of_encodings;
  
    public:
!     explicit charmap_t(cbl_encoding_t e)
!       : m_encoding(e)
!       , m_is_valid(false)
!       , m_is_big_endian(false)
!       , m_has_bom (false)
!       , m_is_like_utf8(false)
!       , m_stride(1)
        {
        // We are constructing a new charmap_t from an arbitrary encoding.  We
        // need to figure out how wide it is, its endianness, whether or not
*************** class charmap_t
*** 341,350 ****
        size_t outlength = 0;
        char challenge[] = "0";
        char response_[8];
  
!       iconv_t cd = iconv_open(
!                           __gg__encoding_iconv_name(m_encoding),
!                           __gg__encoding_iconv_name(DEFAULT_SOURCE_ENCODING));
        char *inbuf  = challenge;
        char *outbuf = response_;
        size_t inbytesleft = 1;
--- 433,444 ----
        size_t outlength = 0;
        char challenge[] = "0";
        char response_[8];
+       cbl_iconv_t cbl_iconv;
  
!       iconv_t cd = cbl_iconv.open(m_encoding, DEFAULT_SOURCE_ENCODING);
!       if( ! cbl_iconv.valid(cd) ) {
!         return;  // Abandon all hope ye who enter. 
!       }
        char *inbuf  = challenge;
        char *outbuf = response_;
        size_t inbytesleft = 1;
*************** class charmap_t
*** 353,370 ****
                              &inbuf,  &inbytesleft,
                              &outbuf, &outbytesleft);
        outlength = sizeof(response_) - outbytesleft;
-       iconv_close(cd);
        
        const unsigned char *response = 
                                    reinterpret_cast<unsigned char *>(response_);
        
        unsigned char char_0 = 0x00;
  
-       m_is_valid = false;
-       m_has_bom  = false;
-       m_is_big_endian = false;
-       m_is_like_utf8 = false;
- 
        if( outlength == 1 )
          {
          m_stride = 1;
--- 447,458 ----
*************** class charmap_t
*** 441,449 ****
  
        // Let's see if this encoding is UTF-8.  We will do that by converting
        // the single-byte CP1252 code for the Euro symbol to our encoding.
!       cd = iconv_open(
!                     __gg__encoding_iconv_name(iconv_CP1252_e),
!                     __gg__encoding_iconv_name(m_encoding));
        challenge[0] = static_cast<char>(0x80);// This is the CP1252 Euro symbol.
        inbuf  = challenge;
        outbuf = response_;
--- 529,538 ----
  
        // Let's see if this encoding is UTF-8.  We will do that by converting
        // the single-byte CP1252 code for the Euro symbol to our encoding.
!       cd = cbl_iconv.open(iconv_CP1252_e, m_encoding);
!       if( ! cbl_iconv.valid(cd) ) {
!         return;  // Abandon all hope ye who enter. 
!       }
        challenge[0] = static_cast<char>(0x80);// This is the CP1252 Euro symbol.
        inbuf  = challenge;
        outbuf = response_;
*************** class charmap_t
*** 453,459 ****
              &inbuf,  &inbytesleft,
              &outbuf, &outbytesleft);
        outlength = sizeof(response_) - outbytesleft;
-       iconv_close(cd);
        m_is_like_utf8 = (outlength == 3);
        }
  
--- 542,547 ----
diff -Nrcpad gcc-17-20260524/libgcobol/common-defs.h gcc-17-20260531/libgcobol/common-defs.h
*** gcc-17-20260524/libgcobol/common-defs.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/common-defs.h	Sun May 31 22:32:13 2026
*************** enum cbl_field_attr_t : uint64_t {
*** 227,233 ****
    encoded_e         =  0x0020000000, // data.initial matches codeset.encoding
    bool_encoded_e    =  0x0040000000, // data.initial is a boolean string
    hex_encoded_e     =  0x0080000000, // data.initial is a hex-encoded string
!   depends_on_e      =  0x0100000000, // A group hierachy contains a DEPENDING_ON
    initialized_e     =  0x0200000000, // Don't call parser_initialize from parser_symbol_add
    has_value_e       =  0x0400000000, // Flag to hierarchical descendents to ignore .initial
    ieeedec_e         =  0x0800000000, // Indicates a FldFloat is IEEE 754 decimal, rather than binary
--- 227,233 ----
    encoded_e         =  0x0020000000, // data.initial matches codeset.encoding
    bool_encoded_e    =  0x0040000000, // data.initial is a boolean string
    hex_encoded_e     =  0x0080000000, // data.initial is a hex-encoded string
!   depends_on_e      =  0x0100000000, // A group hierarchy contains a DEPENDING_ON
    initialized_e     =  0x0200000000, // Don't call parser_initialize from parser_symbol_add
    has_value_e       =  0x0400000000, // Flag to hierarchical descendents to ignore .initial
    ieeedec_e         =  0x0800000000, // Indicates a FldFloat is IEEE 754 decimal, rather than binary
diff -Nrcpad gcc-17-20260524/libgcobol/compat/README.md gcc-17-20260531/libgcobol/compat/README.md
*** gcc-17-20260524/libgcobol/compat/README.md	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/README.md	Sun May 31 22:32:13 2026
*************** Some of the functions defined here requi
*** 15,25 ****
  At the time of this writing, the functions of greatest concern are
  those that are defined by Rocket Software (formerly MicroFocus) and
  emulated by GnuCOBOL. Those are implemented in
! `gcc/cobol/compat/gnu/lib`.  Any calls they would otherwise make to
  the C library are effected through COBOL POSIX bindings supplied by
! `gcc/cobol/posix/udf`.
  
  As an aid to the developer, a simple example of how these functions
! are used is found in `gcc/cobol/compat/t/smoke.cbl`. It may by
! compiled using `gcc/cobol/compat/Makefile`.
  
--- 15,82 ----
  At the time of this writing, the functions of greatest concern are
  those that are defined by Rocket Software (formerly MicroFocus) and
  emulated by GnuCOBOL. Those are implemented in
! `libgcobol/compat/gnu/lib`.  Any calls they would otherwise make to
  the C library are effected through COBOL POSIX bindings supplied by
! `libgcobol/posix/udf/posix-close.cbl`.
  
  As an aid to the developer, a simple example of how these functions
! are used is found in `libgcobol/compat/t/smoke.cbl`. It may by
! compiled using `libgcobol/compat/t/Makefile`.
! 
! ## Thu Nov 13 17:34:43 2025
! ### Naming conventions
! 
! - For each POSIX function, we have a COBOL UDF posix-FUNC
! - posix/udf/posix-FUNC.cbl defines posix-FUNC
! - posix/cpy/psx-FUNC.cpy is a copybook for posix-FUNC
!   - the abbreviated prefix prevents conflicts and confusion 
!   - I'm not sure this is a good idea --jkl
! - posix/shim/FUNC.cc provides a C function posix_FUNC (note underscore)
! - posix/shim/FUNC.h  provides a C version of psx-FUNC.cpy
!  
! If posix-FUNC.cbl calls a shim function, it must `COPY psx-FUNC` to
! get the required definitions.  We ensure the names and values defined
! in the copybook match those used by the shim.
! 
! ### Status
! 
! Of the MF functions, those needed immediately are 
! 
! Done, not tested:
! - CBL_ALLOC_MEM
! - CBL_CHECK_FILE_EXISTS
! - CBL_DELETE_FILE
! - CBL_FREE_MEM
  
+ Not written:
+ - CBL_GET_PROGRAM_INFO (functions 0 + 2)
+ 
+ ### Tests
+ 
+ We want to write DejaGnu tests that will be activated by 
+ 
+     $ make -C gcc check-cobol
+     
+ 
+ ## Wed Apr 29 15:01:40 2026
+ 
+ The library has been renamed from `libcompat` to `libgcobol_compat_gnu`.
+ It is now automatically injected by the `gcobol` and `gcobc` front-ends based
+ on the path to the installation prefix.
+ 
+ Tests have been implemented for the following functions:
+ 
+ - `CBL_ALLOC_MEM`
+ - `CBL_FREE_MEM`
+ - `CBL_CHECK_FILE_EXIST`
+ - `CBL_CREATE_FILE`
+ - `CBL_DELETE_FILE`
+ - `CBL_OPEN_FILE`
+ - `CBL_CLOSE_FILE`
+ - `CBL_WRITE_FILE`
+ - `CBL_READ_FILE`
+ 
+ `cbltypes.cpy` and `cblproto.cpy` can be now `COPY`ed by programs.
+ As of today, `cbltypes.cpy` only defines the `cblt-fileexist-buf` data type.
+ On the other hand, `cblproto.cpy` provides function prototypes for all of the
+ MF functions currently supported by the library.
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/cpy/cblproto.cpy gcc-17-20260531/libgcobol/compat/gnu/cpy/cblproto.cpy
*** gcc-17-20260524/libgcobol/compat/gnu/cpy/cblproto.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/cpy/cblproto.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,145 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        program-id. CBL_ALLOC_MEM prototype.
+        data division.
+        linkage section.
+        01 mem-pointer usage pointer.
+        01 mem-size pic x(8) comp-5.
+        01 flags pic x(8) comp-5.
+        77 status-code pic x(2) comp-5.
+        procedure division using mem-pointer
+                           by value mem-size
+                           by value flags
+                           returning status-code.
+        end program CBL_ALLOC_MEM.
+ 
+        identification division.
+        program-id. CBL_FREE_MEM prototype.
+        data division.
+        linkage section.
+        01 mem-pointer usage pointer.
+        77 status-code pic x(2) comp-5.
+        procedure division using by value mem-pointer
+                           returning status-code.
+        end program CBL_FREE_MEM.
+ 
+        identification division.
+        program-id. CBL_CREATE_FILE prototype.
+        data division.
+        linkage section.
+        01 filename pic x any length.
+        01 access-mode pic x comp-x.
+        01 deny-mode pic x comp-x.
+        01 device pic x comp-x.
+        01 file-handle pic x(4) comp-5.
+        77 status-code pic x(2) comp-5.
+        procedure division using filename
+                                 access-mode
+                                 deny-mode
+                                 device
+                                 file-handle
+                                 returning status-code.
+        end program CBL_CREATE_FILE.
+ 
+        identification division.
+        program-id. CBL_DELETE_FILE prototype.
+        data division.
+        linkage section.
+        01 filename pic x any length.
+        77 status-code pic x(2) comp-5.
+        procedure division using filename
+                           returning status-code.
+        end program CBL_DELETE_FILE.
+ 
+        identification division.
+        program-id. CBL_OPEN_FILE prototype.
+        data division.
+        linkage section.
+        01 filename pic x any length.
+        01 access-mode pic x comp-x.
+        01 deny-mode pic x comp-x.
+        01 device pic x comp-x.
+        01 file-handle pic x(4) comp-5.
+        77 retcode pic x(2) comp-5.
+        procedure division using filename
+                                 access-mode
+                                 deny-mode
+                                 device
+                                 file-handle
+                                 returning retcode.
+        end program CBL_OPEN_FILE.
+ 
+        identification division.
+        program-id. CBL_READ_FILE prototype.
+        data division.
+        linkage section.
+        01 file-handle pic x(4) comp-5.
+        01 file-offset pic x(8) comp-x.
+        01 byte-count pic x(4) comp-x.
+        01 flags pic x comp-x.
+        01 buffer pic x any length.
+        77 retcode pic x(2) comp-5.
+        procedure division using file-handle
+                                 file-offset
+                                 byte-count
+                                 flags
+                                 buffer
+                                 returning retcode.
+        end program CBL_READ_FILE.
+ 
+        identification division.
+        program-id. CBL_WRITE_FILE prototype.
+        data division.
+        linkage section.
+        01 file-handle pic x(4) comp-5.
+        01 file-offset pic x(8) comp-x.
+        01 byte-count pic x(4) comp-x.
+        01 flags pic x comp-x.
+        01 buffer pic x any length.
+        77 retcode pic x(2) comp-5.
+        procedure division using file-handle
+                                 file-offset
+                                 byte-count
+                                 flags
+                                 buffer
+                                 returning retcode.
+        end program CBL_WRITE_FILE.
+ 
+        identification division.
+        program-id. CBL_CLOSE_FILE prototype.
+        data division.
+        linkage section.
+        01 file-handle pic x(4) comp-5.
+        77 retcode pic x(2) comp-5.
+        procedure division using file-handle
+                           returning retcode.
+        end program CBL_CLOSE_FILE.
+ 
+        identification division.
+        program-id. CBL_CHECK_FILE_EXIST prototype.
+        data division.
+        linkage section.
+         COPY "cbltypes.cpy".
+        01 filename pic x any length.
+        01 file-details type cblt-fileexist-buf.
+        77 status-code pic x(2) comp-5.
+        procedure division using filename
+                                 file-details
+                                 returning status-code.
+        end program CBL_CHECK_FILE_EXIST.
+        >>POP SOURCE FORMAT
+ 
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+         Identification Division.
+         Function-Id. COBRT-FILE-STATUS prototype.
+         Data Division.
+         Linkage Section.
+         01 ERRNO BINARY-LONG.
+         01 FILE-STATUS PIC X(2) COMP-5.
+ 
+         Procedure Division
+             Returning FILE-STATUS.
+        End Function COBRT-FILE-STATUS.
+        >>POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/cpy/cbltypes.cpy gcc-17-20260531/libgcobol/compat/gnu/cpy/cbltypes.cpy
*** gcc-17-20260524/libgcobol/compat/gnu/cpy/cbltypes.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/cpy/cbltypes.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,19 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * The information is returned to the file-info argument, which
+       * is defined as the following 16-byte area:
+ 
+         01  cblt-fileexist-buf    typedef.
+           03  cblte-fe-filesize   PIC X(8) COMP-X.
+           03  cblte-fe-date.
+             05 cblte-fe-day       PIC X COMP-X.
+             05 cblte-fe-month     PIC X COMP-X.
+             05 cblte-fe-year      PIC X(2) comp-x.
+           03  cblte-fe-time.
+             05 cblte-fe-hours     PIC X COMP-X.
+             05 cblte-fe-minutes   PIC X COMP-X.
+             05 cblte-fe-seconds   PIC X COMP-X.
+             05 cblte-fe-hundreths PIC X COMP-X.
+ 
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/cpy/stored-char-length.cpy gcc-17-20260531/libgcobol/compat/gnu/cpy/stored-char-length.cpy
*** gcc-17-20260524/libgcobol/compat/gnu/cpy/stored-char-length.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/cpy/stored-char-length.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,42 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         Identification Division.
+         Function-ID. STORED-CHAR-LENGTH.
+         Data Division.
+         Linkage Section.
+         01 Candidate PIC X Any Length.
+         77 Output-Value    PIC 9(8) COMP-5.
+         
+         Procedure Division using Candidate RETURNING Output-Value.
+         End Function STORED-CHAR-LENGTH.
+ 
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl	Sun May 31 22:32:13 2026
***************
*** 1,19 ****
!        >>PUSH SOURCE FORMAT
!        >>SOURCE FIXED
  
        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden
!       * 
        * CALL "CBL_ALLOC_MEM" using     mem-pointer
        *                      by value  mem-size
        *                      by value  flags
        *                      returning status-code
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
  
         IDENTIFICATION DIVISION.
!        PROGRAM-ID. CBL_ALLOC_MEM. 
  
         DATA DIVISION.
  
--- 1,52 ----
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *
        * CALL "CBL_ALLOC_MEM" using     mem-pointer
        *                      by value  mem-size
        *                      by value  flags
        *                      returning status-code
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!        >>PUSH SOURCE FORMAT
!        >>SOURCE FIXED
!        COPY "cblproto.cpy".
  
         IDENTIFICATION DIVISION.
!        PROGRAM-ID. CBL_ALLOC_MEM.
! 
!        ENVIRONMENT DIVISION.
!        CONFIGURATION SECTION.
!          SOURCE-COMPUTER. Posix
!        >>IF DEBUGGING-MODE IS Defined
!           With Debugging Mode
!        >>END-IF
!        .
  
         DATA DIVISION.
  
***************
*** 21,41 ****
         01  MEMORY-REQUESTED		PIC X(8) COMP-5.
         01  MEMORY-ALLOCATED		USAGE IS POINTER.
         01  FLAGS                	PIC X(8) COMP-5.
!        77  STATUS-CODE                  BINARY-LONG SIGNED VALUE 0.
  
         PROCEDURE DIVISION USING     MEMORY-ALLOCATED,
!                           BY VALUE  MEMORY-REQUESTED, 
                            BY VALUE  FLAGS
                            RETURNING STATUS-CODE.
  
        D     Display 'MEMORY-REQUESTED: ' MEMORY-REQUESTED
        D            ' CHARACTERS INITIALIZED'
  
!            ALLOCATE MEMORY-REQUESTED CHARACTERS INITIALIZED,
                      RETURNING MEMORY-ALLOCATED.
  
!       D    IF MEMORY-ALLOCATED = NULLS THEN MOVE 1 TO STATUS-CODE.
  
             END PROGRAM CBL_ALLOC_MEM.
  
!         >> POP SOURCE FORMAT
\ No newline at end of file
--- 54,74 ----
         01  MEMORY-REQUESTED		PIC X(8) COMP-5.
         01  MEMORY-ALLOCATED		USAGE IS POINTER.
         01  FLAGS                	PIC X(8) COMP-5.
!        77  STATUS-CODE                  PIC X(2) COMP-5 VALUE 0.
  
         PROCEDURE DIVISION USING     MEMORY-ALLOCATED,
!                           BY VALUE  MEMORY-REQUESTED,
                            BY VALUE  FLAGS
                            RETURNING STATUS-CODE.
  
        D     Display 'MEMORY-REQUESTED: ' MEMORY-REQUESTED
        D            ' CHARACTERS INITIALIZED'
  
!            ALLOCATE MEMORY-REQUESTED CHARACTERS
                      RETURNING MEMORY-ALLOCATED.
  
!           IF MEMORY-ALLOCATED = NULL THEN MOVE 1 TO STATUS-CODE.
  
             END PROGRAM CBL_ALLOC_MEM.
  
!        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	Sun May 31 22:32:13 2026
***************
*** 1,13 ****
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
        * Include the posix-stat function
          COPY posix-stat.
! 
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in August 2024
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_CHECK_FILE_EXIST.
--- 1,38 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "cblproto.cpy".
        * Include the posix-stat function
          COPY posix-stat.
!       * Include the posix-localtime function
!         COPY posix-localtime.
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_CHECK_FILE_EXIST.
***************
*** 16,47 ****
         77  FUNC-RETURN-VALUE		PIC 9(8) COMP-5.
         01  STAT-BUFFER.
             COPY statbuf.
         LINKAGE SECTION.
!        77  RETURN-CODE			PIC 9(8) COMP-5.
         01  FILE-PATH 			PIC X ANY LENGTH.
!        01  FI-FILE-INFO.
!            05  FI-FILE-SIZE-IN-BYTES	PIC 9(8) COMP-4.
!            05  FI-FILE-MOD-DATE-TIME.
!                10  FI-FILE-DATE		PIC 9(8) COMP-4.
!                10  FI-FILE-TIME		PIC 9(8) COMP-4.
  
         PROCEDURE DIVISION USING FILE-PATH, FI-FILE-INFO,
!                           RETURNING RETURN-CODE.
             MOVE FUNCTION posix-stat(FILE-PATH, STAT-BUFFER)
               TO FUNC-RETURN-VALUE.
-              
-            IF FUNC-RETURN-VALUE = ZERO
-            THEN
-                MOVE ZERO TO RETURN-CODE
-                MOVE st_size  TO FI-FILE-SIZE-IN-BYTES
-                MOVE st_mtime TO FI-FILE-MOD-DATE-TIME
-            ELSE
-                MOVE 1 TO RETURN-CODE
-                MOVE ZERO TO FI-FILE-SIZE-IN-BYTES
-                MOVE ZERO TO FI-FILE-DATE
-                MOVE ZERO TO FI-FILE-TIME.
  
!            END PROGRAM CBL_CHECK_FILE_EXIST.
  
          >> POP SOURCE FORMAT
! `
\ No newline at end of file
--- 41,95 ----
         77  FUNC-RETURN-VALUE		PIC 9(8) COMP-5.
         01  STAT-BUFFER.
             COPY statbuf.
+        01  TM-BUFFER.
+            COPY tm.
+        01  ERRNO-VAL BINARY-LONG.
         LINKAGE SECTION.
!        77  RETCODE			PIC X(2) COMP-5.
         01  FILE-PATH 			PIC X ANY LENGTH.
!       * see libgcobol/compat/gnu/cpy/cbltypes.cpy
!       * and libgcobol/posix/udf/posix-localtime.cbl
!        COPY cbltypes.
!        01 FI-FILE-INFO TYPE CBLT-FILEEXIST-BUF.
  
         PROCEDURE DIVISION USING FILE-PATH, FI-FILE-INFO,
!                           RETURNING RETCODE.
!        MAIN SECTION.
             MOVE FUNCTION posix-stat(FILE-PATH, STAT-BUFFER)
               TO FUNC-RETURN-VALUE.
  
!            IF FUNC-RETURN-VALUE <> ZERO
!             PERFORM RETURN-ERROR
!             GOBACK
!            END-IF.
! 
!            MOVE st_size TO cblte-fe-filesize.
! 
!            MOVE FUNCTION posix-localtime(address of st_ctime, TM-BUFFER)
!             TO FUNC-RETURN-VALUE.
  
+            IF FUNC-RETURN-VALUE <> ZERO
+             PERFORM RETURN-ERROR
+             GOBACK
+            END-IF.
+ 
+            ADD 1900 TO tm_year.
+            MOVE tm_year TO cblte-fe-year.
+            MOVE tm_mon TO cblte-fe-month.
+            MOVE tm_mday TO cblte-fe-day.
+ 
+            MOVE tm_hour TO cblte-fe-hours.
+            MOVE tm_min TO cblte-fe-minutes.
+            MOVE tm_sec TO cblte-fe-seconds.
+       *> localtime(3) operates on time_t, so no sub-second precision.
+            MOVE 0 TO cblte-fe-hundreths.
+            MOVE 0 TO RETCODE.
+            GOBACK.
+ 
+        RETURN-ERROR SECTION.
+            Move Function COBRT-FILE-STATUS() to RETCODE.
+            EXIT PARAGRAPH.
+ 
+        END PROGRAM CBL_CHECK_FILE_EXIST.
          >> POP SOURCE FORMAT
! `
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,69 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "cblproto.cpy".
+         COPY posix-close.
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_CLOSE_FILE.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+          SOURCE-COMPUTER. Posix
+        >>IF DEBUGGING-MODE IS Defined
+           With Debugging Mode
+        >>END-IF
+        .
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  FUNC-RETURN-VALUE		Binary-Long.
+        77  errno-val            Binary-Long.
+ 
+        LINKAGE SECTION.
+        77  RETCODE			PIC X(2) COMP-5.
+        01  file-handle    	PIC X(4) COMP-5.
+ 
+        PROCEDURE DIVISION USING
+                    By Reference file-handle
+                 RETURNING RETCODE.
+ 
+            MOVE FUNCTION posix-close(file-handle)
+              TO FUNC-RETURN-VALUE.
+ 
+            IF FUNC-RETURN-VALUE < 0
+              Move Function COBRT-FILE-STATUS() to RETCODE
+            ELSE
+              MOVE 0 TO RETCODE
+            END-IF.
+ 
+       D     Display 'CBL_CLOSE_FILE fd: ' file-handle ', rc: ' RETCODE.
+            END PROGRAM CBL_CLOSE_FILE.
+ 
+        >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,111 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "cblproto.cpy".
+         COPY posix-open.
+         COPY psx-open.
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_CREATE_FILE.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+          SOURCE-COMPUTER. Posix
+        >>IF DEBUGGING-MODE IS Defined
+           With Debugging Mode
+        >>END-IF
+        .
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  func-ret             Binary-Long.
+        77  errno-val            Binary-Long.
+        77  lk-mode              PIC 9(8) COMP-5.
+        77  filename-len         PIC 9(4) BINARY VALUE ZERO.
+        01  ws-access-mode       PIC 9(8) COMP-5.
+ 
+        LINKAGE SECTION.
+        77  RETCODE              PIC X(2) COMP-5.
+        01  filename  	          PIC X ANY LENGTH.
+        01  access-mode          PIC x COMP-x.
+        01  deny-mode            PIC x comp-x.  *>  Not supported (must be 0).
+        01  device               PIC x comp-x.  *>  Not supported (must be 0).
+        01  file-handle          PIC X(4) COMP-5.
+ 
+        PROCEDURE DIVISION USING filename,
+                        By Reference access-mode,
+                        By Reference deny-mode,
+                        By Reference device,
+                        By Reference file-handle
+                 RETURNING RETCODE.
+ 
+            MOVE access-mode TO ws-access-mode.
+ 
+            IF ws-access-mode >= 64
+                SUBTRACT 64 FROM ws-access-mode *> Remove large file bit if set
+            END-IF.
+ 
+            COMPUTE filename-len =
+                 FUNCTION LENGTH(FUNCTION TRIM(filename)).
+            MOVE X"00" TO filename(filename-len + 1:1).
+       D     Display 'CBL_CREATE_FILE: filename: [' filename ']'
+       D     Display               'ws-access-mode: ' ws-access-mode ', '
+       D     Display                 'deny-mode: ' deny-mode.
+            EVALUATE ws-access-mode
+              WHEN 1  *> Read only
+                  Move O_RDONLY to ws-access-mode
+              WHEN 2  *> Write only (deny-mode must be 0)
+                  Move O_WRONLY to ws-access-mode
+              WHEN 3  *> Read/write
+                  Move O_RDWR to ws-access-mode
+              WHEN OTHER
+                  Display 'CBL_CREATE_FILE invalid mode: ' ws-access-mode
+                  Move -1 to RETCODE
+                  GOBACK
+             END-EVALUATE.
+ 
+       *    TODO: Validate these settings:
+            Compute ws-access-mode = ws-access-mode + O_CREAT + O_TRUNC.
+            Compute Lk-mode = S_IRUSR + S_IWUSR + S_IRGRP + S_IWGRP.
+ 
+            MOVE FUNCTION posix-open(filename, ws-access-mode, lk-mode)
+              TO func-ret.
+ 
+            If func-ret is < 0
+            Then
+                Move Function COBRT-FILE-STATUS() to RETCODE
+       D        Display 'COBRT-FILE-STATUS returned: ' RETCODE
+            else
+                Move func-ret to file-handle
+                Move 0 to RETCODE
+            end-if.
+ 
+            END PROGRAM CBL_CREATE_FILE.
+ 
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 1,30 ****
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
        * Include the posix-unlink function
          COPY posix-unlink.
  
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
-       *  This function is in the public domain.
-       *  Contributed by 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
- 
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_DELETE_FILE.
         DATA DIVISION.
         WORKING-STORAGE SECTION.
!           77 BUFSIZE USAGE BINARY-LONG.
         LINKAGE SECTION.
!        77  RETURN-CODE			PIC 9(8) COMP-5.
         01  FILE-PATH			PIC X ANY LENGTH.
  
!        PROCEDURE DIVISION USING FILE-PATH, RETURNING RETURN-CODE.
  
!            INSPECT FILE-PATH 
!                    REPLACING TRAILING SPACE BY LOW-VALUE
  
!            MOVE FUNCTION posix-unlink(FILE-PATH) TO RETURN-CODE.
  
             END PROGRAM CBL_DELETE_FILE.
  
!         >> POP SOURCE FORMAT
\ No newline at end of file
--- 1,58 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "cblproto.cpy".
        * Include the posix-unlink function
          COPY posix-unlink.
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_DELETE_FILE.
         DATA DIVISION.
         WORKING-STORAGE SECTION.
!        01 FUNC-RETURN-VAL USAGE IS BINARY-LONG.
!        01 ERRNO-VAL USAGE IS BINARY-LONG.
         LINKAGE SECTION.
!        77  RETCODE			PIC X(2) COMP-5.
         01  FILE-PATH			PIC X ANY LENGTH.
  
!        PROCEDURE DIVISION USING FILE-PATH, RETURNING RETCODE.
  
!            MOVE FUNCTION posix-unlink(FILE-PATH) TO FUNC-RETURN-VAL.
  
!            IF FUNC-RETURN-VAL <> 0
!              Move Function COBRT-FILE-STATUS() to RETCODE
!            ELSE
!              MOVE 0 TO RETCODE
!            END-IF.
  
             END PROGRAM CBL_DELETE_FILE.
  
!         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl	Sun May 31 22:32:13 2026
***************
*** 1,26 ****
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
!       *  This function is in the public domain.
!       *  Contributed by 
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_FREE_MEM.
  
         DATA DIVISION.
         LINKAGE SECTION.
!        77  RETURN-CODE			PIC 9(8) COMP.
         01  MEMORY-ADDRESS		USAGE IS POINTER.
  
!        PROCEDURE DIVISION USING MEMORY-ADDRESS, 
!                       RETURNING RETURN-CODE.
  
             FREE MEMORY-ADDRESS.
!            MOVE ZERO TO RETURN-CODE.
  
             END PROGRAM CBL_FREE_MEM.
  
!         >> POP SOURCE FORMAT
\ No newline at end of file
--- 1,49 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
+        COPY "cblproto.cpy".
         IDENTIFICATION DIVISION.
         PROGRAM-ID. CBL_FREE_MEM.
  
         DATA DIVISION.
         LINKAGE SECTION.
!        77  RETCODE			PIC 9(8) COMP.
         01  MEMORY-ADDRESS		USAGE IS POINTER.
  
!        PROCEDURE DIVISION USING BY VALUE MEMORY-ADDRESS,
!                       RETURNING RETCODE.
  
             FREE MEMORY-ADDRESS.
!            MOVE ZERO TO RETCODE.
  
             END PROGRAM CBL_FREE_MEM.
  
!         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,105 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "cblproto.cpy".
+       * Include the posix_open function
+         COPY posix-open.
+         COPY psx-open.
+         COPY cblproto.
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_OPEN_FILE.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+          SOURCE-COMPUTER. Posix
+        >>IF DEBUGGING-MODE IS Defined
+           With Debugging Mode
+        >>END-IF
+        .
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  errno-val            Binary-Long.
+        01  ws-access-mode PIC 9(8) comp-5.
+        LINKAGE SECTION.
+        01  RETCODE     PIC X(2) COMP-5 VALUE 0.
+        01  REDEFINES RETCODE.
+         03 MSB PIC X.
+         03 LSB BINARY-CHAR.
+        01  filename 	 PIC X ANY LENGTH.
+        01  access-mode PIC X COMP-X.
+        01  deny-mode   PIC X COMP-X.  *>  Not supported (must be 0).
+        01  device      PIC X COMP-X.  *>  Not supported (must be 0).
+        01  file-handle PIC X(4) COMP-5.
+ 
+        PROCEDURE DIVISION USING filename,
+                        By Reference access-mode,
+                        By Reference deny-mode,
+                        By Reference device,
+                        By Reference file-handle
+                 RETURNING RETCODE.
+ 
+            MOVE access-mode TO ws-access-mode.
+ 
+            IF ws-access-mode >= 64
+                SUBTRACT 64 FROM ws-access-mode *> Remove large file bit if set
+            END-IF.
+ 
+       D     Display 'CBL_OPEN_FILE: access-mode: ' access-mode ', '
+       D     Display                  'deny-mode: ' deny-mode.
+            EVALUATE ws-access-mode
+              WHEN 1  *> Read only
+                  Move O_RDONLY to ws-access-mode
+              WHEN 2  *> Write only (deny-mode must be 0)
+                  Move O_WRONLY to ws-access-mode
+              WHEN 3  *> Read/write
+                  Move O_RDWR to ws-access-mode
+              WHEN OTHER
+                  MOVE "9" TO MSB
+                  *> COBRT022 Illegal or impossible access mode for OPEN
+                  MOVE 22 TO LSB
+                  GOBACK
+             END-EVALUATE.
+ 
+            MOVE FUNCTION posix-open(filename, ws-access-mode, deny-mode)
+                TO errno-val.
+       D     Display 'CBL_OPEN_FILE: RETCODE: ' RETCODE.
+            If errno-val is < 0
+            then
+                Move Function COBRT-FILE-STATUS() to RETCODE
+       D        Display 'COBRT-FILE-STATUS returned: ' RETCODE
+            else
+                Move errno-val to file-handle
+                Move 0 to RETCODE
+            end-if.
+ 
+            END PROGRAM CBL_OPEN_FILE.
+ 
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,137 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY posix-read.
+         COPY posix-lseek.
+         COPY posix-fstat.
+         COPY psx-lseek.
+         COPY "cblproto.cpy".
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_READ_FILE.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+          SOURCE-COMPUTER. Posix
+        >>IF DEBUGGING-MODE IS Defined
+           With Debugging Mode
+        >>END-IF
+        .
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  FUNC-RETURN-VALUE		PIC S9(8) COMP-5.
+        77  remaining-bytes      Binary-Long.
+        77  bytes-read           Binary-Long.
+        77  Lk-whence            PIC S9(9) USAGE COMP-5 VALUE 0.
+        77  errno-val            Binary-Long.
+        01  statbuf.
+         COPY statbuf.
+ 
+        LINKAGE SECTION.
+        01  RETCODE     PIC X(2) COMP-5 VALUE 0.
+        01  file-handle    	PIC X(4) COMP-5.
+        01  file-offset    	PIC X(8) COMP-5.
+        01  byte-count     	pic x(4) comp-x.
+        01  flags            PIC X COMP-X.
+        01  buffer           PIC X ANY LENGTH.
+ 
+        PROCEDURE DIVISION USING
+                    By Reference file-handle,
+                    By Reference file-offset,
+                    By Reference byte-count,
+                    By Reference flags,
+                    By Reference buffer
+                 RETURNING RETCODE.
+         MAIN SECTION.
+ 
+            IF flags = 0
+            THEN
+               Move SEEK_SET to Lk-whence
+               MOVE FUNCTION posix-lseek(file-handle,
+                                         file-offset,
+                                         Lk-whence)
+                 TO FUNC-RETURN-VALUE
+ 
+               If FUNC-RETURN-VALUE >= 0
+               Then
+                 Perform ATTEMPT-READ
+               Else
+                 PERFORM RETURN-ERROR
+                 GOBACK
+               End-If
+ 
+            ELSE IF flags = 128
+            THEN
+             MOVE FUNCTION posix-fstat(file-handle, statbuf)
+                               TO FUNC-RETURN-VALUE
+ 
+             IF FUNC-RETURN-VALUE = 0
+             THEN
+               MOVE st_size OF statbuf TO file-offset
+               MOVE 0 TO RETCODE
+             ELSE
+               PERFORM RETURN-ERROR
+               GOBACK
+             END-IF
+            ELSE
+               Display 'Error Invalid value for flags!'
+            END-IF.
+ 
+       D     Display 'CBL_READ_FILE flags: ' flags ', fd: ' file-handle ', byte-count: ' byte-count ', file-offset: ' file-offset ', rc: ' RETCODE.
+            GOBACK.
+ 
+        ATTEMPT-READ SECTION.
+            MOVE byte-count TO remaining-bytes.
+            MOVE 0 TO bytes-read.
+ 
+            PERFORM UNTIL bytes-read >= byte-count
+              MOVE FUNCTION posix-read(file-handle,
+                buffer (bytes-read + 1 : remaining-bytes),
+                remaining-bytes) TO FUNC-RETURN-VALUE
+ 
+              IF FUNC-RETURN-VALUE < 0
+                PERFORM RETURN-ERROR
+                GOBACK
+              ELSE
+                SUBTRACT FUNC-RETURN-VALUE FROM remaining-bytes
+                ADD FUNC-RETURN-VALUE TO bytes-read
+              END-IF
+            END-PERFORM.
+ 
+            MOVE 0 TO RETCODE.
+            EXIT.
+ 
+        RETURN-ERROR SECTION.
+            Move Function COBRT-FILE-STATUS() to RETCODE.
+            EXIT PARAGRAPH.
+ 
+            END PROGRAM CBL_READ_FILE.
+ 
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,151 ----
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+         COPY "cblproto.cpy".
+         COPY posix-write.
+         COPY posix-lseek.
+         COPY psx-lseek.
+         COPY posix-ftruncate.
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_WRITE_FILE.
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+          SOURCE-COMPUTER. Posix
+        >>IF DEBUGGING-MODE IS Defined
+           With Debugging Mode
+        >>END-IF
+        .
+ 
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  null-byte            PIC X(1) VALUE X'00'.
+        77  file-size        		Binary-Long.
+        77 Lk-whence             PIC S9(9) USAGE COMP-5 VALUE 0.
+        77 func-return           Binary-Long.
+        77 errno-val             Binary-Long.
+        77 remaining-bytes       Binary-Long.
+        77 bytes-written         Binary-Long.
+ 
+        LINKAGE SECTION.
+        77  RETCODE			    Binary-Long value 0.
+        01  file-handle    	PIC X(4) COMP-5.
+        01  file-offset    	PIC X(8) COMP-x.
+        01  byte-count     	pic x(4) comp-x.
+        01  flags            pic x comp-x.
+        01  buffer           PIC X ANY LENGTH.
+ 
+        PROCEDURE DIVISION USING
+                    By Reference file-handle,
+                    By Reference file-offset,
+                    By Reference byte-count,
+                    By Reference flags,
+                    By Reference buffer
+                 RETURNING RETCODE.
+         MAIN SECTION.
+            *> special processing to truncate or extend the file
+            If byte-count = 0
+             PERFORM ATTEMPT-TRUNCATE-EXTEND
+            Else
+             PERFORM ATTEMPT-WRITE
+            End-If.
+ 
+            GOBACK.
+ 
+         ATTEMPT-TRUNCATE-EXTEND SECTION.
+           MOVE SEEK_END to Lk-whence.
+           MOVE FUNCTION posix-lseek(file-handle,
+                                     0,
+                                     Lk-whence)
+                                     TO file-size.
+ 
+           If file-size < 0
+             Perform RETURN-ERROR
+             Goback
+           End-If.
+ 
+           If file-size > file-offset  *> truncate the file
+             MOVE FUNCTION posix-ftruncate(file-handle,
+                                           file-offset)
+                                           TO func-return
+ 
+             If func-return < 0
+               Perform RETURN-ERROR
+               Goback
+             End-If
+           Else If file-size < file-offset *> extend the file
+             Move SEEK_SET to Lk-whence
+             MOVE FUNCTION posix-lseek(file-handle,
+                                       file-offset,
+                                       Lk-whence)
+                                       TO func-return
+ 
+             If func-return < 0
+               Perform RETURN-ERROR
+               Goback
+             End-If
+ 
+             MOVE 1 to byte-count
+             Set Address Of buffer To Address Of null-byte
+             Perform ATTEMPT-WRITE
+           End-If
+ 
+           Exit Paragraph.
+ 
+         ATTEMPT-WRITE SECTION.
+           *> posix-write might return byte-count or smaller.
+           *> Since CBL_WRITE_FILE must not return on partial writes,
+           *> it must call posix-write multiple times if a partial
+           *> write occurs.
+           MOVE byte-count TO remaining-bytes.
+           MOVE 0 TO bytes-written.
+ 
+           PERFORM UNTIL bytes-written >= byte-count
+             MOVE FUNCTION posix-write(file-handle,
+               buffer (bytes-written + 1 : remaining-bytes),
+               remaining-bytes) TO RETCODE
+ 
+             IF RETCODE < 0
+               PERFORM RETURN-ERROR
+               GOBACK
+             ELSE
+               SUBTRACT RETCODE FROM remaining-bytes
+               ADD RETCODE TO bytes-written
+             END-IF
+           END-PERFORM.
+ 
+           MOVE 0 TO RETCODE.
+           EXIT PARAGRAPH.
+ 
+        RETURN-ERROR SECTION.
+           Move Function COBRT-FILE-STATUS() to RETCODE.
+           EXIT PARAGRAPH.
+ 
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_alloc_mem.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_alloc_mem.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_alloc_mem.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_alloc_mem.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,86 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_ALLOC_MEM 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_ALLOC_MEM
+ .Nd allocate memory
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq "CBL_ALLOC_MEM"
+ using
+ .Ar pointer
+ by value
+ .Ar size
+ by value
+ .Ar flags
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Dynamically allocate memory of
+ .Ar size
+ bytes to
+ .Ar pointer .
+ This function dates from before \*[lang] had an 
+ .Sy ALLOCATE 
+ statement.  Parameters:
+ .Pp
+ .Bl -tag -compact -width pointer
+ .It Ar pointer
+ .Sy "USAGE POINTER" .
+ Must be level 01.	
+ .It Ar size
+ .Sy "PIC X(8) COMP-5" .
+ .It Ar flags
+ .Sy "PIC X(8) COMP-5" .
+ This parameter is ignored. 
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.
+ .
+ .Sh SEE ALSO
+ .Xr CBL_FREE_MEM
+ .
+ .Sh NOTES
+ .Nm
+ is implemented in terms of the
+ .Sy ALLOCATE
+ statement.  
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_alloc_mem.cbl3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_alloc_mem.cbl3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_alloc_mem.cbl3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_alloc_mem.cbl3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,9 ----
+ 
+ 
+ cbl_close_file.3
+ cbl_create_file.3
+ cbl_delete_file.3
+ 
+ cbl_open_file.3
+ cbl_read_file.3
+ cbl_write_file.3
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_check_file_exist.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_check_file_exist.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_check_file_exist.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_check_file_exist.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,94 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_CHECK_FILE_EXIST 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_CHECK_FILE_EXIST
+ .Nd Verify a file exists and when it was last modified.
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic COPY CBL_CHECK_FILE_EXIST
+ .Pp
+ .Ic call Dq "CBL_CHECK_FILE_EXIST"
+ using
+ .Ar filename
+ .Ar details
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width filename
+ .It Ar filename
+ is an OS filename.
+ .Ar filename
+ is interpreted verbatim, relative to the current working directory
+ unless it is an absolute pathname.  No filename globbing is applied.
+ .Ar filename
+ may contain spaces.  
+ .It Ar details
+ an instance of type
+ .Ar cblt-fileexist-buf ,
+ defined in the
+ .Ar cbltypes
+ copybook as:
+ .Bd -literal
+        01  cblt-fileexist-buf    typedef.
+          03  cblte-fe-filesize   PIC X(8) COMP-X.
+          03  cblte-fe-date.
+            05 cblte-fe-day       PIC X COMP-X.
+            05 cblte-fe-month     PIC X COMP-X.
+            05 cblte-fe-year      PIC X(2) comp-x.
+          03  cblte-fe-time.
+            05 cblte-fe-hours     PIC X COMP-X.
+            05 cblte-fe-minutes   PIC X COMP-X.
+            05 cblte-fe-seconds   PIC X COMP-X.
+            05 cblte-fe-hundreths PIC X COMP-X.
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_close_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_close_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_close_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_close_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,72 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_CLOSE_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_CLOSE_FILE
+ .Nd Close an open file
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq CBL_CLOSE_FILE
+ using  
+ .Ar file-handle
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width file-handle
+ .It Ar file-handle
+ .Sy "PIC X(4) COMP-5" ,
+ was opened with
+ .Ic CBL_CREATE_FILE
+ or
+ .Ic CBL_OPEN_FILE .
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .\" CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_create_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_create_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_create_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_create_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,99 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_CREATE_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_CREATE_FILE
+ .Nd create a new file and open it
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq "CBL_CREATE_FILE"
+ using
+ .Ar filename
+ .Ar access-mode
+ .Ar deny-mode
+ .Ar device
+ .Ar file-handle
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width access-mode-
+ .It Ar filename
+ is an OS filename.
+ .Ar filename
+ is interpreted verbatim, relative to the current working directory
+ unless it is an absolute pathname.  No filename globbing is applied.
+ .Ar filename
+ may contain spaces.  
+ .It Ar access-mode
+ .Bl -tag -compact
+ .It Value
+ Mode
+ .It 1
+ Read only
+ .It 2
+ Write only
+ .It 3
+ Read/write
+ .El
+ .It Ar deny-mode
+ ignored, functionality not implemented
+ .It Ar device
+ ignored
+ .It Ar file-handle
+ is an output parameter.  On success, it holds a file handle that can
+ be used for other byte-stream operations. 
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .Xr CBL_CLOSE_FILE
+ .\" CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh BUGS
+ There is no way to define the permission mask for the new file.
+ 
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_delete_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_delete_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_delete_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_delete_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,76 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_DELETE_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_DELETE_FILE
+ .Nd delete a file
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq CBL_DELETE_FILE
+ using
+ .Ar filename
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width filename
+ .It Ar filename
+ is an OS filename.
+ .Ar filename
+ is interpreted verbatim, relative to the current working directory
+ unless it is an absolute pathname.  No filename globbing is applied.
+ .Ar filename
+ may contain spaces.  
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .Xr CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .\" CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_free_mem.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_free_mem.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_free_mem.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_free_mem.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,74 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_FREE_MEM 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_FREE_MEM
+ .Nd free memory
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq "CBL_FREE_MEM"
+ using
+ by value
+ .Ar pointer
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Free memory allocated by
+ .Sy CBL_ALLOC_MEM .
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width pointer
+ .It Ar pointer
+ .Sy "USAGE POINTER" .
+ Must be level 01.	
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_ALLOC_MEM
+ .
+ .Sh NOTES
+ .Nm
+ is implemented in terms of the
+ .Sy FREE
+ statement.  
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_open_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_open_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_open_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_open_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,99 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_OPEN_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_OPEN_FILE
+ .Nd open an existing file
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .Ic call Dq "CBL_OPEN_FILE"
+ using
+ .Ar filename
+ .Ar access-mode
+ .Ar deny-mode
+ .Ar device
+ .Ar file-handle
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -compact -width access-mode-
+ .It Ar filename
+ is an OS filename.
+ .Ar filename
+ is interpreted verbatim, relative to the current working directory
+ unless it is an absolute pathname.  No filename globbing is applied.
+ .Ar filename
+ may contain spaces.  
+ .It Ar access-mode
+ .Bl -tag -compact
+ .It Value
+ Mode
+ .It 1
+ Read only
+ .It 2
+ Write only
+ .It 3
+ Read/write
+ .El
+ .It Ar deny-mode
+ ignored, functionality not implemented
+ .It Ar device
+ ignored
+ .It Ar file-handle
+ is an output parameter.  On success, it holds a file handle that can
+ be used for other byte-stream operations. 
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .Xr CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .\" CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh BUGS
+ There is no way to define the permission mask for the new file.
+ 
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_read_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_read_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_read_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_read_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,103 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_READ_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_READ_FILE
+ .Nd read bytes from a file
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .\" Ic COPY CBL_READ_FILE
+ .Ic call Dq "CBL_READ_FILE"
+ using
+ .Ar file-handle
+ .Ar file-offset
+ .Ar byte-count
+ .Ar flags
+ .Ar buffer
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -width file-handle
+ .It Ar file-handle
+ .Sy "PIC X(4) COMP-5" ,
+ was opened with
+ .Ic CBL_CREATE_FILE
+ or
+ .Ic CBL_OPEN_FILE
+ .
+ .It Ar file-offset 
+ .\" should be either X(8) COMP-X or 9(8) COMP-5
+ .Sy "PIC X(8) COMP-5"
+ [sic]
+ is the file offset where the read begins.
+ .It Ar byte-count
+ .Sy PIC X(4) COMP-X
+ is the number of bytes to read.
+ .It Ar flags
+ .Sy "PIC X COMP-X"
+ if set to 128, prevents a read operation. Instead the size of the
+ .Ar file-handle
+ is written to
+ .Ar file-offset .
+ .It Ar buffer
+ .Sy PIC X Ns Pq Ar n
+ is an alphanumeric data item of
+ .Ar n
+ bytes.
+ 
+ 
+ 
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .Xr CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .\" CBL_READ_FILE
+ .Xr CBL_WRITE_FILE
+ .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_write_file.3 gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_write_file.3
*** gcc-17-20260524/libgcobol/compat/gnu/lib/cbl_write_file.3	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/lib/cbl_write_file.3	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,96 ----
+ .ds lang COBOL
+ .ds gcobol GCC\ \*[lang]\ Front-end
+ .Dd \& March 2026
+ .Dt CBL_WRITE_FILE 3\& "\&GNU Compatibility Library"
+ .Os Linux
+ .Sh NAME
+ .Nm CBL_WRITE_FILE
+ .Nd write bytes from a file
+ .Sh LIBRARY
+ libgcobol_compat_gnu
+ .
+ .Sh SYNOPSIS
+ .\" Ic COPY CBL_WRITE_FILE
+ .Ic call Dq "CBL_WRITE_FILE"
+ using
+ .Ar file-handle
+ .Ar file-offset
+ .Ar byte-count
+ .Ar flags
+ .Ar buffer
+ returning
+ .Ar status
+ .
+ .Sh DESCRIPTION
+ Parameters:
+ .Pp
+ .Bl -tag -width file-handle
+ .It Ar file-handle
+ .Sy "PIC X(4) COMP-5" ,
+ was opened with
+ .Ic CBL_CREATE_FILE
+ or
+ .Ic CBL_OPEN_FILE
+ .
+ .It Ar file-offset 
+ .\" should be either X(8) COMP-X or 9(8) COMP-5
+ .Sy "PIC X(8) COMP-5"
+ [sic]
+ is the file offset where the write begins.
+ .It Ar byte-count
+ .Sy PIC X(4) COMP-X
+ is the number of bytes to write.
+ .It Ar flags
+ ignored
+ .It Ar buffer
+ .Sy PIC X Ns Pq Ar n
+ is an alphanumeric data item of
+ .Ar n
+ bytes.
+ .El
+ .
+ .Sh RETURN STATUS
+ .Nm
+ returns
+ .Sy "PIC X(2) COMP-5" .
+ The return status is 0 on success, else nonzero.  
+ .
+ .Sh SEE ALSO
+ .Xr CBL_CHECK_FILE_EXIST
+ .Xr CBL_CLOSE_FILE
+ .Xr CBL_CREATE_FILE
+ .Xr CBL_DELETE_FILE
+ .Xr CBL_OPEN_FILE
+ .Xr CBL_READ_FILE
+ .\" CBL_WRITE_FILE
+ .
+ .Sh COPYRIGHT
+ .Bd -unfilled -indent
+ Copyright (c) 2021-2026 Symas Corporation
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ 
+ * Redistributions of source code must retain the above copyright
+ 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
+ in the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the Symas Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ .Ed
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/udf/cobrt-file-status.cbl gcc-17-20260531/libgcobol/compat/gnu/udf/cobrt-file-status.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/udf/cobrt-file-status.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/compat/gnu/udf/cobrt-file-status.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,21 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+         IDENTIFICATION DIVISION.
+         FUNCTION-ID. COBRT-FILE-STATUS.
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+         01 FsErrno CONSTANT 1000000.
+         LINKAGE SECTION.
+         01 ERRNO BINARY-LONG.
+         01 FILE-STATUS PIC X(2) COMP-5.
+         01 REDEFINES FILE-STATUS.
+           03 MSB PIC X.
+           03 LSB BINARY-CHAR.
+ 
+         PROCEDURE DIVISION
+             RETURNING FILE-STATUS.
+           CALL "__compat_file_status_word" USING
+               by Value FsErrno, FILE-STATUS
+               Returning FILE-STATUS.
+           END FUNCTION COBRT-FILE-STATUS.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/compat/gnu/udf/stored-char-length.cbl gcc-17-20260531/libgcobol/compat/gnu/udf/stored-char-length.cbl
*** gcc-17-20260524/libgcobol/compat/gnu/udf/stored-char-length.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/gnu/udf/stored-char-length.cbl	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in August 2024
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
          Identification Division.
          Function-ID. STORED-CHAR-LENGTH.
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
          Identification Division.
          Function-ID. STORED-CHAR-LENGTH.
diff -Nrcpad gcc-17-20260524/libgcobol/compat/t/Makefile gcc-17-20260531/libgcobol/compat/t/Makefile
*** gcc-17-20260524/libgcobol/compat/t/Makefile	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/t/Makefile	Sun May 31 22:32:13 2026
***************
*** 1,21 ****
  #
! # A simple Makefile to demonstrate how the compat/lib programs are used.  
  #
  
  COBC = gcobol -g -O0
  
! INCLUDE = ../../posix/cpy  ../../posix/udf 
  
  FLAGS = -dialect mf $(addprefix -I,$(INCLUDE))
  
! COMPAT = $(subst .cbl,.o,$(wildcard ../lib/gnu/*.cbl))
  
! test: smoke 
  	./$^
  
! smoke: smoke.cbl $(COMPAT)
! 	$(ENV) $(COBC) -o $@ \
! 		$(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
  
  %.o : %.cbl
  	$(ENV) $(COBC) -c -o $@ $(FLAGS) $(COBCFLAGS) $^
--- 1,41 ----
  #
! # A simple Makefile to demonstrate how the compat/lib programs are used.
  #
  
  COBC = gcobol -g -O0
+ CFLAGS = -fPIC
+ COBCFLAGS = -fPIC -ffixed-form
  
! INCLUDE = ../../posix/cpy  ../../posix/udf ../gnu/cpy
  
  FLAGS = -dialect mf $(addprefix -I,$(INCLUDE))
  
! COMPAT = $(subst .cbl,.o,$(wildcard ../gnu/lib/*.cbl)) \
! 	$(subst .cbl,.o,$(wildcard ../gnu/udf/*.cbl)) \
! 	$(subst .c,.o,$(wildcard ../gnu/udf/*.c))
  
! POSIXOBJS = $(subst .cbl,.o,$(wildcard ../../posix/udf/posix-*.cbl))
! 
! test: smoke
  	./$^
  
! smoke: smoke.cbl libcompat.so libposix.so
! 	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $< $(LDFLAGS) \
! 		-L. -lcompat -lposix -Wl,-rpath=$(PWD)
! 
! smoke-old: smoke.cbl $(COMPAT)
! 	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
! 
! byte: byte-stream-test.cbl libcompat.so libposix.so
! 	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $< $(LDFLAGS) \
!                 -L. -lcompat -lposix -Wl,-rpath=$(PWD)
! 
! libcompat.so: $(COMPAT)
! 	$(ENV) $(COBC) -o $@ -shared $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $(COMPAT)
! 
! libposix.so: $(POSIXOBJS)
! 	$(ENV) $(COBC) -o $@ -shared -ffixed-form \
! 	       $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
  
  %.o : %.cbl
  	$(ENV) $(COBC) -c -o $@ $(FLAGS) $(COBCFLAGS) $^
*************** smoke: smoke.cbl $(COMPAT)
*** 23,27 ****
  % : %.cbl
  	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
  
  
! 
--- 43,51 ----
  % : %.cbl
  	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
  
+ echo:
+ 	@echo wildcard is $(wildcard ../lib/gnu/*.cbl)
+ 	@echo COMPAT is $(COMPAT)
  
! clean:
! 	rm -f smoke libcompat.so libposix.so $(COMPAT) $(POSIXOBJS)
diff -Nrcpad gcc-17-20260524/libgcobol/compat/t/smoke.cbl gcc-17-20260531/libgcobol/compat/t/smoke.cbl
*** gcc-17-20260524/libgcobol/compat/t/smoke.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/compat/t/smoke.cbl	Sun May 31 22:32:13 2026
***************
*** 1,8 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
          COPY posix-errno.
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. gcobol-smoke-test.
--- 1,32 ----
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
          COPY posix-errno.
+         COPY psx-open.
  
         IDENTIFICATION DIVISION.
         PROGRAM-ID. gcobol-smoke-test.
***************
*** 25,34 ****
  
         DATA DIVISION.
         FILE SECTION.
!       * FD not required per ISO but fails under gcobol. 
          FD EXPENDABLE.
            01 Extraneous PIC X.
!         
         WORKING-STORAGE SECTION.
          77 File-Name   PIC X(100) VALUE FILENAME.
          77 status-code BINARY-LONG SIGNED.
--- 49,58 ----
  
         DATA DIVISION.
         FILE SECTION.
!       * FD not required per ISO but fails under gcobol.
          FD EXPENDABLE.
            01 Extraneous PIC X.
! 
         WORKING-STORAGE SECTION.
          77 File-Name   PIC X(100) VALUE FILENAME.
          77 status-code BINARY-LONG SIGNED.
***************
*** 51,60 ****
              05 Mod-SS              PIC 9(2)   COMP.
              05 FILLER              PIC 9(2)   COMP. *> Always 00
  
         PROCEDURE DIVISION.
  
          Display 'Allocating ' mem-size ' bytes ... ' with No Advancing.
!         
          Call "CBL_ALLOC_MEM" using
                                 mem-pointer
                       by value  mem-size
--- 75,107 ----
              05 Mod-SS              PIC 9(2)   COMP.
              05 FILLER              PIC 9(2)   COMP. *> Always 00
  
+       * CBL_OPEN_FILE
+         77  access-mode            PIC 9(8) COMP-5.
+         77  deny-mode              PIC 9(8) COMP-5.
+         77  File-Name2             PIC X(100) VALUE FILENAME.
+         77  device                 PIC X COMP-X VALUE 0.
+         77  file-handle            PIC X(4) COMP-5.
+ 
+       * CBL_READ_FILE
+        >>Define MAX_FILE_SIZE as 50000
+         77  WS-BYTE-CNT            Binary-Long.
+         77 File-Buffer             PIC X(MAX_FILE_SIZE).
+         77 File-Offset             PIC S9(8) COMP-5.
+         77 File-Flags              PIC X COMP-X VALUE 0.
+         77 File-COUNT              PIC 9(8) COMP-5 VALUE MAX_FILE_SIZE.
+ 
+       * CBL_CREATE_FILE
+         77  File-Name3             PIC X(100) VALUE FILENAME.
+         77  filename-len           PIC 9(4) BINARY VALUE ZERO.
+         77  errno-val              Binary-Long.
+       * CBL_WRITE_FILE
+         01 Actual-Data-Len         PIC 9(4) BINARY VALUE ZERO.
+         01 Newline                 PIC X VALUE X"0A".
+ 
         PROCEDURE DIVISION.
  
          Display 'Allocating ' mem-size ' bytes ... ' with No Advancing.
! 
          Call "CBL_ALLOC_MEM" using
                                 mem-pointer
                       by value  mem-size
***************
*** 62,70 ****
                       returning status-code.
  
          Display 'CBL_ALLOC_MEM        status: ' status-code.
!         
!         Display 'Checking on  ' Function Trim(File-Name) ' ...                 '
!                 with No Advancing.
  
          Call "CBL_CHECK_FILE_EXIST"  using    File-Name
                                       file-info
--- 109,117 ----
                       returning status-code.
  
          Display 'CBL_ALLOC_MEM        status: ' status-code.
! 
!         Display 'Checking on  ' Function Trim(File-Name)
!           ' ...                 ' with No Advancing.
  
          Call "CBL_CHECK_FILE_EXIST"  using    File-Name
                                       file-info
***************
*** 72,79 ****
  
          Display 'CBL_CHECK_FILE_EXIST status: ' status-code.
  
!         Display 'Deleting     ' Function Trim(File-Name) ' ...                 '
!                 with No Advancing.
  
          Call "CBL_DELETE_FILE" using File-Name
                       returning status-code.
--- 119,126 ----
  
          Display 'CBL_CHECK_FILE_EXIST status: ' status-code.
  
!         Display 'Deleting     ' Function Trim(File-Name)
!           ' ...                 ' with No Advancing.
  
          Call "CBL_DELETE_FILE" using File-Name
                       returning status-code.
***************
*** 87,95 ****
  
          Display 'CBL_FREE_MEM         status: ' status-code.
  
!         >>IF CBL_READ_FILE is defined
!         Call "CBL_READ_FILE" 
!          using handle, offset, count, flags, buf
!          returning status-code.
!         >>END-IF
  
--- 134,282 ----
  
          Display 'CBL_FREE_MEM         status: ' status-code.
  
!       * Insert new tests for open, read and write file:
!         Move S_IRWXU TO deny-mode.
!       *  Move 1 to access-mode.  *> read only
!       *  Move 65 to access-mode. *> read only
!       *  Move 2 to access-mode.  *> write only
!       *  Move 67 to access-mode.  *> write only
!         Move 3 to access-mode.  *> read/write
!       *  Move 67 to access-mode.  *> read/write
!         Move "/tmp/foo5.txt" to File-Name2.
!       * >>IF CBL_OPEN_FILE is defined
!         Call "CBL_OPEN_FILE" using File-Name2, access-mode, deny-mode,
!           device, file-handle returning status-code.
!       * >>END-IF
!         Display 'CBL_OPEN_FILE file-handle: ' file-handle
!           ', status-code: ' status-code.
  
+       * >>IF CBL_READ_FILE is defined
+ 
+         If status-code = 0
+         Then
+       * Get input file size:
+           Move 128 to File-Flags
+           Move 0 to File-Offset
+           perform DO_READ.
+         If status-code = 0
+         Then
+           MOVE File-Offset to File-COUNT
+           Display 'CBL_READ_FILE size: ' File-COUNT
+         Else
+           Display 'CBL_READ_FILE Cannot determine file size or empty'
+         End-if.
+ 
+       * Read the file:
+         If status-code = 0
+         Then
+           Move 0 to File-Flags
+           Move 0 to File-Offset
+           perform DO_READ
+ 
+           Move status-code to File-Offset
+           Display 'Do 2nd read: '
+           perform DO_READ
+         End-if.
+       * >>END-IF
+ 
+       * >>IF CBL_CREATE_FILE is defined
+         Move "/tmp/foo7.txt" to File-Name3.
+         Move -1 to file-handle.
+         perform DO_CREATE.
+       * >>END-IF
+ 
+       * >>IF CBL_WRITE_FILE is defined
+         MOVE SPACES TO File-Buffer
+         MOVE
+             "abcdefghijklmnopqrstuvwxyz" &
+             "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
+             "0123456789" &
+             "~!@#$%^&*()_+[]{};:,<.>/?~`"
+         TO File-Buffer.
+ 
+         Inspect File-Buffer Tallying Actual-Data-Len For Characters
+           Before Initial " ".
+         Display "file buffer Actual data length: " Actual-Data-Len.
+         Add 1 TO Actual-Data-Len.
+         Move Newline TO File-Buffer (Actual-Data-Len:1).
+         Move Actual-Data-Len to File-COUNT.
+         Move Actual-Data-Len to File-COUNT.
+ 
+       * normal write:
+         perform DO_WRITE.
+       * test truncate:
+       *  Move 0 to File-Count.
+       *  Move 100 to File-Offset.
+       *  perform DO_WRITE.
+ 
+       * test extend:
+       *  Move 1000 to File-Offset.
+       *  perform DO_WRITE.
+       * >>END-IF
+ 
+         Call "CBL_CHECK_FILE_EXIST"  using    File-Name2
+                                      file-info
+                            returning status-code.
+         Display 'CBL_CHECK_FILE_EXIST 2 status: ' status-code.
+ 
+       * create a new file empty file:=
+       *  Move 0 to access-mode.  *> create
+       *  Move S_IRWXU TO deny-mode.
+       *  Move "/tmp/foo6.txt" to File-Name2.
+       *  Call "CBL_OPEN_FILE" using File-Name2, access-mode, deny-mode,
+       * device, file-handle
+       *   returning status-code.
+ 
+       * write to it:
+       *  MOVE SPACES TO File-Buffer
+       *  Move "Every Good Programmer Deserves COBOL." to File-Buffer.
+       *  Inspect File-Buffer Tallying Actual-Data-Len For Characters
+       *   Before Initial " ".
+       *  Display "file buffer Actual data length: " Actual-Data-Len.
+       *  Add 1 TO Actual-Data-Len.
+       *  Move Newline TO File-Buffer (Actual-Data-Len:1).
+       *  Move Actual-Data-Len to File-COUNT.
+       *  Move 37 to File-COUNT.
+       * normal write:
+       *  perform DO_WRITE.
+ 
+       * read it:
+ 
+         GOBACK.
+ 
+        DO_CREATE.
+       * TODO: this probably should be handled in the API:
+            COMPUTE filename-len = FUNCTION
+             LENGTH(FUNCTION TRIM(File-Name3)).
+            MOVE X"00" TO File-Name3(filename-len + 1:1).
+ 
+            Call "CBL_CREATE_FILE"
+              using File-Name3, access-mode, deny-mode, device,
+                file-handle
+              returning status-code.
+            if return-code is less than 0
+              call "posix_errno" using File-Name returning errno-val
+              display "CBL_CREATE_FILE failed with errno: " errno-val.
+ 
+            Display 'CBL_CREATE_FILE status-code: ' status-code
+             ', file-handle: ' file-handle.
+            exit.
+ 
+        DO_WRITE.
+            Call "CBL_WRITE_FILE"
+              using file-handle, File-Offset, File-COUNT, File-Flags,
+               By reference File-Buffer
+              returning status-code.
+            Display 'CBL_WRITE_FILE status-code: ' status-code
+            ', buffer [' Function Trim(File-Buffer) ']'.
+            exit.
+ 
+        DO_READ.
+            MOVE SPACES TO File-Buffer
+            Call "CBL_READ_FILE"
+              using file-handle, File-Offset, By reference File-COUNT,
+               File-Flags, By reference File-Buffer
+            returning status-code.
+            Display 'CBL_READ_FILE status-code: ' status-code
+             ', buffer [' FUNCTION TRIM(File-Buffer)']'.
+            exit.
diff -Nrcpad gcc-17-20260524/libgcobol/configure gcc-17-20260531/libgcobol/configure
*** gcc-17-20260524/libgcobol/configure	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/configure	Sun May 31 22:32:13 2026
*************** LTLIBICONV
*** 654,659 ****
--- 654,661 ----
  LIBICONV
  toolexeclibdir
  toolexecdir
+ COBFLAGS
+ COBC
  CXXCPP
  am__fastdepCXX_FALSE
  am__fastdepCXX_TRUE
*************** Some influential environment variables:
*** 1502,1507 ****
--- 1504,1511 ----
    CXX         C++ compiler command
    CXXFLAGS    C++ compiler flags
    CXXCPP      C++ preprocessor
+   COBC        COBOL compiler command
+   COBFLAGS    COBOL compiler flags
  
  Use these variables to override the choices made by `configure' or to help
  it to find libraries and programs with nonstandard names/locations.
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 2945,2950 ****
--- 2949,2956 ----
  ac_config_headers="$ac_config_headers config.h"
  
  
+ 
+ 
  # Do not delete or change the following two lines.  For why, see
  # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
  ac_aux_dir=
*************** else
*** 12214,12220 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 12217 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 12220,12226 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 12223 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 12320,12326 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 12323 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 12326,12332 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 12329 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** ac_link='$CXX -o conftest$ac_exeext $CXX
*** 16208,16213 ****
--- 16214,16445 ----
  ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
  
  
+ ac_ext=cbl
+ ac_compile='$COBC -c $COBFLAGS conftest.$ac_ext >&5'
+ ac_link='$COBC -o conftest$ac_exeext $COBFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=yes
+ if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}gcobol", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcobol; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_COBC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$COBC"; then
+   ac_cv_prog_COBC="$COBC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_COBC="${ac_tool_prefix}gcobol"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ COBC=$ac_cv_prog_COBC
+ if test -n "$COBC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COBC" >&5
+ $as_echo "$COBC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ if test -z "$ac_cv_prog_COBC"; then
+   ac_ct_COBC=$COBC
+   # Extract the first word of "gcobol", so it can be a program name with args.
+ set dummy gcobol; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_ac_ct_COBC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$ac_ct_COBC"; then
+   ac_cv_prog_ac_ct_COBC="$ac_ct_COBC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_ac_ct_COBC="gcobol"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ ac_ct_COBC=$ac_cv_prog_ac_ct_COBC
+ if test -n "$ac_ct_COBC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_COBC" >&5
+ $as_echo "$ac_ct_COBC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+   if test "x$ac_ct_COBC" = x; then
+     COBC=""
+   else
+     case $cross_compiling:$ac_tool_warned in
+ yes:)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+ $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+     COBC=$ac_ct_COBC
+   fi
+ else
+   COBC="$ac_cv_prog_COBC"
+ fi
+ 
+ if test -z "$COBC"; then
+   if test -n "$ac_tool_prefix"; then
+     # Extract the first word of "${ac_tool_prefix}gcobol", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcobol; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_COBC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$COBC"; then
+   ac_cv_prog_COBC="$COBC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_COBC="$ac_tool_prefix}gcobol"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ COBC=$ac_cv_prog_COBC
+ if test -n "$COBC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COBC" >&5
+ $as_echo "$COBC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   fi
+ fi
+ if test -z "$COBC"; then
+   # Extract the first word of "gcobol", so it can be a program name with args.
+ set dummy gcobol; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_COBC+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$COBC"; then
+   ac_cv_prog_COBC="$COBC" # Let the user override the test.
+ else
+   ac_prog_rejected=no
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     if test "$as_dir/$ac_word$ac_exec_ext" = "false"; then
+        ac_prog_rejected=yes
+        continue
+      fi
+     ac_cv_prog_COBC="gcobol"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ if test $ac_prog_rejected = yes; then
+   # We found a bogon in the path, so make sure we never use it.
+   set dummy $ac_cv_prog_COBC
+   shift
+   if test $# != 0; then
+     # We chose a different compiler from the bogus one.
+     # However, it has the same basename, so the bogon will be chosen
+     # first if we set COBC to just the basename; use the full file name.
+     shift
+     ac_cv_prog_COBC="$as_dir/$ac_word${1+' '}$@"
+   fi
+ fi
+ fi
+ fi
+ COBC=$ac_cv_prog_COBC
+ if test -n "$COBC"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COBC" >&5
+ $as_echo "$COBC" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ 
+ 
+ # Provide some information about the compiler.
+ $as_echo "$as_me:${as_lineno-$LINENO}: checking for COBOL compiler version" >&5
+ set X $ac_compile
+ ac_compiler=$2
+ { { ac_try="$ac_compiler --version >&5"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+ $as_echo "$ac_try_echo"; } >&5
+   (eval "$ac_compiler --version >&5") 2>conftest.err
+   ac_status=$?
+   if test -s conftest.err; then
+     sed '10a\
+ ... rest of stderr output deleted ...
+          10q' conftest.err >conftest.er1
+     cat conftest.er1 >&5
+   fi
+   rm -f conftest.er1 conftest.err
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }
+ COBFLAGS="-g -O2"
+ ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ 
+ 
+ 
  
  
  
diff -Nrcpad gcc-17-20260524/libgcobol/configure.ac gcc-17-20260531/libgcobol/configure.ac
*** gcc-17-20260524/libgcobol/configure.ac	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/configure.ac	Sun May 31 22:32:13 2026
*************** AC_INIT(package-unused, version-unused,,
*** 26,31 ****
--- 26,33 ----
  AC_CONFIG_SRCDIR(Makefile.am)
  AC_CONFIG_HEADER(config.h)
  
+ AC_CONFIG_MACRO_DIRS([m4])
+ 
  # Do not delete or change the following two lines.  For why, see
  # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
  AC_CANONICAL_SYSTEM
*************** AC_LANG([C++])
*** 95,103 ****
--- 97,108 ----
  m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
  m4_define([_AC_ARG_VAR_PRECIOUS],[])
  AC_PROG_CXX
+ AC_PROG_COBOL
+ 
  m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
  
  AC_SUBST(CXXFLAGS)
+ AC_SUBST(COBC)
  
  GCC_WITH_TOOLEXECLIBDIR
  
diff -Nrcpad gcc-17-20260524/libgcobol/configure.tgt gcc-17-20260531/libgcobol/configure.tgt
*** gcc-17-20260524/libgcobol/configure.tgt	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/configure.tgt	Sun May 31 22:32:13 2026
*************** case "${target}" in
*** 39,49 ****
  		LIBGCOBOL_SUPPORTED=yes
  	fi
  	;;
      x86_64-*-linux* | i?86-*-linux* | x86_64-*-darwin*)
  	if test x$ac_cv_sizeof_void_p = x8; then
! 		LIBGCOBOL_SUPPORTED=yes
! 	fi
! 	;;
      *)
  	UNSUPPORTED=1
  	;;
--- 39,54 ----
  		LIBGCOBOL_SUPPORTED=yes
  	fi
  	;;
+     x86_64-*-freebsd*)
+        if test x$ac_cv_sizeof_void_p = x8; then
+                LIBGCOBOL_SUPPORTED=yes
+        fi
+        ;;
      x86_64-*-linux* | i?86-*-linux* | x86_64-*-darwin*)
  	if test x$ac_cv_sizeof_void_p = x8; then
!                LIBGCOBOL_SUPPORTED=yes
!        fi
!        ;;
      *)
  	UNSUPPORTED=1
  	;;
diff -Nrcpad gcc-17-20260524/libgcobol/ec.h gcc-17-20260531/libgcobol/ec.h
*** gcc-17-20260524/libgcobol/ec.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/ec.h	Sun May 31 22:32:13 2026
*************** enum ec_type_t {
*** 99,104 ****
--- 99,105 ----
    ec_io_linage_e,
  
    ec_imp_e = 0x00008000,
+   ec_imp_iconv_open_e, 
    ec_imp_suffix_e,
  
    ec_locale_e = 0x00010000,
diff -Nrcpad gcc-17-20260524/libgcobol/encodings.h gcc-17-20260531/libgcobol/encodings.h
*** gcc-17-20260524/libgcobol/encodings.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/encodings.h	Sun May 31 22:32:13 2026
***************
*** 31,36 ****
--- 31,38 ----
  #ifndef _ENCODINGS_H_
  #define _ENCODINGS_H_
  
+ #include <type_traits>
+ 
  enum cbl_encoding_t {
    no_encoding_e,
    custom_encoding_e,
*************** struct encodings_t {
*** 1212,1215 ****
--- 1214,1226 ----
    char name[32];
  };
  
+ struct cbl_encoding_t_hash {
+   using hashed_type = std::underlying_type<cbl_encoding_t>::type;
+     size_t
+     operator()(cbl_encoding_t e) const noexcept
+     {
+       return std::hash<hashed_type>{}(static_cast<hashed_type>(e));
+     }
+ };
+ 
  #endif
diff -Nrcpad gcc-17-20260524/libgcobol/exceptl.h gcc-17-20260531/libgcobol/exceptl.h
*** gcc-17-20260524/libgcobol/exceptl.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/exceptl.h	Sun May 31 22:32:13 2026
*************** struct ec_descr_t {
*** 76,82 ****
    }
  };
  
! extern ec_type_t ec_type_of( const cbl_name_t name );
  
  extern ec_descr_t __gg__exception_table[];
  extern ec_descr_t *__gg__exception_table_end;
--- 76,82 ----
    }
  };
  
! ec_type_t ec_type_of( const cbl_name_t name );
  
  extern ec_descr_t __gg__exception_table[];
  extern ec_descr_t *__gg__exception_table_end;
diff -Nrcpad gcc-17-20260524/libgcobol/gcobolio.h gcc-17-20260531/libgcobol/gcobolio.h
*** gcc-17-20260524/libgcobol/gcobolio.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/gcobolio.h	Sun May 31 22:32:13 2026
*************** typedef struct cblc_field_t
*** 58,64 ****
      size_t occurs_upper;        // non-zero for a table
      unsigned long long attr;    // See cbl_field_attr_t
      signed char type;           // A one-byte copy of cbl_field_type_t
!     signed char level;          // This variable's level in the naming heirarchy
      signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
      signed char rdigits;        // Digits to the right of the decimal point. 3 for 99v999
      cbl_encoding_t encoding;    //
--- 58,64 ----
      size_t occurs_upper;        // non-zero for a table
      unsigned long long attr;    // See cbl_field_attr_t
      signed char type;           // A one-byte copy of cbl_field_type_t
!     signed char level;          // This variable's level in the naming hierarchy
      signed char digits;         // Digits specified in PIC string; e.g. 5 for 99v999
      signed char rdigits;        // Digits to the right of the decimal point. 3 for 99v999
      cbl_encoding_t encoding;    //
*************** typedef struct cblc_file_t
*** 117,122 ****
--- 117,126 ----
      size_t               symbol_table_index;  // of the related cbl_field_t structure
      char                *filename;         // The name of the file to be opened
      FILE                *file_pointer;     // The FILE *pointer
+     size_t               file_fpos;        // Calculated file position
+     char                *buffer;           // read buffer
+     size_t               buffer_pos;       // next character from the buffer
+     size_t               buffer_len;       // number of characters in the buffer
      cblc_field_t        *default_record;   // The record_area
      size_t               record_area_min;  // The size of the smallest 01 record in the FD
      size_t               record_area_max;  // The size of the largest  01 record in the FD
*************** typedef struct cblc_file_t
*** 148,151 ****
--- 152,157 ----
      int                  alphabet;         // Actually cbl_encoding_t
      } cblc_file_t;
  
+ #define FILE_BUFFER_SIZE (64 * 1024)
+ 
  #endif
diff -Nrcpad gcc-17-20260524/libgcobol/gfileio.cc gcc-17-20260531/libgcobol/gfileio.cc
*** gcc-17-20260524/libgcobol/gfileio.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/gfileio.cc	Sun May 31 22:32:13 2026
*************** __gg__file_init(
*** 365,370 ****
--- 365,375 ----
      file->symbol_table_index  = symbol_table_index;
      file->filename            = NULL ;
      file->file_pointer        = NULL ;
+     file->file_fpos           = 0;
+     file->buffer              = static_cast<char *>(malloc(FILE_BUFFER_SIZE));
+     massert(file->buffer);
+     file->buffer_pos          = 0;
+     file->buffer_len          = 0;
      file->keys                = keys;
      file->key_numbers         = key_numbers;
      file->uniques             = uniques;
*************** sequential_file_write(cblc_file_t    *fi
*** 2688,2707 ****
      {
      // If file-sequential, then trailing spaces are removed:
      while(bytes_to_write > 0
!            && charmap->getch(location, bytes_to_write-stride) 
                                    == charmap->mapped_character(ascii_space) )
        {
        bytes_to_write -= stride;
        }
      }
  
!   if( after && file->org == file_line_sequential_e 
                             && ch == charmap->mapped_character(ascii_newline) )
      {
      // In general, we terminate every line with a newline.  Because this
      // line is supposed to start with a newline, we decrement the line
      // counter by one if we had already sent one.
!     if( lcount && 
              (   file->recent_char == charmap->mapped_character(ascii_newline)
                  || file->recent_char == charmap->mapped_character(ascii_ff)) )
        {
--- 2693,2712 ----
      {
      // If file-sequential, then trailing spaces are removed:
      while(bytes_to_write > 0
!            && charmap->getch(location, bytes_to_write-stride)
                                    == charmap->mapped_character(ascii_space) )
        {
        bytes_to_write -= stride;
        }
      }
  
!   if( after && file->org == file_line_sequential_e
                             && ch == charmap->mapped_character(ascii_newline) )
      {
      // In general, we terminate every line with a newline.  Because this
      // line is supposed to start with a newline, we decrement the line
      // counter by one if we had already sent one.
!     if( lcount &&
              (   file->recent_char == charmap->mapped_character(ascii_newline)
                  || file->recent_char == charmap->mapped_character(ascii_ff)) )
        {
*************** done:
*** 3097,3108 ****
    }
  
  static void
! line_sequential_file_read(  cblc_file_t *file)
    {
    file->errnum = 0;
    file->io_status = FsErrno;
    size_t bytes_read = 0;
-   bool hit_eof;
  
    // According to IBM:
  
--- 3102,3112 ----
    }
  
  static void
! line_sequential_file_read_sbc(cblc_file_t *file, char space)
    {
    file->errnum = 0;
    file->io_status = FsErrno;
    size_t bytes_read = 0;
  
    // According to IBM:
  
*************** line_sequential_file_read(  cblc_file_t
*** 3121,3221 ****
    // characters to the right as undefined.  I'm going with IBM,
    // it makes more sense to me.
  
    charmap_t *charmap = __gg__get_charmap(file->encoding);
    int stride = charmap->stride();
  
    // We first stage the data into the record area.
    cbl_char_t ch;
  
!   long fpos = ftell(file->file_pointer);
!   if( handle_ferror(file, __func__, "ftell() error") )
!     {
!     fpos = -1;
!     goto done;
!     }
  
-   hit_eof = false;
    while( bytes_read < file->record_area_max )
      {
!     ch = 0;
!     fread(&ch, 1, stride, file->file_pointer);
!     file->errnum = ferror(file->file_pointer);
!     if( ch == file->delimiter )
        {
!       break;
        }
!     if( feof(file->file_pointer) )
        {
!       hit_eof = true;
!       clearerr(file->file_pointer);
        break;
        }
!     if( handle_ferror(file, __func__, "fgetc() error") )
        {
!       fpos = -1;
!       goto done;
        }
      memcpy(file->default_record->data+bytes_read, &ch, stride);
      bytes_read += stride;
      }
-   // Space fill shorty records
-     charmap->memset(file->default_record->data+bytes_read,
-                     charmap->mapped_character(ascii_space),
-                     file->record_area_max  - bytes_read);
  
!   if( hit_eof && !bytes_read)
!     {
!     // We got an end-of-file without characters
!     file->io_status = FsEofSeq; // "10"
!     file->prior_read_location = -1;
!     }
!   else if( hit_eof )
!     {
!     // We got an end-of-file whilst reading characters
!     // Override the FsEofSeq.  We'll get an actual EOF if the programmer
!     // does another READ:
!     file->io_status = FsErrno;
!     }
!   else if (bytes_read < file->record_area_max )
      {
!     // Just discard an early record delimiter
      file->io_status = FsRecordLength;   // "04"
      }
!   else // We filled the whole record area.  Look ahead one character
      {
! #ifdef POSSIBLY_IBM
!     // In this code, unread characters before the newline
!     // are read next time.  See page 133 of the IBM Language Reference
!     // Manual: "If the first unread character is the record delimiter, it
!     // is discarded. Otherwise, the first unread character becomes the first
!     // character read by the next READ statement."
! #else
!     // In this code, extra characters before the newline
!     // are read next time are discarded.  GnuCOBOL works this way, and
!     // the Michael Coughlin "Beginning COBOL" examples require this mode.
      // The ISO/IEC 2014 standard is silent on the question of LINE
      // SEQUENTIAL; it describes only SEQUENTIAL.
      for(;;)
        {
        ch = 0;
!       fread(&ch, 1, stride, file->file_pointer);
!       file->errnum = ferror(file->file_pointer);
        // We can't use handle_ferror() directly, because an EOF is
        // a legitimate way to end the last line.
!       if( ch == file->delimiter || feof(file->file_pointer) )
          {
          clearerr(file->file_pointer);
          break;
          }
!       if(     ferror(file->file_pointer)
!           &&  handle_ferror(file, __func__, "fgetc() error") )
!         {
!         fpos = -1;
!         goto done;
!         }
        file->io_status = FsRecordLength;   // "04"
        }
- #endif
      }
  
    if( file->record_length )
--- 3125,3470 ----
    // characters to the right as undefined.  I'm going with IBM,
    // it makes more sense to me.
  
+   long fpos = static_cast<long>(file->file_fpos);
+ 
+   const char *pstart = NULL;
+   const char *pnewline = NULL;
+   while( bytes_read < file->record_area_max )
+     {
+     // We need more characters from file->buffer:
+     if( file->buffer_pos >= file->buffer_len )
+       {
+       // file->buffer has been exhausted; it's time to read another buffer
+       file->buffer_len = fread( file->buffer,
+                                 1,
+                                 FILE_BUFFER_SIZE,
+                                 file->file_pointer);
+       file->buffer_pos = 0;
+       file->errnum = ferror(file->file_pointer);
+       if( feof(file->file_pointer) )
+         {
+         clearerr(file->file_pointer);
+         }
+       else if( handle_ferror(file, __func__, "fread() error") )
+         {
+         fpos = -1;
+         goto done;
+         }
+       }
+     // Much hinges on where the next newline is to be found:
+     pstart = file->buffer+file->buffer_pos;
+     pnewline = reinterpret_cast<const char *>(memchr(pstart,
+                       static_cast<char>(file->delimiter),
+                       file->buffer_len - file->buffer_pos));
+     if( file->buffer_pos >= file->buffer_len )
+       {
+       // There no more characters in the file->buffer, but we are trying to
+       // fill the record_area.
+       if( !bytes_read)
+         {
+         // We hit an EOF without reading any characters.  This is an ordinary
+         // end-of-file condition.
+         file->io_status = FsEofSeq; // "10"
+         file->prior_read_location = -1;
+         goto done;
+         }
+       // We have a partially-filled record_area that was ended by running out
+       // of characters.  That is, the final line of the file was not terminated
+       // by a line delimiter.  We break out of the loop here, and that
+       // gets handled below.
+       break;
+       }
+ 
+     size_t len;
+     if( !pnewline )
+       {
+       // There is no newline in the input buffer.  Copy over what we need, or
+       // what we have, whichever is smaller:
+       len = std::min(file->record_area_max - bytes_read,
+                      file->buffer_len - file->buffer_pos);
+       memcpy( file->default_record->data+bytes_read,
+               pstart,
+               len);
+       pstart           += len;
+       bytes_read       += len;
+       file->file_fpos  += len;
+       file->buffer_pos += len;
+       continue;
+       }
+     else
+       {
+       // There is a newline in the input buffer.  Copy over what we need, or
+       // the characters preceding the newline, whichever is smaller:
+       len = std::min(file->record_area_max - bytes_read,
+                      static_cast<size_t>(pnewline - pstart));
+       memcpy( file->default_record->data+bytes_read,
+               pstart,
+               len);
+       bytes_read       += len;
+       pstart           += len;
+       file->file_fpos  += len;
+       file->buffer_pos += len;
+       break;
+       }
+     }
+ 
+   // Space fill shorty records when bytes_read didn't fill the record area.
+   memset(file->default_record->data+bytes_read,
+          space,
+          file->record_area_max - bytes_read);
+ 
+   if( bytes_read < file->record_area_max )
+     {
+     // This means we encountered a line-delimiter before the record_are was
+     // completely filled.
+     file->io_status = FsRecordLength;   // "04"
+     }
+ 
+   // In this implementation, excess characters after length of the record_area
+   // are discarded.  This matches what the Coughlan examples expect, and how
+   // GnuCOBOL works.
+ 
+   // The ISO/IEC 2014 standard is silent on the question of LINE
+   // SEQUENTIAL; it describes only SEQUENTIAL.
+ 
+   // Strict IBM may work differently, as noted above.
+ 
+   // So we discard characters up to and including the next line-delimiter,
+   // or until we hit an EOF.
+ 
+   if( pnewline )
+     {
+     size_t discarded = (pnewline - pstart) + 1;
+     if( discarded > 1)
+       {
+       // Set the status to indicate characters were discarded.
+       file->io_status = FsRecordLength;   // "04"
+       }
+     file->file_fpos  += discarded;
+     file->buffer_pos += discarded;
+     }
+   else
+     {
+     // There is no newline in the current buffer.  Throw out the remainder of
+     // the buffer.
+     size_t discarded = file->buffer_len - file->buffer_pos;
+     if( discarded > 1)
+       {
+       // Set the status to indicate characters were discarded.
+       file->io_status = FsRecordLength;   // "04"
+       }
+     file->file_fpos  += discarded;
+     file->buffer_pos += discarded;
+     for(;;)
+       {
+       // Just keep reading until we hit a newline or the EOF
+       if( file->buffer_pos >= file->buffer_len )
+         {
+         // file->buffer has been exhausted; it's time to read another buffer
+         file->buffer_len = fread( file->buffer,
+                                   1,
+                                   FILE_BUFFER_SIZE,
+                                   file->file_pointer);
+         file->buffer_pos = 0;
+         file->errnum = ferror(file->file_pointer);
+         if( feof(file->file_pointer) )
+           {
+           clearerr(file->file_pointer);
+           break;
+           }
+         if( handle_ferror(file, __func__, "fread() error") )
+           {
+           fpos = -1;
+           goto done;
+           }
+         }
+       pstart = file->buffer+file->buffer_pos;
+       pnewline = reinterpret_cast<const char *>(memchr(pstart,
+                         static_cast<char>(file->delimiter),
+                         file->buffer_len - file->buffer_pos));
+       if( pnewline )
+         {
+         discarded = (pnewline - pstart) +1 ;
+         file->file_fpos  += discarded;
+         file->buffer_pos += discarded;
+         break;
+         }
+       else
+         {
+         discarded = file->buffer_len - file->buffer_pos ;
+         file->file_fpos  += discarded;
+         file->buffer_pos += discarded;
+         }
+       }
+     }
+ 
+   if( file->record_length )
+     {
+     __gg__int128_to_field(file->record_length,
+                                     bytes_read,
+                                     0,
+                                     truncation_e,
+                                     NULL);
+     }
+ done:
+   file->prior_op = file_op_read;
+   establish_status(file, fpos);
+   }
+ 
+ static void
+ line_sequential_file_read(  cblc_file_t *file)
+   {
    charmap_t *charmap = __gg__get_charmap(file->encoding);
    int stride = charmap->stride();
+   if( stride == 1 )
+     {
+     line_sequential_file_read_sbc(
+                   file,
+                   static_cast<char>(charmap->mapped_character(ascii_space)));
+     return;
+     }
+ 
+   file->errnum = 0;
+   file->io_status = FsErrno;
+   size_t bytes_read = 0;
+ 
+   // According to IBM:
+ 
+   // Characters are read one at a time until:
+   // - A delimiter is reached.  It is discarded, and the
+   //   record area is filled with spaces.
+   // - The entire record area is filled.  If the next unread
+   //   character is the delimiter, it is discarded.  Otherwise,
+   //   it becomes the first character read by the next READ
+   // - EOF is encountered; the remainder of the record area
+   //   is filled with spaces.
+ 
+   // This contradicts the ISO/IEC 2014 standard, which says
+   // in section 14.9.29.3, paragraph 14) on page 554 that excess
+   // characters are discarded, and too-short records have
+   // characters to the right as undefined.  I'm going with IBM,
+   // it makes more sense to me.
  
    // We first stage the data into the record area.
    cbl_char_t ch;
  
!   long fpos = static_cast<long>(file->file_fpos);
  
    while( bytes_read < file->record_area_max )
      {
!     // We need more characters from file->buffer:
!     if( file->buffer_pos >= file->buffer_len )
        {
!       // file->buffer has been exhausted; it's time to read another buffer
!       file->buffer_len = fread( file->buffer,
!                                 1,
!                                 FILE_BUFFER_SIZE,
!                                 file->file_pointer);
!       file->buffer_pos = 0;
!       file->errnum = ferror(file->file_pointer);
!       if( feof(file->file_pointer) )
!         {
!         clearerr(file->file_pointer);
!         }
!       else if( handle_ferror(file, __func__, "fread() error") )
!         {
!         fpos = -1;
!         goto done;
!         }
        }
!     if( file->buffer_pos >= file->buffer_len )
        {
!       // There no more characters in the file->buffer, but we are trying to
!       // fill the record_area
!       if( !bytes_read)
!         {
!         // We hit an EOF without reading any characters.  This is an ordinary
!         // end-of-file condition.
!         file->io_status = FsEofSeq; // "10"
!         file->prior_read_location = -1;
!         goto done;
!         }
!       // We have a partially-filled record_area that was ended by running out
!       // of characters.  That is, the final line of the file was not terminated
!       // by a line delimiter.  We break out of the loop here, and that
!       // gets handled below.
        break;
        }
! 
!     // There are still characters in the file->buffer, and we are still looking
!     // to fill the record_area, and we are still looking for a end-of-line.
!     ch = 0;
!     memcpy(&ch, file->buffer+file->buffer_pos, stride);
!     file->buffer_pos += stride;
!     file->file_fpos += stride;
!     if( ch == file->delimiter )
        {
!       break;
        }
      memcpy(file->default_record->data+bytes_read, &ch, stride);
      bytes_read += stride;
      }
  
!   // Space fill shorty records when bytes_read didn't fill the record area.
!   charmap->memset(file->default_record->data+bytes_read,
!                   charmap->mapped_character(ascii_space),
!                   file->record_area_max - bytes_read);
! 
!   if( bytes_read < file->record_area_max )
      {
!     // This means we encountered a line-delimiter before the record_are was
!     // completely filled.
      file->io_status = FsRecordLength;   // "04"
      }
!   else // We filled the whole record area.
      {
!     // In this implementation, any excess characters after the record_area is
!     // filled until the line-delimiter are discarded.  This matches what the
!     // Coughlan examples expect, and how GnuCOBOL works.
! 
      // The ISO/IEC 2014 standard is silent on the question of LINE
      // SEQUENTIAL; it describes only SEQUENTIAL.
+ 
+     // Strict IBM may work differently, as noted above.
+ 
+     // So we discard characters up to and including the next line-delimiter,
+     // or until we hit an EOF.
      for(;;)
        {
+       if( file->buffer_pos >= file->buffer_len )
+         {
+         // file->buffer has been exhausted; it's time to read another buffer
+         file->buffer_len = fread( file->buffer,
+                                   1,
+                                   FILE_BUFFER_SIZE,
+                                   file->file_pointer);
+         file->buffer_pos = 0;
+         file->errnum = ferror(file->file_pointer);
+         if( feof(file->file_pointer) )
+           {
+           clearerr(file->file_pointer);
+           break;
+           }
+         if( handle_ferror(file, __func__, "fread() error") )
+           {
+           fpos = -1;
+           goto done;
+           }
+         }
        ch = 0;
!       memcpy(&ch, file->buffer+file->buffer_pos, stride);
!       file->buffer_pos += stride;
!       file->file_fpos += stride;
        // We can't use handle_ferror() directly, because an EOF is
        // a legitimate way to end the last line.
!       if( ch == file->delimiter )
          {
          clearerr(file->file_pointer);
          break;
          }
!       // Set the status to indicate characters were discarded.
        file->io_status = FsRecordLength;   // "04"
        }
      }
  
    if( file->record_length )
*************** __gg__file_stash( cblc_file_t *file )
*** 4580,4586 ****
       * cblc_file_t is defined, and where the valid file status values
       * (and relops) are enumerated.
       *
!      * The library contructs the class, providing its own pointers,
       * and supplies a known function, gcobol_fileops, to return
       * it. gcobol-compiled programs call the functions, or others
       * supplied by a different implementation, through the pointers.
--- 4829,4835 ----
       * cblc_file_t is defined, and where the valid file status values
       * (and relops) are enumerated.
       *
!      * The library constructs the class, providing its own pointers,
       * and supplies a known function, gcobol_fileops, to return
       * it. gcobol-compiled programs call the functions, or others
       * supplied by a different implementation, through the pointers.
*************** __gg__file_stash( cblc_file_t *file )
*** 4592,4598 ****
       * GnuCOBOL.  One difference is that the file status is captured
       * in the cblc_file_t, whereas in GnuCOBOL it is the return value.
       *
!      * There is no provision for using more than one implemetation at
       * a time in the same program, as would be needed for CODE-SET
       * support.  To achieve that in C++ without dynamic linking, there
       * would have to be a set of known implementations, each with its
--- 4841,4847 ----
       * GnuCOBOL.  One difference is that the file status is captured
       * in the cblc_file_t, whereas in GnuCOBOL it is the return value.
       *
!      * There is no provision for using more than one implementation at
       * a time in the same program, as would be needed for CODE-SET
       * support.  To achieve that in C++ without dynamic linking, there
       * would have to be a set of known implementations, each with its
diff -Nrcpad gcc-17-20260524/libgcobol/gmath.cc gcc-17-20260531/libgcobol/gmath.cc
*** gcc-17-20260524/libgcobol/gmath.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/gmath.cc	Sun May 31 22:32:13 2026
*************** __gg__pow(  cbl_arith_format_t,
*** 297,303 ****
        *compute_error |= compute_error_exp_minus_by_frac;
        // This kind of error doesn't overwrite the target, so the returned
        // value is not relevant.  Make it zero to avoid overheating the
!       // converstion routine
        tgt_value = 0;
        }
      }
--- 297,303 ----
        *compute_error |= compute_error_exp_minus_by_frac;
        // This kind of error doesn't overwrite the target, so the returned
        // value is not relevant.  Make it zero to avoid overheating the
!       // conversion routine
        tgt_value = 0;
        }
      }
diff -Nrcpad gcc-17-20260524/libgcobol/inspect.cc gcc-17-20260531/libgcobol/inspect.cc
*** gcc-17-20260524/libgcobol/inspect.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/inspect.cc	Sun May 31 22:32:13 2026
*************** inspect_backward_format_1(const size_t i
*** 912,918 ****
            }
          default:
            {
!           // We have some number of identifer-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
--- 912,918 ----
            }
          default:
            {
!           // We have some number of identifier-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
*************** __gg__inspect_format_1( int backward,
*** 1273,1279 ****
            }
          default:
            {
!           // We have some number of identifer-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
--- 1273,1279 ----
            }
          default:
            {
!           // We have some number of identifier-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
*************** inspect_backward_format_2(const size_t i
*** 1618,1624 ****
          }
        default:
          {
!         // We have some number of identifer-3/identifier-5 pairs,
          // each with possible PHRASE1 modifiers.
          size_t pair_count = integers[int_index++];
  
--- 1618,1624 ----
          }
        default:
          {
!         // We have some number of identifier-3/identifier-5 pairs,
          // each with possible PHRASE1 modifiers.
          size_t pair_count = integers[int_index++];
  
*************** inspect_backward_format_2(const size_t i
*** 1869,1875 ****
  
    charmap_t *charmap = __gg__get_charmap(id1->encoding);
    // Wastefully prefill id_1 with spaces in case the processing resulted in a
!   // string shorter than the original.  (There is always the possiblity that
    // a UTF-8 or UTF-16 codeset pair got replaced with a single character.) Do
    // this before calling __gg__converter, because both mapped_character and
    // __gg__iconverter use the same static buffer.
--- 1869,1875 ----
  
    charmap_t *charmap = __gg__get_charmap(id1->encoding);
    // Wastefully prefill id_1 with spaces in case the processing resulted in a
!   // string shorter than the original.  (There is always the possibility that
    // a UTF-8 or UTF-16 codeset pair got replaced with a single character.) Do
    // this before calling __gg__converter, because both mapped_character and
    // __gg__iconverter use the same static buffer.
*************** __gg__inspect_format_2( int backward,
*** 1981,1987 ****
          }
        default:
          {
!         // We have some number of identifer-3/identifier-5 pairs,
          // each with possible PHRASE1 modifiers.
          size_t pair_count = integers[int_index++];
  
--- 1981,1987 ----
          }
        default:
          {
!         // We have some number of identifier-3/identifier-5 pairs,
          // each with possible PHRASE1 modifiers.
          size_t pair_count = integers[int_index++];
  
*************** __gg__inspect_format_2( int backward,
*** 2240,2246 ****
  
    charmap_t *charmap = __gg__get_charmap(id1->encoding);
    // Wastefully prefill id_1 with spaces in case the processing resulted in a
!   // string shorter than the original.  (There is always the possiblity that
    // a UTF-8 or UTF-16 codeset pair got replaced with a single character.) Do
    // this before calling __gg__converter, because both mapped_character and
    // __gg__iconverter use the same static buffer.
--- 2240,2246 ----
  
    charmap_t *charmap = __gg__get_charmap(id1->encoding);
    // Wastefully prefill id_1 with spaces in case the processing resulted in a
!   // string shorter than the original.  (There is always the possibility that
    // a UTF-8 or UTF-16 codeset pair got replaced with a single character.) Do
    // this before calling __gg__converter, because both mapped_character and
    // __gg__iconverter use the same static buffer.
*************** __gg__inspect_format_1_sbc( int backward
*** 2708,2714 ****
  
          default:
            {
!           // We have some number of identifer-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
--- 2708,2714 ----
  
          default:
            {
!           // We have some number of identifier-3 values,
            // each with possible PHRASE1 modifiers.
            size_t pair_count = integers[int_index++];
  
diff -Nrcpad gcc-17-20260524/libgcobol/intrinsic.cc gcc-17-20260531/libgcobol/intrinsic.cc
*** gcc-17-20260524/libgcobol/intrinsic.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/intrinsic.cc	Sun May 31 22:32:13 2026
*************** timespec_to_string(char *retval, struct
*** 231,251 ****
    return retval;
    }
  
- static
- void
- string_to_dest(cblc_field_t *dest, const char *psz)
-   {
-   charmap_t *charmap = __gg__get_charmap(dest->encoding);
- 
-   __gg__adjust_dest_size(dest, charmap->strlen(psz));
- 
-   size_t dest_length = dest->capacity;
-   size_t source_length = charmap->strlen(psz);
-   size_t length = std::min(dest_length, source_length);
-   charmap->memset(dest->data, charmap->mapped_character(ascii_space), dest_length);
-   memcpy(dest->data, psz, length);
-   }
- 
  struct input_state
    {
    size_t nsubscript;
--- 231,236 ----
*************** get_all_time( const cblc_field_t *dest,
*** 576,584 ****
            ctm.day_of_year,
            ctm.ZZZZ);
  
!   __gg__convert_encoding(PTRCAST(char, stime),
!                          DEFAULT_SOURCE_ENCODING,
!                          dest->encoding);
    }
  
  static
--- 561,576 ----
            ctm.day_of_year,
            ctm.ZZZZ);
  
!   // Do these before the iconverter, because that routine can clobber the
!   // return value 'converted'
!   charmap_t *charmap = __gg__get_charmap(dest->encoding);
!   size_t nbytes;
!   const char *converted = __gg__iconverter(DEFAULT_SOURCE_ENCODING,
!                                            dest->encoding,
!                                            stime,
!                                            strlen(stime),
!                                            &nbytes);
!   memcpy(stime, converted, charmap->strlen(converted)+charmap->stride());
    }
  
  static
*************** __gg__when_compiled(cblc_field_t *dest,
*** 3966,3975 ****
    tp.tv_nsec = tv_nsec;
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
!   __gg__convert_encoding(PTRCAST(char, retval),
!                          DEFAULT_SOURCE_ENCODING,
!                          dest->encoding);
!   string_to_dest(dest, retval);
    }
  
  extern "C"
--- 3958,3981 ----
    tp.tv_nsec = tv_nsec;
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
! 
!   // Do these before the iconverter, because that routine can clobber the
!   // return value 'converted'
!   charmap_t *charmap = __gg__get_charmap(dest->encoding);
!   cbl_char_t space = charmap->mapped_character(ascii_space);
! 
!   size_t nbytes;
!   const char *converted = __gg__iconverter(DEFAULT_SOURCE_ENCODING,
!                                            dest->encoding,
!                                            retval,
!                                            strlen(retval),
!                                            &nbytes);
!   __gg__adjust_dest_size(dest, nbytes);
!   size_t dest_length = dest->capacity;
!   size_t source_length = nbytes;
!   size_t length = std::min(dest_length, source_length);
!   charmap->memset(dest->data, space, dest_length);
!   memcpy(dest->data, converted, length);
    }
  
  extern "C"
*************** gets_month( const char *p,
*** 4144,4150 ****
        }
      else if( MM > 12 )
        {
!       // We are betweem 13 and 19, so it was the second digit
        retval = 2;
        }
      ctm.MM = MM;
--- 4150,4156 ----
        }
      else if( MM > 12 )
        {
!       // We are between 13 and 19, so it was the second digit
        retval = 2;
        }
      ctm.MM = MM;
diff -Nrcpad gcc-17-20260524/libgcobol/io.cc gcc-17-20260531/libgcobol/io.cc
*** gcc-17-20260524/libgcobol/io.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/io.cc	Sun May 31 22:32:13 2026
***************
*** 32,42 ****
  
  #include "io.h"
  
! #include <cstdio>
! #include <cstdlib>
  #include <cerrno>
  #include <cstdbool>
  #include <cstdint>
  
  /*
   * The Cobol runtime support is responsible to set the file status
--- 32,43 ----
  
  #include "io.h"
  
! #include <cassert>
  #include <cerrno>
  #include <cstdbool>
  #include <cstdint>
+ #include <cstdio>
+ #include <cstdlib>
  
  /*
   * The Cobol runtime support is responsible to set the file status
*************** __gg__file_status_word( enum file_status
*** 87,99 ****
    case EWOULDBLOCK:
                 file_status_register = FsOsError;      break;
    default:
!     perror("What is this? ");
!     fprintf(stderr, "__gg__file_status_word got an error_number "
!           "%d, which it doesn't know how to handle\n", error_number);
! 
!     abort();
      break;
    }
  
    return file_status_register;
  }
--- 88,177 ----
    case EWOULDBLOCK:
                 file_status_register = FsOsError;      break;
    default:
!     file_status_register = FsOsError;
      break;
    }
  
    return file_status_register;
  }
+    
+ /*
+  * This function is used by libgcobol_compat_gnu.
+  * If status parameter is FsErrno, return the file_status_t for errno.
+  * If status paramter is FsSuccess, return the file_status_t for errnum parameter. 
+  * The output is byte-swapped per MF specification. 
+  */
+ #include <cstring>
+ extern "C"
+ file_status_t
+ __compat_file_status_word( enum file_status_t status, int errnum) {
+   switch( status ) {
+   case FsErrno:
+     errnum = errno;
+     break;
+   case FsSuccess:
+     break;
+   default:
+     fprintf(stderr, "status is 0x%x, (%d)\n", status, status);
+     assert( status == FsErrno || status == FsSuccess );
+     break;
+   }
+     
+   switch( errnum ) {
+   case EACCES:
+   case EPERM:
+     status = FsCobRt037; // File access denied
+     break;
+   case EBADF:
+     status = FsCobRt034; // Incorrect mode or file descriptor
+     break;
+   case EDQUOT:
+   case ENOSPC:
+     status = FsCobRt028; // No space on device
+     break;
+   case EFBIG:
+   case EOVERFLOW:
+     status = FsCobRt194; // File size too large
+     break;
+   case EINVAL:
+     status = FsCobRt181; // Invalid parameter error
+     break;
+   case EIO:
+     status = FsCobRt033; // Physical I-O error
+     break;
+   case EISDIR:
+     status = FsCobRt021; // File is a directory
+     break;
+   case EMFILE:
+     status = FsCobRt014; // Too many files open simultaneously
+     break;
+   case ENAMETOOLONG:
+     status = FsCobRt188; // Filename too large
+     break;
+   case ENOENT:
+     status = FsCobRt013; // File not found
+     break;
+   case ENOMEM:
+     status = FsCobRt105; // Memory allocation error
+     break;
+   case EPIPE:
+     status = FsCobRt042; // Attempt to write on broken pipe
+     break;
+   case EROFS:
+     status = FsCobRt030; // File system is read-only
+     break;
+   default:
+       status = FsCobRt000; // No defined mapping for errno value
+   }    
+ 
+   // This function returns 9x status in the FsCobRt range. 
+   assert( FsCobRt000 <= status && status <= 0x09FF );
+ 
+   static_assert(sizeof(status) == 4);
+ 
+   // Arrange little-endian output per MF definition. 
+   const char output[4] = { '9', static_cast<char>((status & 0xF)), 0, 0 };
+   memcpy( reinterpret_cast<char*>(&status), output, 4);
+   
+   return status;
+ }
diff -Nrcpad gcc-17-20260524/libgcobol/io.h gcc-17-20260531/libgcobol/io.h
*** gcc-17-20260524/libgcobol/io.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/io.h	Sun May 31 22:32:13 2026
*************** enum file_high_t {
*** 82,87 ****
--- 82,88 ----
    FhOsError = 3,
    FhLogicError = 4,
    FhImplementor = 9,
+   FhMfCompat = 0x0900, 
  };
  
  enum file_status_t {
*************** enum file_status_t {
*** 126,132 ****
                      FsVsamOK      = (FhImplementor * 10) + 7,
                      FsBadEnvVar   = (FhImplementor * 10) + 8,
  
!                     FsErrno       = (1000000)                   // This means "map errno to one of the above errors"
  };
  
  #define FhNotOkay FsEofSeq  // Values less than 10 mean the data are valid
--- 127,148 ----
                      FsVsamOK      = (FhImplementor * 10) + 7,
                      FsBadEnvVar   = (FhImplementor * 10) + 8,
  
!                     FsCobRt000    = FhMfCompat +   0, // default MF FS error
!                     FsCobRt013    = FhMfCompat +  13, // File not found
!                     FsCobRt014    = FhMfCompat +  14, // Too many files open
!                     FsCobRt021    = FhMfCompat +  21, // File is a directory
!                     FsCobRt028    = FhMfCompat +  28, // No space on device
!                     FsCobRt030    = FhMfCompat +  30, // File system is read-only
!                     FsCobRt033    = FhMfCompat +  33, // Physical I-O error
!                     FsCobRt034    = FhMfCompat +  34, // Incorrect mode or EBADF
!                     FsCobRt037    = FhMfCompat +  37, // File access denied
!                     FsCobRt042    = FhMfCompat +  42, // Attempt to write on broken pipe
!                     FsCobRt105    = FhMfCompat + 105, // Memory allocation error
!                     FsCobRt181    = FhMfCompat + 181, // Invalid parameter error
!                     FsCobRt188    = FhMfCompat + 188, // Filename too large
!                     FsCobRt194    = FhMfCompat + 194, // File size too large
! 
!                     FsErrno       = (1000000)         // This means "map errno to one of the above errors"
  };
  
  #define FhNotOkay FsEofSeq  // Values less than 10 mean the data are valid
diff -Nrcpad gcc-17-20260524/libgcobol/libgcobol.cc gcc-17-20260531/libgcobol/libgcobol.cc
*** gcc-17-20260524/libgcobol/libgcobol.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/libgcobol.cc	Sun May 31 22:32:13 2026
*************** get_time_nanoseconds_local()
*** 2239,2245 ****
        how gettimeofday() gets used, instead.  But without the ability to
        compile on a MacOS system, I am fumbling along as best I can.
  
!       I decided to simply replace clock_gettime() with getttimeofday() when
        clock_gettime() isn't available, even though gcc/timevar.cc handles
        the situation differently.
  
--- 2239,2245 ----
        how gettimeofday() gets used, instead.  But without the ability to
        compile on a MacOS system, I am fumbling along as best I can.
  
!       I decided to simply replace clock_gettime() with gettimeofday() when
        clock_gettime() isn't available, even though gcc/timevar.cc handles
        the situation differently.
  
*************** __gg__compare_2(cblc_field_t  *left_side
*** 4662,4668 ****
          if( right_side->type == FldLiteralN)
            {
            right_value = get_float128(right_side, right_location);
!           // In order to do the comparision, we need the value from the
            // literal to be the same flavor as the left side:
            switch(left_side->capacity)
              {
--- 4662,4668 ----
          if( right_side->type == FldLiteralN)
            {
            right_value = get_float128(right_side, right_location);
!           // In order to do the comparison, we need the value from the
            // literal to be the same flavor as the left side:
            switch(left_side->capacity)
              {
*************** init_var_both(cblc_field_t  *var,
*** 5203,5219 ****
    //fprintf(stderr, "__gg__initialize_variable %s setting initialize_e\n", var->name);
    var->attr |= initialized_e;
  
-   // We need to make sure that the program_states vector has at least one
-   // entry in it.  This happens when we are the very first PROGRAM-ID called
-   // in this module.
- 
-   // When there is no DATA DIVISION, program_states will be empty the first time
-   // we arrive here.
-   if( program_states.empty() )
-     {
-     initialize_program_state();
-     }
- 
    const char *local_initial = as_initial(var->initial);
  
    // Next order of business: When the variable was allocated in
--- 5203,5208 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 6455,6465 ****
              int fc_char = __gg__fc_char(fsource);
              if( fc_char != NOT_A_CHARACTER )
                {
                memset(display_string, fc_char, dest_size);
!               __gg__convert_encoding_length(display_string,
!                                             dest_size,
!                                             fsource->encoding,
!                                             fdest->encoding );
                }
              else
                {
--- 6444,6458 ----
              int fc_char = __gg__fc_char(fsource);
              if( fc_char != NOT_A_CHARACTER )
                {
+               size_t nbytes;
                memset(display_string, fc_char, dest_size);
!               const char *converted = __gg__iconverter(fsource->encoding,
!                                                        fdest->encoding,
!                                                        display_string,
!                                                        display_string_length,
!                                                        &nbytes);
!               size_t len = std::min(dest_size, nbytes);
!               memcpy(display_string, converted, len);
                }
              else
                {
*************** __gg__move( cblc_field_t        *fdest,
*** 6470,6476 ****
                                reinterpret_cast<unsigned char *>
                                                   (fsource->data+source_offset),
                                source_size,
!                               source_flags && REFER_T_ADDRESS_OF);
                display_string_length = strlen(display_string);
                }
              __gg__string_to_alpha_edited( reinterpret_cast<char *>
--- 6463,6469 ----
                                reinterpret_cast<unsigned char *>
                                                   (fsource->data+source_offset),
                                source_size,
!                               source_flags & REFER_T_ADDRESS_OF);
                display_string_length = strlen(display_string);
                }
              __gg__string_to_alpha_edited( reinterpret_cast<char *>
*************** void
*** 7463,7475 ****
  display_both(cblc_field_t  *field,
               unsigned char *qual_data,
               size_t         qual_size,
-              int            flags,
               int            file_descriptor,
!              int            advance )
    {
    static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
    static char *display_string = static_cast<char *>(malloc(display_string_size));
  
    if( field->type == FldLiteralA && field->encoding == custom_encoding_e )
      {
      field->encoding = DEFAULT_SOURCE_ENCODING;
--- 7456,7470 ----
  display_both(cblc_field_t  *field,
               unsigned char *qual_data,
               size_t         qual_size,
               int            file_descriptor,
!              int            flags )
    {
    static size_t display_string_size = MINIMUM_ALLOCATION_SIZE;
    static char *display_string = static_cast<char *>(malloc(display_string_size));
  
+   bool advance = !!(flags & 1);
+   bool address_of = !!(flags & REFER_T_ADDRESS_OF);
+ 
    if( field->type == FldLiteralA && field->encoding == custom_encoding_e )
      {
      field->encoding = DEFAULT_SOURCE_ENCODING;
*************** display_both(cblc_field_t  *field,
*** 7482,7493 ****
                                              field,
                                              qual_data,
                                              qual_size,
!                                             !!(flags & REFER_T_ADDRESS_OF) );
  
    cbl_encoding_t encout = __gg__console_encoding;
  
    // It can be the case in COBOL programs that a variable set to HIGH-VALUE is
!   // displayed.  In CP1252, the result for 0xFF is a y-with diaresis.
  
    // In EBCDIC CP1140, however, the 0xFF character is non-printing.  It's my
    // opinion that's protentially confusing, especially when debugging.
--- 7477,7488 ----
                                              field,
                                              qual_data,
                                              qual_size,
!                                             address_of );
  
    cbl_encoding_t encout = __gg__console_encoding;
  
    // It can be the case in COBOL programs that a variable set to HIGH-VALUE is
!   // displayed.  In CP1252, the result for 0xFF is a y-with diaeresis.
  
    // In EBCDIC CP1140, however, the 0xFF character is non-printing.  It's my
    // opinion that's protentially confusing, especially when debugging.
*************** display_both(cblc_field_t  *field,
*** 7499,7506 ****
  
    // There are valid arguments against doing this.  But when I was doing some
    // debugging, I found the EBCDIC behavior of displaying nothing for
!   // HIGH-VALUE to be more astonishing than printing a y-with-diaresis.  There
!   // is, of course, the potential for confusing a real y-with-diaresis with a
    // a HIGH-VALUE character.  But it is my opinion that those will be resolved
    // by examining the context.
  
--- 7494,7501 ----
  
    // There are valid arguments against doing this.  But when I was doing some
    // debugging, I found the EBCDIC behavior of displaying nothing for
!   // HIGH-VALUE to be more astonishing than printing a y-with-diaeresis.  There
!   // is, of course, the potential for confusing a real y-with-diaeresis with a
    // a HIGH-VALUE character.  But it is my opinion that those will be resolved
    // by examining the context.
  
*************** __gg__display(    cblc_field_t *field,
*** 7548,7575 ****
                    size_t offset,
                    size_t size,
                    int file_descriptor,
!                   int advance )
    {
    display_both( field,
                  field->data + offset,
                  size,
-                 0,
                  file_descriptor,
!                 advance);
    }
  
  extern "C"
  void
  __gg__display_clean(cblc_field_t *field,
                      int file_descriptor,
!                     int advance )
    {
    display_both( field,
                  field->data,
                  field->capacity,
-                 0,
                  file_descriptor,
!                 advance);
    }
  
  #pragma GCC diagnostic push
--- 7543,7568 ----
                    size_t offset,
                    size_t size,
                    int file_descriptor,
!                   int flags )
    {
    display_both( field,
                  field->data + offset,
                  size,
                  file_descriptor,
!                 flags);
    }
  
  extern "C"
  void
  __gg__display_clean(cblc_field_t *field,
                      int file_descriptor,
!                     int flags )
    {
    display_both( field,
                  field->data,
                  field->capacity,
                  file_descriptor,
!                 flags);
    }
  
  #pragma GCC diagnostic push
*************** we_are_done:
*** 7848,7853 ****
--- 7841,7851 ----
        break;
        }
  
+     case FldLiteralN:
+       // It is a quirk of the parser that for ACCEPT OMITTED, it passes us
+       // a FldLiteralN.
+       break;
+ 
      default:
        {
        int rdigits;
*************** __gg__classify( classify_t type,
*** 8650,8697 ****
    return retval;
    }
  
- extern "C"
- void
- __gg__convert_encoding( char *psz,
-                         cbl_encoding_t from,
-                         cbl_encoding_t to )
-   {
-   // This does an in-place conversion of psz
-   charmap_t *charmap_from = __gg__get_charmap(from);
-   const charmap_t *charmap = __gg__get_charmap(to);
-   if( from > custom_encoding_e )
-     {
-     size_t charsout;
-     const char *converted  = __gg__iconverter(from,
-                                               to,
-                                               psz,
-                                               charmap_from->strlen(psz),
-                                               &charsout);
-     // Copy over the converted string, including the final NUL
-     memcpy(psz, converted, charsout + charmap->stride());
-     }
-   }
- 
- extern "C"
- void
- __gg__convert_encoding_length(char *pch,
-                               size_t length,
-                               cbl_encoding_t from,
-                               cbl_encoding_t to )
-   {
-   // This does an in-place conversion of length characters at pch
-   if( from > custom_encoding_e )
-     {
-     size_t charsout;
-     const char *converted  = __gg__iconverter(from,
-                                               to,
-                                               pch,
-                                               length,
-                                               &charsout);
-     memcpy(pch, converted, length);
-     }
-   }
- 
  static
  int
  accept_envar( cblc_field_t  *tgt,
--- 8648,8653 ----
*************** accept_envar( cblc_field_t  *tgt,
*** 8743,8749 ****
  
    if( retval == 1 )
      {
!     // Could't find that environment variable
      exception_raise(ec_argument_imp_environment_e);
      }
  
--- 8699,8705 ----
  
    if( retval == 1 )
      {
!     // Couldn't find that environment variable
      exception_raise(ec_argument_imp_environment_e);
      }
  
*************** __gg__set_pointer(cblc_field_t       *ta
*** 9053,9059 ****
      // This is SET ADDRESS OF target TO ....
      // We know it has to be an unqualified LINKAGE level 01 or level 77
      target->data  = reinterpret_cast<unsigned char *>(source_address);
!     // The caller will propogate data + offset to their children.
      }
    else
      {
--- 9009,9015 ----
      // This is SET ADDRESS OF target TO ....
      // We know it has to be an unqualified LINKAGE level 01 or level 77
      target->data  = reinterpret_cast<unsigned char *>(source_address);
!     // The caller will propagate data + offset to their children.
      }
    else
      {
*************** struct cbl_exception_t {
*** 9719,9725 ****
  };
  
  /*
!  * Compare the raised exception, cbl_exception_t, to the USE critera
   * of a declarative, cbl_declarative_t.
   */
  static bool
--- 9675,9681 ----
  };
  
  /*
!  * Compare the raised exception, cbl_exception_t, to the USE criteria
   * of a declarative, cbl_declarative_t.
   */
  static bool
*************** default_exception_handler( ec_type_t ec
*** 9813,9822 ****
      }
      /*
       * An enabled, unhandled fatal EC normally results in termination. But
!      * EC-I-O is a special case:
!      *   OPEN and CLOSE never result in termination.
!      *   A SELECT statement with FILE STATUS indicates the user will handle the error.
!      *   Only I/O statements are considered.
       * Declaratives are handled first.  We are in the default handler here,
       * which is reached only if no Declarative was matched.
       */
--- 9769,9777 ----
      }
      /*
       * An enabled, unhandled fatal EC normally results in termination. But
!      * EC-I-O is a special case becase a SELECT statement with FILE STATUS
!      * indicates the user will handle the error.  
!      * 
       * Declaratives are handled first.  We are in the default handler here,
       * which is reached only if no Declarative was matched.
       */
*************** default_exception_handler( ec_type_t ec
*** 9829,9837 ****
        case file_op_none:   // not an I/O statement
          break;
        case file_op_open:
!       case file_op_close:  // No OPEN/CLOSE results in a fatal error.
!         disposition = ec_category_none_e;
!         break;
        default:
          if( file.user_status ) {
            // Not fatal if FILE STATUS is part of the file's SELECT statement.
--- 9784,9790 ----
        case file_op_none:   // not an I/O statement
          break;
        case file_op_open:
!       case file_op_close:
        default:
          if( file.user_status ) {
            // Not fatal if FILE STATUS is part of the file's SELECT statement.
*************** default_exception_handler( ec_type_t ec
*** 9886,9895 ****
    }
  }
  
  /*
   * To reach the default handler, an EC must have effect and not have been
   * handled by program logic.  To have effect, it must have been enabled
!  * explictly, or be of type EC-I-O.  An EC may be handled by the statement or
   * by a Declarative.
   *
   * Any EC handled by statement's conditional clause (e.g. ON SIZE ERROR)
--- 9839,9882 ----
    }
  }
  
+ static const ec_descr_t *
+ ec_type_descr( ec_type_t type ) {
+   auto p = std::find( __gg__exception_table, __gg__exception_table_end, type );
+   return p == __gg__exception_table_end ? nullptr : &*p;
+ }
+ 
+ static ec_disposition_t
+ ec_type_disposition( ec_type_t type ) {
+   auto p = ec_type_descr(type);
+   return p?  p->disposition : ec_category_none_e;
+ }
+ 
+ static bool
+ ec_is_fatal( ec_type_t type ) {
+   ec_disposition_t disp = ec_type_disposition(type);
+   
+   switch(disp) {
+   case ec_category_nonfatal_e:
+   case uc_category_nonfatal_e:
+     return false;
+   case ec_category_none_e:  // should be unreachable
+   case ec_category_fatal_e:
+   case ec_category_implementor_e:
+     break;
+   case uc_category_none_e:
+   case uc_category_fatal_e:
+   case uc_category_implementor_e:
+     if( MATCH_DECLARATIVE )
+       warnx("%s: %s is unimplemented", __func__, local_ec_type_str(type));
+     break;    
+   }
+   return true;
+ }
+ 
  /*
   * To reach the default handler, an EC must have effect and not have been
   * handled by program logic.  To have effect, it must have been enabled
!  * explicitly, or be of type EC-I-O.  An EC may be handled by the statement or
   * by a Declarative.
   *
   * Any EC handled by statement's conditional clause (e.g. ON SIZE ERROR)
*************** __gg__check_fatal_exception()
*** 9965,9980 ****
      case file_op_none:
        assert(false);
        abort();
!     case file_op_open: // implicit, no Declarative, no FILE STATUS, but ok
      case file_op_close:
-       ec_status.clear();
-       return;
      case file_op_start:
      case file_op_read:
      case file_op_write:
      case file_op_rewrite:
      case file_op_delete:
      case file_op_remove:
        break;
      }
    } else {
--- 9952,9971 ----
      case file_op_none:
        assert(false);
        abort();
!     case file_op_open:
      case file_op_close:
      case file_op_start:
      case file_op_read:
      case file_op_write:
      case file_op_rewrite:
      case file_op_delete:
      case file_op_remove:
+       if( !ec_status.is_enabled() && !ec_is_fatal(ec) ) {
+         if( MATCH_DECLARATIVE )
+           warnx("%s: %s is not enabled and nonfatal", __func__, local_ec_type_str(ec));
+         ec_status.clear();
+         return;
+       }
        break;
      }
    } else {
*************** __gg__set_env_value(const cblc_field_t *
*** 11819,11849 ****
                      size_t              length )
    {
    // implements DISPLAY UPON ENVIRONMENT-VALUE
!   size_t value_length = length;
! 
!   static size_t  val_length = 0;
!   static char   *val        = nullptr;
!   if( val_length < length+1 )
      {
!     val_length = length+1;
!     val = static_cast<char *>(realloc(val, val_length));
!     }
!   massert(val);
! 
!   memcpy(val, value->data+offset, value_length);
!   val[value_length] = '\0';
! 
!   __gg__convert_encoding( val,
!                           value->encoding,
!                           __gg__console_encoding);
! 
  
!   // Get rid of leading and trailing space characters
!   char *trimmed_val = brute_force_trim(val, __gg__console_encoding);
  
!   // And now, anticlimactically, set the variable:
!   if( sv_envname )
!     {
      setenv(sv_envname, trimmed_val, 1);
      }
    }
--- 11810,11828 ----
                      size_t              length )
    {
    // implements DISPLAY UPON ENVIRONMENT-VALUE
!   if( sv_envname )
      {
!     size_t nbytes;
!     char *val = __gg__iconverter(value->encoding,
!                                 __gg__console_encoding,
!                                 reinterpret_cast<char *>(value->data) + offset,
!                                 length,
!                                 &nbytes);
  
!     // Get rid of leading and trailing space characters
!     char *trimmed_val = brute_force_trim(val, __gg__console_encoding);
  
!     // And now, anticlimactically, set the variable:
      setenv(sv_envname, trimmed_val, 1);
      }
    }
*************** convert_for_convert(      cbl_encoding_t
*** 12141,12147 ****
                            size_t        input_s,
                            size_t       *nbytes)
    {
!   // iconverter takes care of untranslateable characters.
    char *retval = __gg__miconverter(input->encoding,
                                     dest_enc,
                                     input->data + input_o,
--- 12120,12126 ----
                            size_t        input_s,
                            size_t       *nbytes)
    {
!   // iconverter takes care of untranslatable characters.
    char *retval = __gg__miconverter(input->encoding,
                                     dest_enc,
                                     input->data + input_o,
diff -Nrcpad gcc-17-20260524/libgcobol/libgcobol.h gcc-17-20260531/libgcobol/libgcobol.h
*** gcc-17-20260524/libgcobol/libgcobol.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/libgcobol.h	Sun May 31 22:32:13 2026
*************** void __gg__abort(const char *msg);
*** 131,147 ****
  
  int __gg__fc_char(const cblc_field_t *field);
  
- extern "C"
- void __gg__convert_encoding(char *psz,
-                             cbl_encoding_t from,
-                             cbl_encoding_t to );
- 
- extern "C"
- void __gg__convert_encoding_length(char *pch,
-                                    size_t length,
-                                    cbl_encoding_t from,
-                                    cbl_encoding_t to );
- 
  const unsigned short *__gg__current_collation();
  
  // Warning:  field_from_string uses charmap_t, so you can't safely feed it
--- 131,136 ----
diff -Nrcpad gcc-17-20260524/libgcobol/m4/autoconf.m4 gcc-17-20260531/libgcobol/m4/autoconf.m4
*** gcc-17-20260524/libgcobol/m4/autoconf.m4	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/m4/autoconf.m4	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,144 ----
+ #
+ # Minimal autoconf support for the COBOL language.
+ # Adapted from libga68/m4/autoconf.m4
+ #
+ 
+ # ------------------- #
+ # Language selection.
+ # ------------------- #
+ 
+ # AC_LANG(COBOL)
+ # ------------
+ AC_LANG_DEFINE([COBOL], [cbl], [COBOL], [COBC], [],
+ [ac_ext=cbl
+ ac_compile='$COBC -c $COBFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD'
+ ac_link='$COBC -o conftest$ac_exeext $COBFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD'
+ ac_compiler_gnu=yes
+ ])
+ 
+ #### # AC_LANG_COBOL
+ #### # -----------  There never was an obsolete AC_LANG_COBOL
+ #### AU_DEFUN([AC_LANG_COBOL], [AC_LANG(COBOL)])
+ 
+ # ------------------- #
+ # Producing programs.
+ # ------------------- #
+ 
+ # AC_LANG_PROGRAM(COBOL)([PROLOGUE], [BODY])
+ # ---------------------------------------------
+ m4_define([AC_LANG_PROGRAM(COBOL)],
+ [$1
+ $2])
+ 
+ # _AC_LANG_IO_PROGRAM(COBOL)
+ # -----------------------------
+ # Produce source that performs I/O.
+ m4_define([_AC_LANG_IO_PROGRAM(COBOL)],
+ [AC_LANG_PROGRAM([],
+ [       IDENTIFICATION DIVISION.
+        PROGRAM-ID. iotest.
+        ENVIRONMENT      DIVISION.
+        INPUT-OUTPUT     SECTION.
+        FILE-CONTROL.
+        SELECT TEST-FILE ASSIGN "conftest.out".
+        DATA             DIVISION.
+        FILE             SECTION.
+        FD  TEST-FILE.
+        01  TEST-REC     PIC X(10).
+        WORKING-STORAGE  SECTION.
+        01  MSG          PIC X(10) VALUE 'Sam I am'.
+        >>TURN EC-ALL CHECKING
+        PROCEDURE        DIVISION.
+            MOVE MSG to TEST-REC.
+            OPEN  OUTPUT TEST-FILE.
+            WRITE TEST-REC.
+            CLOSE TEST-FILE.
+          GOBACK.
+ ])])
+ 
+ # AC_LANG_CALL(COBOL)(PROLOGUE, FUNCTION)
+ # ------------------------------------------
+ # Avoid conflicting decl of main.
+ m4_define([AC_LANG_CALL(COBOL)],
+ [AC_LANG_PROGRAM([],[])])
+ 
+ # AC_LANG_FUNC_LINK_TRY(COBOL)(FUNCTION)
+ # -----------------------------------------
+ # Try to link a program which calls FUNCTION.
+ m4_define([AC_LANG_FUNC_LINK_TRY(COBOL)],
+ [AC_LANG_PROGRAM([],[])])
+ 
+ #### # AC_LANG_BOOL_COMPILE_TRY(COBOL)(PROLOGUE, EXPRESSION)
+ #### # --------------------------------------------------------
+ #### # Return a program which is valid if EXPRESSION is nonzero.
+ #### m4_define([AC_LANG_BOOL_COMPILE_TRY(COBOL)],
+ #### [AC_LANG_PROGRAM([], [@<:@$2@:>@INT test multiple;
+ #### 		      0])])
+ #### 
+ #### # AC_LANG_INT_SAVE(COBOL)(PROLOGUE, EXPRESSION)
+ #### # ------------------------------------------------
+ #### m4_define([AC_LANG_INT_SAVE(COBOL)],
+ #### [AC_LANG_PROGRAM([
+ #### proc itoa = (int i) string:
+ ####       begin if i = 0
+ #### 	    then "0"
+ #### 	    else int n := ABS i;
+ #### 		 string res;
+ #### 		 while n /= 0
+ #### 		 do int rem = n %* 10;
+ #### 		    res := (REPR (rem > 9 | (rem - 10) + ABS "a"
+ #### 				  | rem + ABS "0")
+ #### 			    + res);
+ #### 		    n %:= 10
+ #### 		 od;
+ #### 		 (i < 0 | "-" + res | res)
+ #### 	    fi
+ ####       end;
+ #### 
+ #### int ret := 0;
+ #### int fd = fopen ("conftest.val", file o wronly)/
+ #### (fd = -1 | ret := 1; stop);
+ #### (fputs (fd, itoa ($2)) = 0 | ret := 1; stop)
+ #### ])])
+ 
+ # ---------------------- #
+ # Looking for compilers. #
+ # ---------------------- #
+ 
+ # AC_LANG_COMPILER(COBOL)
+ # --------------------------
+ AC_DEFUN([AC_LANG_COMPILER(COBOL)],
+ [AC_REQUIRE([AC_PROG_COBOL])])
+ 
+ # AC_PROG_COBOL
+ # ------------
+ AN_MAKEVAR([COBC], [AC_PROG_COBOL])
+ AN_PROGRAM([gcobol], [AC_PROG_COBOL])
+ AC_DEFUN([AC_PROG_COBOL],
+ [AC_LANG_PUSH(COBOL)dnl
+ AC_ARG_VAR([COBC], [COBOL compiler command])dnl
+ AC_ARG_VAR([COBFLAGS], [COBOL compiler flags])dnl
+ _AC_ARG_VAR_LDFLAGS()dnl
+ m4_ifval([$1],
+       [AC_CHECK_TOOLS(COBOL, [$1])],
+ [AC_CHECK_TOOL(COBC, gcobol)
+ if test -z "$COBC"; then
+   if test -n "$ac_tool_prefix"; then
+     AC_CHECK_PROG(COBC, [${ac_tool_prefix}gcobol], [$ac_tool_prefix}gcobol])
+   fi
+ fi
+ if test -z "$COBC"; then
+   AC_CHECK_PROG(COBC, gcobol, gcobol, , , false)
+ fi
+ ])
+ 
+ # Provide some information about the compiler.
+ _AS_ECHO_LOG([checking for _AC_LANG compiler version])
+ set X $ac_compile
+ ac_compiler=$[2]
+ _AC_DO_LIMIT([$ac_compiler --version >&AS_MESSAGE_LOG_FD])
+ m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl
+ m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl
+ COBFLAGS="-g -O2"
+ AC_LANG_POP(COBOL)dnl
+ ])# AC_PROG_COBOL
diff -Nrcpad gcc-17-20260524/libgcobol/posix/bin/udf-gen gcc-17-20260531/libgcobol/posix/bin/udf-gen
*** gcc-17-20260524/libgcobol/posix/bin/udf-gen	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/bin/udf-gen	Sun May 31 22:32:13 2026
*************** class VisitPrototypes(c_ast.NodeVisitor)
*** 188,193 ****
--- 188,194 ----
          return node.type.type.name
  
      def visit_Decl(self, node):
+         global prefix
          name = node.name
          if name in self.done:
              return
*************** class VisitPrototypes(c_ast.NodeVisitor)
*** 252,258 ****
          sname = name
          if( sname[0] == '_' ):
              sname = sname[1:]
!         print( '        Function-ID. posix-%s.' % sname)
  
          print( '        Data Division.')
          print( '        Linkage Section.')
--- 253,259 ----
          sname = name
          if( sname[0] == '_' ):
              sname = sname[1:]
!         print( '        Function-ID. %s%s.' % (prefix, sname))
  
          print( '        Data Division.')
          print( '        Linkage Section.')
*************** class VisitPrototypes(c_ast.NodeVisitor)
*** 272,283 ****
          print( '          Call "%s" %s Returning Return-Value.'
                 % (name, using_args) )
          print( '          Goback.')
!         print( '        End Function posix-%s.' % sname)
  
  # Hard code a path to the fake includes
  # if not using cpp(1) environment variables.
  cpp_args = ['-I/home/jklowden/projects/3rd/pycparser/utils/fake_libc_include']
  
  for var in ('CPATH', 'C_INCLUDE_PATH'):
      dir = os.getenv(var)
      if dir:
--- 273,287 ----
          print( '          Call "%s" %s Returning Return-Value.'
                 % (name, using_args) )
          print( '          Goback.')
!         print( '        End Function %s%s.' % (prefix, sname))
  
  # Hard code a path to the fake includes
  # if not using cpp(1) environment variables.
  cpp_args = ['-I/home/jklowden/projects/3rd/pycparser/utils/fake_libc_include']
  
+ # Set up the default prefix for generated COBOL functions.
+ prefix = 'posix-'
+ 
  for var in ('CPATH', 'C_INCLUDE_PATH'):
      dir = os.getenv(var)
      if dir:
*************** def process(srcfile):
*** 295,301 ****
  
  __doc__ = """
  SYNOPSIS
!     udf-gen [-I include-path] [header-file ...]
  
  DESCRIPTION
      For each C function declared in header-file,
--- 299,305 ----
  
  __doc__ = """
  SYNOPSIS
!     udf-gen [-I include-path] [-p prefix] [header-file ...]
  
  DESCRIPTION
      For each C function declared in header-file,
*************** declarations in Section 2 of the manual.
*** 313,318 ****
--- 317,327 ----
  the preprocessor to use the fake header files instead of the system
  header files.
  
+     By default, udf-gen prefixes all generated COBOL functions with
+ "posix-" e.g.: POSIX's write is translated to "posix-write".
+ If you wish to change this behaviour, use the -p option to set up a
+ different prefix.
+ 
  LIMITATIONS
      udf-gen does not recognize C struct parameters, such as used by stat(2).
  
*************** be needed for example by chmod(2).
*** 322,332 ****
  
  def main( argv=None ):
      global cpp_args
      if argv is None:
          argv = sys.argv
      # parse command line options
      try:
!         opts, args = getopt.getopt(sys.argv[1:], "D:hI:m:", ["help"])
      except getopt.error as msg:
          print(msg)
          print("for help use --help")
--- 331,342 ----
  
  def main( argv=None ):
      global cpp_args
+     global prefix
      if argv is None:
          argv = sys.argv
      # parse command line options
      try:
!         opts, args = getopt.getopt(sys.argv[1:], "D:hI:m:p:", ["help"])
      except getopt.error as msg:
          print(msg)
          print("for help use --help")
*************** def main( argv=None ):
*** 343,348 ****
--- 353,360 ----
              cpp_args.append('-D%s ' % arg)
          if opt == '-I':
              cpp_args[0] = '-I' + arg
+         if opt == '-p':
+             prefix = arg
  
      # process arguments
      if not args:
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-close.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-close.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-close.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-close.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,13 ----
+       >>PUSH SOURCE FORMAT
+       >>SOURCE FIXED
+         Identification Division.
+         Function-id. posix-close prototype.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd
+              Returning Return-Value.
+         End Function posix-close.
+       >>POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-errno.cbl gcc-17-20260531/libgcobol/posix/cpy/posix-errno.cbl
*** gcc-17-20260524/libgcobol/posix/cpy/posix-errno.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/cpy/posix-errno.cbl	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
         Identification Division.
         Function-ID. posix-errno.
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
         Identification Division.
         Function-ID. posix-errno.
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-errno.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-errno.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-errno.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-errno.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,44 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+        Identification Division.
+        Function-id. posix-errno prototype.
+ 
+        Data Division.
+        Linkage Section.
+        77 Return-Value Binary-Long.
+        01 Error-Msg PIC X ANY LENGTH.
+ 
+        Procedure Division
+            using Error-Msg
+            Returning Return-Value.
+        END FUNCTION posix-errno.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-exit.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-exit.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-exit.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-exit.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-exit prototype.
+        data division.
+        linkage section.
+        77 return-value binary-long.
+        77 exit-status binary-long.
+        procedure division using exit-status returning return-value.
+        end function posix-exit.
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-fstat.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-fstat.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-fstat.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-fstat.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-fstat prototype.
+        data division.
+        linkage section.
+        77 retcode binary-long.
+        01 file-handle pic 9(8) usage comp.
+        01 statbuf.
+         COPY statbuf.
+        procedure division using
+                           by value file-handle,
+                           by reference statbuf
+                           returning retcode.
+        end function posix-fstat.
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-ftruncate.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-ftruncate.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-ftruncate.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-ftruncate.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,14 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-ftruncate prototype.
+        data division.
+        linkage section.
+        77 return-value binary-long.
+        01 lk-fd pic 9(8) usage comp.
+        01 lk-offset binary-double.
+        procedure division using by value lk-fd
+                                 by value lk-offset
+                                 returning return-value.
+        end function posix-ftruncate.
+        >>POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-localtime.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-localtime.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-localtime.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-localtime.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,34 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-localtime prototype.
+        data division.
+        linkage section.
+        77 return-value usage binary-long.
+        01 lk-timep usage pointer.
+        01 lk-tm.
+        copy tm.
+ 
+        procedure division using by value lk-timep
+                                 by reference lk-tm
+                                 returning return-value.
+ 
+        end function posix-localtime.
+ 
+        identification division.
+        program-id. posix_localtime prototype.
+        data division.
+        linkage section.
+        77 return-value usage binary-long.
+        01 lk-timep usage pointer.
+        01 bufsize Usage Binary-Long.
+ 
+        procedure division using by value lk-timep
+                                 by value bufsize
+                                 returning return-value.
+ 
+        end program posix_localtime.
+ 
+ 
+ 
+        >>POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-lseek.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-lseek.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-lseek.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-lseek.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,50 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+        identification division.
+        function-id. posix-lseek prototype.
+        data division.
+        linkage section.
+        77 return-value binary-long.
+        01 lk-fd pic 9(8) usage comp.
+        01 lk-offset binary-double.
+        01 lk-whence binary-long.
+          88 SEEK-SET value 2.
+          88 SEEK-CUR value 4.
+          88 SEEK-END value 8.
+ 
+        procedure division using by value lk-fd
+                                 by value lk-offset
+                                 by value lk-whence
+                                 returning return-value.
+ 
+        end function posix-lseek.
+        >>POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-mkdir.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-mkdir.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-mkdir.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-mkdir.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-mkdir prototype.
+        data division.
+        linkage section.
+        77 return-value binary-long.
+        01 lk-pathname pic x any length.
+        01 lk-mode binary-long.
+ 
+        procedure division using by reference lk-pathname
+                                 by value lk-mode
+                                 returning return-value.
+ 
+        end function posix-mkdir.
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-open.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-open.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-open.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-open.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,19 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-open prototype.
+        data division.
+        Linkage Section.
+           77 Return-Value Binary-Long Signed.
+           01 Lk-pathname PIC X ANY LENGTH.
+           01 Lk-flags    PIC 9(8) comp-5.
+           01 Lk-mode     PIC 9(8) comp-5.
+ 
+        Procedure Division using
+              By Reference Lk-pathname,
+              By Value Lk-flags,
+              By Value Lk-mode
+              Returning Return-Value.
+ 
+        end function posix-open.
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-read.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-read.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-read.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-read.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,15 ----
+         Identification Division.
+         Function-id. posix-read prototype.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP-5.
+           01 Lk-buf PIC X ANY LENGTH.
+           01 Lk-count PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+ 
+         End Function posix-read.
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-stat.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-stat.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-stat.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-stat.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,15 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+        identification division.
+        function-id. posix-stat prototype.
+        data division.
+        linkage section.
+        77 return-value binary-long.
+        01 lk-pathname pic x any length.
+        01 lk-statbuf.
+        COPY statbuf.
+        procedure division using by reference lk-pathname
+                                 by reference lk-statbuf
+                                 returning return-value.
+        end function posix-stat.
+        >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-unlink.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-unlink.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-unlink.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-unlink.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,42 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+         Identification Division.
+         Function-id. posix-unlink prototype.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-pathname PIC X ANY LENGTH.
+ 
+         Procedure Division using
+              By Reference Lk-pathname,
+              Returning Return-Value.
+ 
+         End Function posix-unlink.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/posix-write.cpy gcc-17-20260531/libgcobol/posix/cpy/posix-write.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/posix-write.cpy	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/cpy/posix-write.cpy	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,47 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+       *  long  write( int  fd, const void *  buf,  unsigned long  count)
+         Identification Division.
+         Function-id. posix-write prototype.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP-5.
+           01 Lk-buf PIC X ANY LENGTH.
+           01 Lk-count PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+         End Function posix-write.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/psx-lseek.cpy gcc-17-20260531/libgcobol/posix/cpy/psx-lseek.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/psx-lseek.cpy	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/cpy/psx-lseek.cpy	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This file is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in November 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
          >>DEFINE SEEK_SET      AS     2
          >>DEFINE SEEK_CUR      AS     4
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
          >>DEFINE SEEK_SET      AS     2
          >>DEFINE SEEK_CUR      AS     4
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/psx-open.cpy gcc-17-20260531/libgcobol/posix/cpy/psx-open.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/psx-open.cpy	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/cpy/psx-open.cpy	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This file is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in November 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
        * >>DEFINE O_ACCMODE AS 3
  
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
        * >>DEFINE O_ACCMODE AS 3
  
***************
*** 16,23 ****
          >>DEFINE O_DIRECTORY   AS    65536
          >>DEFINE O_DSYNC       AS     4096
          >>DEFINE O_EXCL        AS      128
!         >>DEFINE O_LARGEFILE   AS    32768
!         >>DEFINE O_NOATIME     AS   262144
          >>DEFINE O_NOCTTY      AS      256
          >>DEFINE O_NOFOLLOW    AS   131072
          >>DEFINE O_NONBLOCK    AS     2048
--- 39,46 ----
          >>DEFINE O_DIRECTORY   AS    65536
          >>DEFINE O_DSYNC       AS     4096
          >>DEFINE O_EXCL        AS      128
!       * >>DEFINE O_LARGEFILE   AS    32768 not POSIX
!       * >>DEFINE O_NOATIME     AS   262144 not POSIX
          >>DEFINE O_NOCTTY      AS      256
          >>DEFINE O_NOFOLLOW    AS   131072
          >>DEFINE O_NONBLOCK    AS     2048
***************
*** 25,31 ****
          >>DEFINE O_RDONLY      AS        0
          >>DEFINE O_RDWR        AS        2
          >>DEFINE O_SYNC        AS  1052672
!         >>DEFINE O_TMPFILE     AS  4194304 + O_DIRECTORY
          >>DEFINE O_TRUNC       AS      512
          >>DEFINE O_WRONLY      AS        1
  
--- 48,54 ----
          >>DEFINE O_RDONLY      AS        0
          >>DEFINE O_RDWR        AS        2
          >>DEFINE O_SYNC        AS  1052672
!       * >>DEFINE O_TMPFILE     AS  4194304 + O_DIRECTORY  not POSIX
          >>DEFINE O_TRUNC       AS      512
          >>DEFINE O_WRONLY      AS        1
  
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/statbuf.cpy gcc-17-20260531/libgcobol/posix/cpy/statbuf.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/statbuf.cpy	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/cpy/statbuf.cpy	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This stat(2) buffer definition is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
               05  st_dev     Usage is Binary-Double  Unsigned.
               05  st_ino     Usage is Binary-Double  Unsigned.
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
               05  st_dev     Usage is Binary-Double  Unsigned.
               05  st_ino     Usage is Binary-Double  Unsigned.
***************
*** 16,22 ****
               05  st_size    Usage is Binary-Double  Unsigned.
               05  st_blksize Usage is Binary-Double  Unsigned.
               05  st_blocks  Usage is Binary-Double  Unsigned.
!              05  st_atime   Usage is Binary-Double  Unsigned.
!              05  st_mtime   Usage is Binary-Double  Unsigned.
!              05  st_ctime   Usage is Binary-Double  Unsigned.
          >> POP source format
--- 39,45 ----
               05  st_size    Usage is Binary-Double  Unsigned.
               05  st_blksize Usage is Binary-Double  Unsigned.
               05  st_blocks  Usage is Binary-Double  Unsigned.
!              05  st_atime   Usage is Binary-Double.
!              05  st_mtime   Usage is Binary-Double.
!              05  st_ctime   Usage is Binary-Double.
          >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/cpy/tm.cpy gcc-17-20260531/libgcobol/posix/cpy/tm.cpy
*** gcc-17-20260524/libgcobol/posix/cpy/tm.cpy	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/cpy/tm.cpy	Sun May 31 22:32:13 2026
***************
*** 1,10 ****
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
               02  tm_sec   Usage is Binary-Long.
               02  tm_min   Usage is Binary-Long.
--- 1,33 ----
          >> PUSH source format
          >>SOURCE format is fixed
  
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
               02  tm_sec   Usage is Binary-Long.
               02  tm_min   Usage is Binary-Long.
diff -Nrcpad gcc-17-20260524/libgcobol/posix/shim/fstat.cc gcc-17-20260531/libgcobol/posix/shim/fstat.cc
*** gcc-17-20260524/libgcobol/posix/shim/fstat.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/shim/fstat.cc	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,80 ----
+ #include <assert.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
+ #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+ 
+ extern "C" {
+ 
+ #include "stat.h"
+ 
+ #define offset_assert(name, offset) do {                                \
+   if( offsetof(posix_stat_t, name) != offset ) {                        \
+     fprintf(stderr, "C posix_stat_t offset for %s %zu != COBOL offset %d\n", \
+             #name, offsetof(posix_stat_t, name), offset);               \
+     assert(offsetof(posix_stat_t, name) == offset);                     \
+   }                                                                     \
+  } while(false);
+ 
+ int
+ posix_fstat(int fd, posix_stat_t *statbuf, size_t size) {
+   struct stat sb;
+   int erc = fstat(fd, &sb);
+ 
+   if( sizeof(posix_stat_t) != size ) {
+     fprintf(stderr, "%s:%d: %lu != received size %lu\n", __func__, __LINE__,
+             (unsigned long)sizeof(struct posix_stat_t),
+             (unsigned long)size);
+     fflush(stdout);
+     fflush(stderr);
+   }
+   if( statbuf == nullptr ) {
+     fprintf(stderr, "%s:%d: received NULL statbuf\n", __func__, __LINE__);
+     fflush(stdout);
+     fflush(stderr);
+   }
+ 
+   if( true ) { // Verify last known reported COBOL offsets agree with C offsets.
+     offset_assert( st_dev,         0 );
+     offset_assert( st_ino       ,  8 );
+     offset_assert( st_mode      , 16 );
+     offset_assert( st_nlink     , 24 );
+     offset_assert( st_uid       , 32 );
+     offset_assert( st_gid       , 40 );
+     offset_assert( st_rdev      , 48 );
+     offset_assert( st_size      , 56 );
+     offset_assert( st_blksize   , 64 );
+     offset_assert( st_blocks    , 72 );
+     offset_assert( psx_atime    , 80 );
+     offset_assert( psx_mtime    , 88 );
+     offset_assert( psx_ctime    , 96 );
+   }
+ 
+   assert(statbuf);
+ 
+   if( erc == 0 ) {
+     statbuf->st_dev = sb.st_dev;
+     statbuf->st_ino = sb.st_ino;
+     statbuf->st_mode = sb.st_mode;
+     statbuf->st_nlink = sb.st_nlink;
+     statbuf->st_uid = sb.st_uid;
+     statbuf->st_gid = sb.st_gid;
+     statbuf->st_rdev = sb.st_rdev;
+     statbuf->st_size = sb.st_size;
+     statbuf->st_blksize = sb.st_blksize;
+     statbuf->st_blocks = sb.st_blocks;
+     statbuf->psx_atime = sb.st_atime;
+     statbuf->psx_mtime = sb.st_mtime;
+     statbuf->psx_ctime = sb.st_ctime;
+   }
+ 
+   return erc;
+ 
+ 
+ }
+ 
+ } // extern "C"
diff -Nrcpad gcc-17-20260524/libgcobol/posix/shim/lseek.cc gcc-17-20260531/libgcobol/posix/shim/lseek.cc
*** gcc-17-20260524/libgcobol/posix/shim/lseek.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/shim/lseek.cc	Sun May 31 22:32:13 2026
***************
*** 2,30 ****
  #include <unistd.h>
  
  #include <cassert>
- #include <map>
- 
- #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
  
  extern "C" {
  
  off_t
  posix_lseek(int fd, off_t offset, int whence) {
- 
-   static const std::map<int, int> whences {
-     { 2, SEEK_SET },
-     { 4, SEEK_CUR },
-     { 8, SEEK_END },
-   };
- 
    /*
     * Map valid input whence value onto C standard library value.
     * Invalid values are passed through and rejected by lseek(2) per its documentation.
     * (The caller always needs to check for errors anyway.)
     */
!   auto p = whences.find(whence);
!   if( p != whences.end() ) whence = p->second;
! 
    return lseek(fd, offset, whence);
  }
  
--- 2,28 ----
  #include <unistd.h>
  
  #include <cassert>
  
  extern "C" {
  
  off_t
  posix_lseek(int fd, off_t offset, int whence) {
    /*
     * Map valid input whence value onto C standard library value.
     * Invalid values are passed through and rejected by lseek(2) per its documentation.
     * (The caller always needs to check for errors anyway.)
     */
!   switch( whence ) {
!   case 2:
!     whence = SEEK_SET;
!     break;
!   case 4:
!     whence = SEEK_CUR;
!     break;
!   case 8:
!     whence = SEEK_END;
!     break;
!   } 
    return lseek(fd, offset, whence);
  }
  
diff -Nrcpad gcc-17-20260524/libgcobol/posix/shim/open.cc gcc-17-20260531/libgcobol/posix/shim/open.cc
*** gcc-17-20260524/libgcobol/posix/shim/open.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/shim/open.cc	Sun May 31 22:32:13 2026
*************** extern "C" {
*** 15,20 ****
--- 15,26 ----
  
  #include "stat.h"
  
+   /*
+    * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124616
+    * https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html 
+    * None of 0_LARGEFILE, O_NOATIME, nor O_TMPFILE are POSIX. 
+    */
+ 
  int
  posix_open(const char *pathname, int cbl_flags, int cbl_mode) {
  
*************** posix_open(const char *pathname, int cbl
*** 30,43 ****
      { cbl::PSX_O_NONBLOCK, O_NONBLOCK },
      { cbl::PSX_O_DSYNC, O_DSYNC },
      { cbl::PSX_O_DIRECT, O_DIRECT },
-     { cbl::PSX_O_LARGEFILE, O_LARGEFILE },
      { cbl::PSX_O_DIRECTORY, O_DIRECTORY },
      { cbl::PSX_O_NOFOLLOW, O_NOFOLLOW },
-     { cbl::PSX_O_NOATIME, O_NOATIME },
      { cbl::PSX_O_CLOEXEC, O_CLOEXEC },
      { cbl::PSX_O_SYNC, O_SYNC },
      { cbl::PSX_O_PATH, O_PATH },
      { cbl::PSX_O_TMPFILE, O_TMPFILE },
    };
  
    static const std::map<int, int> mode_bits {
--- 36,52 ----
      { cbl::PSX_O_NONBLOCK, O_NONBLOCK },
      { cbl::PSX_O_DSYNC, O_DSYNC },
      { cbl::PSX_O_DIRECT, O_DIRECT },
      { cbl::PSX_O_DIRECTORY, O_DIRECTORY },
      { cbl::PSX_O_NOFOLLOW, O_NOFOLLOW },
      { cbl::PSX_O_CLOEXEC, O_CLOEXEC },
      { cbl::PSX_O_SYNC, O_SYNC },
      { cbl::PSX_O_PATH, O_PATH },
+ #if 0
+     // Linux, not POSIX
+     { cbl::PSX_O_LARGEFILE, O_LARGEFILE },
+     { cbl::PSX_O_NOATIME, O_NOATIME },
      { cbl::PSX_O_TMPFILE, O_TMPFILE },
+ #endif
    };
  
    static const std::map<int, int> mode_bits {
diff -Nrcpad gcc-17-20260524/libgcobol/posix/t/errno.cbl gcc-17-20260531/libgcobol/posix/t/errno.cbl
*** gcc-17-20260524/libgcobol/posix/t/errno.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/t/errno.cbl	Sun May 31 22:32:13 2026
***************
*** 1,7 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This program is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
          COPY posix-mkdir.
          COPY posix-errno.
--- 1,33 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
! 
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
          COPY posix-mkdir.
          COPY posix-errno.
***************
*** 29,31 ****
--- 55,58 ----
          End-If.
  
          Goback.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/t/exit.cbl gcc-17-20260531/libgcobol/posix/t/exit.cbl
*** gcc-17-20260524/libgcobol/posix/t/exit.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/t/exit.cbl	Sun May 31 22:32:13 2026
***************
*** 1,7 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This program is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
          COPY posix-exit.
  
--- 1,33 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
! 
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
          COPY posix-exit.
  
***************
*** 18,20 ****
--- 44,48 ----
        * Does not return, Does not print
          Display 'How did we get here?'
          Goback.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-17-20260524/libgcobol/posix/t/localtime.cbl gcc-17-20260531/libgcobol/posix/t/localtime.cbl
*** gcc-17-20260524/libgcobol/posix/t/localtime.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/t/localtime.cbl	Sun May 31 22:32:13 2026
***************
*** 1,7 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This program is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
        * Include the posix-stat and posix-localtime functions.
          COPY posix-stat.
--- 1,33 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
! 
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
        * Include the posix-stat and posix-localtime functions.
          COPY posix-stat.
***************
*** 50,52 ****
--- 76,79 ----
                  tm_mon  of Today '-'
                  tm_wday of Today.
          Goback.
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-17-20260524/libgcobol/posix/t/stat.cbl gcc-17-20260531/libgcobol/posix/t/stat.cbl
*** gcc-17-20260524/libgcobol/posix/t/stat.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/t/stat.cbl	Sun May 31 22:32:13 2026
***************
*** 1,7 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This program is in the public domain.
!       *  Contributed by James K. Lowden of Cobolworx in October 2025
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  
        * Include the posix-stat function
          COPY posix-stat.
--- 1,33 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
! 
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
        * Include the posix-stat function
          COPY posix-stat.
***************
*** 27,29 ****
--- 53,56 ----
                    'errno ', Function posix-errno(Msg), ': ' Msg.
            
          Goback.
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-close.cbl gcc-17-20260531/libgcobol/posix/udf/posix-close.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-close.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/udf/posix-close.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,47 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+       *  int close(int fd);
+         Copy "posix-close.cpy".
+         Identification Division.
+         Function-ID. posix-close.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd
+              Returning Return-Value.
+           Call "close" using
+              By Value Lk-fd,
+              Returning Return-Value.
+           Goback.
+         End Function posix-close.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-errno.cbl gcc-17-20260531/libgcobol/posix/udf/posix-errno.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-errno.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/udf/posix-errno.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,50 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+        Copy "posix-errno.cpy".
+        Identification Division.
+        Function-ID. posix-errno.
+ 
+        Data Division.
+        Linkage Section.
+        77 Return-Value Binary-Long.
+        01 Error-Msg PIC X ANY LENGTH.
+ 
+        Procedure Division
+            using Error-Msg
+            Returning Return-Value.
+        CALL "posix_errno"
+            returning Return-Value.
+        CALL "strerror"
+            using by value Return-Value
+            returning error-msg.
+        Goback.
+        END FUNCTION posix-errno.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-exit.cbl gcc-17-20260531/libgcobol/posix/udf/posix-exit.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-exit.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-exit.cbl	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,34 ----
+        >> PUSH source format
+        >>SOURCE format is fixed
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+        Copy "posix-exit.cpy".
         Identification Division.
         Function-ID. posix-exit.
  
***************
*** 9,12 ****
         Procedure Division using Exit-Status Returning Return-Value.
         CALL "_exit" using by value Exit-Status.
         Goback.
!        END FUNCTION posix-exit.
\ No newline at end of file
--- 40,44 ----
         Procedure Division using Exit-Status Returning Return-Value.
         CALL "_exit" using by value Exit-Status.
         Goback.
!        END FUNCTION posix-exit.
!        >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-fstat.cbl gcc-17-20260531/libgcobol/posix/udf/posix-fstat.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-fstat.cbl	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libgcobol/posix/udf/posix-fstat.cbl	Sun May 31 22:32:13 2026
***************
*** 0 ****
--- 1,56 ----
+         >>PUSH SOURCE FORMAT
+         >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "posix-fstat.cpy".
+       * int fstat(int fd, struct stat *statbuf);
+         IDENTIFICATION DIVISION.
+         FUNCTION-ID. POSIX-FSTAT.
+ 
+         DATA DIVISION.
+         WORKING-STORAGE SECTION.
+           77 bufsize Usage BINARY-LONG.
+         LINKAGE SECTION.
+           77 RETCODE BINARY-LONG.
+           01  file-handle PIC 9(8) usage comp.
+           01  statbuf.
+             COPY statbuf.
+ 
+         PROCEDURE DIVISION USING
+                           BY VALUE file-handle,
+                           BY REFERENCE statbuf
+                           RETURNING RETCODE.
+           MOVE FUNCTION BYTE-LENGTH(statbuf) TO bufsize.
+           CALL "posix_fstat" USING BY VALUE file-handle,
+               BY REFERENCE statbuf,
+               BY VALUE bufsize RETURNING RETCODE
+           GOBACK.
+ 
+         END FUNCTION POSIX-FSTAT.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-ftruncate.cbl gcc-17-20260531/libgcobol/posix/udf/posix-ftruncate.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-ftruncate.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-ftruncate.cbl	Sun May 31 22:32:13 2026
***************
*** 1,15 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by smckinney of COBOLworx Feb 2026.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        *  int ftruncate(int fd, off_t length);
          Identification Division.
          Function-ID. posix-ftruncate.
          Data Division.
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-fd PIC 9(8) Usage COMP.
!           01 Lk-offset Binary-Long.
          Procedure Division using
               By Value Lk-fd,
               By Value Lk-offset,
--- 1,42 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
        *  int ftruncate(int fd, off_t length);
+         Copy "posix-ftruncate.cpy".
          Identification Division.
          Function-ID. posix-ftruncate.
          Data Division.
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-fd PIC 9(8) Usage COMP.
!           01 Lk-offset Binary-Double.
          Procedure Division using
               By Value Lk-fd,
               By Value Lk-offset,
***************
*** 21,23 ****
--- 48,51 ----
               Returning Return-Value.
            Goback.
          End Function posix-ftruncate.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-localtime.cbl gcc-17-20260531/libgcobol/posix/udf/posix-localtime.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-localtime.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-localtime.cbl	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,34 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         Copy "posix-localtime.cpy".
        *  int  stat(const char *  pathname,  struct stat *  statbuf)
          Identification Division.
          Function-ID. posix-localtime.
***************
*** 9,27 ****
            COPY tm.
          Linkage Section.
            77 Return-Value Usage Binary-Long.
!           01 Lk-timep Usage Binary-Long.
            01 Lk-tm.
            COPY tm.
!           
          Procedure Division using
!              By Reference Lk-timep,
!              By Reference Lk-tm, 
               Returning Return-Value.
  
            Move Function Length(Lk-tm-posix) to bufsize.
            Call "posix_localtime" using
!              By Reference Lk-timep,
!              By Value     bufsize, 
               Returning tm-pointer.
  
            If tm-pointer = NULL
--- 40,58 ----
            COPY tm.
          Linkage Section.
            77 Return-Value Usage Binary-Long.
!           01 Lk-timep Usage Pointer.
            01 Lk-tm.
            COPY tm.
! 
          Procedure Division using
!              By Value Lk-timep,
!              By Reference Lk-tm,
               Returning Return-Value.
  
            Move Function Length(Lk-tm-posix) to bufsize.
            Call "posix_localtime" using
!              By Value Lk-timep,
!              By Value bufsize,
               Returning tm-pointer.
  
            If tm-pointer = NULL
***************
*** 30,35 ****
               move 0 to Return-Value
               set address of lk-tm-posix to tm-pointer
               move lk-tm-posix to lk-tm.
!              
            Goback.
          End Function posix-localtime.
--- 61,67 ----
               move 0 to Return-Value
               set address of lk-tm-posix to tm-pointer
               move lk-tm-posix to lk-tm.
! 
            Goback.
          End Function posix-localtime.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-lseek.cbl gcc-17-20260531/libgcobol/posix/udf/posix-lseek.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-lseek.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-lseek.cbl	Sun May 31 22:32:13 2026
***************
*** 1,15 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of COBOLworx November 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
        *  unsigned long  lseek( int  fd,  unsigned long  offset,  int  whence)
          Identification Division.
          Function-ID. posix-lseek.
          Data Division.
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-fd PIC 9(8) Usage COMP.
!           01 Lk-offset Binary-Long.
            01 Lk-whence Binary-Long.
               88 SEEK-SET VALUE 2.
               88 SEEK-CUR VALUE 4.
--- 1,42 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
        *  unsigned long  lseek( int  fd,  unsigned long  offset,  int  whence)
+         Copy "posix-lseek.cpy".
          Identification Division.
          Function-ID. posix-lseek.
          Data Division.
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-fd PIC 9(8) Usage COMP.
!           01 Lk-offset Binary-Double.
            01 Lk-whence Binary-Long.
               88 SEEK-SET VALUE 2.
               88 SEEK-CUR VALUE 4.
***************
*** 26,28 ****
--- 53,56 ----
               Returning Return-Value.
            Goback.
          End Function posix-lseek.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-mkdir.cbl gcc-17-20260531/libgcobol/posix/udf/posix-mkdir.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-mkdir.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-mkdir.cbl	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,34 ----
+         >> PUSH source format
+         >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         Copy "posix-mkdir.cpy".
          Identification Division.
          Function-ID. posix-mkdir.
          Data Division.
***************
*** 7,21 ****
            77 Return-Value Binary-Long.
            01 Lk-pathname PIC X ANY LENGTH.
            01 Lk-Mode Binary-Long.
!           
          Procedure Division using
               By Reference Lk-pathname,
!              By Value Lk-Mode, 
               Returning Return-Value.
!           Inspect Backward Lk-pathname Replacing Leading Space By Low-Value
            Call "mkdir" using
               By Reference Lk-pathname,
!              By Value Lk-Mode, 
               Returning Return-Value.
            Goback.
          End Function posix-mkdir.
--- 38,54 ----
            77 Return-Value Binary-Long.
            01 Lk-pathname PIC X ANY LENGTH.
            01 Lk-Mode Binary-Long.
! 
          Procedure Division using
               By Reference Lk-pathname,
!              By Value Lk-Mode,
               Returning Return-Value.
!           Inspect Backward Lk-pathname
!                   Replacing Leading Space By Low-Value
            Call "mkdir" using
               By Reference Lk-pathname,
!              By Value Lk-Mode,
               Returning Return-Value.
            Goback.
          End Function posix-mkdir.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-open.cbl gcc-17-20260531/libgcobol/posix/udf/posix-open.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-open.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-open.cbl	Sun May 31 22:32:13 2026
***************
*** 1,5 ****
--- 1,34 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         Copy "posix-open.cpy".
        * int open(const char *pathname, int flags);
          Identification Division.
          Function-ID. posix-open.
***************
*** 16,32 ****
          Working-Storage Section.
            77 Ws-pathname PIC X(8192).
            77 Ws-mode-ptr Pointer.
!           77 Ws-mode     PIC 9(8) Value 0.
          Linkage Section.
!           77 Return-Value Binary-Long.
            01 Lk-pathname PIC X ANY LENGTH.
!           01 Lk-flags    PIC 9(8) Binary-long.
!           01 Lk-mode     PIC 9(8).
  
          Procedure Division using
               By Reference Lk-pathname,
!              By Reference Lk-flags,
!              By Reference Optional Lk-mode
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
--- 45,61 ----
          Working-Storage Section.
            77 Ws-pathname PIC X(8192).
            77 Ws-mode-ptr Pointer.
!           77 Ws-mode     PIC 9(8) COMP-5 VALUE 0.
          Linkage Section.
!           77 Return-Value Binary-Long Signed.
            01 Lk-pathname PIC X ANY LENGTH.
!           01 Lk-flags    PIC 9(8) comp-5.
!           01 Lk-mode     PIC 9(8) comp-5.
  
          Procedure Division using
               By Reference Lk-pathname,
!              By Value Lk-flags,
!              By Value Lk-mode
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
***************
*** 38,44 ****
  
            Set ws-mode-ptr to Address Of Lk-mode.
  
!           If ws-mode-ptr > 0 Then *> O_CREAT requires mode
              Move Lk-mode to Ws-mode.
  
            Call "posix_open" using Ws-pathname,
--- 67,73 ----
  
            Set ws-mode-ptr to Address Of Lk-mode.
  
!           If ws-mode-ptr NOT = NULL Then *> O_CREAT requires mode
              Move Lk-mode to Ws-mode.
  
            Call "posix_open" using Ws-pathname,
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-read.cbl gcc-17-20260531/libgcobol/posix/udf/posix-read.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-read.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-read.cbl	Sun May 31 22:32:13 2026
***************
*** 1,8 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of COBOLworx November 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        *  long  read( int  fd,  void *  buf,  unsigned long  count)
          Identification Division.
          Function-ID. posix-read.
          Data Division.
--- 1,35 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
        *  long  read( int  fd,  void *  buf,  unsigned long  count)
+         Copy "posix-read.cpy".
          Identification Division.
          Function-ID. posix-read.
          Data Division.
***************
*** 24,26 ****
--- 51,54 ----
               Returning Return-Value.
            Goback.
          End Function posix-read.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-stat.cbl gcc-17-20260531/libgcobol/posix/udf/posix-stat.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-stat.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-stat.cbl	Sun May 31 22:32:13 2026
***************
*** 1,5 ****
--- 1,34 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
+       * Copyright (c) 2021-2026 Symas Corporation
+       *
+       * Redistribution and use in source and binary forms, with or without
+       * modification, are permitted provided that the following conditions are
+       * met:
+       *
+       * * Redistributions of source code must retain the above copyright
+       *   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
+       *   in the documentation and/or other materials provided with the
+       *   distribution.
+       * * Neither the name of the Symas Corporation nor the names of its
+       *   contributors may be used to endorse or promote products derived from
+       *   this software without specific prior written permission.
+       *
+       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+         COPY "posix-stat.cpy".
        * int  stat(const char *  pathname,  struct stat *  statbuf)
          Identification Division.
          Function-ID. posix-stat.
***************
*** 11,17 ****
            With Debugging Mode
          >>END-IF
            .
!         
          Data Division.
          Working-Storage Section.
            77 bufsize Usage Binary-Long.
--- 40,46 ----
            With Debugging Mode
          >>END-IF
            .
! 
          Data Division.
          Working-Storage Section.
            77 bufsize Usage Binary-Long.
***************
*** 21,34 ****
            01 Lk-pathname PIC X ANY LENGTH.
            01 Lk-statbuf.
            COPY statbuf.
!           
          Procedure Division using
               By Reference Lk-pathname,
!              By Reference Lk-statbuf, 
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
!           Inspect Ws-pathname 
                    Replacing Trailing Space By Low-Value
  
            Move Function Byte-Length(Lk-statbuf) to bufsize.
--- 50,63 ----
            01 Lk-pathname PIC X ANY LENGTH.
            01 Lk-statbuf.
            COPY statbuf.
! 
          Procedure Division using
               By Reference Lk-pathname,
!              By Reference Lk-statbuf,
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
!           Inspect Ws-pathname
                    Replacing Trailing Space By Low-Value
  
            Move Function Byte-Length(Lk-statbuf) to bufsize.
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-unlink.cbl gcc-17-20260531/libgcobol/posix/udf/posix-unlink.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-unlink.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-unlink.cbl	Sun May 31 22:32:13 2026
***************
*** 1,9 ****
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by 
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
          Identification Division.
          Function-ID. posix-unlink.
          Data Division.
--- 1,34 ----
         >>PUSH SOURCE FORMAT
         >>SOURCE FIXED
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
!         Copy "posix-unlink.cpy".
          Identification Division.
          Function-ID. posix-unlink.
          Data Division.
***************
*** 13,28 ****
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-pathname PIC X ANY LENGTH.
!           
          Procedure Division using
               By Reference Lk-pathname,
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
!       D   Inspect Ws-pathname 
        D           Replacing Trailing Space By Low-Value
  
!           Inspect Backward Ws-pathname Replacing Leading Space, 
                                                        By Low-Value.
            Call "unlink" using
               By Reference Ws-pathname,
--- 38,53 ----
          Linkage Section.
            77 Return-Value Binary-Long.
            01 Lk-pathname PIC X ANY LENGTH.
! 
          Procedure Division using
               By Reference Lk-pathname,
               Returning Return-Value.
  
            Move Lk-pathname To Ws-pathname.
!       D   Inspect Ws-pathname
        D           Replacing Trailing Space By Low-Value
  
!           Inspect Backward Ws-pathname Replacing Leading Space,
                                                        By Low-Value.
            Call "unlink" using
               By Reference Ws-pathname,
diff -Nrcpad gcc-17-20260524/libgcobol/posix/udf/posix-write.cbl gcc-17-20260531/libgcobol/posix/udf/posix-write.cbl
*** gcc-17-20260524/libgcobol/posix/udf/posix-write.cbl	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/posix/udf/posix-write.cbl	Sun May 31 22:32:13 2026
***************
*** 1,8 ****
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!       *  This function is in the public domain.
!       *  Contributed by James K. Lowden of COBOLworx November 2025.
!       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        *  long  write( int  fd, const void *  buf,  unsigned long  count)
          Identification Division.
          Function-ID. posix-write.
          Data Division.
--- 1,35 ----
!         >> PUSH source format
!         >>SOURCE format is fixed
!       * Copyright (c) 2021-2026 Symas Corporation
!       *
!       * Redistribution and use in source and binary forms, with or without
!       * modification, are permitted provided that the following conditions are
!       * met:
!       *
!       * * Redistributions of source code must retain the above copyright
!       *   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
!       *   in the documentation and/or other materials provided with the
!       *   distribution.
!       * * Neither the name of the Symas Corporation nor the names of its
!       *   contributors may be used to endorse or promote products derived from
!       *   this software without specific prior written permission.
!       *
!       * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!       * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
!       * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
!       * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
!       * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
!       * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
!       * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
!       * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
!       * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
!       * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
!       * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
! 
        *  long  write( int  fd, const void *  buf,  unsigned long  count)
+         Copy "posix-write.cpy".
          Identification Division.
          Function-ID. posix-write.
          Data Division.
***************
*** 24,26 ****
--- 51,54 ----
               Returning Return-Value.
            Goback.
          End Function posix-write.
+         >> POP source format
diff -Nrcpad gcc-17-20260524/libgcobol/valconv.cc gcc-17-20260531/libgcobol/valconv.cc
*** gcc-17-20260524/libgcobol/valconv.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/valconv.cc	Sun May 31 22:32:13 2026
*************** ec_descr_t __gg__exception_table[] = {
*** 1361,1367 ****
    { ec_argument_imp_command_e,   uc_category_implementor_e,
     "EC-ARGUMENT-IMP-COMMAND", "COMMAND-LINE Subscript out of bounds" },
    { ec_argument_imp_environment_e, uc_category_implementor_e,
!    "EC-ARGUMENT-IMP-ENVIRONMENT", "Envrionment Variable is not defined" },
  
    { ec_bound_e,                  ec_category_none_e,
     "EC-BOUND", "Boundary violation" },
--- 1361,1367 ----
    { ec_argument_imp_command_e,   uc_category_implementor_e,
     "EC-ARGUMENT-IMP-COMMAND", "COMMAND-LINE Subscript out of bounds" },
    { ec_argument_imp_environment_e, uc_category_implementor_e,
!    "EC-ARGUMENT-IMP-ENVIRONMENT", "Environment Variable is not defined" },
  
    { ec_bound_e,                  ec_category_none_e,
     "EC-BOUND", "Boundary violation" },
*************** ec_descr_t __gg__exception_table[] = {
*** 1453,1458 ****
--- 1453,1463 ----
     "EC-FUNCTION-PTR-NULL",
      "Function pointer used in calling a function is NULL" },
  
+   { ec_imp_e,                     ec_category_none_e,
+    "EC-IMP", "GCC-defined exception" },
+   { ec_imp_iconv_open_e,          uc_category_fatal_e,
+    "EC-IMP-ICONV-OPEN", "Encoding conversion unavailable for requested pair" },
+ 
    { ec_io_e,                     ec_category_none_e,
     "EC-IO", "Input-output exception" },
    { ec_io_at_end_e,              uc_category_nonfatal_e,
diff -Nrcpad gcc-17-20260524/libgcobol/xmlparse.cc gcc-17-20260531/libgcobol/xmlparse.cc
*** gcc-17-20260524/libgcobol/xmlparse.cc	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgcobol/xmlparse.cc	Sun May 31 22:32:13 2026
*************** struct xml_ec_value_t {
*** 170,176 ****
    { 148, "missing '=' after 'encoding' in XML declaration" },
    { 149, "missing XML encoding declaration value" },
    { 150, "invalid XML encoding declaration value" },
!   { 151, "invalid character afer XML declaration" },
    { 152, "invalid attribute  XML declaration" },
    { 153, "missing '=' after standalone  XML declaration" },
    { 154, "missing standalone XML declaration value" },
--- 170,176 ----
    { 148, "missing '=' after 'encoding' in XML declaration" },
    { 149, "missing XML encoding declaration value" },
    { 150, "invalid XML encoding declaration value" },
!   { 151, "invalid character after XML declaration" },
    { 152, "invalid attribute  XML declaration" },
    { 153, "missing '=' after standalone  XML declaration" },
    { 154, "missing standalone XML declaration value" },
diff -Nrcpad gcc-17-20260524/libgfortran/ChangeLog gcc-17-20260531/libgfortran/ChangeLog
*** gcc-17-20260524/libgfortran/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,96 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* caf/caf_error.h (caf_runtime_error): Fix typos.
+ 	* caf/libcaf.h: Likewise.
+ 	* caf/mpi.c (caf_runtime_error): Likewise.
+ 	* caf/shmem.c (_gfortran_caf_deregister): Likewise.
+ 	* caf/shmem/alloc.h: Likewise.
+ 	* caf/shmem/shared_memory.c (shared_memory_get_env): Likewise.
+ 	* caf/shmem/supervisor.h (struct caf_shmem_token): Likewise.
+ 	* caf/shmem/teams_mgmt.h (struct caf_shmem_team): Likewise.
+ 	* caf/single.c (caf_runtime_error): Likewise.
+ 	(_gfortran_caf_deregister): Likewise.
+ 	* intrinsics/args.c (get_command_i4): Likewise.
+ 	* intrinsics/chmod.c: Likewise.
+ 	* intrinsics/env.c (PREFIX): Likewise.
+ 	* intrinsics/trigd.c: Likewise.
+ 	* io/async.c (init_adv_cond): Likewise.
+ 	* io/file_pos.c (st_rewind): Likewise.
+ 	* io/format.c (parse_format_list): Likewise.
+ 	* io/open.c (new_unit): Likewise.
+ 	(st_open): Likewise.
+ 	* io/transfer.c (write_block): Likewise.
+ 	(unformatted_read): Likewise.
+ 	(unformatted_write): Likewise.
+ 	(formatted_transfer_scalar_write): Likewise.
+ 	* io/transfer128.c (export_proto): Likewise.
+ 	* io/unix.c (buf_init): Likewise.
+ 	(mem_read): Likewise.
+ 	* io/write.c (btoa): Likewise.
+ 	(list_formatted_write): Likewise.
+ 	* runtime/select_inc.c (select_string): Likewise.
+ 
+ 2026-05-29  Peter Damianov  <peter0x44@disroot.org>
+ 
+ 	* caf/shmem/shared_memory.c (shared_memory_init): Use
+ 	MapViewOfFileEx instead of MapViewOfFileExNuma.
+ 
+ 2026-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* io/write.c (write_ex): Replace simple truncation with
+ 	rounding-aware logic respecting dtp round_status.  Add carry
+ 	propagation and integer-digit normalization.
+ 	* io/write_float.def: Change use of GFC_UINTEGER_8 to
+ 	long long unsigned.
+ 
+ 2026-05-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* io/write_float.def (get_float_hex_string): Fix kind=8 frac_part
+ 	from unsigned long to GFC_UINTEGER_8 to correct truncated hex
+ 	output and IEEE_INVALID_FLAG on ILP32 targets.  Update kind=10
+ 	and kind=16 to use GFC_UINTEGER_8 for consistency.
+ 	Assisted by: Claude Sonnet 4.6
+ 
+ 2026-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* io/format.c (format_lex): Add new FMT_EX token handing.
+ 	(parse_format_list): Likewise.
+ 	(next_format): Likewise
+ 	* io/io.h (write_ex): Add prototype for new function.
+ 	(internal_proto): Likewise.
+ 	* io/transfer.c (formatted_transfer_scalar_write): Use FMT_EX token.
+ 	* io/write.c (write_default_char4): White space fix.
+ 	(write_a): White space fix.
+ 	(write_boz): White space fix.
+ 	(write_decimal): White space fix.
+ 	(otoa_big): White space fix.
+ 	(write_character): White space fix.
+ 	(write_float_0): White space fix.
+ 	(write_ex): New function which uses the new helper function
+ 	get_float_hex_string() to build the hexadecimal float format for
+ 	output.
+ 	(write_real): White space fix.
+ 	(write_complex): White space fix.
+ 	(nml_write_obj): White space fix.
+ 	(namelist_write): White space fix.
+ 	* io/write_float.def: Add defines to handle the various forms of
+ 	KIND=16 floats. These handle the selection of the appropriate versions
+ 	of the frexp, fabs, and scalbn used to extract the components of the
+ 	floating point values.
+ 	(GFC_REAL_16_FREXP): New define.
+ 	(GFC_REAL_16_FABS): New define.
+ 	(GFC_REAL_16_SCALBN): New define.
+ 	(get_float_hex_string): New function which exatracts the bits and builds
+ 	the basic hexadecimal format strings into a buffer. The buffer is provided
+ 	by the caller write_ex.
+ 	(build_float_string): White space fix.
+ 	(quadmath_snprintf): White space fix.
+ 	(determine_en_precision): White space fix.
+ 
  2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
  
  	* m4/matmul.m4: Fix comment typo.
diff -Nrcpad gcc-17-20260524/libgfortran/caf/caf_error.h gcc-17-20260531/libgfortran/caf/caf_error.h
*** gcc-17-20260524/libgfortran/caf/caf_error.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/caf_error.h	Sun May 31 22:32:13 2026
*************** void caf_runtime_error (const char *form
*** 35,41 ****
     If additionally `errmsg` is non-NULL, then printf-style `format` will by
     printed to `errmsg`.  If the resulting message is longer then `errmsg_len`,
     it will be truncated, else filled with spaces.
!    If `stat` is not given, then the printf-formated message will be emited to
     stderr and the program terminates with EXIT_FAILURE.  */
  
  void caf_internal_error (const char *format, int *stat, char *errmsg,
--- 35,41 ----
     If additionally `errmsg` is non-NULL, then printf-style `format` will by
     printed to `errmsg`.  If the resulting message is longer then `errmsg_len`,
     it will be truncated, else filled with spaces.
!    If `stat` is not given, then the printf-formatted message will be emitted to
     stderr and the program terminates with EXIT_FAILURE.  */
  
  void caf_internal_error (const char *format, int *stat, char *errmsg,
diff -Nrcpad gcc-17-20260524/libgfortran/caf/libcaf.h gcc-17-20260531/libgfortran/caf/libcaf.h
*** gcc-17-20260524/libgfortran/caf/libcaf.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/libcaf.h	Sun May 31 22:32:13 2026
*************** typedef enum
*** 50,56 ****
    CAF_CURRENT_TEAM
  } caf_team_level_t;
  
! /* Describes what type of array we are registerring.  Keep in sync with
     gcc/fortran/trans.h.  */
  typedef enum caf_register_t
  {
--- 50,56 ----
    CAF_CURRENT_TEAM
  } caf_team_level_t;
  
! /* Describes what type of array we are registering.  Keep in sync with
     gcc/fortran/trans.h.  */
  typedef enum caf_register_t
  {
diff -Nrcpad gcc-17-20260524/libgfortran/caf/mpi.c gcc-17-20260531/libgfortran/caf/mpi.c
*** gcc-17-20260524/libgfortran/caf/mpi.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/mpi.c	Sun May 31 22:32:13 2026
*************** caf_runtime_error (const char *message,
*** 72,78 ****
     MPI initialization happened before; otherwise MPI_Initialized
     had to be used.  As the MPI library might modify the command-line
     arguments, the routine should be called before the run-time
!    libaray is initialized.  */
  
  void
  _gfortran_caf_init (int *argc, char ***argv)
--- 72,78 ----
     MPI initialization happened before; otherwise MPI_Initialized
     had to be used.  As the MPI library might modify the command-line
     arguments, the routine should be called before the run-time
!    library is initialized.  */
  
  void
  _gfortran_caf_init (int *argc, char ***argv)
diff -Nrcpad gcc-17-20260524/libgfortran/caf/shmem/alloc.h gcc-17-20260531/libgfortran/caf/shmem/alloc.h
*** gcc-17-20260524/libgfortran/caf/shmem/alloc.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/shmem/alloc.h	Sun May 31 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 30,36 ****
  
  /* High-level interface for shared memory allocation.
     Handle allocation and freeing of blocks in the shared memory for coarrays.
!    While allocator keeps track of allocated and freeed portions, this "class"
     allows allocation of coarrays identified by a memid and associate them
     across images.
   */
--- 30,36 ----
  
  /* High-level interface for shared memory allocation.
     Handle allocation and freeing of blocks in the shared memory for coarrays.
!    While allocator keeps track of allocated and freed portions, this "class"
     allows allocation of coarrays identified by a memid and associate them
     across images.
   */
diff -Nrcpad gcc-17-20260524/libgfortran/caf/shmem/shared_memory.c gcc-17-20260531/libgfortran/caf/shmem/shared_memory.c
*** gcc-17-20260524/libgfortran/caf/shmem/shared_memory.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/shmem/shared_memory.c	Sun May 31 22:32:13 2026
*************** shared_memory_get_env (void)
*** 87,93 ****
    return getenv (ENV_PPID);
  }
  
! /* Get a pointer into the shared memory block with alignemnt
     (works similar to sbrk).  */
  
  shared_mem_ptr
--- 87,93 ----
    return getenv (ENV_PPID);
  }
  
! /* Get a pointer into the shared memory block with alignment
     (works similar to sbrk).  */
  
  shared_mem_ptr
*************** shared_memory_init (shared_memory_act *m
*** 234,241 ****
      }
  #elif defined(WIN32)
    mem->glbl.base
!     = (LPTSTR) MapViewOfFileExNuma (mem->shm_fd, FILE_MAP_ALL_ACCESS, 0, 0,
! 				    size, base_ptr, NUMA_NO_PREFERRED_NODE);
    if (mem->glbl.base == NULL)
      {
        perror ("MapViewOfFile failed");
--- 234,241 ----
      }
  #elif defined(WIN32)
    mem->glbl.base
!     = (LPTSTR) MapViewOfFileEx (mem->shm_fd, FILE_MAP_ALL_ACCESS, 0, 0,
! 				size, base_ptr);
    if (mem->glbl.base == NULL)
      {
        perror ("MapViewOfFile failed");
diff -Nrcpad gcc-17-20260524/libgfortran/caf/shmem/supervisor.h gcc-17-20260531/libgfortran/caf/shmem/supervisor.h
*** gcc-17-20260524/libgfortran/caf/shmem/supervisor.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/shmem/supervisor.h	Sun May 31 22:32:13 2026
*************** struct caf_shmem_token
*** 98,104 ****
    void *base;
    /* The size of memory in each image aligned on pointer borders, i.e. each
       images memory starts on an address that is aligned to enable maximum speed
!      for the processor architecure used.  */
    size_t image_size;
    /* The id of this token.  */
    memid token_id;
--- 98,104 ----
    void *base;
    /* The size of memory in each image aligned on pointer borders, i.e. each
       images memory starts on an address that is aligned to enable maximum speed
!      for the processor architecture used.  */
    size_t image_size;
    /* The id of this token.  */
    memid token_id;
diff -Nrcpad gcc-17-20260524/libgfortran/caf/shmem/teams_mgmt.h gcc-17-20260531/libgfortran/caf/shmem/teams_mgmt.h
*** gcc-17-20260524/libgfortran/caf/shmem/teams_mgmt.h	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/shmem/teams_mgmt.h	Sun May 31 22:32:13 2026
*************** struct caf_shmem_team
*** 35,41 ****
    int team_no;
    /* The index is the image's index minus one in this team.  I.e. if in Fortran
       notion the current image is 3, then the value of index is 2.  This allows
!      access to the image_map without having to substract one each time (and
       missing it).  Returning the image's index to the user is rarer, so adding
       one there is cheaper.  */
    int index;
--- 35,41 ----
    int team_no;
    /* The index is the image's index minus one in this team.  I.e. if in Fortran
       notion the current image is 3, then the value of index is 2.  This allows
!      access to the image_map without having to subtract one each time (and
       missing it).  Returning the image's index to the user is rarer, so adding
       one there is cheaper.  */
    int index;
diff -Nrcpad gcc-17-20260524/libgfortran/caf/shmem.c gcc-17-20260531/libgfortran/caf/shmem.c
*** gcc-17-20260524/libgfortran/caf/shmem.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/shmem.c	Sun May 31 22:32:13 2026
*************** _gfortran_caf_deregister (caf_token_t *t
*** 457,463 ****
  	    ;
  	  if (!ca)
  	    caf_runtime_error (
! 	      "Coarray token to be freeed is not in current team %d", type);
  	  /* Unhook found coarray_allocated node from list...  */
  	  pca->next = ca->next;
  	}
--- 457,463 ----
  	    ;
  	  if (!ca)
  	    caf_runtime_error (
! 	      "Coarray token to be freed is not in current team %d", type);
  	  /* Unhook found coarray_allocated node from list...  */
  	  pca->next = ca->next;
  	}
diff -Nrcpad gcc-17-20260524/libgfortran/caf/single.c gcc-17-20260531/libgfortran/caf/single.c
*** gcc-17-20260524/libgfortran/caf/single.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/caf/single.c	Sun May 31 22:32:13 2026
*************** caf_runtime_error (const char *message,
*** 117,123 ****
    exit (EXIT_FAILURE);
  }
  
! /* Error handling is similar everytime.  */
  static void
  caf_internal_error (const char *msg, int *stat, char *errmsg,
  		    size_t errmsg_len, ...)
--- 117,123 ----
    exit (EXIT_FAILURE);
  }
  
! /* Error handling is similar every time.  */
  static void
  caf_internal_error (const char *msg, int *stat, char *errmsg,
  		    size_t errmsg_len, ...)
*************** _gfortran_caf_deregister (caf_token_t *t
*** 313,319 ****
  	    ;
  	  if (!ca)
  	    caf_runtime_error (
! 	      "Coarray token to be freeed is not in current team %d", type);
  	  /* Unhook found coarray_allocated node from list...  */
  	  pca->next = ca->next;
  	}
--- 313,319 ----
  	    ;
  	  if (!ca)
  	    caf_runtime_error (
! 	      "Coarray token to be freed is not in current team %d", type);
  	  /* Unhook found coarray_allocated node from list...  */
  	  pca->next = ca->next;
  	}
diff -Nrcpad gcc-17-20260524/libgfortran/intrinsics/args.c gcc-17-20260531/libgfortran/intrinsics/args.c
*** gcc-17-20260524/libgfortran/intrinsics/args.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/intrinsics/args.c	Sun May 31 22:32:13 2026
*************** get_command_i4 (char *command, GFC_INTEG
*** 233,239 ****
  	  memcpy (&command[tot_len], argv[i], thisarg);
  	}
  
!       /* Add the legth of the argument.  */
        tot_len += arglen;
        if (i != argc - 1)
  	tot_len++;
--- 233,239 ----
  	  memcpy (&command[tot_len], argv[i], thisarg);
  	}
  
!       /* Add the length of the argument.  */
        tot_len += arglen;
        if (i != argc - 1)
  	tot_len++;
diff -Nrcpad gcc-17-20260524/libgfortran/intrinsics/chmod.c gcc-17-20260531/libgfortran/intrinsics/chmod.c
*** gcc-17-20260524/libgfortran/intrinsics/chmod.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/intrinsics/chmod.c	Sun May 31 22:32:13 2026
*************** chmod_internal (char *file, char *mode,
*** 98,104 ****
  #endif
  
  #ifdef HAVE_UMASK
!   /* Obtain the umask without distroying the setting.  */
    mode_mask = 0;
    mode_mask = umask (mode_mask);
    (void) umask (mode_mask);
--- 98,104 ----
  #endif
  
  #ifdef HAVE_UMASK
!   /* Obtain the umask without destroying the setting.  */
    mode_mask = 0;
    mode_mask = umask (mode_mask);
    (void) umask (mode_mask);
diff -Nrcpad gcc-17-20260524/libgfortran/intrinsics/env.c gcc-17-20260531/libgfortran/intrinsics/env.c
*** gcc-17-20260524/libgfortran/intrinsics/env.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/intrinsics/env.c	Sun May 31 22:32:13 2026
*************** PREFIX(getenv) (char * name, char * valu
*** 69,75 ****
  /* GET_ENVIRONMENT_VARIABLE (name, [value, length, status, trim_name])
     is a F2003 intrinsic for getting an environment variable.  */
  
! /* Status codes specifyed by the standard. */
  #define GFC_SUCCESS 0
  #define GFC_VALUE_TOO_SHORT -1
  #define GFC_NAME_DOES_NOT_EXIST 1
--- 69,75 ----
  /* GET_ENVIRONMENT_VARIABLE (name, [value, length, status, trim_name])
     is a F2003 intrinsic for getting an environment variable.  */
  
! /* Status codes specified by the standard. */
  #define GFC_SUCCESS 0
  #define GFC_VALUE_TOO_SHORT -1
  #define GFC_NAME_DOES_NOT_EXIST 1
diff -Nrcpad gcc-17-20260524/libgfortran/intrinsics/trigd.c gcc-17-20260531/libgfortran/intrinsics/trigd.c
*** gcc-17-20260524/libgfortran/intrinsics/trigd.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/intrinsics/trigd.c	Sun May 31 22:32:13 2026
***************
*** 1,4 ****
! /* Implementation of the degree trignometric functions COSD, SIND, TAND.
     Copyright (C) 2020-2026 Free Software Foundation, Inc.
     Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
  
--- 1,4 ----
! /* Implementation of the degree trigonometric functions COSD, SIND, TAND.
     Copyright (C) 2020-2026 Free Software Foundation, Inc.
     Contributed by Steven G. Kargl <kargl@gcc.gnu.org>
  
diff -Nrcpad gcc-17-20260524/libgfortran/io/async.c gcc-17-20260531/libgfortran/io/async.c
*** gcc-17-20260524/libgfortran/io/async.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/async.c	Sun May 31 22:32:13 2026
*************** init_adv_cond (struct adv_cond *ac)
*** 226,232 ****
    __GTHREAD_COND_INIT_FUNCTION (&ac->signal);
  }
  
! /* Initialize an asyncronous unit, returning zero on success,
   nonzero on failure.  It also sets u->au.  */
  
  void
--- 226,232 ----
    __GTHREAD_COND_INIT_FUNCTION (&ac->signal);
  }
  
! /* Initialize an asynchronous unit, returning zero on success,
   nonzero on failure.  It also sets u->au.  */
  
  void
diff -Nrcpad gcc-17-20260524/libgfortran/io/file_pos.c gcc-17-20260531/libgfortran/io/file_pos.c
*** gcc-17-20260524/libgfortran/io/file_pos.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/file_pos.c	Sun May 31 22:32:13 2026
*************** st_rewind (st_parameter_filepos *fpp)
*** 469,475 ****
  	      return;
  	    }
  
! 	  /* Set this for compatibilty with g77 for /dev/null.  */
  	  if (ssize (u->s) == 0)
  	    u->endfile = AT_ENDFILE;
  	  else
--- 469,475 ----
  	      return;
  	    }
  
! 	  /* Set this for compatibility with g77 for /dev/null.  */
  	  if (ssize (u->s) == 0)
  	    u->endfile = AT_ENDFILE;
  	  else
diff -Nrcpad gcc-17-20260524/libgfortran/io/format.c gcc-17-20260531/libgfortran/io/format.c
*** gcc-17-20260524/libgfortran/io/format.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/format.c	Sun May 31 22:32:13 2026
*************** parse_format_list (st_parameter_dt *dtp,
*** 952,958 ****
  	  tail->u.real.w = 0;
  	  tail->u.real.e = -1;
  
! 	  /* Look for the dot seperator.  */
  	  u = format_lex (fmt);
  	  if (u != FMT_PERIOD)
  	    {
--- 952,958 ----
  	  tail->u.real.w = 0;
  	  tail->u.real.e = -1;
  
! 	  /* Look for the dot separator.  */
  	  u = format_lex (fmt);
  	  if (u != FMT_PERIOD)
  	    {
diff -Nrcpad gcc-17-20260524/libgfortran/io/open.c gcc-17-20260531/libgfortran/io/open.c
*** gcc-17-20260524/libgfortran/io/open.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/open.c	Sun May 31 22:32:13 2026
*************** new_unit (st_parameter_open *opp, gfc_un
*** 683,689 ****
    else
      u->fbuf = NULL;
  
!   /* Check if asynchrounous.  */
    if (flags->async == ASYNC_YES)
      init_async_unit (u);
    else
--- 683,689 ----
    else
      u->fbuf = NULL;
  
!   /* Check if asynchronous.  */
    if (flags->async == ASYNC_YES)
      init_async_unit (u);
    else
*************** st_open (st_parameter_open *opp)
*** 827,833 ****
      find_option (&opp->common, opp->status, opp->status_len,
  		 status_opt, "Bad STATUS parameter in OPEN statement");
  
!   /* First, we check wether the convert flag has been set via environment
       variable.  This overrides the convert tag in the open statement.  */
  
    conv = get_unformatted_convert (opp->common.unit);
--- 827,833 ----
      find_option (&opp->common, opp->status, opp->status_len,
  		 status_opt, "Bad STATUS parameter in OPEN statement");
  
!   /* First, we check whether the convert flag has been set via environment
       variable.  This overrides the convert tag in the open statement.  */
  
    conv = get_unformatted_convert (opp->common.unit);
diff -Nrcpad gcc-17-20260524/libgfortran/io/transfer.c gcc-17-20260531/libgfortran/io/transfer.c
*** gcc-17-20260524/libgfortran/io/transfer.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/transfer.c	Sun May 31 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 46,52 ****
  
     For other sorts of data transfer, there are zero or more data
     transfer statement that depend on the format of the data transfer
!    statement. For READ (and for backwards compatibily: for WRITE), one has
  
        transfer_integer
        transfer_logical
--- 46,52 ----
  
     For other sorts of data transfer, there are zero or more data
     transfer statement that depend on the format of the data transfer
!    statement. For READ (and for backwards compatibility: for WRITE), one has
  
        transfer_integer
        transfer_logical
*************** write_block (st_parameter_dt *dtp, size_
*** 835,841 ****
  
    if (is_internal_unit (dtp))
      {
!       if (is_char4_unit(dtp)) /* char4 internel unit.  */
  	{
  	  gfc_char4_t *dest4;
  	  dest4 = mem_alloc_w4 (dtp->u.p.current_unit->s, &length);
--- 835,841 ----
  
    if (is_internal_unit (dtp))
      {
!       if (is_char4_unit(dtp)) /* char4 internal unit.  */
  	{
  	  gfc_char4_t *dest4;
  	  dest4 = mem_alloc_w4 (dtp->u.p.current_unit->s, &length);
*************** unformatted_read (st_parameter_dt *dtp,
*** 1153,1159 ****
    convert = dtp->u.p.current_unit->flags.convert;
    if (unlikely (convert != GFC_CONVERT_NATIVE) && kind != 1)
      {
!       /* Handle wide chracters.  */
        if (type == BT_CHARACTER)
    	{
    	  nelems *= size;
--- 1153,1159 ----
    convert = dtp->u.p.current_unit->flags.convert;
    if (unlikely (convert != GFC_CONVERT_NATIVE) && kind != 1)
      {
!       /* Handle wide characters.  */
        if (type == BT_CHARACTER)
    	{
    	  nelems *= size;
*************** unformatted_write (st_parameter_dt *dtp,
*** 1312,1318 ****
  
        p = source;
  
!       /* Handle wide chracters.  */
        if (type == BT_CHARACTER && kind != 1)
  	{
  	  nelems *= size;
--- 1312,1318 ----
  
        p = source;
  
!       /* Handle wide characters.  */
        if (type == BT_CHARACTER && kind != 1)
  	{
  	  nelems *= size;
*************** formatted_transfer_scalar_write (st_para
*** 2601,2607 ****
  
    /* This function is first called from data_init_transfer to initiate the loop
       over each item in the format, transferring data as required.  Subsequent
!      calls to this function occur for each data item foound in the READ/WRITE
       statement.  The item_count is incremented for each call.  Since the first
       call is from data_transfer_init, the item_count is always one greater than
       the actual count number of the item being transferred.  */
--- 2601,2607 ----
  
    /* This function is first called from data_init_transfer to initiate the loop
       over each item in the format, transferring data as required.  Subsequent
!      calls to this function occur for each data item found in the READ/WRITE
       statement.  The item_count is incremented for each call.  Since the first
       call is from data_transfer_init, the item_count is always one greater than
       the actual count number of the item being transferred.  */
diff -Nrcpad gcc-17-20260524/libgfortran/io/transfer128.c gcc-17-20260531/libgfortran/io/transfer128.c
*** gcc-17-20260524/libgfortran/io/transfer128.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/transfer128.c	Sun May 31 22:32:13 2026
*************** export_proto(transfer_complex128_write);
*** 61,67 ****
  
  
  /* Make sure that libquadmath is pulled in. The functions strtoflt128
!    and quadmath_snprintf are weakly referrenced in convert_real and
     write_float; the pointer assignment with USED attribute make sure
     that there is a non-weakref dependence if the quadmath functions
     are used. That avoids segfault when libquadmath is statically linked.  */
--- 61,67 ----
  
  
  /* Make sure that libquadmath is pulled in. The functions strtoflt128
!    and quadmath_snprintf are weakly referenced in convert_real and
     write_float; the pointer assignment with USED attribute make sure
     that there is a non-weakref dependence if the quadmath functions
     are used. That avoids segfault when libquadmath is statically linked.  */
diff -Nrcpad gcc-17-20260524/libgfortran/io/unix.c gcc-17-20260531/libgfortran/io/unix.c
*** gcc-17-20260524/libgfortran/io/unix.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/unix.c	Sun May 31 22:32:13 2026
*************** buf_init (unix_stream *s, bool unformatt
*** 773,779 ****
  
    /* Try to guess a good value for the buffer size.  For formatted
       I/O, we use so many CPU cycles converting the data that there is
!      more sense in converving memory and especially cache.  For
       unformatted, a bigger block can have a large impact in some
       environments.  */
  
--- 773,779 ----
  
    /* Try to guess a good value for the buffer size.  For formatted
       I/O, we use so many CPU cycles converting the data that there is
!      more sense in conserving memory and especially cache.  For
       unformatted, a bigger block can have a large impact in some
       environments.  */
  
*************** mem_read (stream *s, void *buf, ssize_t
*** 908,914 ****
  }
  
  
! /* Stream read function for chracter(kind=4) internal units.  */
  
  static ssize_t
  mem_read4 (stream *s, void *buf, ssize_t nbytes)
--- 908,914 ----
  }
  
  
! /* Stream read function for character(kind=4) internal units.  */
  
  static ssize_t
  mem_read4 (stream *s, void *buf, ssize_t nbytes)
diff -Nrcpad gcc-17-20260524/libgfortran/io/write.c gcc-17-20260531/libgfortran/io/write.c
*** gcc-17-20260524/libgfortran/io/write.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/write.c	Sun May 31 22:32:13 2026
*************** btoa (GFC_UINTEGER_LARGEST n, char *buff
*** 1162,1168 ****
  /* The following three functions, btoa_big, otoa_big, and xtoa_big, are needed
     to convert large reals with kind sizes that exceed the largest integer type
     available on certain platforms.  In these cases, byte by byte conversion is
!    performed. Endianess is taken into account.  */
  
  /* Conversion to binary.  */
  
--- 1162,1168 ----
  /* The following three functions, btoa_big, otoa_big, and xtoa_big, are needed
     to convert large reals with kind sizes that exceed the largest integer type
     available on certain platforms.  In these cases, byte by byte conversion is
!    performed. Endianness is taken into account.  */
  
  /* Conversion to binary.  */
  
*************** write_ex (st_parameter_dt *dtp, const fn
*** 1955,1963 ****
  	  /* Adjust mantissa to have exactly 'd' digits after decimal */
  	  if (d < mantissa_digits)
  	    {
! 	      /* Truncate mantissa */
  	      memmove (decimal + d + 1, p_pos, strlen (p_pos) + 1);
  	      p_pos = decimal + d + 1;
  	    }
  	  else if (d > mantissa_digits)
  	    {
--- 1955,2066 ----
  	  /* Adjust mantissa to have exactly 'd' digits after decimal */
  	  if (d < mantissa_digits)
  	    {
! 	      /* Determine rounding direction before truncating.  */
! 	      char *first_drop = decimal + d + 1;
! 	      char fc = *first_drop;
! 	      int fd_val = (fc >= '0' && fc <= '9') ? fc - '0'
! 			  : (fc >= 'A' && fc <= 'F') ? fc - 'A' + 10 : 0;
! 
! 	      /* Check whether any tail digits (beyond the
! 		 first dropped digit) are nonzero.  */
! 	      bool tail_nonzero = false;
! 	      for (char *tp = first_drop + 1; tp < p_pos; tp++)
! 		if (*tp != '0')
! 		  {
! 		    tail_nonzero = true;
! 		    break;
! 		  }
! 
! 	      bool is_negative = (buf[0] == '-');
! 	      bool do_round_up = false;
! 
! 	      switch (dtp->u.p.current_unit->round_status)
! 		{
! 		case ROUND_ZERO:
! 		  /* Truncate toward zero; no adjustment needed.  */
! 		  break;
! 		case ROUND_UP:
! 		  /* Toward +inf: round up positive values only.  */
! 		  if (!is_negative && (fd_val > 0 || tail_nonzero))
! 		    do_round_up = true;
! 		  break;
! 		case ROUND_DOWN:
! 		  /* Toward -inf: round up negative values only.  */
! 		  if (is_negative && (fd_val > 0 || tail_nonzero))
! 		    do_round_up = true;
! 		  break;
! 		case ROUND_COMPATIBLE:
! 		  /* Nearest, ties away from zero.  */
! 		  do_round_up = (fd_val >= 8);
! 		  break;
! 		case ROUND_PROCDEFINED:
! 		case ROUND_UNSPECIFIED:
! 		  /* Processor-defined defaults to ROUND_NEAREST on IEEE 754
! 		     systems.  Fall through.  */
! 		default:
! 		case ROUND_NEAREST:
! 		  /* Round to nearest, ties to even.  */
! 		  if (fd_val > 8)
! 		    do_round_up = true;
! 		  else if (fd_val == 8)
! 		    {
! 		      if (tail_nonzero)
! 			do_round_up = true;
! 		      else
! 			{
! 			  /* Exact tie: round last kept digit to even.  */
! 			  char lk = *(decimal + d);
! 			  int lk_val = (lk >= '0' && lk <= '9') ? lk - '0'
! 				       : lk - 'A' + 10;
! 			  do_round_up = (lk_val & 1) != 0;
! 			}
! 		    }
! 		  break;
! 		}
! 
! 	      /* Truncate the fractional part to d digits.  */
  	      memmove (decimal + d + 1, p_pos, strlen (p_pos) + 1);
  	      p_pos = decimal + d + 1;
+ 
+ 	      if (do_round_up)
+ 		{
+ 		  /* Propagate carry leftward through the fractional digits.  */
+ 		  char *pos = p_pos - 1;
+ 		  while (pos > decimal)
+ 		    {
+ 		      int dv = (*pos >= '0' && *pos <= '9') ? *pos - '0'
+ 			       : *pos - 'A' + 10;
+ 		      dv++;
+ 		      if (dv < 16)
+ 			{
+ 			  *pos = dv < 10 ? ('0' + dv) : ('A' + dv - 10);
+ 			  goto rounding_done;
+ 			}
+ 		      *pos = '0';
+ 		      pos--;
+ 		    }
+ 		  /* Carry reached the integer digit (at decimal - 1).  */
+ 		  pos = decimal - 1;
+ 		  {
+ 		    int dv = (*pos >= '0' && *pos <= '9') ? *pos - '0'
+ 			     : *pos - 'A' + 10;
+ 		    dv++;
+ 		    if (dv < 16)
+ 		      *pos = dv < 10 ? ('0' + dv) : ('A' + dv - 10);
+ 		    else
+ 		      {
+ 			/* Integer digit overflowed (was F).  Normalize: the
+ 			   value F.0...0 * 2^exp to 8.0...0 * 2^(exp+1).  */
+ 			*pos = '8';
+ 			int actual_exp = (sign_char == '-') ? -(int)exp_value
+ 							    : (int)exp_value;
+ 			actual_exp++;
+ 			exp_value = actual_exp >= 0 ? actual_exp : -actual_exp;
+ 			sign_char = actual_exp >= 0 ? '+' : '-';
+ 		      }
+ 		  }
+ 		  rounding_done:;
+ 		}
  	    }
  	  else if (d > mantissa_digits)
  	    {
*************** list_formatted_write (st_parameter_dt *d
*** 2427,2433 ****
     the list.  */
  
  /* A generous estimate of the number of characters needed to print
!    repeat counts and indices, including commas, asterices and brackets.  */
  
  #define NML_DIGITS 20
  
--- 2530,2536 ----
     the list.  */
  
  /* A generous estimate of the number of characters needed to print
!    repeat counts and indices, including commas, asterisks and brackets.  */
  
  #define NML_DIGITS 20
  
diff -Nrcpad gcc-17-20260524/libgfortran/io/write_float.def gcc-17-20260531/libgfortran/io/write_float.def
*** gcc-17-20260524/libgfortran/io/write_float.def	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/io/write_float.def	Sun May 31 22:32:13 2026
*************** get_float_hex_string (const void *source
*** 128,134 ****
  	double mant;
  	int expon;
  	int int_part;
! 	unsigned long frac_part;
  
  	val = *(const GFC_REAL_8 *) source;
  	is_negative = signbit (val);
--- 128,134 ----
  	double mant;
  	int expon;
  	int int_part;
! 	GFC_UINTEGER_8 frac_part;
  
  	val = *(const GFC_REAL_8 *) source;
  	is_negative = signbit (val);
*************** get_float_hex_string (const void *source
*** 172,182 ****
  	int_part = (int) mant;
  	/* 56 is the nearest integer divisible by 4 that is >= 53 (mantissa bits
  	   for kind=8).  (56-4)/4 = 13 hex digits for the fractional part.  */
! 	frac_part = (unsigned long) scalbn (mant - (double) int_part, 56 - 4);
  	if (is_negative)
! 	  result = snprintf (buffer, 25, "-0X%X.%13.13lXP%+d", int_part, frac_part, expon);
  	else
! 	  result = snprintf (buffer, 25, "0X%X.%13.13lXP%+d", int_part, frac_part, expon);
        }
        break;
  #ifdef HAVE_GFC_REAL_10
--- 172,184 ----
  	int_part = (int) mant;
  	/* 56 is the nearest integer divisible by 4 that is >= 53 (mantissa bits
  	   for kind=8).  (56-4)/4 = 13 hex digits for the fractional part.  */
! 	frac_part = (long long unsigned) scalbn (mant - (double) int_part, 56 - 4);
  	if (is_negative)
! 	  result = snprintf (buffer, 25, "-0X%X.%13.13llXP%+d", int_part,
! 			     (long long unsigned) frac_part, expon);
  	else
! 	  result = snprintf (buffer, 25, "0X%X.%13.13llXP%+d", int_part,
! 			     (long long unsigned) frac_part, expon);
        }
        break;
  #ifdef HAVE_GFC_REAL_10
*************** get_float_hex_string (const void *source
*** 186,192 ****
  	GFC_REAL_10 mant;
  	int expon;
  	int int_part;
! 	unsigned long long frac_part;
  
  	val = *(const GFC_REAL_10 *) source;
  	is_negative = signbit (val);
--- 188,194 ----
  	GFC_REAL_10 mant;
  	int expon;
  	int int_part;
! 	long long unsigned frac_part;
  
  	val = *(const GFC_REAL_10 *) source;
  	is_negative = signbit (val);
*************** get_float_hex_string (const void *source
*** 230,240 ****
  	int_part = (int) mant;
  	/* 64 is the nearest integer divisible by 4 that is >= 64 (mantissa bits
  	   for kind=10).  (64-4)/4 = 15 hex digits for the fractional part.  */
! 	frac_part = (unsigned long long) scalbnl (mant - (GFC_REAL_10) int_part, 64 - 4);
  	if (is_negative)
! 	  result = snprintf (buffer, 28, "-0X%X.%15.15llXP%+d", int_part, frac_part, expon);
  	else
! 	  result = snprintf (buffer, 28, "0X%X.%15.15llXP%+d", int_part, frac_part, expon);
        }
        break;
  #endif
--- 232,244 ----
  	int_part = (int) mant;
  	/* 64 is the nearest integer divisible by 4 that is >= 64 (mantissa bits
  	   for kind=10).  (64-4)/4 = 15 hex digits for the fractional part.  */
! 	frac_part = (long long unsigned) scalbnl (mant - (GFC_REAL_10) int_part, 64 - 4);
  	if (is_negative)
! 	  result = snprintf (buffer, 28, "-0X%X.%15.15llXP%+d", int_part,
! 			     (long long unsigned) frac_part, expon);
  	else
! 	  result = snprintf (buffer, 28, "0X%X.%15.15llXP%+d", int_part,
! 			     (long long unsigned) frac_part, expon);
        }
        break;
  #endif
*************** get_float_hex_string (const void *source
*** 245,251 ****
  	GFC_REAL_16 mant;
  	int expon;
  	int int_part;
! 	unsigned long long frac_hi, frac_lo;
  	GFC_REAL_16 frac_val, frac_lo_val;
  
  	val = *(const GFC_REAL_16 *) source;
--- 249,255 ----
  	GFC_REAL_16 mant;
  	int expon;
  	int int_part;
! 	long long unsigned frac_hi, frac_lo;
  	GFC_REAL_16 frac_val, frac_lo_val;
  
  	val = *(const GFC_REAL_16 *) source;
*************** get_float_hex_string (const void *source
*** 291,307 ****
  	/* 116 is the nearest integer divisible by 4 that is >= 113 (mantissa
  	   bits for kind=16).  (116-4)/4 = 28 hex digits for the fractional
  	   part, split into two 56-bit halves (14 hex digits each) to fit in
! 	   unsigned long long.  */
  	frac_val = mant - (GFC_REAL_16) int_part;
! 	frac_hi = (unsigned long long) GFC_REAL_16_SCALBN (frac_val, 56);
  	frac_lo_val = frac_val - GFC_REAL_16_SCALBN ((GFC_REAL_16) frac_hi, -56);
! 	frac_lo = (unsigned long long) GFC_REAL_16_SCALBN (frac_lo_val, 112);
  	if (is_negative)
  	  result = snprintf (buffer, 42, "-0X%X.%14.14llX%14.14llXP%+d",
! 			     int_part, frac_hi, frac_lo, expon);
  	else
  	  result = snprintf (buffer, 42, "0X%X.%14.14llX%14.14llXP%+d",
! 			     int_part, frac_hi, frac_lo, expon);
        }
        break;
  #endif /* HAVE_GFC_REAL_16  */
--- 295,313 ----
  	/* 116 is the nearest integer divisible by 4 that is >= 113 (mantissa
  	   bits for kind=16).  (116-4)/4 = 28 hex digits for the fractional
  	   part, split into two 56-bit halves (14 hex digits each) to fit in
! 	   long long unsigned.  */
  	frac_val = mant - (GFC_REAL_16) int_part;
! 	frac_hi = (long long unsigned) GFC_REAL_16_SCALBN (frac_val, 56);
  	frac_lo_val = frac_val - GFC_REAL_16_SCALBN ((GFC_REAL_16) frac_hi, -56);
! 	frac_lo = (long long unsigned) GFC_REAL_16_SCALBN (frac_lo_val, 112);
  	if (is_negative)
  	  result = snprintf (buffer, 42, "-0X%X.%14.14llX%14.14llXP%+d",
! 			     int_part, (long long unsigned) frac_hi,
! 			     (long long unsigned) frac_lo, expon);
  	else
  	  result = snprintf (buffer, 42, "0X%X.%14.14llX%14.14llXP%+d",
! 			     int_part, (long long unsigned) frac_hi,
! 			     (long long unsigned) frac_lo, expon);
        }
        break;
  #endif /* HAVE_GFC_REAL_16  */
diff -Nrcpad gcc-17-20260524/libgfortran/runtime/select_inc.c gcc-17-20260531/libgfortran/runtime/select_inc.c
*** gcc-17-20260524/libgfortran/runtime/select_inc.c	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgfortran/runtime/select_inc.c	Sun May 31 22:32:13 2026
*************** select_string (select_struct *table, int
*** 116,122 ****
          high = mid;
      }
  
!   /* The string now lies between the low indeces of the now-adjacent
       high and low entries.  Because it is less than the low entry of
       'high', it can't be that one.  If low is still -1, then no
       entries match.  Otherwise, we have to check the high entry of
--- 116,122 ----
          high = mid;
      }
  
!   /* The string now lies between the low indices of the now-adjacent
       high and low entries.  Because it is less than the low entry of
       'high', it can't be that one.  If low is still -1, then no
       entries match.  Otherwise, we have to check the high entry of
diff -Nrcpad gcc-17-20260524/libgm2/ChangeLog gcc-17-20260531/libgm2/ChangeLog
*** gcc-17-20260524/libgm2/ChangeLog	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgm2/ChangeLog	Sun May 31 22:32:13 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* configure.ac: Fix typos.
+ 
  2026-04-21  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/120189
diff -Nrcpad gcc-17-20260524/libgm2/configure.ac gcc-17-20260531/libgm2/configure.ac
*** gcc-17-20260524/libgm2/configure.ac	Sun May 24 22:32:13 2026
--- gcc-17-20260531/libgm2/configure.ac	Sun May 31 22:32:13 2026
*************** AC_SUBST(GM2_FOR_TARGET)
*** 437,443 ****
  
  # Now we check the target as long as it is a supported host.
  # For some embedded targets we choose minimal runtime system which is
! # just enough to satisfy the linker targetting raw metal.
  if test x${M2_HOST_OS} != xunknown; then
  AC_MSG_NOTICE([m2 library building for target ${target}])
  case "$target" in
--- 437,443 ----
  
  # Now we check the target as long as it is a supported host.
  # For some embedded targets we choose minimal runtime system which is
! # just enough to satisfy the linker targeting raw metal.
  if test x${M2_HOST_OS} != xunknown; then
  AC_MSG_NOTICE([m2 library building for target ${target}])
  case "$target" in
*************** else
*** 490,496 ****
     GM2_MSG_RESULT([m2 front end will build PIM libraries:],[BUILD_PIMLIB])
     GM2_MSG_RESULT([m2 front end will build ISO libraries:],[BUILD_ISOLIB])
     GM2_MSG_RESULT([m2 front end will build coroutine libraries:],[BUILD_CORLIB])
!    GM2_MSG_RESULT([m2 front end will build Logitech compatability libraries:],[BUILD_LOGLIB])
  fi
  
  AM_CONDITIONAL([BUILD_PIMLIB], [test x$BUILD_PIMLIB = xtrue])
--- 490,496 ----
     GM2_MSG_RESULT([m2 front end will build PIM libraries:],[BUILD_PIMLIB])
     GM2_MSG_RESULT([m2 front end will build ISO libraries:],[BUILD_ISOLIB])
     GM2_MSG_RESULT([m2 front end will build coroutine libraries:],[BUILD_CORLIB])
!    GM2_MSG_RESULT([m2 front end will build Logitech compatibility libraries:],[BUILD_LOGLIB])
  fi
  
  AM_CONDITIONAL([BUILD_PIMLIB], [test x$BUILD_PIMLIB = xtrue])
diff -Nrcpad gcc-17-20260524/libgomp/ChangeLog gcc-17-20260531/libgomp/ChangeLog
*** gcc-17-20260524/libgomp/ChangeLog	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/ChangeLog	Sun May 31 22:32:14 2026
***************
*** 1,3 ****
--- 1,45 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* configure: Regenerate.
+ 	* acinclude.m4: Fix typos.
+ 	* env.c (parse_places_var): Likewise.
+ 	(parse_stacksize): Likewise.
+ 	(parse_wait_policy): Likewise.
+ 	(parse_affinity): Likewise.
+ 	(initialize_env): Likewise.
+ 	* libgomp.h (struct target_mem_desc): Likewise.
+ 	* plugin/build-target-indirect-htab.h: Likewise.
+ 	* plugin/plugin-gcn.c (struct hsa_runtime_fn_info): Likewise.
+ 	(struct hip_runtime_fn_info): Likewise.
+ 	(limit_worker_threads): Likewise.
+ 	(max_isa_vgprs): Likewise.
+ 	(GOMP_OFFLOAD_get_name): Likewise.
+ 	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_name): Likewise.
+ 	* target.c (gomp_map_vars_internal): Likewise.
+ 	(GOMP_target_ext): Likewise.
+ 
+ 2026-05-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR c/122892
+ 	* allocator.c (_Static_assert): Add asserts for the values of
+ 	GOMP_OMP_PREDEF_ALLOC_CGROUP and GOMP_OMP_PREDEF_ALLOC_PTEAM.
+ 
+ 2026-05-27  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* libgomp.texi (Foreign-runtime support for AMD GPUs,
+ 	Foreign-runtime support for Nvdia GPUs): Fix vendor
+ 	value to match compiler not GPU vendor.
+ 	* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_interop_int,
+ 	GOMP_OFFLOAD_get_interop_str): Return 5/"gnu" as ipr_vendor.
+ 	* plugin/plugin-nvptx.c (GOMP_OFFLOAD_get_interop_int,
+ 	GOMP_OFFLOAD_get_interop_str): Likewise.
+ 	* testsuite/libgomp.c/append-args-fr.h: Updated expected
+ 	value.
+ 	* testsuite/libgomp.c/interop-cuda-full.c: Likewise.
+ 	* testsuite/libgomp.c/interop-fr-1.c: Likewise.
+ 	* testsuite/libgomp.c/interop-hip.h: Likewise.
+ 	* testsuite/libgomp.fortran/interop-hip.h: Likewise.
+ 
  2026-05-21  Martin Jambor  <mjambor@suse.cz>
  
  	* testsuite/libgomp.c/ipcp-cb-spec1.c: Set lower param
diff -Nrcpad gcc-17-20260524/libgomp/acinclude.m4 gcc-17-20260531/libgomp/acinclude.m4
*** gcc-17-20260524/libgomp/acinclude.m4	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/acinclude.m4	Sun May 31 22:32:14 2026
*************** if test x$enable_symvers = xsun ; then
*** 252,258 ****
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targetting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
--- 252,258 ----
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targeting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
diff -Nrcpad gcc-17-20260524/libgomp/allocator.c gcc-17-20260531/libgomp/allocator.c
*** gcc-17-20260524/libgomp/allocator.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/allocator.c	Sun May 31 22:32:14 2026
*************** _Static_assert (GOMP_OMPX_PREDEF_ALLOC_M
*** 108,115 ****
  		"GOMP_OMPX_PREDEF_ALLOC_MIN == ompx_gnu_min_predefined_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc,
  		"GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc");
! _Static_assert (GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc");
  
  #define omp_max_predefined_mem_space omp_low_lat_mem_space
  #define ompx_gnu_min_predefined_mem_space ompx_gnu_managed_mem_space
--- 108,119 ----
  		"GOMP_OMPX_PREDEF_ALLOC_MIN == ompx_gnu_min_predefined_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc,
  		"GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc");
! _Static_assert (GOMP_OMP_PREDEF_ALLOC_CGROUP == omp_cgroup_mem_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_CGROUP == omp_cgroup_mem_alloc");
! _Static_assert (GOMP_OMP_PREDEF_ALLOC_PTEAM == omp_pteam_mem_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_PTEAM == omp_pteam_mem_alloc");
! _Static_assert (GOMP_OMP_PREDEF_ALLOC_THREAD == omp_thread_mem_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_THREAD == omp_thread_mem_alloc");
  
  #define omp_max_predefined_mem_space omp_low_lat_mem_space
  #define ompx_gnu_min_predefined_mem_space ompx_gnu_managed_mem_space
diff -Nrcpad gcc-17-20260524/libgomp/configure gcc-17-20260531/libgomp/configure
*** gcc-17-20260524/libgomp/configure	Sun May 24 22:32:17 2026
--- gcc-17-20260531/libgomp/configure	Sun May 31 22:32:17 2026
*************** if test x$enable_symvers = xsun ; then
*** 16687,16694 ****
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
--- 16687,16694 ----
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targeting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targeting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
diff -Nrcpad gcc-17-20260524/libgomp/env.c gcc-17-20260531/libgomp/env.c
*** gcc-17-20260524/libgomp/env.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/env.c	Sun May 31 22:32:14 2026
*************** parse_places_var (const char *name, bool
*** 923,929 ****
    return false;
  }
  
! /* Parse the OMP_STACKSIZE environment varible.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
--- 923,929 ----
    return false;
  }
  
! /* Parse the OMP_STACKSIZE environment variable.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
*************** parse_stacksize (const char *env, const
*** 983,989 ****
    return false;
  }
  
! /* Parse the GOMP_SPINCOUNT environment varible.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
--- 983,989 ----
    return false;
  }
  
! /* Parse the GOMP_SPINCOUNT environment variable.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
*************** parse_wait_policy (const char *env, cons
*** 1131,1137 ****
    return false;
  }
  
! /* Parse the GOMP_CPU_AFFINITY environment varible.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
--- 1131,1137 ----
    return false;
  }
  
! /* Parse the GOMP_CPU_AFFINITY environment variable.  Return true if one was
     present and it was successfully parsed.  */
  
  static bool
*************** parse_affinity (bool ignore)
*** 1227,1233 ****
    return true;
  
   invalid:
!   gomp_error ("Invalid value for enviroment variable GOMP_CPU_AFFINITY");
    return false;
  }
  
--- 1227,1233 ----
    return true;
  
   invalid:
!   gomp_error ("Invalid value for environment variable GOMP_CPU_AFFINITY");
    return false;
  }
  
*************** initialize_env (void)
*** 2434,2440 ****
      {
        /* Using a rough estimation of 100000 spins per msec,
  	 use 5 min blocking for OMP_WAIT_POLICY=active,
! 	 3 msec blocking when OMP_WAIT_POLICY is not specificed
  	 and 0 when OMP_WAIT_POLICY=passive.
  	 Depending on the CPU speed, this can be e.g. 5 times longer
  	 or 5 times shorter.  */
--- 2434,2440 ----
      {
        /* Using a rough estimation of 100000 spins per msec,
  	 use 5 min blocking for OMP_WAIT_POLICY=active,
! 	 3 msec blocking when OMP_WAIT_POLICY is not specified
  	 and 0 when OMP_WAIT_POLICY=passive.
  	 Depending on the CPU speed, this can be e.g. 5 times longer
  	 or 5 times shorter.  */
diff -Nrcpad gcc-17-20260524/libgomp/libgomp.h gcc-17-20260531/libgomp/libgomp.h
*** gcc-17-20260524/libgomp/libgomp.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/libgomp.h	Sun May 31 22:32:14 2026
*************** struct target_mem_desc {
*** 1317,1323 ****
    reverse_splay_tree_node rev_array;
    /* Start of the target region.  */
    uintptr_t tgt_start;
!   /* End of the targer region.  */
    uintptr_t tgt_end;
    /* Handle to free.  */
    void *to_free;
--- 1317,1323 ----
    reverse_splay_tree_node rev_array;
    /* Start of the target region.  */
    uintptr_t tgt_start;
!   /* End of the target region.  */
    uintptr_t tgt_end;
    /* Handle to free.  */
    void *to_free;
diff -Nrcpad gcc-17-20260524/libgomp/libgomp.texi gcc-17-20260531/libgomp/libgomp.texi
*** gcc-17-20260524/libgomp/libgomp.texi	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/libgomp.texi	Sun May 31 22:32:14 2026
*************** Available properties for an HIP interop
*** 7329,7336 ****
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hip}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hip"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{1}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"amd"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hipDevice_t}      @tab int         @tab
--- 7329,7336 ----
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hip}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hip"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{5}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"gnu"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hipDevice_t}      @tab int         @tab
*************** Available properties for an HSA interop
*** 7345,7352 ****
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hsa}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hsa"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{1}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"amd"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hsa_agent *}      @tab ptr         @tab
--- 7345,7352 ----
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hsa}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hsa"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{5}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"gnu"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hsa_agent *}      @tab ptr         @tab
*************** Available properties for a CUDA runtime
*** 7514,7521 ****
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_cuda}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"cuda"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{11}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"nvidia"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{int}              @tab int         @tab
--- 7514,7521 ----
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_cuda}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"cuda"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{5}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"gnu"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{int}              @tab int         @tab
*************** Available properties for a CUDA driver A
*** 7530,7537 ****
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_cuda_driver}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"cuda_driver"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{11}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"nvidia"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{CUdevice}         @tab int         @tab
--- 7530,7537 ----
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_cuda_driver}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"cuda_driver"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{5}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"gnu"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{CUdevice}         @tab int         @tab
*************** Available properties for an HIP interop
*** 7546,7553 ****
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hip}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hip"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{11}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"nvidia"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hipDevice_t}      @tab int         @tab
--- 7546,7553 ----
  @headitem Property          @tab C data type             @tab API routine @tab value (if constant)
  @item @code{fr_id}          @tab @code{omp_interop_fr_t} @tab int         @tab @code{omp_fr_hip}
  @item @code{fr_name}        @tab @code{const char *}     @tab str         @tab @code{"hip"}
! @item @code{vendor}         @tab @code{int}              @tab int         @tab @code{5}
! @item @code{vendor_name}    @tab @code{const char *}     @tab str         @tab @code{"gnu"}
  @item @code{device_num}     @tab @code{int}              @tab int         @tab
  @item @code{platform}       @tab N/A                     @tab             @tab
  @item @code{device}         @tab @code{hipDevice_t}      @tab int         @tab
diff -Nrcpad gcc-17-20260524/libgomp/plugin/build-target-indirect-htab.h gcc-17-20260531/libgomp/plugin/build-target-indirect-htab.h
*** gcc-17-20260524/libgomp/plugin/build-target-indirect-htab.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/plugin/build-target-indirect-htab.h	Sun May 31 22:32:14 2026
***************
*** 29,35 ****
     to get use on the device - that's for the 'indirect' clause feature.
  
     In order to habe host initialization work, the pointer sizes must be
!    the same - and either the the endianess or the host-device memcopy
     has to take of it.  */
  
  typedef unsigned __int128 hash_entry_type;
--- 29,35 ----
     to get use on the device - that's for the 'indirect' clause feature.
  
     In order to habe host initialization work, the pointer sizes must be
!    the same - and either the the endianness or the host-device memcopy
     has to take of it.  */
  
  typedef unsigned __int128 hash_entry_type;
diff -Nrcpad gcc-17-20260524/libgomp/plugin/plugin-gcn.c gcc-17-20260531/libgomp/plugin/plugin-gcn.c
*** gcc-17-20260524/libgomp/plugin/plugin-gcn.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/plugin/plugin-gcn.c	Sun May 31 22:32:14 2026
*************** struct hsa_runtime_fn_info
*** 244,250 ****
  
  /* As an HIP runtime is dlopened, following structure defines function
     pointers utilized by the interop feature of this plugin.
!    Add suffient type declarations to get this work.  */
  
  typedef int hipError_t;  /* Actually an enum; 0 == success. */
  typedef void* hipCtx_t;
--- 244,250 ----
  
  /* As an HIP runtime is dlopened, following structure defines function
     pointers utilized by the interop feature of this plugin.
!    Add sufficient type declarations to get this work.  */
  
  typedef int hipError_t;  /* Actually an enum; 0 == success. */
  typedef void* hipCtx_t;
*************** struct hip_runtime_fn_info
*** 262,268 ****
  };
  
  /* Structure describing the run-time and grid properties of an HSA kernel
!    lauch.  This needs to match the format passed to GOMP_OFFLOAD_run.  */
  
  struct GOMP_kernel_launch_attributes
  {
--- 262,268 ----
  };
  
  /* Structure describing the run-time and grid properties of an HSA kernel
!    launch.  This needs to match the format passed to GOMP_OFFLOAD_run.  */
  
  struct GOMP_kernel_launch_attributes
  {
*************** get_cu_count (struct agent_info *agent)
*** 1244,1250 ****
  static int
  limit_worker_threads (int threads)
  {
!   /* FIXME Do something more inteligent here.
       GCN can always run 4 threads within a Compute Unit, but
       more than that depends on register usage.  */
    if (threads > 16)
--- 1244,1250 ----
  static int
  limit_worker_threads (int threads)
  {
!   /* FIXME Do something more intelligent here.
       GCN can always run 4 threads within a Compute Unit, but
       more than that depends on register usage.  */
    if (threads > 16)
*************** max_isa_vgprs (int isa)
*** 1831,1837 ****
     while setting up each team.  This is purely a performance optimization.
  
     The stack space is used by all kernels.  We must allocate it in such a
!    way that the reverse offload implmentation can access the data.
  
     Allocating this memory costs performance, so this function will reuse an
     existing allocation if a large enough one is idle.
--- 1831,1837 ----
     while setting up each team.  This is purely a performance optimization.
  
     The stack space is used by all kernels.  We must allocate it in such a
!    way that the reverse offload implementation can access the data.
  
     Allocating this memory costs performance, so this function will reuse an
     existing allocation if a large enough one is idle.
*************** GOMP_OFFLOAD_get_name (void)
*** 3603,3609 ****
  }
  
  /* Return the UID; if not available return NULL.
!    Returns freshly allocated memoy.  */
  
  const char *
  GOMP_OFFLOAD_get_uid (int ord)
--- 3603,3609 ----
  }
  
  /* Return the UID; if not available return NULL.
!    Returns freshly allocated memory.  */
  
  const char *
  GOMP_OFFLOAD_get_uid (int ord)
*************** GOMP_OFFLOAD_get_interop_int (struct int
*** 4998,5004 ****
      case omp_ipr_vendor:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return 1; /* amd */
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_type_str;
--- 4998,5004 ----
      case omp_ipr_vendor:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return 5; /* gnu */
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_type_str;
*************** GOMP_OFFLOAD_get_interop_str (struct int
*** 5166,5172 ****
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return "amd";
      case omp_ipr_device_num:
        if (ret_code)
  	*ret_code = omp_irc_type_int;
--- 5166,5172 ----
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return "gnu";
      case omp_ipr_device_num:
        if (ret_code)
  	*ret_code = omp_irc_type_int;
diff -Nrcpad gcc-17-20260524/libgomp/plugin/plugin-nvptx.c gcc-17-20260531/libgomp/plugin/plugin-nvptx.c
*** gcc-17-20260524/libgomp/plugin/plugin-nvptx.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/plugin/plugin-nvptx.c	Sun May 31 22:32:14 2026
*************** GOMP_OFFLOAD_get_name (void)
*** 1277,1283 ****
  }
  
  /* Return the UID; if not available return NULL.
!    Returns freshly allocated memoy.  */
  
  const char *
  GOMP_OFFLOAD_get_uid (int ord)
--- 1277,1283 ----
  }
  
  /* Return the UID; if not available return NULL.
!    Returns freshly allocated memory.  */
  
  const char *
  GOMP_OFFLOAD_get_uid (int ord)
*************** GOMP_OFFLOAD_get_interop_int (struct int
*** 2748,2754 ****
      case omp_ipr_vendor:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return 11; /* nvidia */
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_type_str;
--- 2748,2754 ----
      case omp_ipr_vendor:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return 5; /* gnu */
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_type_str;
*************** GOMP_OFFLOAD_get_interop_str (struct int
*** 2895,2901 ****
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return "nvidia";
      case omp_ipr_device_num:
        if (ret_code)
  	*ret_code = omp_irc_type_int;
--- 2895,2901 ----
      case omp_ipr_vendor_name:
        if (ret_code)
  	*ret_code = omp_irc_success;
!       return "gnu";
      case omp_ipr_device_num:
        if (ret_code)
  	*ret_code = omp_irc_type_int;
diff -Nrcpad gcc-17-20260524/libgomp/target.c gcc-17-20260531/libgomp/target.c
*** gcc-17-20260524/libgomp/target.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/target.c	Sun May 31 22:32:14 2026
*************** gomp_map_vars_internal (struct gomp_devi
*** 1617,1623 ****
  		gomp_copy_host2dev (devicep, aq,
  				    (void *) (tgt->tgt_start + tgt_size),
  				    (void *) hostaddrs[i], len, false, cbufp);
! 		/* Save device address in hostaddr to permit latter availablity
  		   when doing a deep-firstprivate with pointer attach.  */
  		hostaddrs[i] = (void *) (tgt->tgt_start + tgt_size);
  		tgt_size += len;
--- 1617,1623 ----
  		gomp_copy_host2dev (devicep, aq,
  				    (void *) (tgt->tgt_start + tgt_size),
  				    (void *) hostaddrs[i], len, false, cbufp);
! 		/* Save device address in hostaddr to permit latter availability
  		   when doing a deep-firstprivate with pointer attach.  */
  		hostaddrs[i] = (void *) (tgt->tgt_start + tgt_size);
  		tgt_size += len;
*************** gomp_map_vars_internal (struct gomp_devi
*** 1795,1801 ****
  			 pointer members, the mapping and the attach can end up
  			 in different sets; or the wrong mapping with the
  			 attach. As there is no way to know whether a size
! 			 zero like  'var->ptr[i][:0]' happend in the same
  			 directive or not, the not-attached check is now
  			 fully silenced for 'enter data'.  */
  		      if (openmp_p && (pragma_kind & GOMP_MAP_VARS_ENTER_DATA))
--- 1795,1801 ----
  			 pointer members, the mapping and the attach can end up
  			 in different sets; or the wrong mapping with the
  			 attach. As there is no way to know whether a size
! 			 zero like  'var->ptr[i][:0]' happened in the same
  			 directive or not, the not-attached check is now
  			 fully silenced for 'enter data'.  */
  		      if (openmp_p && (pragma_kind & GOMP_MAP_VARS_ENTER_DATA))
*************** GOMP_target_ext (int device, void (*fn)
*** 3566,3572 ****
  
  /* Reverse lookup (device addr -> host addr) for reverse offload.  We avoid
     keeping track of all variable handling - assuming that reverse offload occurs
!    ony very rarely.  Downside is that the reverse search is slow.  */
  
  struct gomp_splay_tree_rev_lookup_data {
    uintptr_t tgt_start;
--- 3566,3572 ----
  
  /* Reverse lookup (device addr -> host addr) for reverse offload.  We avoid
     keeping track of all variable handling - assuming that reverse offload occurs
!    only very rarely.  Downside is that the reverse search is slow.  */
  
  struct gomp_splay_tree_rev_lookup_data {
    uintptr_t tgt_start;
diff -Nrcpad gcc-17-20260524/libgomp/testsuite/libgomp.c/append-args-fr.h gcc-17-20260531/libgomp/testsuite/libgomp.c/append-args-fr.h
*** gcc-17-20260524/libgomp/testsuite/libgomp.c/append-args-fr.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/testsuite/libgomp.c/append-args-fr.h	Sun May 31 22:32:14 2026
*************** check_nvptx (omp_interop_t obj, int dev,
*** 102,113 ****
    ret_code = omp_irc_no_value;
    int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (vendor == 11);  /* Nvidia */
  
    ret_code = omp_irc_no_value;
    const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (strcmp (vendor_name, "nvidia") == 0);
  
    ret_code = omp_irc_no_value;
    int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
--- 102,113 ----
    ret_code = omp_irc_no_value;
    int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (vendor == 5);  /* gnu (= compiler vendor) */
  
    ret_code = omp_irc_no_value;
    const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (strcmp (vendor_name, "gnu") == 0);
  
    ret_code = omp_irc_no_value;
    int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
*************** check_gcn (omp_interop_t obj, int dev, o
*** 216,227 ****
    ret_code = omp_irc_no_value;
    int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (vendor == 1);  /* Amd */
  
    ret_code = omp_irc_no_value;
    const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (strcmp (vendor_name, "amd") == 0);
  
    ret_code = omp_irc_no_value;
    int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
--- 216,227 ----
    ret_code = omp_irc_no_value;
    int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (vendor == 5);  /* gnu (= compiler vendor) */
  
    ret_code = omp_irc_no_value;
    const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
    assert (ret_code == omp_irc_success);
!   assert (strcmp (vendor_name, "gnu") == 0);
  
    ret_code = omp_irc_no_value;
    int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
diff -Nrcpad gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-cuda-full.c gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-cuda-full.c
*** gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-cuda-full.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-cuda-full.c	Sun May 31 22:32:14 2026
*************** main ()
*** 74,84 ****
  
    ivar = (int) omp_get_interop_int (obj_cuda, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   assert (ivar == 11);
  
    ivar = (int) omp_get_interop_int (obj_cuda_driver, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   assert (ivar == 11);
  
  
    /* Check whether the omp_ipr_device -> cudaDevice_t yields a valid device.  */
--- 74,84 ----
  
    ivar = (int) omp_get_interop_int (obj_cuda, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   assert (ivar == 5);  /* gnu (= compiler vendor) */
  
    ivar = (int) omp_get_interop_int (obj_cuda_driver, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   assert (ivar == 5);  /* gnu (= compiler vendor) */
  
  
    /* Check whether the omp_ipr_device -> cudaDevice_t yields a valid device.  */
diff -Nrcpad gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-fr-1.c gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-fr-1.c
*** gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-fr-1.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-fr-1.c	Sun May 31 22:32:14 2026
*************** check_nvptx (int dev)
*** 271,282 ****
        ret_code = omp_irc_no_value;
        int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (vendor == 11);  /* Nvidia */
  
        ret_code = omp_irc_no_value;
        const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (strcmp (vendor_name, "nvidia") == 0);
  
        ret_code = omp_irc_no_value;
        int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
--- 271,282 ----
        ret_code = omp_irc_no_value;
        int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (vendor == 5);  /* gnu (= compiler vendor) */
  
        ret_code = omp_irc_no_value;
        const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (strcmp (vendor_name, "gnu") == 0);
  
        ret_code = omp_irc_no_value;
        int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
*************** check_gcn (int dev)
*** 464,475 ****
        ret_code = omp_irc_no_value;
        int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (vendor == 1);  /* Amd */
  
        ret_code = omp_irc_no_value;
        const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (strcmp (vendor_name, "amd") == 0);
  
        ret_code = omp_irc_no_value;
        int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
--- 464,475 ----
        ret_code = omp_irc_no_value;
        int vendor = (int) omp_get_interop_int (obj, omp_ipr_vendor, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (vendor == 5);  /* gnu (= compiler vendor) */
  
        ret_code = omp_irc_no_value;
        const char *vendor_name = omp_get_interop_str (obj, omp_ipr_vendor_name, &ret_code);
        assert (ret_code == omp_irc_success);
!       assert (strcmp (vendor_name, "gnu") == 0);
  
        ret_code = omp_irc_no_value;
        int dev_num = (int) omp_get_interop_int (obj, omp_ipr_device_num, &ret_code);
diff -Nrcpad gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-hip.h gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-hip.h
*** gcc-17-20260524/libgomp/testsuite/libgomp.c/interop-hip.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/testsuite/libgomp.c/interop-hip.h	Sun May 31 22:32:14 2026
*************** main ()
*** 169,184 ****
  
    ivar = (int) omp_get_interop_int (obj, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   int vendor_is_amd = ivar == 1;
    #if defined(__HIP_PLATFORM_AMD__)
!     assert (ivar == 1);
    #elif defined(__HIP_PLATFORM_NVIDIA__)
!     assert (ivar == 11);
    #else
!     assert (0);
    #endif
  
- 
    /* Check whether the omp_ipr_device -> hipDevice_t yields a valid device.  */
  
    hipDevice_t hip_dev = (int) omp_get_interop_int (obj, omp_ipr_device, &res);
--- 169,183 ----
  
    ivar = (int) omp_get_interop_int (obj, omp_ipr_vendor, &res);
    assert (res == omp_irc_success);
!   assert (ivar == 5);  /* gnu (= compiler vendor) */
    #if defined(__HIP_PLATFORM_AMD__)
!     bool device_vendor_is_amd = true;
    #elif defined(__HIP_PLATFORM_NVIDIA__)
!     bool device_vendor_is_amd = false;
    #else
!     #error "Missing valid __HIP_PLATFORM_..."
    #endif
  
    /* Check whether the omp_ipr_device -> hipDevice_t yields a valid device.  */
  
    hipDevice_t hip_dev = (int) omp_get_interop_int (obj, omp_ipr_device, &res);
*************** main ()
*** 207,213 ****
      hip_err = hipCtxGetApiVersion (hip_ctx, &ivar);
    #pragma GCC diagnostic pop
  
!   if (vendor_is_amd)
      assert (hip_err == hipErrorNotSupported && ivar == -99);
    else
      {
--- 206,212 ----
      hip_err = hipCtxGetApiVersion (hip_ctx, &ivar);
    #pragma GCC diagnostic pop
  
!   if (device_vendor_is_amd)
      assert (hip_err == hipErrorNotSupported && ivar == -99);
    else
      {
diff -Nrcpad gcc-17-20260524/libgomp/testsuite/libgomp.fortran/interop-hip.h gcc-17-20260531/libgomp/testsuite/libgomp.fortran/interop-hip.h
*** gcc-17-20260524/libgomp/testsuite/libgomp.fortran/interop-hip.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libgomp/testsuite/libgomp.fortran/interop-hip.h	Sun May 31 22:32:14 2026
*************** program main
*** 120,136 ****
    if (fr /= omp_ifr_hip) error stop 1
  
    ivar = omp_get_interop_int (obj, omp_ipr_vendor, res)
!   if (ivar == 1) then  ! AMD
!     vendor_is_amd = .true.
!   else if (ivar == 11) then  ! Nvidia
!     vendor_is_amd = .false.
!   else
!     error stop 1  ! Unknown
!   endif
  #if USE_CUDA_NAMES
!   if (vendor_is_amd) error stop 1
  #else
!   if (.not. vendor_is_amd) error stop 1
  #endif
  
    ! Check whether the omp_ipr_device -> hipDevice_t yields a valid device.
--- 120,131 ----
    if (fr /= omp_ifr_hip) error stop 1
  
    ivar = omp_get_interop_int (obj, omp_ipr_vendor, res)
!   if (res /= omp_irc_success) error stop 1
!   if (ivar /= 5) error stop 1  ! gnu (= compiler vendor)
  #if USE_CUDA_NAMES
!     vendor_is_amd = .false.
  #else
!     vendor_is_amd = .true.
  #endif
  
    ! Check whether the omp_ipr_device -> hipDevice_t yields a valid device.
diff -Nrcpad gcc-17-20260524/libiberty/ChangeLog gcc-17-20260531/libiberty/ChangeLog
*** gcc-17-20260524/libiberty/ChangeLog	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/ChangeLog	Sun May 31 22:32:14 2026
***************
*** 1,3 ****
--- 1,41 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow
+ 	long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* bcopy.c: Fix typos.
+ 	* bsearch.c: Likewise.
+ 	* bsearch_r.c: Likewise.
+ 	* configure.ac: Likewise.
+ 	* cp-demangle.c (d_print_comp_inner): Likewise.
+ 	(d_print_comp): Likewise.
+ 	* d-demangle.c (dlang_identifier): Likewise.
+ 	* dyn-string.c: Likewise.
+ 	* ldirname.c: Likewise.
+ 	* make-relative-prefix.c (make_relative_prefix_1): Likewise.
+ 	* obstacks.texi: Likewise.
+ 	* pex-win32.c (argv_to_cmdline): Likewise.
+ 	(spawn_script): Likewise.
+ 	* random.c (random): Likewise.
+ 	(setstate): Likewise.
+ 	* regex.c (WIDE_CHAR_SUPPORT): Likewise.
+ 	(convert_mbs_to_wcs): Likewise.
+ 	(PREFIX): Likewise.
+ 	(wcs_compile_range): Likewise.
+ 	(count_mbs_length): Likewise.
+ 	(wcs_re_match_2_internal): Likewise.
+ 	(byte_re_match_2_internal): Likewise.
+ 	* sigsetmask.c: Likewise.
+ 	* simple-object-elf.c (SHT_SYMTAB_SHNDX): Likewise.
+ 	(STV_HIDDEN): Likewise.
+ 	(simple_object_elf_copy_lto_debug_sections): Likewise.
+ 	* simple-object-mach-o.c (struct mach_o_header_32): Likewise.
+ 	(struct mach_o_header_64): Likewise.
+ 	(simple_object_mach_o_write_segment): Likewise.
+ 	* strsignal.c (defined): Likewise.
+ 
  2026-03-05  Jakub Jelinek  <jakub@redhat.com>
  
  	PR target/124365
diff -Nrcpad gcc-17-20260524/libiberty/bcopy.c gcc-17-20260531/libiberty/bcopy.c
*** gcc-17-20260524/libiberty/bcopy.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/bcopy.c	Sun May 31 22:32:14 2026
***************
*** 1,4 ****
! /* bcopy -- copy memory regions of arbitary length
  
  @deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length})
  
--- 1,4 ----
! /* bcopy -- copy memory regions of arbitrary length
  
  @deftypefn Supplemental void bcopy (char *@var{in}, char *@var{out}, int @var{length})
  
diff -Nrcpad gcc-17-20260524/libiberty/bsearch.c gcc-17-20260531/libiberty/bsearch.c
*** gcc-17-20260524/libiberty/bsearch.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/bsearch.c	Sun May 31 22:32:14 2026
*************** is respectively less than, matching, or
*** 60,66 ****
   * is odd, moving left simply involves halving lim: e.g., when lim
   * is 5 we look at item 2, so we change lim to 2 so that we will
   * look at items 0 & 1.  If lim is even, the same applies.  If lim
!  * is odd, moving right again involes halving lim, this time moving
   * the base up one item past p: e.g., when lim is 5 we change base
   * to item 3 and make lim 2 so that we will look at items 3 and 4.
   * If lim is even, however, we have to shrink it by one before
--- 60,66 ----
   * is odd, moving left simply involves halving lim: e.g., when lim
   * is 5 we look at item 2, so we change lim to 2 so that we will
   * look at items 0 & 1.  If lim is even, the same applies.  If lim
!  * is odd, moving right again involves halving lim, this time moving
   * the base up one item past p: e.g., when lim is 5 we change base
   * to item 3 and make lim 2 so that we will look at items 3 and 4.
   * If lim is even, however, we have to shrink it by one before
diff -Nrcpad gcc-17-20260524/libiberty/bsearch_r.c gcc-17-20260531/libiberty/bsearch_r.c
*** gcc-17-20260524/libiberty/bsearch_r.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/bsearch_r.c	Sun May 31 22:32:14 2026
*************** is respectively less than, matching, or
*** 61,67 ****
   * is odd, moving left simply involves halving lim: e.g., when lim
   * is 5 we look at item 2, so we change lim to 2 so that we will
   * look at items 0 & 1.  If lim is even, the same applies.  If lim
!  * is odd, moving right again involes halving lim, this time moving
   * the base up one item past p: e.g., when lim is 5 we change base
   * to item 3 and make lim 2 so that we will look at items 3 and 4.
   * If lim is even, however, we have to shrink it by one before
--- 61,67 ----
   * is odd, moving left simply involves halving lim: e.g., when lim
   * is 5 we look at item 2, so we change lim to 2 so that we will
   * look at items 0 & 1.  If lim is even, the same applies.  If lim
!  * is odd, moving right again involves halving lim, this time moving
   * the base up one item past p: e.g., when lim is 5 we change base
   * to item 3 and make lim 2 so that we will look at items 3 and 4.
   * If lim is even, however, we have to shrink it by one before
diff -Nrcpad gcc-17-20260524/libiberty/configure.ac gcc-17-20260531/libiberty/configure.ac
*** gcc-17-20260524/libiberty/configure.ac	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/configure.ac	Sun May 31 22:32:14 2026
*************** AC_CHECK_SIZEOF([int])
*** 321,327 ****
  AC_CHECK_SIZEOF([long])
  AC_CHECK_SIZEOF([size_t])
  
! # Check for presense of long long
  AC_CHECK_TYPE([long long],
    [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])],
    [])
--- 321,327 ----
  AC_CHECK_SIZEOF([long])
  AC_CHECK_SIZEOF([size_t])
  
! # Check for presence of long long
  AC_CHECK_TYPE([long long],
    [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])],
    [])
diff -Nrcpad gcc-17-20260524/libiberty/cp-demangle.c gcc-17-20260531/libiberty/cp-demangle.c
*** gcc-17-20260524/libiberty/cp-demangle.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/cp-demangle.c	Sun May 31 22:32:14 2026
***************
*** 82,88 ****
  
     IN_GLIBCPP_V3
        If defined, this file defines only __cxa_demangle() and
!       __gcclibcxx_demangle_callback(), and no other publically visible
        functions or variables.
  
     STANDALONE_DEMANGLER
--- 82,88 ----
  
     IN_GLIBCPP_V3
        If defined, this file defines only __cxa_demangle() and
!       __gcclibcxx_demangle_callback(), and no other publicly visible
        functions or variables.
  
     STANDALONE_DEMANGLER
*************** d_print_comp_inner (struct d_print_info
*** 5590,5596 ****
  		const struct d_component_stack *dcse;
  		int found_self_or_parent = 0;
  
! 		/* This traversal is reentering SUB as a substition.
  		   If we are not beneath SUB or DC in the tree then we
  		   need to restore SUB's template stack temporarily.  */
  		for (dcse = dpi->component_stack; dcse != NULL;
--- 5590,5596 ----
  		const struct d_component_stack *dcse;
  		int found_self_or_parent = 0;
  
! 		/* This traversal is reentering SUB as a substitution.
  		   If we are not beneath SUB or DC in the tree then we
  		   need to restore SUB's template stack temporarily.  */
  		for (dcse = dpi->component_stack; dcse != NULL;
*************** d_print_comp (struct d_print_info *dpi,
*** 6390,6396 ****
    dpi->recursion--;
  }
  
! /* Print a Java dentifier.  For Java we try to handle encoded extended
     Unicode characters.  The C++ ABI doesn't mention Unicode encoding,
     so we don't it for C++.  Characters are encoded as
     __U<hex-char>+_.  */
--- 6390,6396 ----
    dpi->recursion--;
  }
  
! /* Print a Java identifier.  For Java we try to handle encoded extended
     Unicode characters.  The C++ ABI doesn't mention Unicode encoding,
     so we don't it for C++.  Characters are encoded as
     __U<hex-char>+_.  */
diff -Nrcpad gcc-17-20260524/libiberty/d-demangle.c gcc-17-20260531/libiberty/d-demangle.c
*** gcc-17-20260524/libiberty/d-demangle.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/d-demangle.c	Sun May 31 22:32:14 2026
*************** dlang_identifier (string *decl, const ch
*** 1067,1073 ****
  }
  
  /* Extract the plain identifier from MANGLED and prepend/append it to DECL
!    with special treatment for some magic compiler generted symbols.
     Return the remaining string on success or NULL on failure.  */
  static const char *
  dlang_lname (string *decl, const char *mangled, unsigned long len)
--- 1067,1073 ----
  }
  
  /* Extract the plain identifier from MANGLED and prepend/append it to DECL
!    with special treatment for some magic compiler generated symbols.
     Return the remaining string on success or NULL on failure.  */
  static const char *
  dlang_lname (string *decl, const char *mangled, unsigned long len)
diff -Nrcpad gcc-17-20260524/libiberty/dyn-string.c gcc-17-20260531/libiberty/dyn-string.c
*** gcc-17-20260524/libiberty/dyn-string.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/dyn-string.c	Sun May 31 22:32:14 2026
*************** Boston, MA 02110-1301, USA.  */
*** 49,56 ****
     function can be used with a dyn_string struct on the stack or
     embedded in another object.  The contents of the string itself
     are still dynamically allocated.  The string initially is capable
!    of holding at least SPACE characeters, including the terminating
!    NUL.  If SPACE is 0, it will silently be increated to 1.  
  
     If RETURN_ON_ALLOCATION_FAILURE is defined and memory allocation
     fails, returns 0.  Otherwise returns 1.  */
--- 49,56 ----
     function can be used with a dyn_string struct on the stack or
     embedded in another object.  The contents of the string itself
     are still dynamically allocated.  The string initially is capable
!    of holding at least SPACE characters, including the terminating
!    NUL.  If SPACE is 0, it will silently be increased to 1.  
  
     If RETURN_ON_ALLOCATION_FAILURE is defined and memory allocation
     fails, returns 0.  Otherwise returns 1.  */
diff -Nrcpad gcc-17-20260524/libiberty/ldirname.c gcc-17-20260531/libiberty/ldirname.c
*** gcc-17-20260524/libiberty/ldirname.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/ldirname.c	Sun May 31 22:32:14 2026
*************** Given a pointer to a string containing a
*** 26,32 ****
  (@samp{/usr/src/cmd/ls/ls.c} for example), returns a string containing the
  passed string up to, but not including, the final directory separator.
  
! If the given pathname doesn't contain a directory separator then this funtion
  returns the empty string; this includes an empty given pathname.  @code{NULL}
  is returned on memory allocation error.
  
--- 26,32 ----
  (@samp{/usr/src/cmd/ls/ls.c} for example), returns a string containing the
  passed string up to, but not including, the final directory separator.
  
! If the given pathname doesn't contain a directory separator then this function
  returns the empty string; this includes an empty given pathname.  @code{NULL}
  is returned on memory allocation error.
  
diff -Nrcpad gcc-17-20260524/libiberty/make-relative-prefix.c gcc-17-20260531/libiberty/make-relative-prefix.c
*** gcc-17-20260524/libiberty/make-relative-prefix.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/make-relative-prefix.c	Sun May 31 22:32:14 2026
*************** make_relative_prefix_1 (const char *prog
*** 410,416 ****
  /* Do the full job, including symlink resolution.
     This path will find files installed in the same place as the
     program even when a soft link has been made to the program
!    from somwhere else. */
  
  char *
  make_relative_prefix (const char *progname, const char *bin_prefix,
--- 410,416 ----
  /* Do the full job, including symlink resolution.
     This path will find files installed in the same place as the
     program even when a soft link has been made to the program
!    from somewhere else. */
  
  char *
  make_relative_prefix (const char *progname, const char *bin_prefix,
diff -Nrcpad gcc-17-20260524/libiberty/obstacks.texi gcc-17-20260531/libiberty/obstacks.texi
*** gcc-17-20260524/libiberty/obstacks.texi	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/obstacks.texi	Sun May 31 22:32:14 2026
*************** Initialize use of an obstack, with an in
*** 695,701 ****
  @var{chunk_size} bytes.
  
  @item int obstack_specify_allocation (struct obstack *@var{obstack-ptr}, size_t chunk_size, size_t alignment, void *(*chunkfun) (size_t), void (*freefun) (void *))
! Initialize use of an obstack, specifying intial chunk size, chunk
  alignment, and memory allocation functions.
  
  @item int obstack_specify_allocation_with_arg (struct obstack *@var{obstack-ptr}, size_t chunk_size, size_t alignment, void *(*chunkfun) (void *, size_t), void (*freefun) (void *, void *), void *arg)
--- 695,701 ----
  @var{chunk_size} bytes.
  
  @item int obstack_specify_allocation (struct obstack *@var{obstack-ptr}, size_t chunk_size, size_t alignment, void *(*chunkfun) (size_t), void (*freefun) (void *))
! Initialize use of an obstack, specifying initial chunk size, chunk
  alignment, and memory allocation functions.
  
  @item int obstack_specify_allocation_with_arg (struct obstack *@var{obstack-ptr}, size_t chunk_size, size_t alignment, void *(*chunkfun) (void *, size_t), void (*freefun) (void *, void *), void *arg)
diff -Nrcpad gcc-17-20260524/libiberty/pex-win32.c gcc-17-20260531/libiberty/pex-win32.c
*** gcc-17-20260524/libiberty/pex-win32.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/pex-win32.c	Sun May 31 22:32:14 2026
*************** argv_to_cmdline (char *const *argv)
*** 350,356 ****
        /* We only quote arguments that contain spaces, \t or " characters to
  	 prevent wasting 2 chars per argument of the CreateProcess 32k char
  	 limit.  We need only escape embedded double-quotes and immediately
! 	 preceeding backslash characters.  A sequence of backslach characters
  	 that is not followed by a double quote character will not be
  	 escaped.  */
        needs_quotes = 0;
--- 350,356 ----
        /* We only quote arguments that contain spaces, \t or " characters to
  	 prevent wasting 2 chars per argument of the CreateProcess 32k char
  	 limit.  We need only escape embedded double-quotes and immediately
! 	 preceding backslash characters.  A sequence of backslach characters
  	 that is not followed by a double quote character will not be
  	 escaped.  */
        needs_quotes = 0;
*************** argv_to_cmdline (char *const *argv)
*** 363,369 ****
  
  	  if (argv[i][j] == '"')
  	    {
! 	      /* Escape preceeding backslashes.  */
  	      for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--)
  		cmdline_len++;
  	      /* Escape the quote character.  */
--- 363,369 ----
  
  	  if (argv[i][j] == '"')
  	    {
! 	      /* Escape preceding backslashes.  */
  	      for (k = j - 1; k >= 0 && argv[i][k] == '\\'; k--)
  		cmdline_len++;
  	      /* Escape the quote character.  */
*************** spawn_script (struct pex_obj *obj,
*** 695,701 ****
    int fd = _open (executable, _O_RDONLY);
  
    /* Try to open script, check header format, extract interpreter path,
!      and spawn script using that interpretter. */
    if (fd >= 0)
      {
        char buf[MAX_PATH + 5];
--- 695,701 ----
    int fd = _open (executable, _O_RDONLY);
  
    /* Try to open script, check header format, extract interpreter path,
!      and spawn script using that interpreter. */
    if (fd >= 0)
      {
        char buf[MAX_PATH + 5];
diff -Nrcpad gcc-17-20260524/libiberty/random.c gcc-17-20260531/libiberty/random.c
*** gcc-17-20260524/libiberty/random.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/random.c	Sun May 31 22:32:14 2026
*************** long int random (void);
*** 88,94 ****
     then initialized to contain information for random number generation with
     that much state information.  Good sizes for the amount of state
     information are 32, 64, 128, and 256 bytes.  The state can be switched by
!    calling the setstate() function with the same array as was initiallized
     with initstate().  By default, the package runs with 128 bytes of state
     information and generates far better random numbers than a linear
     congruential generator.  If the amount of state information is less than
--- 88,94 ----
     then initialized to contain information for random number generation with
     that much state information.  Good sizes for the amount of state
     information are 32, 64, 128, and 256 bytes.  The state can be switched by
!    calling the setstate() function with the same array as was initialized
     with initstate().  By default, the package runs with 128 bytes of state
     information and generates far better random numbers than a linear
     congruential generator.  If the amount of state information is less than
*************** setstate (void *arg_state)
*** 362,368 ****
  
  /* If we are using the trivial TYPE_0 R.N.G., just do the old linear
     congruential bit.  Otherwise, we do our fancy trinomial stuff, which is the
!    same in all ther other cases due to all the global variables that have been
     set up.  The basic operation is to add the number at the rear pointer into
     the one at the front pointer.  Then both pointers are advanced to the next
     location cyclically in the table.  The value returned is the sum generated,
--- 362,368 ----
  
  /* If we are using the trivial TYPE_0 R.N.G., just do the old linear
     congruential bit.  Otherwise, we do our fancy trinomial stuff, which is the
!    same in all the other cases due to all the global variables that have been
     set up.  The basic operation is to add the number at the rear pointer into
     the one at the front pointer.  Then both pointers are advanced to the next
     location cyclically in the table.  The value returned is the sum generated,
diff -Nrcpad gcc-17-20260524/libiberty/regex.c gcc-17-20260531/libiberty/regex.c
*** gcc-17-20260524/libiberty/regex.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/regex.c	Sun May 31 22:32:14 2026
***************
*** 58,64 ****
  
  # define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
  
! /* For platform which support the ISO C amendement 1 functionality we
     support user defined character classes.  */
  # if defined _LIBC || WIDE_CHAR_SUPPORT
  /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
--- 58,64 ----
  
  # define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC)
  
! /* For platform which support the ISO C amendment 1 functionality we
     support user defined character classes.  */
  # if defined _LIBC || WIDE_CHAR_SUPPORT
  /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
*************** printchar (int c)
*** 1235,1241 ****
  
  # ifdef WCHAR
  /* This  convert a multibyte string to a wide character string.
!    And write their correspondances to offset_buffer(see below)
     and write whether each wchar_t is binary data to is_binary.
     This assume invalid multibyte sequences as binary data.
     We assume offset_buffer and is_binary is already allocated
--- 1235,1241 ----
  
  # ifdef WCHAR
  /* This  convert a multibyte string to a wide character string.
!    And write their correspondences to offset_buffer(see below)
     and write whether each wchar_t is binary data to is_binary.
     This assume invalid multibyte sequences as binary data.
     We assume offset_buffer and is_binary is already allocated
*************** static size_t convert_mbs_to_wcs (CHAR_T
*** 1247,1253 ****
  static size_t
  convert_mbs_to_wcs (CHAR_T *dest, const unsigned char*src, size_t len,
                      int *offset_buffer, char *is_binary)
!      /* It hold correspondances between src(char string) and
  	dest(wchar_t string) for optimization.
  	e.g. src  = "xxxyzz"
               dest = {'X', 'Y', 'Z'}
--- 1247,1253 ----
  static size_t
  convert_mbs_to_wcs (CHAR_T *dest, const unsigned char*src, size_t len,
                      int *offset_buffer, char *is_binary)
!      /* It hold correspondences between src(char string) and
  	dest(wchar_t string) for optimization.
  	e.g. src  = "xxxyzz"
               dest = {'X', 'Y', 'Z'}
*************** convert_mbs_to_wcs (CHAR_T *dest, const
*** 1281,1287 ****
  
        if (consumed <= 0)
  	/* failed to convert. maybe src contains binary data.
! 	   So we consume 1 byte manualy.  */
  	{
  	  *pdest = *psrc;
  	  consumed = 1;
--- 1281,1287 ----
  
        if (consumed <= 0)
  	/* failed to convert. maybe src contains binary data.
! 	   So we consume 1 byte manually.  */
  	{
  	  *pdest = *psrc;
  	  consumed = 1;
*************** typedef struct
*** 2174,2180 ****
  # ifndef DEFINED_ONCE
  #  if defined _LIBC || WIDE_CHAR_SUPPORT
  /* The GNU C library provides support for user-defined character classes
!    and the functions from ISO C amendement 1.  */
  #   ifdef CHARCLASS_NAME_MAX
  #    define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
  #   else
--- 2174,2180 ----
  # ifndef DEFINED_ONCE
  #  if defined _LIBC || WIDE_CHAR_SUPPORT
  /* The GNU C library provides support for user-defined character classes
!    and the functions from ISO C amendment 1.  */
  #   ifdef CHARCLASS_NAME_MAX
  #    define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
  #   else
*************** PREFIX(regex_compile) (const char *ARG_P
*** 3416,3422 ****
  				  int32_t idx2 = table[ch];
  				  size_t len = weights[idx2];
  
! 				  /* Test whether the lenghts match.  */
  				  if (weights[idx] == len)
  				    {
  				      /* They do.  New compare the bytes of
--- 3416,3422 ----
  				  int32_t idx2 = table[ch];
  				  size_t len = weights[idx2];
  
! 				  /* Test whether the lengths match.  */
  				  if (weights[idx] == len)
  				    {
  				      /* They do.  New compare the bytes of
*************** wcs_compile_range (CHAR_T range_start_ch
*** 4389,4395 ****
  	{
  	  /* range_start is a collating symbol.  */
  	  int32_t *wextra;
! 	  /* Retreive the index and get collation sequence value.  */
  	  wextra = (int32_t*)(extra + char_set[-range_start_char]);
  	  start_val = wextra[1 + *wextra];
  	}
--- 4389,4395 ----
  	{
  	  /* range_start is a collating symbol.  */
  	  int32_t *wextra;
! 	  /* Retrieve the index and get collation sequence value.  */
  	  wextra = (int32_t*)(extra + char_set[-range_start_char]);
  	  start_val = wextra[1 + *wextra];
  	}
*************** count_mbs_length(int *offset_buffer, int
*** 5502,5508 ****
      return 0;
  
    /* If there are no multibyte character, offset_buffer[i] == i.
!    Optmize for this case.  */
    if (offset_buffer[length] == length)
      return length;
  
--- 5502,5508 ----
      return 0;
  
    /* If there are no multibyte character, offset_buffer[i] == i.
!    Optimize for this case.  */
    if (offset_buffer[length] == length)
      return length;
  
*************** wcs_re_match_2_internal (struct re_patte
*** 5538,5544 ****
  			 struct re_registers *regs,
                           int stop,
       /* string1 == string2 == NULL means string1/2, size1/2 and
! 	mbs_offset1/2 need seting up in this function.  */
       /* We need wchar_t* buffers correspond to cstring1, cstring2.  */
                           wchar_t *string1, int size1,
                           wchar_t *string2, int size2,
--- 5538,5544 ----
  			 struct re_registers *regs,
                           int stop,
       /* string1 == string2 == NULL means string1/2, size1/2 and
! 	mbs_offset1/2 need setting up in this function.  */
       /* We need wchar_t* buffers correspond to cstring1, cstring2.  */
                           wchar_t *string1, int size1,
                           wchar_t *string2, int size2,
*************** byte_re_match_2_internal (struct re_patt
*** 5739,5745 ****
       fill them with converted string.  */
    if (string1 == NULL && string2 == NULL)
      {
!       /* We need seting up buffers here.  */
  
        /* We must free wcs buffers in this function.  */
        cant_free_wcs_buf = 0;
--- 5739,5745 ----
       fill them with converted string.  */
    if (string1 == NULL && string2 == NULL)
      {
!       /* We need setting up buffers here.  */
  
        /* We must free wcs buffers in this function.  */
        cant_free_wcs_buf = 0;
diff -Nrcpad gcc-17-20260524/libiberty/sigsetmask.c gcc-17-20260531/libiberty/sigsetmask.c
*** gcc-17-20260524/libiberty/sigsetmask.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/sigsetmask.c	Sun May 31 22:32:14 2026
***************
*** 1,7 ****
  /* Version of sigsetmask.c
     Written by Steve Chamberlain (sac@cygnus.com).
     Contributed by Cygnus Support.
!    This file is in the public doamin. */
  
  /*
  
--- 1,7 ----
  /* Version of sigsetmask.c
     Written by Steve Chamberlain (sac@cygnus.com).
     Contributed by Cygnus Support.
!    This file is in the public domain. */
  
  /*
  
diff -Nrcpad gcc-17-20260524/libiberty/simple-object-elf.c gcc-17-20260531/libiberty/simple-object-elf.c
*** gcc-17-20260524/libiberty/simple-object-elf.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/simple-object-elf.c	Sun May 31 22:32:14 2026
*************** typedef struct {
*** 198,204 ****
  #define SHT_RELA	4		/* Relocation entries with addends */
  #define SHT_REL		9		/* Relocation entries, no addends */
  #define SHT_GROUP	17		/* Section contains a section group */
! #define SHT_SYMTAB_SHNDX 18		/* Extended section indeces */
  
  /* Values for sh_flags field.  */
  
--- 198,204 ----
  #define SHT_RELA	4		/* Relocation entries with addends */
  #define SHT_REL		9		/* Relocation entries, no addends */
  #define SHT_GROUP	17		/* Section contains a section group */
! #define SHT_SYMTAB_SHNDX 18		/* Extended section indices */
  
  /* Values for sh_flags field.  */
  
*************** typedef struct
*** 246,252 ****
  #define STB_WEAK	2	/* Weak global */
  
  #define STV_DEFAULT	0	/* Visibility is specified by binding type */
! #define STV_HIDDEN	2	/* Can only be seen inside currect component */
  
  /* Functions to fetch and store different ELF types, depending on the
     endianness and size.  */
--- 246,252 ----
  #define STB_WEAK	2	/* Weak global */
  
  #define STV_DEFAULT	0	/* Visibility is specified by binding type */
! #define STV_HIDDEN	2	/* Can only be seen inside current component */
  
  /* Functions to fetch and store different ELF types, depending on the
     endianness and size.  */
*************** simple_object_elf_copy_lto_debug_section
*** 1512,1518 ****
  		 of __gnu_lto_slim symbol.  */
  	      if (st_shndx == SHN_COMMON)
  		discard = 1;
! 	      /* We also need to remove symbols refering to sections
  		 we'll eventually remove as with fat LTO objects
  		 we otherwise get duplicate symbols at final link
  		 (with GNU ld, gold is fine and ignores symbols in
--- 1512,1518 ----
  		 of __gnu_lto_slim symbol.  */
  	      if (st_shndx == SHN_COMMON)
  		discard = 1;
! 	      /* We also need to remove symbols referring to sections
  		 we'll eventually remove as with fat LTO objects
  		 we otherwise get duplicate symbols at final link
  		 (with GNU ld, gold is fine and ignores symbols in
diff -Nrcpad gcc-17-20260524/libiberty/simple-object-mach-o.c gcc-17-20260531/libiberty/simple-object-mach-o.c
*** gcc-17-20260524/libiberty/simple-object-mach-o.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/simple-object-mach-o.c	Sun May 31 22:32:14 2026
*************** struct mach_o_header_32
*** 53,59 ****
    unsigned char filetype[4];	/* Type of file.  */
    unsigned char ncmds[4];	/* Number of load commands.  */
    unsigned char sizeofcmds[4];	/* Total size of load commands.  */
!   unsigned char flags[4];	/* Flags for special featues.  */
  };
  
  /* Mach-O header (64-bit version).  */
--- 53,59 ----
    unsigned char filetype[4];	/* Type of file.  */
    unsigned char ncmds[4];	/* Number of load commands.  */
    unsigned char sizeofcmds[4];	/* Total size of load commands.  */
!   unsigned char flags[4];	/* Flags for special features.  */
  };
  
  /* Mach-O header (64-bit version).  */
*************** struct mach_o_header_64
*** 66,72 ****
    unsigned char filetype[4];	/* Type of file.  */
    unsigned char ncmds[4];	/* Number of load commands.  */
    unsigned char sizeofcmds[4];	/* Total size of load commands.  */
!   unsigned char flags[4];	/* Flags for special featues.  */
    unsigned char reserved[4];	/* Reserved.  Duh.  */
  };
  
--- 66,72 ----
    unsigned char filetype[4];	/* Type of file.  */
    unsigned char ncmds[4];	/* Number of load commands.  */
    unsigned char sizeofcmds[4];	/* Total size of load commands.  */
!   unsigned char flags[4];	/* Flags for special features.  */
    unsigned char reserved[4];	/* Reserved.  Duh.  */
  };
  
*************** simple_object_mach_o_write_segment (simp
*** 1194,1201 ****
        unsigned int i;
  
        /* Write the section header for the wrapper.  */
!       /* Account for any initial aligment - which becomes the alignment for this
! 	 created section.  */
  
        secsize = (offset - index[0]);
        if (!simple_object_mach_o_write_section_header (sobj, descriptor,
--- 1194,1201 ----
        unsigned int i;
  
        /* Write the section header for the wrapper.  */
!       /* Account for any initial alignment - which becomes the alignment for
! 	 this created section.  */
  
        secsize = (offset - index[0]);
        if (!simple_object_mach_o_write_section_header (sobj, descriptor,
*************** simple_object_mach_o_write_segment (simp
*** 1208,1214 ****
  						      errmsg, err))
  	return 0;
  
!       /* Subtract the wrapper section start from the begining of each sub
  	 section.  */
  
        for (i = 1; i < nsects_in; ++i)
--- 1208,1214 ----
  						      errmsg, err))
  	return 0;
  
!       /* Subtract the wrapper section start from the beginning of each sub
  	 section.  */
  
        for (i = 1; i < nsects_in; ++i)
diff -Nrcpad gcc-17-20260524/libiberty/strsignal.c gcc-17-20260531/libiberty/strsignal.c
*** gcc-17-20260524/libiberty/strsignal.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libiberty/strsignal.c	Sun May 31 22:32:14 2026
*************** static const struct signal_info signal_t
*** 152,158 ****
  #endif
  #if defined (SIGIO)
    /* "I/O pending" has also been suggested, but is misleading since the
!      signal only happens when the process has asked for it, not everytime
       I/O is pending. */
    ENTRY(SIGIO, "SIGIO", "I/O possible"),
  #endif
--- 152,158 ----
  #endif
  #if defined (SIGIO)
    /* "I/O pending" has also been suggested, but is misleading since the
!      signal only happens when the process has asked for it, not every time
       I/O is pending. */
    ENTRY(SIGIO, "SIGIO", "I/O possible"),
  #endif
*************** static const struct signal_info signal_t
*** 208,214 ****
    ENTRY(SIGGRANT, "SIGGRANT", "Monitor mode granted"),
  #endif
  #if defined (SIGRETRACT)
!   ENTRY(SIGRETRACT, "SIGRETRACT", "Need to relinguish monitor mode"),
  #endif
  #if defined (SIGMSG)
    ENTRY(SIGMSG, "SIGMSG", "Monitor mode data available"),
--- 208,214 ----
    ENTRY(SIGGRANT, "SIGGRANT", "Monitor mode granted"),
  #endif
  #if defined (SIGRETRACT)
!   ENTRY(SIGRETRACT, "SIGRETRACT", "Need to relinquish monitor mode"),
  #endif
  #if defined (SIGMSG)
    ENTRY(SIGMSG, "SIGMSG", "Monitor mode data available"),
diff -Nrcpad gcc-17-20260524/libitm/ChangeLog gcc-17-20260531/libitm/ChangeLog
*** gcc-17-20260524/libitm/ChangeLog	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/ChangeLog	Sun May 31 22:32:14 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* configure: Regenerate.
+ 	* acinclude.m4: Fix typos.
+ 	* dispatch.h (struct method_group): Likewise.
+ 	* method-gl.cc: Likewise.
+ 	* method-ml.cc: Likewise.
+ 	* method-serial.cc: Likewise.
+ 
  2026-05-05  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* Makefile.in: Regenerate.
diff -Nrcpad gcc-17-20260524/libitm/acinclude.m4 gcc-17-20260531/libitm/acinclude.m4
*** gcc-17-20260524/libitm/acinclude.m4	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/acinclude.m4	Sun May 31 22:32:14 2026
*************** if test x$enable_symvers = xsun ; then
*** 345,351 ****
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targetting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
--- 345,351 ----
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targeting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
diff -Nrcpad gcc-17-20260524/libitm/configure gcc-17-20260531/libitm/configure
*** gcc-17-20260524/libitm/configure	Sun May 24 22:32:17 2026
--- gcc-17-20260531/libitm/configure	Sun May 31 22:32:17 2026
*************** if test x$enable_symvers = xsun ; then
*** 17747,17754 ****
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
--- 17747,17754 ----
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targeting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targeting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
diff -Nrcpad gcc-17-20260524/libitm/dispatch.h gcc-17-20260531/libitm/dispatch.h
*** gcc-17-20260524/libitm/dispatch.h	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/dispatch.h	Sun May 31 22:32:14 2026
*************** struct method_group
*** 247,253 ****
    // Stop using any method from this group for now. This can be used to
    // destruct meta data as soon as this method group is not used anymore.
    virtual void fini() = 0;
!   // This can be overriden to implement more light-weight re-initialization.
    virtual void reinit()
    {
      fini();
--- 247,253 ----
    // Stop using any method from this group for now. This can be used to
    // destruct meta data as soon as this method group is not used anymore.
    virtual void fini() = 0;
!   // This can be overridden to implement more light-weight re-initialization.
    virtual void reinit()
    {
      fini();
diff -Nrcpad gcc-17-20260524/libitm/method-gl.cc gcc-17-20260531/libitm/method-gl.cc
*** gcc-17-20260524/libitm/method-gl.cc	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/method-gl.cc	Sun May 31 22:32:14 2026
*************** static gl_mg o_gl_mg;
*** 73,79 ****
  // privatization safety. This even holds if a writing transaction has the
  // lock bit set in its shared_state because this is fine for both the serial
  // lock (the value will be smaller than ~0) and privatization safety (we
! // validate that no other update transaction comitted before we acquired the
  // orec, so we have the most recent timestamp and no other transaction can
  // commit until we have committed).
  // However, we therefore depend on shared_state not being modified by the
--- 73,79 ----
  // privatization safety. This even holds if a writing transaction has the
  // lock bit set in its shared_state because this is fine for both the serial
  // lock (the value will be smaller than ~0) and privatization safety (we
! // validate that no other update transaction committed before we acquired the
  // orec, so we have the most recent timestamp and no other transaction can
  // commit until we have committed).
  // However, we therefore depend on shared_state not being modified by the
diff -Nrcpad gcc-17-20260524/libitm/method-ml.cc gcc-17-20260531/libitm/method-ml.cc
*** gcc-17-20260524/libitm/method-ml.cc	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/method-ml.cc	Sun May 31 22:32:14 2026
*************** protected:
*** 280,286 ****
      // validate sees.  However, the potential cache miss on global time is
      // probably a reasonable price to pay for avoiding unnecessary extensions
      // in the future.
!     // We need acquire memory oder because we have to synchronize with the
      // increment of global time by update transactions, whose lock
      // acquisitions we have to observe (also see trycommit()).
      gtm_word snapshot = o_ml_mg.time.load(memory_order_acquire);
--- 280,286 ----
      // validate sees.  However, the potential cache miss on global time is
      // probably a reasonable price to pay for avoiding unnecessary extensions
      // in the future.
!     // We need acquire memory order because we have to synchronize with the
      // increment of global time by update transactions, whose lock
      // acquisitions we have to observe (also see trycommit()).
      gtm_word snapshot = o_ml_mg.time.load(memory_order_acquire);
*************** public:
*** 489,496 ****
        return NO_RESTART;
  
      // Read the current time, which becomes our snapshot time.
!     // Use acquire memory oder so that we see the lock acquisitions by update
!     // transcations that incremented the global time (see trycommit()).
      gtm_word snapshot = o_ml_mg.time.load(memory_order_acquire);
      // Re-initialize method group on time overflow.
      if (snapshot >= o_ml_mg.TIME_MAX)
--- 489,496 ----
        return NO_RESTART;
  
      // Read the current time, which becomes our snapshot time.
!     // Use acquire memory order so that we see the lock acquisitions by update
!     // transactions that incremented the global time (see trycommit()).
      gtm_word snapshot = o_ml_mg.time.load(memory_order_acquire);
      // Re-initialize method group on time overflow.
      if (snapshot >= o_ml_mg.TIME_MAX)
diff -Nrcpad gcc-17-20260524/libitm/method-serial.cc gcc-17-20260531/libitm/method-serial.cc
*** gcc-17-20260524/libitm/method-serial.cc	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libitm/method-serial.cc	Sun May 31 22:32:14 2026
*************** static htm_mg o_htm_mg;
*** 241,247 ****
  // We just need the subclass to associate it with the HTM method group that
  // sets up the HTM fast path.  This will use serial_dispatch as fallback for
  // transactions that might get canceled; it has a different method group, but
! // this is harmless for serial dispatchs because they never abort.
  class htm_dispatch : public serialirr_dispatch
  {
   public:
--- 241,247 ----
  // We just need the subclass to associate it with the HTM method group that
  // sets up the HTM fast path.  This will use serial_dispatch as fallback for
  // transactions that might get canceled; it has a different method group, but
! // this is harmless for serial dispatches because they never abort.
  class htm_dispatch : public serialirr_dispatch
  {
   public:
diff -Nrcpad gcc-17-20260524/libquadmath/ChangeLog gcc-17-20260531/libquadmath/ChangeLog
*** gcc-17-20260524/libquadmath/ChangeLog	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libquadmath/ChangeLog	Sun May 31 22:32:15 2026
***************
*** 1,3 ****
--- 1,10 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* math/powq.c: Fix typos.
+ 	* math/rem_pio2q.c: Likewise.
+ 	* printf/printf_fp.c (__quadmath_printf_fp): Likewise.
+ 	* update-quadmath.py: Likewise
+ 
  2026-01-01  Jakub Jelinek  <jakub@redhat.com>
  
  	* libquadmath.texi: Bump @copying's copyright year.
diff -Nrcpad gcc-17-20260524/libquadmath/math/powq.c gcc-17-20260531/libquadmath/math/powq.c
*** gcc-17-20260524/libquadmath/math/powq.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libquadmath/math/powq.c	Sun May 31 22:32:15 2026
***************
*** 37,43 ****
   *	1. Compute and return log2(x) in two pieces:
   *		log2(x) = w1 + w2,
   *	   where w1 has 113-53 = 60 bit trailing zeros.
!  *	2. Perform y*log2(x) = n+y' by simulating muti-precision
   *	   arithmetic, where |y'|<=0.5.
   *	3. Return x**y = 2**n*exp(y'*log2)
   *
--- 37,43 ----
   *	1. Compute and return log2(x) in two pieces:
   *		log2(x) = w1 + w2,
   *	   where w1 has 113-53 = 60 bit trailing zeros.
!  *	2. Perform y*log2(x) = n+y' by simulating multi-precision
   *	   arithmetic, where |y'|<=0.5.
   *	3. Return x**y = 2**n*exp(y'*log2)
   *
diff -Nrcpad gcc-17-20260524/libquadmath/math/rem_pio2q.c gcc-17-20260531/libquadmath/math/rem_pio2q.c
*** gcc-17-20260524/libquadmath/math/rem_pio2q.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libquadmath/math/rem_pio2q.c	Sun May 31 22:32:15 2026
***************
*** 45,51 ****
   *			z    = (z-x[i])*2**24
   *
   *
!  *	y[]	ouput result in an array of double precision numbers.
   *		The dimension of y[] is:
   *			24-bit  precision	1
   *			53-bit  precision	2
--- 45,51 ----
   *			z    = (z-x[i])*2**24
   *
   *
!  *	y[]	output result in an array of double precision numbers.
   *		The dimension of y[] is:
   *			24-bit  precision	1
   *			53-bit  precision	2
diff -Nrcpad gcc-17-20260524/libquadmath/printf/printf_fp.c gcc-17-20260531/libquadmath/printf/printf_fp.c
*** gcc-17-20260524/libquadmath/printf/printf_fp.c	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libquadmath/printf/printf_fp.c	Sun May 31 22:32:15 2026
*************** __quadmath_printf_fp (struct __quadmath_
*** 150,156 ****
    /* We need to shift the contents of fp_input by this amount of bits.	*/
    int to_shift = 0;
  
!   /* The fraction of the floting-point value in question  */
    MPN_VAR(frac);
    /* and the exponent.	*/
    int exponent;
--- 150,156 ----
    /* We need to shift the contents of fp_input by this amount of bits.	*/
    int to_shift = 0;
  
!   /* The fraction of the floating-point value in question  */
    MPN_VAR(frac);
    /* and the exponent.	*/
    int exponent;
*************** __quadmath_printf_fp (struct __quadmath_
*** 1195,1201 ****
  
  	  /* Now copy the wide character string.  Since the character
  	     (except for the decimal point and thousands separator) must
! 	     be coming from the ASCII range we can esily convert the
  	     string without mapping tables.  */
  	  for (cp = buffer, copywc = wstartp; copywc < wcp; ++copywc)
  	    if (*copywc == decimalwc)
--- 1195,1201 ----
  
  	  /* Now copy the wide character string.  Since the character
  	     (except for the decimal point and thousands separator) must
! 	     be coming from the ASCII range we can easily convert the
  	     string without mapping tables.  */
  	  for (cp = buffer, copywc = wstartp; copywc < wcp; ++copywc)
  	    if (*copywc == decimalwc)
diff -Nrcpad gcc-17-20260524/libquadmath/update-quadmath.py gcc-17-20260531/libquadmath/update-quadmath.py
*** gcc-17-20260524/libquadmath/update-quadmath.py	Sun May 24 22:32:14 2026
--- gcc-17-20260531/libquadmath/update-quadmath.py	Sun May 31 22:32:15 2026
*************** def update_sources(glibc_srcdir, quadmat
*** 90,96 ****
                    'GET_LDOUBLE_WORDS64', 'SET_LDOUBLE_LSW64',
                    'SET_LDOUBLE_MSW64', 'SET_LDOUBLE_WORDS64'):
          repl_names[macro] = macro.replace('LDOUBLE', 'FLT128')
!     # The classication macros are replaced.
      for macro in ('FP_NAN', 'FP_INFINITE', 'FP_ZERO', 'FP_SUBNORMAL',
                    'FP_NORMAL'):
          repl_names[macro] = 'QUAD' + macro
--- 90,96 ----
                    'GET_LDOUBLE_WORDS64', 'SET_LDOUBLE_LSW64',
                    'SET_LDOUBLE_MSW64', 'SET_LDOUBLE_WORDS64'):
          repl_names[macro] = macro.replace('LDOUBLE', 'FLT128')
!     # The classification macros are replaced.
      for macro in ('FP_NAN', 'FP_INFINITE', 'FP_ZERO', 'FP_SUBNORMAL',
                    'FP_NORMAL'):
          repl_names[macro] = 'QUAD' + macro
diff -Nrcpad gcc-17-20260524/libstdc++-v3/ChangeLog gcc-17-20260531/libstdc++-v3/ChangeLog
*** gcc-17-20260524/libstdc++-v3/ChangeLog	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/ChangeLog	Sun May 31 22:32:15 2026
***************
*** 1,3 ****
--- 1,333 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* include/bits/stl_algo.h: Reflow long line.
+ 
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* configure: Regenerate.
+ 	* acinclude.m4: Fix typos.
+ 	* configure.ac: Likewise.
+ 	* doc/doxygen/doxygroups.cc: Likewise.
+ 	* doc/doxygen/stdheader.cc (init_map): Likewise.
+ 	* include/bits/basic_string.h: Likewise.
+ 	* include/bits/chrono.h: Likewise.
+ 	* include/bits/chrono_io.h: Likewise.
+ 	* include/bits/cpyfunc_impl.h: Likewise.
+ 	* include/bits/funcref_impl.h: Likewise.
+ 	* include/bits/locale_conv.h: Likewise.
+ 	* include/bits/mofunc_impl.h: Likewise.
+ 	* include/bits/shared_ptr_base.h: Likewise.
+ 	* include/bits/simd_details.h: Likewise.
+ 	* include/bits/stl_algo.h: Likewise.
+ 	* include/bits/stl_deque.h: Likewise.
+ 	* include/bits/stl_iterator.h: Likewise.
+ 	* include/bits/stl_map.h: Likewise.
+ 	* include/bits/stl_multimap.h: Likewise.
+ 	* include/bits/stl_multiset.h: Likewise.
+ 	* include/bits/stl_set.h: Likewise.
+ 	* include/bits/unicode.h: Likewise.
+ 	* include/bits/unique_ptr.h: Likewise.
+ 	* include/bits/version.h: Likewise.
+ 	* include/experimental/bits/simd.h: Likewise.
+ 	* include/experimental/bits/simd_fixed_size.h: Likewise.
+ 	* include/experimental/bits/simd_x86_conversions.h: Likewise.
+ 	* include/ext/concurrence.h: Likewise.
+ 	* include/ext/pb_ds/detail/container_base_dispatch.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp: Likewise.
+ 	* include/ext/pb_ds/tree_policy.hpp: Likewise.
+ 	* include/ext/pb_ds/trie_policy.hpp: Likewise.
+ 	* include/parallel/multiway_merge.h: Likewise.
+ 	* include/pstl/parallel_backend_tbb.h (__parallel_transform_reduce): Likewise.
+ 	(class __merge_func): Likewise.
+ 	(class __stable_sort_func): Likewise.
+ 	(__parallel_stable_sort): Likewise.
+ 	* include/tr1/shared_ptr.h: Likewise.
+ 	* libsupc++/hash_bytes.cc: Likewise.
+ 	* libsupc++/vmi_class_type_info.cc (__do_find_public_src): Likewise.
+ 	* src/c++17/fast_float/fast_float.h (struct parse_options): Likewise.
+ 	(rounds_to_nearest): Likewise.
+ 
+ 2026-05-29  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/flat_set (_Flat_set_impl::swap): Swap _M_cont
+ 	first.
+ 
+ 2026-05-29  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	* include/bits/new_allocator.h (allocate_at_least): Reduce
+ 	allocation to match what is reported.
+ 	* testsuite/20_util/allocator/allocate_at_least2.cc: Add tests.
+ 	* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
+ 	Fix, for -m32 and new allocation results.
+ 
+ 2026-05-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* testsuite/util/testsuite_allocator.h
+ 	(uneq_allocator::allocate): Use __try/__catch instead.
+ 	(uneq_allocator::allocate_at_least): Likewise.
+ 
+ 2026-05-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/flat_map (flat_map): Bring in operator= from
+ 	_Flat_map_base.
+ 	(flat_multimap): Likewise.
+ 	* include/std/flat_set (flat_set): Bring in operator= from
+ 	_Flat_set_base.
+ 	(flat_multiset): Likewise.
+ 	* testsuite/23_containers/flat_map/1.cc (test11): Simplify by
+ 	using = {...}.
+ 	(test12): New test.
+ 	* testsuite/23_containers/flat_multimap/1.cc (test10): Simplify
+ 	by using = {...}.
+ 	(test11): New test.
+ 	* testsuite/23_containers/flat_multiset/1.cc (test10): Simplify
+ 	by using = {...}.
+ 	(test11): New test.
+ 	* testsuite/23_containers/flat_set/1.cc (test10): Simplify by
+ 	using = {...}.
+ 	(test11): New test.
+ 
+ 2026-05-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/version.def (flat_map): Bump to 202511.
+ 	(flat_set): Likewise.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/flat_map (_Flat_map_impl): Remove
+ 	is_nothrow_swappable_v assertions.
+ 	(_Flat_map_impl::_Flat_map_impl): Explicitly default copy ctor.
+ 	Define move ctor with corrected exception handling as per
+ 	P3567R2.
+ 	(_Flat_map_impl::operator=): Likewise.
+ 	(_Flat_map_impl::insert_range): Define new __sorted_t overload
+ 	as per P3567R2.
+ 	(_Flat_map_impl::swap): Make conditionally noexcept as per
+ 	P3567R2.
+ 	* include/std/flat_set (_Flat_set_impl): Remove
+ 	is_nothrow_swappable_v assertion.
+ 	(_Flat_set_impl::_Flat_set_impl): Explicitly default copy ctor.
+ 	Define move ctor with correct invariant preserving behavior as
+ 	per P3567R2.
+ 	(_Flat_set_impl::operator=): Likewise.
+ 	(_Flat_set_impl::_M_insert_range): Factored out from
+ 	insert_range.  Add bool parameter __is_sorted defaulted to
+ 	false.
+ 	(_Flat_set_impl::insert_range): Define new __sorted_t overload
+ 	as per P3567R2.
+ 	(_Flat_set_impl::swap): Make conditionally noexcept as per
+ 	P3567R2.  Correct to use ranges::swap instead of ADL swap.
+ 	* testsuite/23_containers/flat_map/1.cc (test11, test12):
+ 	New tests.
+ 	* testsuite/23_containers/flat_multimap/1.cc (test10, test11):
+ 	New tests.
+ 	* testsuite/23_containers/flat_multiset/1.cc (test10, test11):
+ 	New tests.
+ 	* testsuite/23_containers/flat_set/1.cc (test10, test11):
+ 	New tests.
+ 
+ 2026-05-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/flat_map (_Flat_map_impl::_M_insert): New bool
+ 	parameter __is_sorted defaulted to false.  Reimplement using
+ 	views::zip and ranges::inplace_merge.
+ 	(_Flat_map_impl::insert): In the __sorted_t overload, pass
+ 	__is_sorted=true to _M_insert.
+ 
+ 2026-05-28  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/random.h	(piecewise_constant_distribution::param_type)
+ 	(piecewise_linear_distribution::param_type): Befriend operator<<.
+ 	* include/bits/random.tcc
+ 	(operator<<(basic_ostream&, piecewise_linear_distribution))
+ 	(operator<<(basic_ostream&, piecewise_constant_distribution)):
+ 	Use __x._M_param._M_int and __x._M_param._M_den instead of accessors.
+ 
+ 2026-05-28  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc:
+ 	New test.
+ 	* testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc:
+ 	New test.
+ 
+ 2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/ranges (ref_view::size()): Only call ranges::size(*_M_r).
+ 	(ref_view::empty): Only call ranges::empty(*_M_r).
+ 	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
+ 	Except no errors from ref_view uses.
+ 	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
+ 	Likewise.
+ 
+ 2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/125450
+ 	* include/std/optional (range_format): Do not define for
+ 	freestanding.
+ 
+ 2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/ranges_base.h (ranges::__static_size): Define.
+ 	* include/std/ranges (ref_view::size()): For ranges with static
+ 	size return ranges::__static_size<_Range>.
+ 	(ref_view::empty): For ranges with static size, compare size
+ 	against zero.
+ 	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
+ 	Expect errors from ref_view uses.
+ 	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
+ 	Expect errors from ref_view uses.
+ 
+ 2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/inplace_vector (inplace_vector(std::from_range, __Rg&&)):
+ 	Add static_asserts checking range size.
+ 	* testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc:
+ 	New test.
+ 	* testsuite/23_containers/inplace_vector/cons/from_range_neg.cc:
+ 	New test.
+ 
+ 2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_base.h (memory_order::consume): Add
+ 	deprecate attribute.
+ 	(memory_order_consume): Likewise.
+ 	(kill_dependency): Likewise.
+ 	(atomic_flag::clear): Disable warning with pragmas.
+ 	(__atomic_base::store, __atomic_base<T*>::store): Likewise.
+ 	* include/c_compatibility/stdatomic.h (memory_order_consume):
+ 	Likewise.
+ 	* testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc:
+ 	Ignore deprecation warnings.
+ 	* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
+ 	Likewise.
+ 	* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Add
+ 	dg-warning directives.
+ 	* testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
+ 	Likewise.
+ 
+ 2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_deque.h: Add missing constraint on allocator
+ 	type in deduction guide.
+ 	* include/bits/stl_vector.h: Likewise.
+ 	* include/debug/deque: Likewise.
+ 	* include/debug/vector: Likewise.
+ 	* testsuite/23_containers/deque/cons/deduction_c++23.cc: Check
+ 	that deduction fails for a type which does not qualify as an
+ 	allocator.
+ 	* testsuite/23_containers/vector/cons/deduction_c++23.cc:
+ 	Likewise.
+ 
+ 2026-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/125371
+ 	* config/io/basic_file_stdio.h: Include <bits/ios_base.h>
+ 	instead of <ios>.
+ 	* include/Makefile.am: Add new headers.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/bits/fs_path.h: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/bits/locale_facets.h: Remove unused <iosfwd> and
+ 	<streambuf> includes.
+ 	* include/bits/localefwd.h: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/bits/ostream.h: Replace <ios> with its constituent
+ 	parts, except for <iosfwd>.
+ 	* include/bits/ostream_insert.h: Include <bits/iosfwd.h> instead
+ 	of <iosfwd>.
+ 	* include/bits/shared_ptr.h: Likewise.
+ 	* include/bits/std_thread.h: Likewise.
+ 	* include/bits/stream_iterator.h: Likewise.
+ 	* include/std/fstream: Include <bits/iosfwd_file.h>.
+ 	* include/std/iomanip: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/std/ios: Do not include <exception> or
+ 	<bits/char_traits.h>.
+ 	* include/std/iosfwd: Move declarations to new headers and
+ 	include those new headers. Tweak Doxygen comment.
+ 	* include/std/iostream: Include <ios>.
+ 	* include/std/istream: Replace <ios> with its constituent
+ 	parts, except for <iosfwd>.
+ 	* include/std/random: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/std/spanstream: Include <bits/iosfwd_span.h>.
+ 	* include/std/sstream: Include <bits/iosfwd_string.h>.
+ 	* include/std/streambuf: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/std/string_view: Likewise.
+ 	* include/std/syncstream: Include <bits/iosfwd_sync.h>.
+ 	* include/std/system_error: Include <bits/iosfwd.h> instead of
+ 	<iosfwd>.
+ 	* include/bits/iosfwd.h: New file.
+ 	* include/bits/iosfwd_file.h: New file.
+ 	* include/bits/iosfwd_span.h: New file.
+ 	* include/bits/iosfwd_string.h: New file.
+ 	* include/bits/iosfwd_sync.h: New file.
+ 
+ 2026-05-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/ranges_base.h (ranges::__static_sized_range):
+ 	Define.
+ 	* include/bits/simd_details.h (simd::__static_sized_range):
+ 	Remove.
+ 	(simd::__static_range_size): Use ranges::__static_sized_range.
+ 	* include/bits/simd_loadstore.h (simd::unchecked_store)
+ 	(simd::unchecked_load): Use ranges::__static_sized_range.
+ 	* include/bits/simd_vec.h (basic_vec::basic_vec(_Rg&&, flags<_Flags>)):
+ 	Replace __static_sized_range<_Rg, _S_size> with
+ 	ranges::__static_sized_range<_Rg> and traing requires size
+ 	for size value.
+ 	* include/std/meta (__detail::__statically_sized): Remove.
+ 	(std::define_static_array): Use ranges::__static_sized_range.
+ 	* testsuite/std/simd/traits_impl.cc: Remove test for
+ 	simd::__static_sized_range.
+ 
+ 2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/20_util/is_constructible/value-2.cc:
+ 	Adjust expected value for C++26 (__cpp_trivial_union >= 202502L).
+ 	* testsuite/20_util/is_destructible/value.cc: Likewise.
+ 	* testsuite/20_util/is_nothrow_destructible/value.cc: Likewise.
+ 
+ 2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (valarray): Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/valarray: (__cpp_lib_valarray): Define.
+ 	(valarray::begin, valarray::end, valarray::iterator)
+ 	(valarray::const_iterator) [__glibcxx_valarray >= 202511L]: Define.
+ 	(std::begin(valarray<_Tp>&), std::begin(const valarray<_Tp>&))
+ 	(std::end(valarray<_Tp>&), std::end(const valarray<_Tp>&)): Define
+ 	only if __glibcxx_valarray < 202511L (i.e. not defined).
+ 	* include/bits/range_access.h (std::valarray)
+ 	(std::begin(valarray<_Tp>&), std::begin(const valarray<_Tp>&))
+ 	(std::end(valarray<_Tp>&), std::end(const valarray<_Tp>&)): Forward
+ 	declare only if __glibcxx_valarray < 202511L (i.e. not defined).
+ 	* testsuite/26_numerics/valarray/range_access3.cc: New test.
+ 
+ 2026-05-25  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (initializer_list): Define with value
+ 	202511 for C++26.
+ 	* include/bits/version.h: Regenerate.
+ 	* libsupc++/initializer_list (initializer_list::data)
+ 	(initializer_list::empty) [__glibcxx_initializer_list >= 202511L]:
+ 	Define.
+ 	(std::begin(initializer_list<_Tp>), std::end(initializer_list<_Tp>)):
+ 	Define only if __glibcxx_initializer_list < 202511L (i.e. not defined).
+ 	* include/bits/range_access.h (std::empty(initializer_list<_Tp>))
+ 	(std::data(initializer_list<_Tp>)): Define only if
+ 	__glibcxx_initializer_list < 202511L (i.e. not defined).
+ 	* testsuite/18_support/initializer_list/range_access.cc: Move test for
+ 	brace-init list to range_access_neg.c. Included <iterator> in C++26 or
+ 	later mode.
+ 	* testsuite/18_support/initializer_list/data_empty_mem.cc: New test.
+ 	* testsuite/18_support/initializer_list/range_access14.cc: New test.
+ 	* testsuite/18_support/initializer_list/range_access14_neg.cc: New test.
+ 	* testsuite/18_support/initializer_list/range_access17.cc: New test.
+ 	* testsuite/18_support/initializer_list/range_access17_neg.cc: New test.
+ 	* testsuite/18_support/initializer_list/range_access_neg.cc: New test.
+ 
  2026-05-22  Jonathan Wakely  <jwakely@redhat.com>
  
  	* testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc:
diff -Nrcpad gcc-17-20260524/libstdc++-v3/acinclude.m4 gcc-17-20260531/libstdc++-v3/acinclude.m4
*** gcc-17-20260524/libstdc++-v3/acinclude.m4	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/acinclude.m4	Sun May 31 22:32:15 2026
*************** dnl Assumes cross_compiling bits already
*** 733,739 ****
  dnl particular.
  dnl
  dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir.
! dnl config/gxx-include-dir.m4 must be kept consistant with this as well.
  AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
    glibcxx_toolexecdir=no
    glibcxx_toolexeclibdir=no
--- 733,739 ----
  dnl particular.
  dnl
  dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir.
! dnl config/gxx-include-dir.m4 must be kept consistent with this as well.
  AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
    glibcxx_toolexecdir=no
    glibcxx_toolexeclibdir=no
*************** if test x$enable_symvers = xsun ; then
*** 4026,4032 ****
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targetting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
--- 4026,4032 ----
      *)
        # Unlikely to work.
        AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
!       AC_MSG_WARN([=== you are not targeting Solaris 2.])
        AC_MSG_WARN([=== Symbol versioning will be disabled.])
        enable_symvers=no
        ;;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/config/io/basic_file_stdio.h gcc-17-20260531/libstdc++-v3/config/io/basic_file_stdio.h
*** gcc-17-20260524/libstdc++-v3/config/io/basic_file_stdio.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/config/io/basic_file_stdio.h	Sun May 31 22:32:15 2026
***************
*** 39,45 ****
  #include <bits/c++config.h>
  #include <bits/c++io.h>  // for __c_lock and __c_file
  #include <bits/move.h>   // for swap
! #include <ios>
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
--- 39,45 ----
  #include <bits/c++config.h>
  #include <bits/c++io.h>  // for __c_lock and __c_file
  #include <bits/move.h>   // for swap
! #include <bits/ios_base.h>     // For ios_base declarations.
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
diff -Nrcpad gcc-17-20260524/libstdc++-v3/configure gcc-17-20260531/libstdc++-v3/configure
*** gcc-17-20260524/libstdc++-v3/configure	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/configure	Sun May 31 22:32:15 2026
*************** pic_mode='default'
*** 16201,16207 ****
  postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
  
  # Possibly disable most of the library.
! ## TODO: Consider skipping unncessary tests altogether in this case, rather
  ## than just ignoring the results.  Faster /and/ more correct, win win.
  
    # Check whether --enable-hosted-libstdcxx was given.
--- 16201,16207 ----
  postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
  
  # Possibly disable most of the library.
! ## TODO: Consider skipping unnecessary tests altogether in this case, rather
  ## than just ignoring the results.  Faster /and/ more correct, win win.
  
    # Check whether --enable-hosted-libstdcxx was given.
*************** if test x$enable_symvers = xsun ; then
*** 51308,51315 ****
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
--- 51308,51315 ----
        # Unlikely to work.
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5
  $as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;}
!       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targeting Solaris 2." >&5
! $as_echo "$as_me: WARNING: === you are not targeting Solaris 2." >&2;}
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5
  $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
        enable_symvers=no
diff -Nrcpad gcc-17-20260524/libstdc++-v3/configure.ac gcc-17-20260531/libstdc++-v3/configure.ac
*** gcc-17-20260524/libstdc++-v3/configure.ac	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/configure.ac	Sun May 31 22:32:15 2026
*************** pic_mode='default'
*** 159,165 ****
  postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
  
  # Possibly disable most of the library.
! ## TODO: Consider skipping unncessary tests altogether in this case, rather
  ## than just ignoring the results.  Faster /and/ more correct, win win.
  GLIBCXX_ENABLE_HOSTED
  
--- 159,165 ----
  postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
  
  # Possibly disable most of the library.
! ## TODO: Consider skipping unnecessary tests altogether in this case, rather
  ## than just ignoring the results.  Faster /and/ more correct, win win.
  GLIBCXX_ENABLE_HOSTED
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/doc/doxygen/doxygroups.cc gcc-17-20260531/libstdc++-v3/doc/doxygen/doxygroups.cc
*** gcc-17-20260524/libstdc++-v3/doc/doxygen/doxygroups.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/doc/doxygen/doxygroups.cc	Sun May 31 22:32:15 2026
***************
*** 47,53 ****
   *  interface.
  */
  /** @namespace __gnu_internal
!  *  @brief GNU implemenation details, not for public use or
   *  export. Used only when anonymous namespaces cannot be substituted.
  */
  /** @namespace std::experimental
--- 47,53 ----
   *  interface.
  */
  /** @namespace __gnu_internal
!  *  @brief GNU implementation details, not for public use or
   *  export. Used only when anonymous namespaces cannot be substituted.
  */
  /** @namespace std::experimental
diff -Nrcpad gcc-17-20260524/libstdc++-v3/doc/doxygen/stdheader.cc gcc-17-20260531/libstdc++-v3/doc/doxygen/stdheader.cc
*** gcc-17-20260524/libstdc++-v3/doc/doxygen/stdheader.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/doc/doxygen/stdheader.cc	Sun May 31 22:32:15 2026
*************** std::map<std::string_view, std::string_v
*** 26,32 ****
  
  void init_map()
  {
!     // Enter the glamourous world of data entry!!  Maintain these!
      // Because the map_header function removes common prefixes and suffixes,
      // a header "bits/st[dl]_foo.h" will automatically map to "foo" if that
      // is a standard header, so we don't need to list those cases here.
--- 26,32 ----
  
  void init_map()
  {
!     // Enter the glamorous world of data entry!!  Maintain these!
      // Because the map_header function removes common prefixes and suffixes,
      // a header "bits/st[dl]_foo.h" will automatically map to "foo" if that
      // is a standard header, so we don't need to list those cases here.
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/Makefile.am gcc-17-20260531/libstdc++-v3/include/Makefile.am
*** gcc-17-20260524/libstdc++-v3/include/Makefile.am	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/Makefile.am	Sun May 31 22:32:15 2026
*************** bits_freestanding = \
*** 140,145 ****
--- 140,150 ----
  	${bits_srcdir}/functional_hash.h \
  	${bits_srcdir}/intcmp.h \
  	${bits_srcdir}/invoke.h \
+ 	${bits_srcdir}/iosfwd.h \
+ 	${bits_srcdir}/iosfwd_file.h \
+ 	${bits_srcdir}/iosfwd_span.h \
+ 	${bits_srcdir}/iosfwd_string.h \
+ 	${bits_srcdir}/iosfwd_sync.h \
  	${bits_srcdir}/iterator_concepts.h \
  	${bits_srcdir}/new_except.h \
  	${bits_srcdir}/new_throw.h \
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/Makefile.in gcc-17-20260531/libstdc++-v3/include/Makefile.in
*** gcc-17-20260524/libstdc++-v3/include/Makefile.in	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/Makefile.in	Sun May 31 22:32:15 2026
*************** bits_freestanding = \
*** 498,503 ****
--- 498,508 ----
  	${bits_srcdir}/functional_hash.h \
  	${bits_srcdir}/intcmp.h \
  	${bits_srcdir}/invoke.h \
+ 	${bits_srcdir}/iosfwd.h \
+ 	${bits_srcdir}/iosfwd_file.h \
+ 	${bits_srcdir}/iosfwd_span.h \
+ 	${bits_srcdir}/iosfwd_string.h \
+ 	${bits_srcdir}/iosfwd_sync.h \
  	${bits_srcdir}/iterator_concepts.h \
  	${bits_srcdir}/new_except.h \
  	${bits_srcdir}/new_throw.h \
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/atomic_base.h gcc-17-20260531/libstdc++-v3/include/bits/atomic_base.h
*** gcc-17-20260524/libstdc++-v3/include/bits/atomic_base.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/atomic_base.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 64,83 ****
  #if __cplusplus > 201703L
    enum class memory_order : int
      {
!       relaxed,
!       consume,
!       acquire,
!       release,
!       acq_rel,
!       seq_cst
      };
  
    inline constexpr memory_order memory_order_relaxed = memory_order::relaxed;
-   inline constexpr memory_order memory_order_consume = memory_order::consume;
    inline constexpr memory_order memory_order_acquire = memory_order::acquire;
    inline constexpr memory_order memory_order_release = memory_order::release;
    inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel;
    inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst;
  #else
    enum memory_order : int
      {
--- 64,88 ----
  #if __cplusplus > 201703L
    enum class memory_order : int
      {
!       relaxed = 0,
!       consume _GLIBCXX26_DEPRECATED = 1,
!       acquire = 2,
!       release = 3,
!       acq_rel = 4,
!       seq_cst = 5
      };
  
    inline constexpr memory_order memory_order_relaxed = memory_order::relaxed;
    inline constexpr memory_order memory_order_acquire = memory_order::acquire;
    inline constexpr memory_order memory_order_release = memory_order::release;
    inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel;
    inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst;
+ 
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+   _GLIBCXX26_DEPRECATED
+   inline constexpr memory_order memory_order_consume = memory_order::consume;
+ #pragma GCC diagnostic pop
  #else
    enum memory_order : int
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 152,157 ****
--- 157,163 ----
  
    /// kill_dependency
    template<typename _Tp>
+     _GLIBCXX26_DEPRECATED
      inline _Tp
      kill_dependency(_Tp __y) noexcept
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 278,283 ****
--- 284,291 ----
      // TODO add const volatile overload
  #endif // __glibcxx_atomic_wait
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
      _GLIBCXX_ALWAYS_INLINE void
      clear(memory_order __m = memory_order_seq_cst) noexcept
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 301,306 ****
--- 309,315 ----
  
        __atomic_clear (&_M_i, int(__m));
      }
+ #pragma GCC diagnostic pop
  
    private:
      static constexpr __atomic_flag_data_type
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 482,487 ****
--- 491,498 ----
  	    reinterpret_cast<void *>(-_S_alignment));
        }
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
        _GLIBCXX_ALWAYS_INLINE void
        store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 506,511 ****
--- 517,523 ----
  
  	__atomic_store_n(&_M_i, __i, int(__m));
        }
+ #pragma GCC diagnostic pop
  
        _GLIBCXX_ALWAYS_INLINE __int_type
        load(memory_order __m = memory_order_seq_cst) const noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 831,836 ****
--- 843,850 ----
  	    reinterpret_cast<void *>(-__alignof(_M_p)));
        }
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
        _GLIBCXX_ALWAYS_INLINE void
        store(__pointer_type __p,
  	    memory_order __m = memory_order_seq_cst) noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 857,862 ****
--- 871,877 ----
  
  	__atomic_store_n(&_M_p, __p, int(__m));
        }
+ #pragma GCC diagnostic pop
  
        _GLIBCXX_ALWAYS_INLINE __pointer_type
        load(memory_order __m = memory_order_seq_cst) const noexcept
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/basic_string.h gcc-17-20260531/libstdc++-v3/include/bits/basic_string.h
*** gcc-17-20260524/libstdc++-v3/include/bits/basic_string.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/basic_string.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4608,4614 ****
  #endif
  
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
!   // DR 1261. Insufficent overloads for to_string / to_wstring
  
    _GLIBCXX_NODISCARD
    inline string
--- 4608,4614 ----
  #endif
  
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
!   // DR 1261. Insufficient overloads for to_string / to_wstring
  
    _GLIBCXX_NODISCARD
    inline string
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/chrono.h gcc-17-20260531/libstdc++-v3/include/bits/chrono.h
*** gcc-17-20260524/libstdc++-v3/include/bits/chrono.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/chrono.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1217,1223 ****
  
      // To support the (forward) evolution of the library's defined
      // clocks, wrap inside inline namespace so that the current
!     // defintions of system_clock, steady_clock, and
      // high_resolution_clock types are uniquely mangled. This way, new
      // code can use the latests clocks, while the library can contain
      // compatibility definitions for previous versions.  At some
--- 1217,1223 ----
  
      // To support the (forward) evolution of the library's defined
      // clocks, wrap inside inline namespace so that the current
!     // definitions of system_clock, steady_clock, and
      // high_resolution_clock types are uniquely mangled. This way, new
      // code can use the latests clocks, while the library can contain
      // compatibility definitions for previous versions.  At some
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/chrono_io.h gcc-17-20260531/libstdc++-v3/include/bits/chrono_io.h
*** gcc-17-20260524/libstdc++-v3/include/bits/chrono_io.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/chrono_io.h	Sun May 31 22:32:15 2026
*************** namespace __detail
*** 164,170 ****
  }
  /// @endcond
  
!   /** Return an object that asssociates timezone info with a local time.
     *
     * A `chrono::local_time` object has no timezone associated with it. This
     * function creates an object that allows formatting a `local_time` as
--- 164,170 ----
  }
  /// @endcond
  
!   /** Return an object that associates timezone info with a local time.
     *
     * A `chrono::local_time` object has no timezone associated with it. This
     * function creates an object that allows formatting a `local_time` as
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/cpyfunc_impl.h gcc-17-20260531/libstdc++-v3/include/bits/cpyfunc_impl.h
*** gcc-17-20260524/libstdc++-v3/include/bits/cpyfunc_impl.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/cpyfunc_impl.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 170,176 ****
        copyable_function&
        operator=(copyable_function&& __x) noexcept
        {
! 	// Standard requires support of self assigment, by specifying it as
  	// copy and swap.
  	if (this != std::addressof(__x)) [[likely]]
  	  {
--- 170,176 ----
        copyable_function&
        operator=(copyable_function&& __x) noexcept
        {
! 	// Standard requires support of self assignment, by specifying it as
  	// copy and swap.
  	if (this != std::addressof(__x)) [[likely]]
  	  {
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/fs_path.h gcc-17-20260531/libstdc++-v3/include/bits/fs_path.h
*** gcc-17-20260524/libstdc++-v3/include/bits/fs_path.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/fs_path.h	Sun May 31 22:32:15 2026
***************
*** 34,44 ****
  
  #include <type_traits>
  #include <locale>
- #include <iosfwd>
  #include <iomanip>
  #include <codecvt>
  #include <string_view>
  #include <system_error>
  #include <bits/stl_algobase.h>
  #include <bits/stl_pair.h>
  #include <bits/locale_conv.h>
--- 34,44 ----
  
  #include <type_traits>
  #include <locale>
  #include <iomanip>
  #include <codecvt>
  #include <string_view>
  #include <system_error>
+ #include <bits/iosfwd.h>
  #include <bits/stl_algobase.h>
  #include <bits/stl_pair.h>
  #include <bits/locale_conv.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/funcref_impl.h gcc-17-20260531/libstdc++-v3/include/bits/funcref_impl.h
*** gcc-17-20260524/libstdc++-v3/include/bits/funcref_impl.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/funcref_impl.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 78,84 ****
        using _ArgsSignature = _Res(_ArgTypes...) noexcept(_Noex);
        using _TargetQuals = int _GLIBCXX_MOF_CV&;
  
!       // [func.wrap.ref.ctor]/1 is-invokable-using
        template<typename... _Tps>
  	static constexpr bool __is_invocable_using
  	  = __conditional_t<_Noex,
--- 78,84 ----
        using _ArgsSignature = _Res(_ArgTypes...) noexcept(_Noex);
        using _TargetQuals = int _GLIBCXX_MOF_CV&;
  
!       // [func.wrap.ref.ctor]/1 is-invocable-using
        template<typename... _Tps>
  	static constexpr bool __is_invocable_using
  	  = __conditional_t<_Noex,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 101,107 ****
  	requires (!is_same_v<remove_cv_t<_Vt>, function_ref>)
  	       && (!is_member_pointer_v<_Vt>)
  	       // We deviate from standard by having this condition, that forces
! 	       // function references to use _Fn* constructors. This simplies
  	       // implementation and provide better diagnostic when used in
  	       // constant expression (above constructor is not constexpr).
  	       && (!is_function_v<_Vt>)
--- 101,107 ----
  	requires (!is_same_v<remove_cv_t<_Vt>, function_ref>)
  	       && (!is_member_pointer_v<_Vt>)
  	       // We deviate from standard by having this condition, that forces
! 	       // function references to use _Fn* constructors. This simplifies
  	       // implementation and provide better diagnostic when used in
  	       // constant expression (above constructor is not constexpr).
  	       && (!is_function_v<_Vt>)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/iosfwd.h gcc-17-20260531/libstdc++-v3/include/bits/iosfwd.h
*** gcc-17-20260524/libstdc++-v3/include/bits/iosfwd.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/include/bits/iosfwd.h	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,112 ----
+ // <iosfwd> Forward declarations -*- C++ -*-
+ 
+ // Copyright (C) 1997-2026 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library 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.
+ 
+ // This library 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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/iosfwd
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{iosfwd}
+  */
+ 
+ #ifndef _GLIBCXX_IOSFWD_H
+ #define _GLIBCXX_IOSFWD_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/requires_hosted.h> // iostreams
+ 
+ #include <bits/c++config.h>
+ #include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @addtogroup io
+    *  @{
+   */
+   class ios_base;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_ios;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_streambuf;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_istream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_ostream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_iostream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class istreambuf_iterator;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class ostreambuf_iterator;
+ 
+ 
+   /// Base class for @c char streams.
+   typedef basic_ios<char> 		ios;
+ 
+   /// Base class for @c char buffers.
+   typedef basic_streambuf<char> 	streambuf;
+ 
+   /// Base class for @c char input streams.
+   typedef basic_istream<char> 		istream;
+ 
+   /// Base class for @c char output streams.
+   typedef basic_ostream<char> 		ostream;
+ 
+   /// Base class for @c char mixed input and output streams.
+   typedef basic_iostream<char> 		iostream;
+ 
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   /// Base class for @c wchar_t streams.
+   typedef basic_ios<wchar_t> 		wios;
+ 
+   /// Base class for @c wchar_t buffers.
+   typedef basic_streambuf<wchar_t> 	wstreambuf;
+ 
+   /// Base class for @c wchar_t input streams.
+   typedef basic_istream<wchar_t> 	wistream;
+ 
+   /// Base class for @c wchar_t output streams.
+   typedef basic_ostream<wchar_t> 	wostream;
+ 
+   /// Base class for @c wchar_t mixed input and output streams.
+   typedef basic_iostream<wchar_t> 	wiostream;
+ #endif
+ 
+   /** @}  */
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ 
+ #endif /* _GLIBCXX_IOSFWD_H */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_file.h gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_file.h
*** gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_file.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_file.h	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,91 ----
+ // <iosfwd> Forward declarations for <fstream> -*- C++ -*-
+ 
+ // Copyright (C) 1997-2026 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library 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.
+ 
+ // This library 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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/bits/iosfwd_file.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{iosfwd}
+  */
+ 
+ #ifndef _GLIBCXX_IOSFWD_FILE_H
+ #define _GLIBCXX_IOSFWD_FILE_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/requires_hosted.h> // iostreams
+ 
+ #include <bits/iosfwd.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @addtogroup io
+    *  @{
+   */
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_filebuf;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_ifstream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_ofstream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT> >
+     class basic_fstream;
+ 
+   /// Class for @c char file buffers.
+   typedef basic_filebuf<char> 		filebuf;
+ 
+   /// Class for @c char input file streams.
+   typedef basic_ifstream<char> 		ifstream;
+ 
+   /// Class for @c char output file streams.
+   typedef basic_ofstream<char> 		ofstream;
+ 
+   /// Class for @c char mixed input and output file streams.
+   typedef basic_fstream<char> 		fstream;
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+     /// Class for @c wchar_t file buffers.
+   typedef basic_filebuf<wchar_t> 	wfilebuf;
+ 
+   /// Class for @c wchar_t input file streams.
+   typedef basic_ifstream<wchar_t> 	wifstream;
+ 
+   /// Class for @c wchar_t output file streams.
+   typedef basic_ofstream<wchar_t> 	wofstream;
+ 
+   /// Class for @c wchar_t mixed input and output file streams.
+   typedef basic_fstream<wchar_t> 	wfstream;
+ #endif
+   /// @}
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ 
+ #endif /* _GLIBCXX_IOSFWD_FILE_H */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_span.h gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_span.h
*** gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_span.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_span.h	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,78 ----
+ // <iosfwd> Forward declarations for <spanstream> -*- C++ -*-
+ 
+ // Copyright (C) 2022-2026 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library 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.
+ 
+ // This library 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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/bits/iosfwd_span.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{iosfwd}
+  */
+ 
+ #ifndef _GLIBCXX_IOSFWD_SPAN_H
+ #define _GLIBCXX_IOSFWD_SPAN_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/requires_hosted.h> // iostreams
+ 
+ #include <bits/version.h>
+ 
+ #ifdef __glibcxx_spanstream // >= C++23
+ #include <bits/iosfwd.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @addtogroup io
+    *  @{
+   */
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>>
+     class basic_spanbuf;
+   template<typename _CharT, typename _Traits = char_traits<_CharT>>
+     class basic_ispanstream;
+   template<typename _CharT, typename _Traits = char_traits<_CharT>>
+     class basic_ospanstream;
+   template<typename _CharT, typename _Traits = char_traits<_CharT>>
+     class basic_spanstream;
+ 
+   using spanbuf     = basic_spanbuf<char>;
+   using ispanstream = basic_ispanstream<char>;
+   using ospanstream = basic_ospanstream<char>;
+   using spanstream  = basic_spanstream<char>;
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   using wspanbuf     = basic_spanbuf<wchar_t>;
+   using wispanstream = basic_ispanstream<wchar_t>;
+   using wospanstream = basic_ospanstream<wchar_t>;
+   using wspanstream  = basic_spanstream<wchar_t>;
+ #endif
+   /// @}
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ #endif // C++23
+ #endif /* _GLIBCXX_IOSFWD_SPAN_H */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_string.h gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_string.h
*** gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_string.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_string.h	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,101 ----
+ // <iosfwd> Forward declarations for <sstream> -*- C++ -*-
+ 
+ // Copyright (C) 1997-2026 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library 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.
+ 
+ // This library 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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/bits/iosfwd_string.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{iosfwd}
+  */
+ 
+ #ifndef _GLIBCXX_IOSFWD_STRING_H
+ #define _GLIBCXX_IOSFWD_STRING_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/requires_hosted.h> // iostreams
+ 
+ #include <bits/iosfwd.h>
+ #include <bits/stringfwd.h> 	// For string forward declarations.
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @addtogroup io
+    *  @{
+   */
+ 
+ _GLIBCXX_BEGIN_NAMESPACE_CXX11
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	    typename _Alloc = allocator<_CharT> >
+     class basic_stringbuf;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	   typename _Alloc = allocator<_CharT> >
+     class basic_istringstream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	   typename _Alloc = allocator<_CharT> >
+     class basic_ostringstream;
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	   typename _Alloc = allocator<_CharT> >
+     class basic_stringstream;
+ 
+ _GLIBCXX_END_NAMESPACE_CXX11
+ 
+   /// Class for @c char memory buffers.
+   typedef basic_stringbuf<char> 	stringbuf;
+ 
+   /// Class for @c char input memory streams.
+   typedef basic_istringstream<char> 	istringstream;
+ 
+   /// Class for @c char output memory streams.
+   typedef basic_ostringstream<char> 	ostringstream;
+ 
+   /// Class for @c char mixed input and output memory streams.
+   typedef basic_stringstream<char> 	stringstream;
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   /// Class for @c wchar_t memory buffers.
+   typedef basic_stringbuf<wchar_t> 	wstringbuf;
+ 
+   /// Class for @c wchar_t input memory streams.
+   typedef basic_istringstream<wchar_t> 	wistringstream;
+ 
+   /// Class for @c wchar_t output memory streams.
+   typedef basic_ostringstream<wchar_t> 	wostringstream;
+ 
+   /// Class for @c wchar_t mixed input and output memory streams.
+   typedef basic_stringstream<wchar_t> 	wstringstream;
+ #endif
+   /// @}
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ 
+ #endif /* _GLIBCXX_IOSFWD_STRING_H */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_sync.h gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_sync.h
*** gcc-17-20260524/libstdc++-v3/include/bits/iosfwd_sync.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/include/bits/iosfwd_sync.h	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,72 ----
+ // <iosfwd> Forward declarations for <syncstream> -*- C++ -*-
+ 
+ // Copyright (C) 2022-2026 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library 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.
+ 
+ // This library 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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/bits/iosfwd_sync.h
+  *  This is an internal header file, included by other library headers.
+  *  Do not attempt to use it directly. @headername{iosfwd}
+  */
+ 
+ #ifndef _GLIBCXX_IOSFWD_SYNC_H
+ #define _GLIBCXX_IOSFWD_SYNC_H 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <bits/requires_hosted.h> // iostreams
+ 
+ #include <bits/version.h>
+ 
+ #ifdef __glibcxx_syncbuf // >= C++20 && CXX11_ABI
+ #include <bits/iosfwd.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   /**
+    *  @addtogroup io
+    *  @{
+   */
+ 
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	   typename _Allocator = allocator<_CharT>>
+     class basic_syncbuf;
+   template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ 	   typename _Allocator = allocator<_CharT>>
+     class basic_osyncstream;
+ 
+   using syncbuf = basic_syncbuf<char>;
+   using osyncstream = basic_osyncstream<char>;
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   using wsyncbuf = basic_syncbuf<wchar_t>;
+   using wosyncstream = basic_osyncstream<wchar_t>;
+ #endif
+   /// @}
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+ #endif // __glibcxx_syncbuf
+ #endif /* _GLIBCXX_IOSFWD_SYNC_H */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/locale_conv.h gcc-17-20260531/libstdc++-v3/include/bits/locale_conv.h
*** gcc-17-20260524/libstdc++-v3/include/bits/locale_conv.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/locale_conv.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 286,292 ****
        wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt, "wstring_convert")
        { }
  
!       /** Construct with an initial converstion state.
         *
         * @param  __pcvt The facet to use for conversions.
         * @param  __state Initial conversion state.
--- 286,292 ----
        wstring_convert(_Codecvt* __pcvt) : _M_cvt(__pcvt, "wstring_convert")
        { }
  
!       /** Construct with an initial conversion state.
         *
         * @param  __pcvt The facet to use for conversions.
         * @param  __state Initial conversion state.
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/locale_facets.h gcc-17-20260531/libstdc++-v3/include/bits/locale_facets.h
*** gcc-17-20260524/libstdc++-v3/include/bits/locale_facets.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/locale_facets.h	Sun May 31 22:32:15 2026
***************
*** 41,49 ****
  #include <cwctype>	// For wctype_t
  #include <cctype>
  #include <bits/ctype_base.h>
- #include <iosfwd>
  #include <bits/ios_base.h>  // For ios_base, ios_base::iostate
- #include <streambuf>
  #include <bits/cpp_type_traits.h>
  #include <ext/type_traits.h>
  #include <ext/numeric_traits.h>
--- 41,47 ----
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/localefwd.h gcc-17-20260531/libstdc++-v3/include/bits/localefwd.h
*** gcc-17-20260524/libstdc++-v3/include/bits/localefwd.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/localefwd.h	Sun May 31 22:32:15 2026
***************
*** 40,46 ****
  
  #include <bits/c++config.h>
  #include <bits/c++locale.h>  // Defines __c_locale, config-specific include
! #include <iosfwd>            // For ostreambuf_iterator, istreambuf_iterator
  #include <cctype>
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 40,46 ----
  
  #include <bits/c++config.h>
  #include <bits/c++locale.h>  // Defines __c_locale, config-specific include
! #include <bits/iosfwd.h>     // For ostreambuf_iterator, istreambuf_iterator
  #include <cctype>
  
  namespace std _GLIBCXX_VISIBILITY(default)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/mofunc_impl.h gcc-17-20260531/libstdc++-v3/include/bits/mofunc_impl.h
*** gcc-17-20260524/libstdc++-v3/include/bits/mofunc_impl.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/mofunc_impl.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 162,168 ****
        move_only_function&
        operator=(move_only_function&& __x) noexcept
        {
! 	// Standard requires support of self assigment, by specifying it as
  	// copy and swap.
  	if (this != std::addressof(__x)) [[likely]]
  	  {
--- 162,168 ----
        move_only_function&
        operator=(move_only_function&& __x) noexcept
        {
! 	// Standard requires support of self assignment, by specifying it as
  	// copy and swap.
  	if (this != std::addressof(__x)) [[likely]]
  	  {
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/new_allocator.h gcc-17-20260531/libstdc++-v3/include/bits/new_allocator.h
*** gcc-17-20260524/libstdc++-v3/include/bits/new_allocator.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/new_allocator.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 177,182 ****
--- 177,183 ----
        [[nodiscard]] constexpr std::allocation_result<_Tp*, size_t>
        allocate_at_least(size_t __n)
        {
+ #if __cpp_aligned_new
  	if ! consteval
  	  {
  	    if constexpr (requires { sizeof(_Tp); })
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 184,202 ****
  	    if constexpr ( sizeof(_Tp) <  __STDCPP_DEFAULT_NEW_ALIGNMENT__)
  	      {
  		_S_check_allocation_limit(__n);
! 		const size_t __need = __n * sizeof(_Tp);
  		const size_t __mask = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
! 		size_t __ask = (__need + __mask) & ~__mask;
! 		// Avoid rounding up to and asking for 2^63 bytes (PR108377):
! 		__ask -= __ask >> (__SIZE_WIDTH__ - 1);
! 		auto* __p = static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__ask));
! 		using _U8 = const unsigned char;
! 		static_assert(sizeof(_Tp) <= ~_U8());
! 		// Use 8-bit division for minimal latency:
! 		_U8 __spare = __ask - __need, __size = sizeof(_Tp);
! 		return { __p , __n + __spare / __size };
  	      }
  	  }
  	return { allocate(__n), __n };
        }
  #endif
--- 185,212 ----
  	    if constexpr ( sizeof(_Tp) <  __STDCPP_DEFAULT_NEW_ALIGNMENT__)
  	      {
  		_S_check_allocation_limit(__n);
! 		size_t __bytes = __n * sizeof(_Tp);
  		const size_t __mask = __STDCPP_DEFAULT_NEW_ALIGNMENT__ - 1;
! 		size_t __max = (__bytes + __mask) & ~__mask;
! 		// Avoid seeming to ask for 2^63 bytes (PR108377):
! 		__max -= __max >> (__SIZE_WIDTH__ - 1);
! 		auto __spare = static_cast<unsigned>(__max - __bytes);
! 		if constexpr (sizeof(_Tp) < (__mask + 1) / 2)
! 		  {
! 		    auto __bonus = __spare / sizeof(_Tp);
! 		    __n += __bonus;
! 		    __bytes += __bonus * sizeof(_Tp);
! 		  }
! 		else if (sizeof(_Tp) <= __spare)
! 		  {
! 		    __n += 1;
! 		    __bytes += sizeof(_Tp);
! 		  }
! 		void* __p = _GLIBCXX_OPERATOR_NEW(__bytes);
! 		return { static_cast<_Tp*>(__p), __n };
  	      }
  	  }
+ #endif
  	return { allocate(__n), __n };
        }
  #endif
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/ostream.h gcc-17-20260531/libstdc++-v3/include/bits/ostream.h
*** gcc-17-20260524/libstdc++-v3/include/bits/ostream.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/ostream.h	Sun May 31 22:32:15 2026
***************
*** 40,46 ****
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <ios>
  #include <bits/ostream_insert.h>
  
  # define __glibcxx_want_print
--- 40,51 ----
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <bits/iosfwd.h>	// For declarations of default template args.
! #include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
! #include <bits/localefwd.h>	// For class locale
! #include <bits/ios_base.h>	// For ios_base declarations.
! #include <streambuf>
! #include <bits/basic_ios.h>
  #include <bits/ostream_insert.h>
  
  # define __glibcxx_want_print
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/ostream_insert.h gcc-17-20260531/libstdc++-v3/include/bits/ostream_insert.h
*** gcc-17-20260524/libstdc++-v3/include/bits/ostream_insert.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/ostream_insert.h	Sun May 31 22:32:15 2026
***************
*** 34,40 ****
  #pragma GCC system_header
  #endif
  
! #include <iosfwd>
  #include <bits/cxxabi_forced.h>
  #include <bits/exception_defines.h>
  
--- 34,40 ----
  #pragma GCC system_header
  #endif
  
! #include <bits/iosfwd.h>
  #include <bits/cxxabi_forced.h>
  #include <bits/exception_defines.h>
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/random.h gcc-17-20260531/libstdc++-v3/include/bits/random.h
*** gcc-17-20260524/libstdc++-v3/include/bits/random.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/random.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 6474,6479 ****
--- 6474,6484 ----
  	std::vector<_RealType> _M_int;
  	std::vector<double> _M_den;
  	std::vector<double> _M_cp;
+ 
+ 	template<typename _RealType1, typename _CharT, typename _Traits>
+ 	  friend std::basic_ostream<_CharT, _Traits>&
+ 	  operator<<(std::basic_ostream<_CharT, _Traits>&,
+ 		     const std::piecewise_constant_distribution<_RealType1>&);
        };
  
        piecewise_constant_distribution()
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 6758,6763 ****
--- 6763,6773 ----
  	std::vector<double> _M_den;
  	std::vector<double> _M_cp;
  	std::vector<double> _M_m;
+ 
+ 	template<typename _RealType1, typename _CharT, typename _Traits>
+ 	  friend std::basic_ostream<_CharT, _Traits>&
+ 	  operator<<(std::basic_ostream<_CharT, _Traits>&,
+ 		     const std::piecewise_linear_distribution<_RealType1>&);
        };
  
        piecewise_linear_distribution()
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/random.tcc gcc-17-20260531/libstdc++-v3/include/bits/random.tcc
*** gcc-17-20260524/libstdc++-v3/include/bits/random.tcc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/random.tcc	Sun May 31 22:32:15 2026
*************** namespace __detail
*** 3173,3187 ****
        __os.fill(__space);
        __os.precision(std::numeric_limits<_RealType>::max_digits10);
  
!       std::vector<_RealType> __int = __x.intervals();
!       __os << __int.size() - 1;
! 
!       for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
! 	__os << __space << *__xit;
! 
!       std::vector<double> __den = __x.densities();
!       for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
! 	__os << __space << *__dit;
  
        __os.flags(__flags);
        __os.fill(__fill);
--- 3173,3191 ----
        __os.fill(__space);
        __os.precision(std::numeric_limits<_RealType>::max_digits10);
  
!       const auto& __int = __x._M_param._M_int;
!       if (__int.empty())
! 	__os << size_t(1)
! 	     << __space << _RealType(0) << __space << _RealType(1)
! 	     << __space << _RealType(1);
!       else
! 	{
! 	  __os << __int.size() - 1;
! 	  for (auto __xv : __int)
! 	    __os << __space << __xv;
! 	  for (auto __dv : __x._M_param._M_den)
! 	    __os << __space << __dv;
! 	}
  
        __os.flags(__flags);
        __os.fill(__fill);
*************** namespace __detail
*** 3436,3450 ****
        __os.fill(__space);
        __os.precision(std::numeric_limits<_RealType>::max_digits10);
  
!       std::vector<_RealType> __int = __x.intervals();
!       __os << __int.size() - 1;
! 
!       for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit)
! 	__os << __space << *__xit;
! 
!       std::vector<double> __den = __x.densities();
!       for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit)
! 	__os << __space << *__dit;
  
        __os.flags(__flags);
        __os.fill(__fill);
--- 3440,3458 ----
        __os.fill(__space);
        __os.precision(std::numeric_limits<_RealType>::max_digits10);
  
!       auto const& __int = __x._M_param._M_int;
!       if (__int.empty())
! 	__os << size_t(1)
! 	     << __space << _RealType(0) << __space << _RealType(1)
! 	     << __space << _RealType(1) << __space << _RealType(1);
!       else
! 	{
! 	  __os << __int.size() - 1;
! 	  for (auto __xv : __int)
! 	    __os << __space << __xv;
! 	  for (auto __dv : __x._M_param._M_den)
! 	    __os << __space << __dv;
! 	}
  
        __os.flags(__flags);
        __os.fill(__fill);
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/range_access.h gcc-17-20260531/libstdc++-v3/include/bits/range_access.h
*** gcc-17-20260524/libstdc++-v3/include/bits/range_access.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/range_access.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 119,130 ****
--- 119,132 ----
  
  #if __cplusplus >= 201402L
  
+ #if __glibcxx_valarray < 202511L
    template<typename _Tp> class valarray;
    // These overloads must be declared for cbegin and cend to use them.
    template<typename _Tp> _Tp* begin(valarray<_Tp>&) noexcept;
    template<typename _Tp> const _Tp* begin(const valarray<_Tp>&) noexcept;
    template<typename _Tp> _Tp* end(valarray<_Tp>&) noexcept;
    template<typename _Tp> const _Tp* end(const valarray<_Tp>&) noexcept;
+ #endif
  
    /**
     *  @brief  Return an iterator pointing to the first element of
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 328,333 ****
--- 330,336 ----
      empty(const _Tp (&)[_Nm]) noexcept
      { return false; }
  
+ #if __glibcxx_initializer_list < 202511L
    /**
     *  @brief  Return whether an initializer_list is empty.
     *  @param  __il  Initializer list.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 338,343 ****
--- 341,347 ----
      constexpr bool
      empty(initializer_list<_Tp> __il) noexcept
      { return __il.size() == 0;}
+ #endif
  
    /**
     *  @brief  Return the data pointer of a container.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 374,379 ****
--- 378,384 ----
      data(_Tp (&__array)[_Nm]) noexcept
      { return __array; }
  
+ #if __glibcxx_initializer_list < 202511L
    /**
     *  @brief  Return the data pointer of an initializer list.
     *  @param  __il  Initializer list.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 384,389 ****
--- 389,395 ----
      constexpr const _Tp*
      data(initializer_list<_Tp> __il) noexcept
      { return __il.begin(); }
+ #endif
  #endif // __glibcxx_nonmember_container_access
  
  #ifdef __glibcxx_ssize // C++ >= 20
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/ranges_base.h gcc-17-20260531/libstdc++-v3/include/bits/ranges_base.h
*** gcc-17-20260524/libstdc++-v3/include/bits/ranges_base.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/ranges_base.h	Sun May 31 22:32:15 2026
*************** namespace ranges
*** 558,563 ****
--- 558,583 ----
    template<sized_range _Range>
      using range_size_t = decltype(ranges::size(std::declval<_Range&>()));
  
+ #if __cplusplus > 202302L
+   template<typename _Tp>
+     concept __static_sized_range = sized_range<_Tp> && requires (_Tp& __t)
+       { static_cast<char(*)[size_t(ranges::size(__t) >= 0)]>(nullptr); };
+ 
+   template<__static_sized_range _Range>
+     consteval range_size_t<_Range>
+     __static_size()
+     {
+       auto __conjure = [](_Range& __r)
+       {
+ 	if constexpr (ranges::size(__r) <= size_t(-1))
+ 	  return integral_constant<size_t, size_t(ranges::size(__r))>{};
+ 	else
+ 	  return integral_constant<range_size_t<_Range>, ranges::size(__r)>{};
+       };
+       return range_size_t<_Range>(decltype(__conjure(std::declval<_Range&>()))::value);
+     }
+ #endif // C++26
+ 
    template<typename _Derived>
      requires is_class_v<_Derived> && same_as<_Derived, remove_cv_t<_Derived>>
      class view_interface; // defined in <bits/ranges_util.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/shared_ptr.h gcc-17-20260531/libstdc++-v3/include/bits/shared_ptr.h
*** gcc-17-20260524/libstdc++-v3/include/bits/shared_ptr.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/shared_ptr.h	Sun May 31 22:32:15 2026
***************
*** 49,55 ****
  #ifndef _SHARED_PTR_H
  #define _SHARED_PTR_H 1
  
! #include <iosfwd>           	  // std::basic_ostream
  #include <bits/shared_ptr_base.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 49,55 ----
  #ifndef _SHARED_PTR_H
  #define _SHARED_PTR_H 1
  
! #include <bits/iosfwd.h>           	  // std::basic_ostream
  #include <bits/shared_ptr_base.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/shared_ptr_base.h gcc-17-20260531/libstdc++-v3/include/bits/shared_ptr_base.h
*** gcc-17-20260524/libstdc++-v3/include/bits/shared_ptr_base.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/shared_ptr_base.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 891,897 ****
        static constexpr size_t
        _S_tail()
        {
! 	// The array elemenent type.
  	using _Tp = typename allocator_traits<_Alloc>::value_type;
  
  	// The space needed to store a _Sp_counted_array object.
--- 891,897 ----
        static constexpr size_t
        _S_tail()
        {
! 	// The array element type.
  	using _Tp = typename allocator_traits<_Alloc>::value_type;
  
  	// The space needed to store a _Sp_counted_array object.
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/simd_details.h gcc-17-20260531/libstdc++-v3/include/bits/simd_details.h
*** gcc-17-20260524/libstdc++-v3/include/bits/simd_details.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/simd_details.h	Sun May 31 22:32:15 2026
*************** namespace simd
*** 284,290 ****
     *
     * @tparam _Np    The number of elements.
     * @tparam _Nreg  The number of registers needed to store @p _Np elements.
!    * @tparam _Var   Determines how complex value-types are layed out and whether mask types use
     *                bit-masks or vector-masks.
     */
    template <int _Np, int _Nreg, underlying_type_t<_AbiVariant> _Var>
--- 284,290 ----
     *
     * @tparam _Np    The number of elements.
     * @tparam _Nreg  The number of registers needed to store @p _Np elements.
!    * @tparam _Var   Determines how complex value-types are laid out and whether mask types use
     *                bit-masks or vector-masks.
     */
    template <int _Np, int _Nreg, underlying_type_t<_AbiVariant> _Var>
*************** namespace simd
*** 919,925 ****
     * On IvyBridge, (vec<float> == 0.f) == (rebind_t<int, vec<float>> == 0) does not compile. It does
     * compile on basically every other target, though. This is due to the difference in ABI tag:
     * _Abi<8, 1, [...]> vs. _Abi<8, 2, [...]> (8 elements, 1 vs. 2 registers).
!    * I know how to define this funtion for libstdc++ to avoid interconvertible masks. The question
     * is whether we can specify this in general for C++29.
     *
     * Idea: Is rebind_t<integer-from<...>, mask>::abi_type the same type as
--- 919,925 ----
     * On IvyBridge, (vec<float> == 0.f) == (rebind_t<int, vec<float>> == 0) does not compile. It does
     * compile on basically every other target, though. This is due to the difference in ABI tag:
     * _Abi<8, 1, [...]> vs. _Abi<8, 2, [...]> (8 elements, 1 vs. 2 registers).
!    * I know how to define this function for libstdc++ to avoid interconvertible masks. The question
     * is whether we can specify this in general for C++29.
     *
     * Idea: Is rebind_t<integer-from<...>, mask>::abi_type the same type as
*************** namespace simd
*** 986,1003 ****
      using mask = basic_mask<sizeof(_Tp), __deduce_abi_t<_Tp, _Np>>;
  
    // [simd.ctor] load constructor constraints
-   template <typename _Tp, size_t _Np = -1uz>
-     concept __static_sized_range
-       = ranges::sized_range<_Tp> && requires(_Tp&& __r) {
- 	typename integral_constant<size_t, ranges::size(__r)>;
- 	requires (_Np == -1uz || ranges::size(__r) == _Np);
-       };
- 
    template <typename _Rg>
      consteval size_t
      __static_range_size(_Rg& __r)
      {
!       if constexpr (requires { typename integral_constant<size_t, ranges::size(__r)>; })
  	return ranges::size(__r);
        else
  	return dynamic_extent;
--- 986,996 ----
      using mask = basic_mask<sizeof(_Tp), __deduce_abi_t<_Tp, _Np>>;
  
    // [simd.ctor] load constructor constraints
    template <typename _Rg>
      consteval size_t
      __static_range_size(_Rg& __r)
      {
!       if constexpr (ranges::__static_sized_range<_Rg>)
  	return ranges::size(__r);
        else
  	return dynamic_extent;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/simd_loadstore.h gcc-17-20260531/libstdc++-v3/include/bits/simd_loadstore.h
*** gcc-17-20260524/libstdc++-v3/include/bits/simd_loadstore.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/simd_loadstore.h	Sun May 31 22:32:15 2026
*************** namespace simd
*** 75,81 ****
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
        constexpr size_t __static_size = __static_range_size(__r);
  
!       if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
  
        const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
--- 75,81 ----
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
        constexpr size_t __static_size = __static_range_size(__r);
  
!       if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
  
        const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
*************** namespace simd
*** 121,127 ****
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
        constexpr auto __static_size = __static_range_size(__r);
  
!       if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
  
        const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
--- 121,127 ----
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
        constexpr auto __static_size = __static_range_size(__r);
  
!       if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _RV::size(), "given range must have sufficient size");
  
        const auto* __ptr = __f.template _S_adjust_pointer<_RV>(ranges::data(__r));
*************** namespace simd
*** 248,254 ****
  		    "'flag_convert' must be used for conversions that are not value-preserving");
  
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
!       if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
  
        auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
--- 248,254 ----
  		    "'flag_convert' must be used for conversions that are not value-preserving");
  
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
!       if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
  
        auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
*************** namespace simd
*** 285,291 ****
  		    "'flag_convert' must be used for conversions that are not value-preserving");
  
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
!       if constexpr (!__allow_out_of_bounds && __static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
  
        auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
--- 285,291 ----
  		    "'flag_convert' must be used for conversions that are not value-preserving");
  
        constexpr bool __allow_out_of_bounds = __f._S_test(__allow_partial_loadstore);
!       if constexpr (!__allow_out_of_bounds && ranges::__static_sized_range<_Rg>)
  	static_assert(ranges::size(__r) >= _TV::size(), "given range must have sufficient size");
  
        auto* __ptr = __f.template _S_adjust_pointer<_TV>(ranges::data(__r));
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/simd_vec.h gcc-17-20260531/libstdc++-v3/include/bits/simd_vec.h
*** gcc-17-20260524/libstdc++-v3/include/bits/simd_vec.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/simd_vec.h	Sun May 31 22:32:15 2026
*************** namespace simd
*** 1207,1220 ****
  	}
  
        template <ranges::contiguous_range _Rg, typename... _Flags>
! 	requires __static_sized_range<_Rg, _S_size>
  	  && __vectorizable<ranges::range_value_t<_Rg>>
  	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
  	[[__gnu__::__always_inline__]]
  	constexpr
  	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
! 	  : basic_vec(_LoadCtorTag(), __flags.template _S_adjust_pointer<basic_vec>(
! 					ranges::data(__range)))
  	{
  	  static_assert(__loadstore_convertible_to<ranges::range_value_t<_Rg>, value_type,
  						   _Flags...>);
--- 1207,1221 ----
  	}
  
        template <ranges::contiguous_range _Rg, typename... _Flags>
! 	requires ranges::__static_sized_range<_Rg>
  	  && __vectorizable<ranges::range_value_t<_Rg>>
  	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
  	[[__gnu__::__always_inline__]]
  	constexpr
  	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
! 	requires (ranges::size(__range) == _S_size)
! 	: basic_vec(_LoadCtorTag(), __flags.template _S_adjust_pointer<basic_vec>(
! 				      ranges::data(__range)))
  	{
  	  static_assert(__loadstore_convertible_to<ranges::range_value_t<_Rg>, value_type,
  						   _Flags...>);
*************** namespace simd
*** 2072,2082 ****
  	{}
  
        template <ranges::contiguous_range _Rg, typename... _Flags>
! 	requires __static_sized_range<_Rg, _S_size>
  	  && __vectorizable<ranges::range_value_t<_Rg>>
  	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
  	constexpr
  	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
  	: basic_vec(_LoadCtorTag(),
  		    __flags.template _S_adjust_pointer<basic_vec>(ranges::data(__range)))
  	{
--- 2073,2084 ----
  	{}
  
        template <ranges::contiguous_range _Rg, typename... _Flags>
! 	requires ranges::__static_sized_range<_Rg>
  	  && __vectorizable<ranges::range_value_t<_Rg>>
  	  && __explicitly_convertible_to<ranges::range_value_t<_Rg>, value_type>
  	constexpr
  	basic_vec(_Rg&& __range, flags<_Flags...> __flags = {})
+ 	requires (ranges::size(__range) == _S_size)
  	: basic_vec(_LoadCtorTag(),
  		    __flags.template _S_adjust_pointer<basic_vec>(ranges::data(__range)))
  	{
*************** namespace simd
*** 2245,2251 ****
  
    // [simd.overview] deduction guide ------------------------------------------
    template <ranges::contiguous_range _Rg, typename... _Ts>
!     requires __static_sized_range<_Rg>
      basic_vec(_Rg&& __r, _Ts...)
      -> basic_vec<ranges::range_value_t<_Rg>,
  		 __deduce_abi_t<ranges::range_value_t<_Rg>,
--- 2247,2253 ----
  
    // [simd.overview] deduction guide ------------------------------------------
    template <ranges::contiguous_range _Rg, typename... _Ts>
!     requires ranges::__static_sized_range<_Rg>
      basic_vec(_Rg&& __r, _Ts...)
      -> basic_vec<ranges::range_value_t<_Rg>,
  		 __deduce_abi_t<ranges::range_value_t<_Rg>,
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/std_thread.h gcc-17-20260531/libstdc++-v3/include/bits/std_thread.h
*** gcc-17-20260524/libstdc++-v3/include/bits/std_thread.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/std_thread.h	Sun May 31 22:32:15 2026
***************
*** 37,43 ****
  #if __cplusplus >= 201103L
  #include <bits/c++config.h>
  
! #include <iosfwd>		// std::basic_ostream
  #include <tuple>		// std::tuple
  #include <bits/functional_hash.h> // std::hash
  #include <bits/invoke.h>	// std::__invoke
--- 37,43 ----
  #if __cplusplus >= 201103L
  #include <bits/c++config.h>
  
! #include <bits/iosfwd.h>	// std::basic_ostream
  #include <tuple>		// std::tuple
  #include <bits/functional_hash.h> // std::hash
  #include <bits/invoke.h>	// std::__invoke
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_algo.h gcc-17-20260531/libstdc++-v3/include/bits/stl_algo.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_algo.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_algo.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 479,487 ****
     *  @param  __first  An input iterator.
     *  @param  __last   An input iterator.
     *  @param  __pred   A predicate.
!    *  @return  True if the range @p [__first,__last) is partioned by @p __pred,
!    *  i.e. if all elements that satisfy @p __pred appear before those that
!    *  do not.
    */
    template<typename _InputIterator, typename _Predicate>
      _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
--- 479,487 ----
     *  @param  __first  An input iterator.
     *  @param  __last   An input iterator.
     *  @param  __pred   A predicate.
!    *  @return  True if the range @p [__first,__last) is partitioned by @p
!    *  __pred, i.e. if all elements that satisfy @p __pred appear before those
!    *  that do not.
    */
    template<typename _InputIterator, typename _Predicate>
      _GLIBCXX_NODISCARD _GLIBCXX20_CONSTEXPR
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3542,3548 ****
  #pragma GCC diagnostic pop
  
    /**
!    *  @brief  Checks whether a permutaion of the second sequence is equal
     *          to the first sequence.
     *  @ingroup non_mutating_algorithms
     *  @param  __first1  Start of first range.
--- 3542,3548 ----
  #pragma GCC diagnostic pop
  
    /**
!    *  @brief  Checks whether a permutation of the second sequence is equal
     *          to the first sequence.
     *  @ingroup non_mutating_algorithms
     *  @param  __first1  Start of first range.
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_deque.h gcc-17-20260531/libstdc++-v3/include/bits/stl_deque.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_deque.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_deque.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1837,1843 ****
  	insert_range(const_iterator __pos, _Rg&& __rg);
  
        /**
!        * @brief Prepend a range at the begining of the deque.
         * @param __rg A range of values that are convertible to `value_type`.
         * @since C++23
         */
--- 1837,1843 ----
  	insert_range(const_iterator __pos, _Rg&& __rg);
  
        /**
!        * @brief Prepend a range at the beginning of the deque.
         * @param __rg A range of values that are convertible to `value_type`.
         * @since C++23
         */
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2414,2420 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
      deque(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> deque<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
--- 2414,2420 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
      deque(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> deque<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_iterator.h gcc-17-20260531/libstdc++-v3/include/bits/stl_iterator.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_iterator.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_iterator.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1744,1750 ****
      inline _GLIBCXX17_CONSTEXPR bool
      operator==(const move_iterator<_Iterator>& __x,
  	       const move_iterator<_Iterator>& __y)
!     // N.B. No contraints, x.base() == y.base() is always well-formed.
      { return __x.base() == __y.base(); }
  
  #ifdef __cpp_lib_three_way_comparison
--- 1744,1750 ----
      inline _GLIBCXX17_CONSTEXPR bool
      operator==(const move_iterator<_Iterator>& __x,
  	       const move_iterator<_Iterator>& __y)
!     // N.B. No constraints, x.base() == y.base() is always well-formed.
      { return __x.base() == __y.base(); }
  
  #ifdef __cpp_lib_three_way_comparison
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_map.h gcc-17-20260531/libstdc++-v3/include/bits/stl_map.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_map.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_map.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 262,268 ****
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
  
!       /// Allocator-extended initialier-list constructor.
        map(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Pair_alloc_type(__a))
        { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
--- 262,268 ----
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
  
!       /// Allocator-extended initializer-list constructor.
        map(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Pair_alloc_type(__a))
        { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_multimap.h gcc-17-20260531/libstdc++-v3/include/bits/stl_multimap.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_multimap.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_multimap.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 253,259 ****
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
  
!       /// Allocator-extended initialier-list constructor.
        multimap(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Pair_alloc_type(__a))
        { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
--- 253,259 ----
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { }
  
!       /// Allocator-extended initializer-list constructor.
        multimap(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Pair_alloc_type(__a))
        { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_multiset.h gcc-17-20260531/libstdc++-v3/include/bits/stl_multiset.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_multiset.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_multiset.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 263,269 ****
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { }
  
!       /// Allocator-extended initialier-list constructor.
        multiset(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Key_alloc_type(__a))
        { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
--- 263,269 ----
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { }
  
!       /// Allocator-extended initializer-list constructor.
        multiset(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Key_alloc_type(__a))
        { _M_t._M_insert_range_equal(__l.begin(), __l.end()); }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_set.h gcc-17-20260531/libstdc++-v3/include/bits/stl_set.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_set.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_set.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 267,273 ****
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { }
  
!       /// Allocator-extended initialier-list constructor.
        set(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Key_alloc_type(__a))
        { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
--- 267,273 ----
  	       && _Alloc_traits::_S_always_equal())
        : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { }
  
!       /// Allocator-extended initializer-list constructor.
        set(initializer_list<value_type> __l, const allocator_type& __a)
        : _M_t(_Key_alloc_type(__a))
        { _M_t._M_insert_range_unique(__l.begin(), __l.end()); }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stl_vector.h gcc-17-20260531/libstdc++-v3/include/bits/stl_vector.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stl_vector.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stl_vector.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2383,2389 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
      vector(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> vector<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
--- 2383,2389 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
      vector(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> vector<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/stream_iterator.h gcc-17-20260531/libstdc++-v3/include/bits/stream_iterator.h
*** gcc-17-20260524/libstdc++-v3/include/bits/stream_iterator.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/stream_iterator.h	Sun May 31 22:32:15 2026
***************
*** 34,40 ****
  #pragma GCC system_header
  #endif
  
! #include <iosfwd>
  #include <bits/move.h>
  #include <bits/stl_iterator_base_types.h>
  #include <debug/debug.h>
--- 34,40 ----
  #pragma GCC system_header
  #endif
  
! #include <bits/iosfwd.h>
  #include <bits/move.h>
  #include <bits/stl_iterator_base_types.h>
  #include <debug/debug.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/unicode.h gcc-17-20260531/libstdc++-v3/include/bits/unicode.h
*** gcc-17-20260524/libstdc++-v3/include/bits/unicode.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/unicode.h	Sun May 31 22:32:15 2026
*************** namespace __unicode
*** 97,103 ****
    // read outside those bounds (incrementing or decrementing at the boundary
    // is erroneously idempotent).
    //
!   // On construction, the iterator attemps to decode a single code point from
    // the input range and then encode it into an internal buffer in the output
    // format, e.g. if the input is UTF-8 and the output is UTF-16, it might read
    // three char8_t code units from the input and store two char16_t code units
--- 97,103 ----
    // read outside those bounds (incrementing or decrementing at the boundary
    // is erroneously idempotent).
    //
!   // On construction, the iterator attempts to decode a single code point from
    // the input range and then encode it into an internal buffer in the output
    // format, e.g. if the input is UTF-8 and the output is UTF-16, it might read
    // three char8_t code units from the input and store two char16_t code units
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/unique_ptr.h gcc-17-20260531/libstdc++-v3/include/bits/unique_ptr.h
*** gcc-17-20260524/libstdc++-v3/include/bits/unique_ptr.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/unique_ptr.h	Sun May 31 22:32:15 2026
*************** namespace __detail
*** 1129,1135 ****
      make_unique(_Args&&...) = delete;
  
  #if __cplusplus > 201703L
!   /** Create a default-initialied object owned by a `unique_ptr`.
     *  @tparam _Tp A non-array object type.
     *  @returns A `unique_ptr<_Tp>` that owns the new object.
     *  @since C++20
--- 1129,1135 ----
      make_unique(_Args&&...) = delete;
  
  #if __cplusplus > 201703L
!   /** Create a default-initialized object owned by a `unique_ptr`.
     *  @tparam _Tp A non-array object type.
     *  @returns A `unique_ptr<_Tp>` that owns the new object.
     *  @since C++20
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/version.def gcc-17-20260531/libstdc++-v3/include/bits/version.def
*** gcc-17-20260524/libstdc++-v3/include/bits/version.def	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/version.def	Sun May 31 22:32:15 2026
*************** ftms = {
*** 1898,1913 ****
  
  ftms = {
    name = flat_map;
    values = {
!     v = 202207;
      cxxmin = 23;
    };
  };
  
  ftms = {
    name = flat_set;
    values = {
!     v = 202207;
      cxxmin = 23;
    };
  };
--- 1898,1918 ----
  
  ftms = {
    name = flat_map;
+   // 202207 P0429R9 A Standard flat_map
+   // 202511 P3567R2 flat_meow Fixes
    values = {
!     v = 202511; // P3567R2 applied as DR for C++23
      cxxmin = 23;
    };
  };
  
  ftms = {
    name = flat_set;
+   // 202207 P1222R4 A Standard flat_set
+   //        LWG3751 Missing feature macro for flat_set
+   // 202511 P3567R2 flat_meow Fixes
    values = {
!     v = 202511; // P3567R2 applied as DR for C++23
      cxxmin = 23;
    };
  };
*************** ftms = {
*** 2410,2415 ****
--- 2415,2436 ----
    };
  };
  
+ ftms = {
+   name = initializer_list;
+   values = {
+     v = 202511;
+     cxxmin = 26;
+   };
+ };
+ 
+ ftms = {
+   name = valarray;
+   values = {
+     v = 202511;
+     cxxmin = 26; 
+   };
+ };
+ 
  // Standard test specifications.
  stds[97] = ">= 199711L";
  stds[03] = ">= 199711L";
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/bits/version.h gcc-17-20260531/libstdc++-v3/include/bits/version.h
*** gcc-17-20260524/libstdc++-v3/include/bits/version.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/bits/version.h	Sun May 31 22:32:17 2026
***************
*** 41,47 ****
  //
  // This will generate the FTMs you named, and let you use them in your code as
  // if it was user code.  All macros are also exposed under __glibcxx_NAME even
! // if unwanted, to permit bits and other FTMs to depend on them for condtional
  // computation without exposing extra FTMs to user code.
  
  #ifdef _GLIBCXX_SYSHDR
--- 41,47 ----
  //
  // This will generate the FTMs you named, and let you use them in your code as
  // if it was user code.  All macros are also exposed under __glibcxx_NAME even
! // if unwanted, to permit bits and other FTMs to depend on them for conditional
  // computation without exposing extra FTMs to user code.
  
  #ifdef _GLIBCXX_SYSHDR
***************
*** 2108,2116 ****
  
  #if !defined(__cpp_lib_flat_map)
  # if (__cplusplus >= 202100L)
! #  define __glibcxx_flat_map 202207L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
! #   define __cpp_lib_flat_map 202207L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_flat_map) */
--- 2108,2116 ----
  
  #if !defined(__cpp_lib_flat_map)
  # if (__cplusplus >= 202100L)
! #  define __glibcxx_flat_map 202511L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_map)
! #   define __cpp_lib_flat_map 202511L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_flat_map) */
***************
*** 2118,2126 ****
  
  #if !defined(__cpp_lib_flat_set)
  # if (__cplusplus >= 202100L)
! #  define __glibcxx_flat_set 202207L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
! #   define __cpp_lib_flat_set 202207L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_flat_set) */
--- 2118,2126 ----
  
  #if !defined(__cpp_lib_flat_set)
  # if (__cplusplus >= 202100L)
! #  define __glibcxx_flat_set 202511L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_flat_set)
! #   define __cpp_lib_flat_set 202511L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_flat_set) */
***************
*** 2675,2678 ****
--- 2675,2698 ----
  #endif /* !defined(__cpp_lib_is_structural) */
  #undef __glibcxx_want_is_structural
  
+ #if !defined(__cpp_lib_initializer_list)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_initializer_list 202511L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_initializer_list)
+ #   define __cpp_lib_initializer_list 202511L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_initializer_list) */
+ #undef __glibcxx_want_initializer_list
+ 
+ #if !defined(__cpp_lib_valarray)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_valarray 202511L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_valarray)
+ #   define __cpp_lib_valarray 202511L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_valarray) */
+ #undef __glibcxx_want_valarray
+ 
  #undef __glibcxx_want_all
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/c_compatibility/stdatomic.h gcc-17-20260531/libstdc++-v3/include/c_compatibility/stdatomic.h
*** gcc-17-20260524/libstdc++-v3/include/c_compatibility/stdatomic.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/c_compatibility/stdatomic.h	Sun May 31 22:32:15 2026
***************
*** 39,45 ****
--- 39,48 ----
  
  using std::memory_order;
  using std::memory_order_relaxed;
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  using std::memory_order_consume;
+ #pragma GCC diagnostic pop
  using std::memory_order_acquire;
  using std::memory_order_release;
  using std::memory_order_acq_rel;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/debug/deque gcc-17-20260531/libstdc++-v3/include/debug/deque
*** gcc-17-20260524/libstdc++-v3/include/debug/deque	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/debug/deque	Sun May 31 22:32:15 2026
*************** namespace __debug
*** 715,721 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
      deque(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> deque<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
--- 715,721 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
      deque(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> deque<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/debug/vector gcc-17-20260531/libstdc++-v3/include/debug/vector
*** gcc-17-20260524/libstdc++-v3/include/debug/vector	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/debug/vector	Sun May 31 22:32:15 2026
*************** namespace __debug
*** 1001,1007 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   typename _Alloc = allocator<ranges::range_value_t<_Rg>>>
      vector(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> vector<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
--- 1001,1007 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::input_range _Rg,
! 	   __allocator_like _Alloc = allocator<ranges::range_value_t<_Rg>>>
      vector(from_range_t, _Rg&&, _Alloc = _Alloc())
        -> vector<ranges::range_value_t<_Rg>, _Alloc>;
  #endif
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd.h gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd.h
*** gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd.h	Sun May 31 22:32:15 2026
*************** template <>
*** 1516,1522 ****
  template <typename _Tp, size_t _Np, typename = void>
    struct __vector_type_n {};
  
! // substition failure for 0-element case
  template <typename _Tp>
    struct __vector_type_n<_Tp, 0, void> {};
  
--- 1516,1522 ----
  template <typename _Tp, size_t _Np, typename = void>
    struct __vector_type_n {};
  
! // substitution failure for 0-element case
  template <typename _Tp>
    struct __vector_type_n<_Tp, 0, void> {};
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd_fixed_size.h gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd_fixed_size.h
*** gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd_fixed_size.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd_fixed_size.h	Sun May 31 22:32:15 2026
*************** template <typename _Tp, size_t _Np,
*** 734,740 ****
  		    __to_simd_tuple<_Tp, _Np - _R::_S_first_size, 0>(
  		      __fromX...)};
  
! 	// ill-formed if some unforseen pattern is needed
  	else
  	  __assert_unreachable<_Tp>();
        }
--- 734,740 ----
  		    __to_simd_tuple<_Tp, _Np - _R::_S_first_size, 0>(
  		      __fromX...)};
  
! 	// ill-formed if some unforeseen pattern is needed
  	else
  	  __assert_unreachable<_Tp>();
        }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
*** gcc-17-20260524/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/experimental/bits/simd_x86_conversions.h	Sun May 31 22:32:15 2026
*************** template <typename _To, typename _V, typ
*** 1301,1307 ****
  		// split low 32-bits, because if __hi32 is a small negative
  		// number, the 24-bit mantissa may lose important information if
  		// any of the high 8 bits of __lo32 is set, leading to
! 		// catastrophic cancelation in the FMA
  		const __m512 __hi16
  		  = _mm512_cvtepu32_ps(_mm512_set1_epi32(0xffff0000u) & __lo32);
  		const __m512 __lo16
--- 1301,1307 ----
  		// split low 32-bits, because if __hi32 is a small negative
  		// number, the 24-bit mantissa may lose important information if
  		// any of the high 8 bits of __lo32 is set, leading to
! 		// catastrophic cancellation in the FMA
  		const __m512 __hi16
  		  = _mm512_cvtepu32_ps(_mm512_set1_epi32(0xffff0000u) & __lo32);
  		const __m512 __lo16
*************** template <typename _To, typename _V, typ
*** 1347,1353 ****
  	else if constexpr (__f64_to_ibw) //{{{2
  	  {
  	    // one-arg __f64_to_ibw goes via _SimdWrapper<int, ?>. The fallback
! 	    // would go via two independet conversions to _SimdWrapper<_To> and
  	    // subsequent interleaving. This is better, because f64->__i32
  	    // allows to combine __v0 and __v1 into one register: if constexpr
  	    // (__z_to_x || __y_to_x) {
--- 1347,1353 ----
  	else if constexpr (__f64_to_ibw) //{{{2
  	  {
  	    // one-arg __f64_to_ibw goes via _SimdWrapper<int, ?>. The fallback
! 	    // would go via two independent conversions to _SimdWrapper<_To> and
  	    // subsequent interleaving. This is better, because f64->__i32
  	    // allows to combine __v0 and __v1 into one register: if constexpr
  	    // (__z_to_x || __y_to_x) {
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/concurrence.h gcc-17-20260531/libstdc++-v3/include/ext/concurrence.h
*** gcc-17-20260524/libstdc++-v3/include/ext/concurrence.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/concurrence.h	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 53,59 ****
    // _S_atomic    multi-threaded code using atomic operations.
    enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
  
!   // Compile time constant that indicates prefered locking policy in
    // the current configuration.
    _GLIBCXX17_INLINE const _Lock_policy __default_lock_policy =
  #ifndef __GTHREADS
--- 53,59 ----
    // _S_atomic    multi-threaded code using atomic operations.
    enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
  
!   // Compile time constant that indicates preferred locking policy in
    // the current configuration.
    _GLIBCXX17_INLINE const _Lock_policy __default_lock_policy =
  #ifndef __GTHREADS
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp	Sun May 31 22:32:15 2026
*************** namespace detail
*** 253,259 ****
        typedef ov_tree_set<Key, null_type, at0t, at1t, _Alloc> type;
    };
  
!     /// Specialization colision-chaining hash map.
    template<typename Key, typename Mapped, typename _Alloc, typename Policy_Tl>
      struct container_base_dispatch<Key, Mapped, _Alloc, cc_hash_tag, Policy_Tl>
      {
--- 253,259 ----
        typedef ov_tree_set<Key, null_type, at0t, at1t, _Alloc> type;
    };
  
!     /// Specialization collision-chaining hash map.
    template<typename Key, typename Mapped, typename _Alloc, typename Policy_Tl>
      struct container_base_dispatch<Key, Mapped, _Alloc, cc_hash_tag, Policy_Tl>
      {
*************** namespace detail
*** 275,281 ****
  			at3t::value, at4t, at2t> 	       	type;
    };
  
!     /// Specialization colision-chaining hash set.
    template<typename Key, typename _Alloc, typename Policy_Tl>
      struct container_base_dispatch<Key, null_type, _Alloc, cc_hash_tag,
  				   Policy_Tl>
--- 275,281 ----
  			at3t::value, at4t, at2t> 	       	type;
    };
  
!     /// Specialization collision-chaining hash set.
    template<typename Key, typename _Alloc, typename Policy_Tl>
      struct container_base_dispatch<Key, null_type, _Alloc, cc_hash_tag,
  				   Policy_Tl>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp	Sun May 31 22:32:15 2026
*************** namespace __gnu_pbds
*** 67,73 ****
      /// Decides whether a metadata object should be moved to the front
      /// of the list. A list-update based containers object will call
      /// this method to decide whether to move a node to the front of
!     /// the list. The method shoule return true if the node should be
      /// moved to the front of the list.
      bool
      operator()(metadata_reference) const;
--- 67,73 ----
      /// Decides whether a metadata object should be moved to the front
      /// of the list. A list-update based containers object will call
      /// this method to decide whether to move a node to the front of
!     /// the list. The method should return true if the node should be
      /// moved to the front of the list.
      bool
      operator()(metadata_reference) const;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp	Sun May 31 22:32:15 2026
***************
*** 35,41 ****
  
  /**
   * @file tree_policy/sample_tree_node_update.hpp
!  * Contains a samle node update functor.
   */
  
  #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
--- 35,41 ----
  
  /**
   * @file tree_policy/sample_tree_node_update.hpp
!  * Contains a sample node update functor.
   */
  
  #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp	Sun May 31 22:32:15 2026
***************
*** 35,41 ****
  
  /**
   * @file trie_policy/sample_trie_node_update.hpp
!  * Contains a samle node update functor.
   */
  
  #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
--- 35,41 ----
  
  /**
   * @file trie_policy/sample_trie_node_update.hpp
!  * Contains a sample node update functor.
   */
  
  #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp	Sun May 31 22:32:15 2026
*************** namespace __gnu_pbds
*** 93,99 ****
      inline iterator
      find_by_order(size_type);
  
!     /// Returns the order of a key within a sequence. For exapmle, if
      /// r_key is the smallest key, this method will return 0; if r_key
      /// is a key between the smallest and next key, this method will
      /// return 1; if r_key is a key larger than the largest key, this
--- 93,99 ----
      inline iterator
      find_by_order(size_type);
  
!     /// Returns the order of a key within a sequence. For example, if
      /// r_key is the smallest key, this method will return 0; if r_key
      /// is a key between the smallest and next key, this method will
      /// return 1; if r_key is a key larger than the largest key, this
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
*** gcc-17-20260524/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp	Sun May 31 22:32:15 2026
*************** namespace __gnu_pbds
*** 283,289 ****
      inline iterator
      find_by_order(size_type);
  
!     /// Returns the order of a key within a sequence. For exapmle, if
      /// r_key is the smallest key, this method will return 0; if r_key
      /// is a key between the smallest and next key, this method will
      /// return 1; if r_key is a key larger than the largest key, this
--- 283,289 ----
      inline iterator
      find_by_order(size_type);
  
!     /// Returns the order of a key within a sequence. For example, if
      /// r_key is the smallest key, this method will return 0; if r_key
      /// is a key between the smallest and next key, this method will
      /// return 1; if r_key is a key larger than the largest key, this
*************** namespace __gnu_pbds
*** 291,297 ****
      inline size_type
      order_of_key(key_const_reference) const;
  
!     /// Returns the order of a prefix within a sequence. For exapmle,
      /// if [b, e] is the smallest prefix, this method will return 0; if
      /// r_key is a key between the smallest and next key, this method
      /// will return 1; if r_key is a key larger than the largest key,
--- 291,297 ----
      inline size_type
      order_of_key(key_const_reference) const;
  
!     /// Returns the order of a prefix within a sequence. For example,
      /// if [b, e] is the smallest prefix, this method will return 0; if
      /// r_key is a key between the smallest and next key, this method
      /// will return 1; if r_key is a key larger than the largest key,
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/parallel/multiway_merge.h gcc-17-20260531/libstdc++-v3/include/parallel/multiway_merge.h
*** gcc-17-20260524/libstdc++-v3/include/parallel/multiway_merge.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/parallel/multiway_merge.h	Sun May 31 22:32:15 2026
*************** namespace __gnu_parallel
*** 1001,1007 ****
    /**
     * @brief Stable sorting functor.
     *
!    * Used to reduce code instanciation in multiway_merge_sampling_splitting.
     */
    template<bool __stable, class _RAIter, class _StrictWeakOrdering>
      struct _SamplingSorter
--- 1001,1007 ----
    /**
     * @brief Stable sorting functor.
     *
!    * Used to reduce code instantiation in multiway_merge_sampling_splitting.
     */
    template<bool __stable, class _RAIter, class _StrictWeakOrdering>
      struct _SamplingSorter
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/pstl/parallel_backend_tbb.h gcc-17-20260531/libstdc++-v3/include/pstl/parallel_backend_tbb.h
*** gcc-17-20260524/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Sun May 31 22:32:15 2026
*************** __parallel_transform_reduce(__pstl::__in
*** 205,211 ****
                              _Up __u, _Tp __init, _Cp __combine, _Rp __brick_reduce)
  {
      __tbb_backend::__par_trans_red_body<_Index, _Up, _Tp, _Cp, _Rp> __body(__u, __init, __combine, __brick_reduce);
!     // The grain size of 3 is used in order to provide mininum 2 elements for each body
      tbb::this_task_arena::isolate(
          [__first, __last, &__body]() { tbb::parallel_reduce(tbb::blocked_range<_Index>(__first, __last, 3), __body); });
      return __body.sum();
--- 205,211 ----
                              _Up __u, _Tp __init, _Cp __combine, _Rp __brick_reduce)
  {
      __tbb_backend::__par_trans_red_body<_Index, _Up, _Tp, _Cp, _Rp> __body(__u, __init, __combine, __brick_reduce);
!     // The grain size of 3 is used in order to provide minimum 2 elements for each body
      tbb::this_task_arena::isolate(
          [__first, __last, &__body]() { tbb::parallel_reduce(tbb::blocked_range<_Index>(__first, __last, 3), __body); });
      return __body.sum();
*************** class __merge_func
*** 740,746 ****
      _SizeType _M_zs;
      _Compare _M_comp;
      _LeafMerge _M_leaf_merge;
!     _SizeType _M_nsort; //number of elements to be sorted for partial_sort alforithm
  
      static const _SizeType __merge_cut_off = _PSTL_MERGE_CUT_OFF;
  
--- 740,746 ----
      _SizeType _M_zs;
      _Compare _M_comp;
      _LeafMerge _M_leaf_merge;
!     _SizeType _M_nsort; //number of elements to be sorted for partial_sort algorithm
  
      static const _SizeType __merge_cut_off = _PSTL_MERGE_CUT_OFF;
  
*************** class __stable_sort_func
*** 1114,1120 ****
      _Compare _M_comp;
      _LeafSort _M_leaf_sort;
      bool _M_root;
!     _SizeType _M_nsort; //zero or number of elements to be sorted for partial_sort alforithm
  
    public:
      __stable_sort_func(_RandomAccessIterator1 __xs, _RandomAccessIterator1 __xe, _RandomAccessIterator2 __zs,
--- 1114,1120 ----
      _Compare _M_comp;
      _LeafSort _M_leaf_sort;
      bool _M_root;
!     _SizeType _M_nsort; //zero or number of elements to be sorted for partial_sort algorithm
  
    public:
      __stable_sort_func(_RandomAccessIterator1 __xs, _RandomAccessIterator1 __xe, _RandomAccessIterator2 __zs,
*************** __parallel_stable_sort(__pstl::__interna
*** 1179,1185 ****
          typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type _DifferenceType;
          const _DifferenceType __n = __xe - __xs;
          if (__nsort == __n)
!             __nsort = 0; // 'partial_sort' becames 'sort'
  
          const _DifferenceType __sort_cut_off = _PSTL_STABLE_SORT_CUT_OFF;
          if (__n > __sort_cut_off)
--- 1179,1185 ----
          typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type _DifferenceType;
          const _DifferenceType __n = __xe - __xs;
          if (__nsort == __n)
!             __nsort = 0; // 'partial_sort' becomes 'sort'
  
          const _DifferenceType __sort_cut_off = _PSTL_STABLE_SORT_CUT_OFF;
          if (__n > __sort_cut_off)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/flat_map gcc-17-20260531/libstdc++-v3/include/std/flat_map
*** gcc-17-20260524/libstdc++-v3/include/std/flat_map	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/flat_map	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 74,82 ****
        static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
        static_assert(is_same_v<_Tp, typename _MappedContainer::value_type>);
  
-       static_assert(is_nothrow_swappable_v<_KeyContainer>);
-       static_assert(is_nothrow_swappable_v<_MappedContainer>);
- 
        using _Derived = __conditional_t<_Multi,
  				       flat_multimap<_Key, _Tp, _Compare,
  						     _KeyContainer, _MappedContainer>,
--- 74,79 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 395,400 ****
--- 392,429 ----
  	: _Flat_map_impl(__s, __il.begin(), __il.end(), __comp, __a)
  	{ }
  
+       _Flat_map_impl(const _Flat_map_impl&) = default;
+       _Flat_map_impl& operator=(const _Flat_map_impl&) = default;
+ 
+       _GLIBCXX26_CONSTEXPR
+       _Flat_map_impl(_Flat_map_impl&& __other)
+       noexcept(is_nothrow_move_constructible_v<containers>
+ 	       && is_nothrow_move_constructible_v<key_compare>)
+ #if __cpp_exceptions
+       try
+ #endif
+       : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+       { __other.clear(); }
+ #if __cpp_exceptions
+       catch (...)
+       { __other.clear(); }
+ #endif
+ 
+       _GLIBCXX26_CONSTEXPR
+       _Flat_map_impl&
+       operator=(_Flat_map_impl&& __other)
+       noexcept(is_nothrow_move_assignable_v<containers>
+ 	       && is_nothrow_move_assignable_v<key_compare>)
+       {
+ 	auto __guard = _M_make_clear_guard();
+ 	auto __guard_other = _ClearGuard{__other._M_cont};
+ 	_M_cont = std::move(__other._M_cont);
+ 	_M_comp = std::move(__other._M_comp);
+ 	__guard._M_disable();
+ 	// __guard_other._M_disable is deliberately not called.
+ 	return *this;
+       }
+ 
        _GLIBCXX26_CONSTEXPR
        _Derived&
        operator=(initializer_list<value_type> __il)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 602,614 ****
        template<typename _Iter, typename _Sent>
  	_GLIBCXX26_CONSTEXPR
  	void
! 	_M_insert(_Iter __first, _Sent __last)
  	{
- 	  // FIXME: This implementation fails its complexity requirements.
- 	  // We can't idiomatically implement an efficient version (as in the
- 	  // disabled code) until ranges::inplace_merge is fixed to dispatch
- 	  // on iterator concept instead of iterator category.
- #if 0
  	  auto __guard = _M_make_clear_guard();
  	  auto __n = size();
  	  for (; __first != __last; ++__first)
--- 631,638 ----
        template<typename _Iter, typename _Sent>
  	_GLIBCXX26_CONSTEXPR
  	void
! 	_M_insert(_Iter __first, _Sent __last, bool __is_sorted = false)
  	{
  	  auto __guard = _M_make_clear_guard();
  	  auto __n = size();
  	  for (; __first != __last; ++__first)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 618,639 ****
  	      _M_cont.values.emplace_back(std::move(__value.second));
  	    }
  	  auto __zv = views::zip(_M_cont.keys, _M_cont.values);
! 	  ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
! 	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(), value_comp());
  	  if constexpr (!_Multi)
  	    _M_unique();
- 	  __guard._M_cont = nullptr;
- #else
- 	  auto __guard = _M_make_clear_guard();
- 	  for (; __first != __last; ++__first)
- 	    {
- 	      value_type __value = *__first;
- 	      _M_cont.keys.emplace_back(std::move(__value.first));
- 	      _M_cont.values.emplace_back(std::move(__value.second));
- 	    }
- 	  _M_sort_uniq();
  	  __guard._M_disable();
- #endif
  	}
  
      public:
--- 642,657 ----
  	      _M_cont.values.emplace_back(std::move(__value.second));
  	    }
  	  auto __zv = views::zip(_M_cont.keys, _M_cont.values);
! 	  if (__is_sorted)
! 	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__zv.begin() + __n, __zv.end(),
! 						    value_comp()));
! 	  else
! 	    ranges::sort(__zv.begin() + __n, __zv.end(), value_comp());
! 	  ranges::inplace_merge(__zv.begin(), __zv.begin() + __n, __zv.end(),
! 				value_comp());
  	  if constexpr (!_Multi)
  	    _M_unique();
  	  __guard._M_disable();
  	}
  
      public:
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 647,656 ****
  	_GLIBCXX26_CONSTEXPR
  	void
  	insert(__sorted_t, _InputIterator __first, _InputIterator __last)
! 	{
! 	  // FIXME: This implementation fails its complexity requirements; see above.
! 	  insert(std::move(__first), std::move(__last));
! 	}
  
        template<__detail::__container_compatible_range<value_type> _Rg>
  	_GLIBCXX26_CONSTEXPR
--- 665,671 ----
  	_GLIBCXX26_CONSTEXPR
  	void
  	insert(__sorted_t, _InputIterator __first, _InputIterator __last)
! 	{ _M_insert(std::move(__first), std::move(__last), true); }
  
        template<__detail::__container_compatible_range<value_type> _Rg>
  	_GLIBCXX26_CONSTEXPR
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 658,663 ****
--- 673,684 ----
  	insert_range(_Rg&& __rg)
  	{ _M_insert(ranges::begin(__rg), ranges::end(__rg)); }
  
+       template<__detail::__container_compatible_range<value_type> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
+ 	void
+ 	insert_range(__sorted_t, _Rg&& __rg)
+ 	{ _M_insert(ranges::begin(__rg), ranges::end(__rg), true); }
+ 
        _GLIBCXX26_CONSTEXPR
        void
        insert(initializer_list<value_type> __il)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 742,752 ****
  
        _GLIBCXX26_CONSTEXPR
        void
!       swap(_Derived& __y) noexcept
        {
! 	ranges::swap(_M_comp, __y._M_comp);
  	ranges::swap(_M_cont.keys, __y._M_cont.keys);
  	ranges::swap(_M_cont.values, __y._M_cont.values);
        }
  
        _GLIBCXX26_CONSTEXPR
--- 763,780 ----
  
        _GLIBCXX26_CONSTEXPR
        void
!       swap(_Derived& __y)
!       noexcept(is_nothrow_swappable_v<key_container_type>
! 	       && is_nothrow_swappable_v<mapped_container_type>
! 	       && is_nothrow_swappable_v<key_compare>)
        {
! 	auto __guard = _M_make_clear_guard();
! 	auto __guard_y = _ClearGuard{__y._M_cont};
  	ranges::swap(_M_cont.keys, __y._M_cont.keys);
  	ranges::swap(_M_cont.values, __y._M_cont.values);
+ 	ranges::swap(_M_comp, __y._M_comp);
+ 	__guard._M_disable();
+ 	__guard_y._M_disable();
        }
  
        _GLIBCXX26_CONSTEXPR
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 988,994 ****
  	}
  
        friend _GLIBCXX26_CONSTEXPR void
!       swap(_Derived& __x, _Derived& __y) noexcept
        { return __x.swap(__y); }
  
        template<typename _Predicate>
--- 1016,1022 ----
  	}
  
        friend _GLIBCXX26_CONSTEXPR void
!       swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
        { return __x.swap(__y); }
  
        template<typename _Predicate>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1247,1252 ****
--- 1275,1285 ----
        // constructors
        using _Impl::_Impl;
  
+       // operator=(initializer_list<value_type>)
+       // Although this also brings in the base move/copy assignment operators,
+       // they will be hidden by our synthesized ones.
+       using _Impl::operator=;
+ 
        // iterators
        using _Impl::begin;
        using _Impl::end;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1600,1605 ****
--- 1633,1643 ----
        // constructors
        using _Impl::_Impl;
  
+       // operator=(initializer_list<value_type>)
+       // Although this also brings in the base move/copy assignment operators,
+       // they will be hidden by our synthesized ones.
+       using _Impl::operator=;
+ 
        // iterators
        using _Impl::begin;
        using _Impl::end;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/flat_set gcc-17-20260531/libstdc++-v3/include/std/flat_set
*** gcc-17-20260524/libstdc++-v3/include/std/flat_set	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/flat_set	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 71,77 ****
      class _Flat_set_impl
      {
        static_assert(is_same_v<_Key, typename _KeyContainer::value_type>);
-       static_assert(is_nothrow_swappable_v<_KeyContainer>);
  
        using _Derived = __conditional_t<_Multi,
  				       flat_multiset<_Key, _Compare, _KeyContainer>,
--- 71,76 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 324,329 ****
--- 323,360 ----
  	: _Flat_set_impl(__s, __il.begin(), __il.end(), __comp, __a)
  	{ }
  
+       _Flat_set_impl(const _Flat_set_impl&) = default;
+       _Flat_set_impl& operator=(const _Flat_set_impl&) = default;
+ 
+       _GLIBCXX26_CONSTEXPR
+       _Flat_set_impl(_Flat_set_impl&& __other)
+       noexcept(is_nothrow_move_constructible_v<container_type>
+ 	       && is_nothrow_move_constructible_v<key_compare>)
+ #if __cpp_exceptions
+       try
+ #endif
+       : _M_cont(std::move(__other._M_cont)), _M_comp(std::move(__other._M_comp))
+       { __other.clear(); }
+ #if __cpp_exceptions
+       catch (...)
+       { __other.clear(); }
+ #endif
+ 
+       _GLIBCXX26_CONSTEXPR
+       _Flat_set_impl&
+       operator=(_Flat_set_impl&& __other)
+       noexcept(is_nothrow_move_assignable_v<container_type>
+ 	       && is_nothrow_move_assignable_v<key_compare>)
+       {
+ 	auto __guard = _M_make_clear_guard();
+ 	auto __guard_other = _ClearGuard{__other._M_cont};
+ 	_M_cont = std::move(__other._M_cont);
+ 	_M_comp = std::move(__other._M_comp);
+ 	__guard._M_disable();
+ 	// __guard_other._M_disable is deliberately not called.
+ 	return *this;
+       }
+ 
        _GLIBCXX26_CONSTEXPR
        _Derived&
        operator=(initializer_list<value_type> __il)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 540,549 ****
  	  __guard._M_disable();
  	}
  
!       template<__detail::__container_compatible_range<value_type> _Rg>
  	_GLIBCXX26_CONSTEXPR
  	void
! 	insert_range(_Rg&& __rg)
  	{
  	  auto __guard = _M_make_clear_guard();
  	  typename container_type::iterator __it;
--- 571,580 ----
  	  __guard._M_disable();
  	}
  
!       template<typename _Rg>
  	_GLIBCXX26_CONSTEXPR
  	void
! 	_M_insert_range(_Rg&& __rg, bool __is_sorted = false)
  	{
  	  auto __guard = _M_make_clear_guard();
  	  typename container_type::iterator __it;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 561,573 ****
  		_M_cont.emplace_back(*__first);
  	      __it = _M_cont.begin() + __n;
  	    }
! 	  std::sort(__it, _M_cont.end(), _M_comp);
  	  std::inplace_merge(_M_cont.begin(), __it, _M_cont.end(), _M_comp);
  	  if constexpr (!_Multi)
  	    _M_unique();
  	  __guard._M_disable();
  	}
  
        _GLIBCXX26_CONSTEXPR
        void
        insert(initializer_list<value_type> __il)
--- 592,619 ----
  		_M_cont.emplace_back(*__first);
  	      __it = _M_cont.begin() + __n;
  	    }
! 	  if (__is_sorted)
! 	    _GLIBCXX_DEBUG_ASSERT(ranges::is_sorted(__it, _M_cont.end(), _M_comp));
! 	  else
! 	    std::sort(__it, _M_cont.end(), _M_comp);
  	  std::inplace_merge(_M_cont.begin(), __it, _M_cont.end(), _M_comp);
  	  if constexpr (!_Multi)
  	    _M_unique();
  	  __guard._M_disable();
  	}
  
+     template<__detail::__container_compatible_range<value_type> _Rg>
+       _GLIBCXX26_CONSTEXPR
+       void
+       insert_range(_Rg&& __rg)
+       { _M_insert_range(std::forward<_Rg>(__rg)); }
+ 
+     template<__detail::__container_compatible_range<value_type> _Rg>
+       _GLIBCXX26_CONSTEXPR
+       void
+       insert_range(__sorted_t, _Rg&& __rg)
+       { _M_insert_range(std::forward<_Rg>(__rg), true); }
+ 
        _GLIBCXX26_CONSTEXPR
        void
        insert(initializer_list<value_type> __il)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 628,638 ****
  
        _GLIBCXX26_CONSTEXPR
        void
!       swap(_Derived& __x) noexcept
        {
! 	using std::swap;
! 	swap(_M_cont, __x._M_cont);
! 	swap(_M_comp, __x._M_comp);
        }
  
        _GLIBCXX26_CONSTEXPR
--- 674,689 ----
  
        _GLIBCXX26_CONSTEXPR
        void
!       swap(_Derived& __y)
!       noexcept(is_nothrow_swappable_v<container_type>
! 	       && is_nothrow_swappable_v<key_compare>)
        {
! 	auto __guard = _M_make_clear_guard();
! 	auto __guard_y = _ClearGuard{__y._M_cont};
! 	ranges::swap(_M_cont, __y._M_cont);
! 	ranges::swap(_M_comp, __y._M_comp);
! 	__guard._M_disable();
! 	__guard_y._M_disable();
        }
  
        _GLIBCXX26_CONSTEXPR
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 830,836 ****
  	}
  
        friend _GLIBCXX26_CONSTEXPR void
!       swap(_Derived& __x, _Derived& __y) noexcept
        { return __x.swap(__y); }
  
        template<typename _Predicate>
--- 881,887 ----
  	}
  
        friend _GLIBCXX26_CONSTEXPR void
!       swap(_Derived& __x, _Derived& __y) noexcept(noexcept(__x.swap(__y)))
        { return __x.swap(__y); }
  
        template<typename _Predicate>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 916,921 ****
--- 967,977 ----
        // constructors
        using _Impl::_Impl;
  
+       // operator=(initializer_list<value_type>)
+       // Although this also brings in the base move/copy assignment operators,
+       // they will be hidden by our synthesized ones.
+       using _Impl::operator=;
+ 
        // iterators
        using _Impl::begin;
        using _Impl::end;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1064,1069 ****
--- 1120,1130 ----
        // constructors
        using _Impl::_Impl;
  
+       // operator=(initializer_list<value_type>)
+       // Although this also brings in the base move/copy assignment operators,
+       // they will be hidden by our synthesized ones.
+       using _Impl::operator=;
+ 
        // iterators
        using _Impl::begin;
        using _Impl::end;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/fstream gcc-17-20260531/libstdc++-v3/include/std/fstream
*** gcc-17-20260524/libstdc++-v3/include/std/fstream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/fstream	Sun May 31 22:32:15 2026
***************
*** 41,46 ****
--- 41,47 ----
  
  #include <istream>
  #include <ostream>
+ #include <bits/iosfwd_file.h>
  #include <bits/codecvt.h>
  #include <cstdio>             // For BUFSIZ
  #include <bits/basic_file.h>  // For __basic_file, __c_lock
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/inplace_vector gcc-17-20260531/libstdc++-v3/include/std/inplace_vector
*** gcc-17-20260524/libstdc++-v3/include/std/inplace_vector	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/inplace_vector	Sun May 31 22:32:15 2026
***************
*** 41,47 ****
  #include <optional>
  #include <bits/stdexcept_throw.h>
  #include <bits/range_access.h>
! #include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range
  #include <bits/ranges_util.h> // subrange
  #include <bits/ranges_uninitialized.h>
  #include <bits/stl_construct.h>
--- 41,47 ----
  #include <optional>
  #include <bits/stdexcept_throw.h>
  #include <bits/range_access.h>
! #include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range, __static_sized_range
  #include <bits/ranges_util.h> // subrange
  #include <bits/ranges_uninitialized.h>
  #include <bits/stl_construct.h>
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 120,126 ****
  	constexpr
  	inplace_vector(from_range_t, _Rg&& __rg)
  	: inplace_vector()
! 	{ append_range(__rg); }
  
        constexpr
        inplace_vector(initializer_list<_Tp> __il)
--- 120,133 ----
  	constexpr
  	inplace_vector(from_range_t, _Rg&& __rg)
  	: inplace_vector()
! 	{ 
! 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
! 	  // 4396. Improve inplace_vector(from_range_t, R&& rg)
! 	  if constexpr (ranges::__static_sized_range<_Rg>)
! 	    static_assert(ranges::size(__rg) <= _Nm);
! 
! 	  append_range(__rg);
! 	}
  
        constexpr
        inplace_vector(initializer_list<_Tp> __il)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 934,939 ****
--- 941,951 ----
  	constexpr
  	inplace_vector(from_range_t, _Rg&& __rg)
  	{
+ 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	  // 4396. Improve inplace_vector(from_range_t, R&& rg)
+ 	  if constexpr (ranges::__static_sized_range<_Rg>)
+ 	    static_assert(ranges::size(__rg) == 0);
+ 
  	  if (ranges::begin(__rg) != ranges::end(__rg))
  	    __throw_bad_alloc();
  	}
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/iomanip gcc-17-20260531/libstdc++-v3/include/std/iomanip
*** gcc-17-20260524/libstdc++-v3/include/std/iomanip	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/iomanip	Sun May 31 22:32:15 2026
***************
*** 43,49 ****
  #include <bits/requires_hosted.h> // iostreams
  
  #include <bits/c++config.h>
! #include <iosfwd>
  #include <bits/ios_base.h>
  
  #define __glibcxx_want_quoted_string_io
--- 43,49 ----
  #include <bits/requires_hosted.h> // iostreams
  
  #include <bits/c++config.h>
! #include <bits/iosfwd.h>
  #include <bits/ios_base.h>
  
  #define __glibcxx_want_quoted_string_io
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/ios gcc-17-20260531/libstdc++-v3/include/std/ios
*** gcc-17-20260524/libstdc++-v3/include/std/ios	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/ios	Sun May 31 22:32:15 2026
***************
*** 40,47 ****
  #include <bits/requires_hosted.h> // iostreams
  
  #include <iosfwd>
- #include <exception> 		// For ios_base::failure
- #include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
  #include <bits/localefwd.h>	// For class locale
  #include <bits/ios_base.h>	// For ios_base declarations.
  #include <streambuf>
--- 40,45 ----
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/iosfwd gcc-17-20260531/libstdc++-v3/include/std/iosfwd
*** gcc-17-20260524/libstdc++-v3/include/std/iosfwd	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/iosfwd	Sun May 31 22:32:15 2026
***************
*** 39,260 ****
  
  #include <bits/requires_hosted.h> // iostreams
  
- #include <bits/c++config.h>
- #include <bits/stringfwd.h> 	// For string forward declarations.
- #include <bits/postypes.h>
- 
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
- 
    /**
     *  @defgroup io I/O
     *
     *  Nearly all of the I/O classes are parameterized on the type of
!    *  characters they read and write.  (The major exception is ios_base at
     *  the top of the hierarchy.)  This is a change from pre-Standard
     *  streams, which were not templates.
     *
!    *  For ease of use and compatibility, all of the basic_* I/O-related
     *  classes are given typedef names for both of the builtin character
     *  widths (wide and narrow).  The typedefs are the same as the
     *  pre-Standard names, for example:
     *
!    *  @code
     *     typedef basic_ifstream<char>  ifstream;
!    *  @endcode
     *
     *  Because properly forward-declaring these classes can be difficult, you
!    *  should not do it yourself.  Instead, include the &lt;iosfwd&gt;
     *  header, which contains only declarations of all the I/O classes as
     *  well as the typedefs.  Trying to forward-declare the typedefs
!    *  themselves (e.g., <code>class ostream;</code>) is not valid ISO C++.
     *
     *  For more specific declarations, see
     *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects
!    *
!    *  @{
!   */
!   class ios_base;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_ios;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_streambuf;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_istream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_ostream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_iostream;
! 
! 
! _GLIBCXX_BEGIN_NAMESPACE_CXX11
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
! 	    typename _Alloc = allocator<_CharT> >
!     class basic_stringbuf;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
! 	   typename _Alloc = allocator<_CharT> >
!     class basic_istringstream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
! 	   typename _Alloc = allocator<_CharT> >
!     class basic_ostringstream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
! 	   typename _Alloc = allocator<_CharT> >
!     class basic_stringstream;
! 
! _GLIBCXX_END_NAMESPACE_CXX11
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_filebuf;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_ifstream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_ofstream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class basic_fstream;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class istreambuf_iterator;
! 
!   template<typename _CharT, typename _Traits = char_traits<_CharT> >
!     class ostreambuf_iterator;
! 
! 
!   /// Base class for @c char streams.
!   typedef basic_ios<char> 		ios;
! 
!   /// Base class for @c char buffers.
!   typedef basic_streambuf<char> 	streambuf;
! 
!   /// Base class for @c char input streams.
!   typedef basic_istream<char> 		istream;
! 
!   /// Base class for @c char output streams.
!   typedef basic_ostream<char> 		ostream;
! 
!   /// Base class for @c char mixed input and output streams.
!   typedef basic_iostream<char> 		iostream;
! 
!   /// Class for @c char memory buffers.
!   typedef basic_stringbuf<char> 	stringbuf;
! 
!   /// Class for @c char input memory streams.
!   typedef basic_istringstream<char> 	istringstream;
! 
!   /// Class for @c char output memory streams.
!   typedef basic_ostringstream<char> 	ostringstream;
! 
!   /// Class for @c char mixed input and output memory streams.
!   typedef basic_stringstream<char> 	stringstream;
! 
!   /// Class for @c char file buffers.
!   typedef basic_filebuf<char> 		filebuf;
! 
!   /// Class for @c char input file streams.
!   typedef basic_ifstream<char> 		ifstream;
! 
!   /// Class for @c char output file streams.
!   typedef basic_ofstream<char> 		ofstream;
! 
!   /// Class for @c char mixed input and output file streams.
!   typedef basic_fstream<char> 		fstream;
! 
! #ifdef _GLIBCXX_USE_WCHAR_T
!   /// Base class for @c wchar_t streams.
!   typedef basic_ios<wchar_t> 		wios;
! 
!   /// Base class for @c wchar_t buffers.
!   typedef basic_streambuf<wchar_t> 	wstreambuf;
! 
!   /// Base class for @c wchar_t input streams.
!   typedef basic_istream<wchar_t> 	wistream;
! 
!   /// Base class for @c wchar_t output streams.
!   typedef basic_ostream<wchar_t> 	wostream;
! 
!   /// Base class for @c wchar_t mixed input and output streams.
!   typedef basic_iostream<wchar_t> 	wiostream;
! 
!   /// Class for @c wchar_t memory buffers.
!   typedef basic_stringbuf<wchar_t> 	wstringbuf;
! 
!   /// Class for @c wchar_t input memory streams.
!   typedef basic_istringstream<wchar_t> 	wistringstream;
! 
!   /// Class for @c wchar_t output memory streams.
!   typedef basic_ostringstream<wchar_t> 	wostringstream;
! 
!   /// Class for @c wchar_t mixed input and output memory streams.
!   typedef basic_stringstream<wchar_t> 	wstringstream;
! 
!   /// Class for @c wchar_t file buffers.
!   typedef basic_filebuf<wchar_t> 	wfilebuf;
! 
!   /// Class for @c wchar_t input file streams.
!   typedef basic_ifstream<wchar_t> 	wifstream;
! 
!   /// Class for @c wchar_t output file streams.
!   typedef basic_ofstream<wchar_t> 	wofstream;
! 
!   /// Class for @c wchar_t mixed input and output file streams.
!   typedef basic_fstream<wchar_t> 	wfstream;
! #endif
! 
! #if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
!            typename _Allocator = allocator<_CharT>>
!     class basic_syncbuf;
!   template<typename _CharT, typename _Traits = char_traits<_CharT>,
!            typename _Allocator = allocator<_CharT>>
!     class basic_osyncstream;
! 
!   using syncbuf = basic_syncbuf<char>;
!   using osyncstream = basic_osyncstream<char>;
! 
! #ifdef _GLIBCXX_USE_WCHAR_T
!   using wsyncbuf = basic_syncbuf<wchar_t>;
!   using wosyncstream = basic_osyncstream<wchar_t>;
! #endif
! #endif // C++20 && CXX11_ABI
! 
! #if __cplusplus > 202002L
!   template<typename _CharT, typename _Traits = char_traits<_CharT>>
!     class basic_spanbuf;
!   template<typename _CharT, typename _Traits = char_traits<_CharT>>
!     class basic_ispanstream;
!   template<typename _CharT, typename _Traits = char_traits<_CharT>>
!     class basic_ospanstream;
!   template<typename _CharT, typename _Traits = char_traits<_CharT>>
!     class basic_spanstream;
! 
!   using spanbuf     = basic_spanbuf<char>;
!   using ispanstream = basic_ispanstream<char>;
!   using ospanstream = basic_ospanstream<char>;
!   using spanstream  = basic_spanstream<char>;
! 
! #ifdef _GLIBCXX_USE_WCHAR_T
!   using wspanbuf     = basic_spanbuf<wchar_t>;
!   using wispanstream = basic_ispanstream<wchar_t>;
!   using wospanstream = basic_ospanstream<wchar_t>;
!   using wspanstream  = basic_spanstream<wchar_t>;
! #endif
! #endif // C++23
! 
!   /** @}  */
  
! _GLIBCXX_END_NAMESPACE_VERSION
! } // namespace
  
  #endif /* _GLIBCXX_IOSFWD */
--- 39,74 ----
  
  #include <bits/requires_hosted.h> // iostreams
  
    /**
     *  @defgroup io I/O
     *
     *  Nearly all of the I/O classes are parameterized on the type of
!    *  characters they read and write.  (The major exception is `ios_base` at
     *  the top of the hierarchy.)  This is a change from pre-Standard
     *  streams, which were not templates.
     *
!    *  For ease of use and compatibility, all of the `basic_*` I/O-related
     *  classes are given typedef names for both of the builtin character
     *  widths (wide and narrow).  The typedefs are the same as the
     *  pre-Standard names, for example:
     *
!    *  ```
     *     typedef basic_ifstream<char>  ifstream;
!    *  ```
     *
     *  Because properly forward-declaring these classes can be difficult, you
!    *  should not do it yourself.  Instead, include the `<iosfwd>`
     *  header, which contains only declarations of all the I/O classes as
     *  well as the typedefs.  Trying to forward-declare the typedefs
!    *  themselves (e.g., `class ostream;`) is not valid ISO C++.
     *
     *  For more specific declarations, see
     *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects
!    */
  
! #include <bits/iosfwd_file.h>
! #include <bits/iosfwd_string.h>
! #include <bits/iosfwd_sync.h>
! #include <bits/iosfwd_span.h>
  
  #endif /* _GLIBCXX_IOSFWD */
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/iostream gcc-17-20260531/libstdc++-v3/include/std/iostream
*** gcc-17-20260524/libstdc++-v3/include/std/iostream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/iostream	Sun May 31 22:32:15 2026
***************
*** 39,45 ****
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <bits/c++config.h>
  #include <ostream>
  #include <istream>
  
--- 39,45 ----
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <ios>
  #include <ostream>
  #include <istream>
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/istream gcc-17-20260531/libstdc++-v3/include/std/istream
*** gcc-17-20260524/libstdc++-v3/include/std/istream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/istream	Sun May 31 22:32:15 2026
***************
*** 39,45 ****
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <ios>
  #include <ostream>
  
  #if __cplusplus > 202302L
--- 39,51 ----
  
  #include <bits/requires_hosted.h> // iostreams
  
! #include <bits/iosfwd.h>	// For declarations of default template args.
! #include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
! #include <bits/localefwd.h>	// For class locale
! #include <bits/ios_base.h>	// For ios_base declarations.
! #include <streambuf>
! #include <bits/basic_ios.h>
! 
  #include <ostream>
  
  #if __cplusplus > 202302L
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/meta gcc-17-20260531/libstdc++-v3/include/std/meta
*** gcc-17-20260524/libstdc++-v3/include/std/meta	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/meta	Sun May 31 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 640,655 ****
        return meta::extract<const ranges::range_value_t<_Rg>*>(__str);
      }
  
-   namespace __detail
-   {
-     template<typename _Rg>
-     concept __statically_sized
-       = requires(_Rg&& __r) {
- 	static_cast<char(*)[static_cast<size_t>(ranges::size(__r))
- 			    >= 0]>(nullptr);
-       };
-   } // namespace __detail
- 
    template<ranges::input_range _Rg>
      consteval auto
      define_static_array(_Rg&& __r)
--- 640,645 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 657,663 ****
        using _Tp = ranges::range_value_t<_Rg>;
        auto __array = meta::reflect_constant_array(__r);
        auto __type = meta::type_of(__array);
!       if constexpr (__detail::__statically_sized<_Rg>)
  	{
  	  constexpr size_t __extent = static_cast<size_t>(ranges::size(__r));
  	  if constexpr (__extent)
--- 647,653 ----
        using _Tp = ranges::range_value_t<_Rg>;
        auto __array = meta::reflect_constant_array(__r);
        auto __type = meta::type_of(__array);
!       if constexpr (ranges::__static_sized_range<_Rg>)
  	{
  	  constexpr size_t __extent = static_cast<size_t>(ranges::size(__r));
  	  if constexpr (__extent)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/optional gcc-17-20260531/libstdc++-v3/include/std/optional
*** gcc-17-20260524/libstdc++-v3/include/std/optional	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/optional	Sun May 31 22:32:15 2026
***************
*** 60,66 ****
  # include <concepts>
  #endif
  #ifdef __cpp_lib_optional_range_support // C++ >= 26
! # include <bits/formatfwd.h>
  # include <bits/ranges_base.h>
  # include <bits/range_access.h>
  #endif
--- 60,68 ----
  # include <concepts>
  #endif
  #ifdef __cpp_lib_optional_range_support // C++ >= 26
! # if _GLIBCXX_HOSTED
! #  include <bits/formatfwd.h>
! # endif
  # include <bits/ranges_base.h>
  # include <bits/range_access.h>
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2285,2293 ****
--- 2287,2297 ----
      ranges::enable_borrowed_range<optional<_Tp&>> = true;
  #endif
  
+ #if _GLIBCXX_HOSTED
    template<typename _Tp>
      inline constexpr range_format
        format_kind<optional<_Tp>> = range_format::disabled;
+ #endif
  #endif // __cpp_lib_optional_range_support
  
  #undef _GLIBCXX_USE_CONSTRAINTS_FOR_OPTIONAL
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/random gcc-17-20260531/libstdc++-v3/include/std/random
*** gcc-17-20260524/libstdc++-v3/include/std/random	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/random	Sun May 31 22:32:15 2026
***************
*** 46,52 ****
  #include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
  #include <cstdlib>
  #include <string>
! #include <iosfwd>
  #include <limits>
  #include <debug/debug.h>
  #include <type_traits>
--- 46,52 ----
  #include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
  #include <cstdlib>
  #include <string>
! #include <bits/iosfwd.h>
  #include <limits>
  #include <debug/debug.h>
  #include <type_traits>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/spanstream gcc-17-20260531/libstdc++-v3/include/std/spanstream
*** gcc-17-20260524/libstdc++-v3/include/std/spanstream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/spanstream	Sun May 31 22:32:15 2026
***************
*** 43,48 ****
--- 43,49 ----
  #include <streambuf>
  #include <istream>
  #include <ostream>
+ #include <bits/iosfwd_span.h>
  #include <bits/ranges_base.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/sstream gcc-17-20260531/libstdc++-v3/include/std/sstream
*** gcc-17-20260524/libstdc++-v3/include/std/sstream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/sstream	Sun May 31 22:32:15 2026
***************
*** 42,47 ****
--- 42,48 ----
  #include <istream>
  #include <ostream>
  
+ #include <bits/iosfwd_string.h>
  #include <bits/alloc_traits.h> // allocator_traits, __allocator_like
  
  #define __glibcxx_want_sstream_from_string_view
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/streambuf gcc-17-20260531/libstdc++-v3/include/std/streambuf
*** gcc-17-20260524/libstdc++-v3/include/std/streambuf	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/streambuf	Sun May 31 22:32:15 2026
***************
*** 40,46 ****
  #include <bits/requires_hosted.h> // iostreams
  
  #include <bits/c++config.h>
! #include <iosfwd>
  #include <bits/localefwd.h>
  #include <bits/ios_base.h>
  #include <bits/cpp_type_traits.h>
--- 40,46 ----
  #include <bits/requires_hosted.h> // iostreams
  
  #include <bits/c++config.h>
! #include <bits/iosfwd.h>
  #include <bits/localefwd.h>
  #include <bits/ios_base.h>
  #include <bits/cpp_type_traits.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/string_view gcc-17-20260531/libstdc++-v3/include/std/string_view
*** gcc-17-20260524/libstdc++-v3/include/std/string_view	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/string_view	Sun May 31 22:32:15 2026
***************
*** 63,69 ****
  #endif
  
  #if _GLIBCXX_HOSTED
! # include <iosfwd>
  # include <bits/ostream_insert.h>
  #endif
  
--- 63,69 ----
  #endif
  
  #if _GLIBCXX_HOSTED
! # include <bits/iosfwd.h>
  # include <bits/ostream_insert.h>
  #endif
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/syncstream gcc-17-20260531/libstdc++-v3/include/std/syncstream
*** gcc-17-20260524/libstdc++-v3/include/std/syncstream	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/syncstream	Sun May 31 22:32:15 2026
***************
*** 43,48 ****
--- 43,49 ----
  #ifdef __cpp_lib_syncbuf // C++ >= 20 && HOSTED && CXX11ABI
  #include <sstream>
  
+ #include <bits/iosfwd_sync.h>
  #include <bits/alloc_traits.h>
  #include <bits/allocator.h>
  #include <bits/std_mutex.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/system_error gcc-17-20260531/libstdc++-v3/include/std/system_error
*** gcc-17-20260524/libstdc++-v3/include/std/system_error	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/system_error	Sun May 31 22:32:15 2026
***************
*** 41,47 ****
  
  #include <bits/c++config.h>
  #include <bits/error_constants.h>
! #include <iosfwd>
  #include <stdexcept>
  #if __cplusplus > 201703L
  # include <compare>
--- 41,47 ----
  
  #include <bits/c++config.h>
  #include <bits/error_constants.h>
! #include <bits/iosfwd.h>
  #include <stdexcept>
  #if __cplusplus > 201703L
  # include <compare>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/std/valarray gcc-17-20260531/libstdc++-v3/include/std/valarray
*** gcc-17-20260524/libstdc++-v3/include/std/valarray	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/std/valarray	Sun May 31 22:32:15 2026
***************
*** 46,51 ****
--- 46,54 ----
  #include <bits/range_access.h>
  #endif
  
+ #define __glibcxx_want_valarray
+ #include <bits/version.h>
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 139,144 ****
--- 142,151 ----
  	};
      public:
        typedef _Tp value_type;
+ #if __glibcxx_valarray >= 202511L
+       typedef _Tp* iterator;
+       typedef const _Tp* const_iterator;
+ #endif
  
  	// _lib.valarray.cons_ construct/destroy:
        ///  Construct an empty array.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 572,577 ****
--- 579,614 ----
         */
        void resize(size_t __size, _Tp __c = _Tp());
  
+ #if __glibcxx_valarray >= 202511L
+       /**
+         *  @brief  Return an iterator pointing to the first element of
+         *          the valarray.
+         */
+       [[nodiscard]]
+       iterator
+       begin() noexcept
+       { return _M_data; }
+ 
+       [[nodiscard]]
+       const_iterator
+       begin() const noexcept
+       { return _M_data; }
+ 
+       /**
+         *  @brief  Return an iterator pointing to one past the last element of
+         *          the valarray.
+         */
+       [[nodiscard]]
+       iterator
+       end() noexcept
+       { return _M_data + _M_size; }
+ 
+       [[nodiscard]]
+       const_iterator
+       end() const noexcept
+       { return _M_data + _M_size; }
+ #endif
+ 
      private:
        size_t _M_size;
        _Tp* __restrict__ _M_data;
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1218,1224 ****
  #undef _DEFINE_BINARY_OPERATOR
    /// @endcond
  
! #if __cplusplus >= 201103L
    /**
     *  @brief  Return an iterator pointing to the first element of
     *          the valarray.
--- 1255,1261 ----
  #undef _DEFINE_BINARY_OPERATOR
    /// @endcond
  
! #if (__cplusplus >= 201103L) && (__glibcxx_valarray < 202511L)
    /**
     *  @brief  Return an iterator pointing to the first element of
     *          the valarray.
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1272,1278 ****
        else
  	return nullptr;
      }
! #endif // C++11
  
    /// @} group numeric_arrays
  
--- 1309,1315 ----
        else
  	return nullptr;
      }
! #endif // C++11 to C++23
  
    /// @} group numeric_arrays
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/include/tr1/shared_ptr.h gcc-17-20260531/libstdc++-v3/include/tr1/shared_ptr.h
*** gcc-17-20260524/libstdc++-v3/include/tr1/shared_ptr.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/include/tr1/shared_ptr.h	Sun May 31 22:32:15 2026
*************** namespace tr1
*** 595,601 ****
          explicit
          __shared_ptr(std::auto_ptr<_Tp1>& __r)
  	: _M_ptr(__r.get()), _M_refcount()
!         { // TODO requries delete __r.release() well-formed
  	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
  	  typedef int _IsComplete[sizeof(_Tp1)];
  	  _Tp1* __tmp = __r.get();
--- 595,601 ----
          explicit
          __shared_ptr(std::auto_ptr<_Tp1>& __r)
  	: _M_ptr(__r.get()), _M_refcount()
!         { // TODO requires delete __r.release() well-formed
  	  __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
  	  typedef int _IsComplete[sizeof(_Tp1)];
  	  _Tp1* __tmp = __r.get();
diff -Nrcpad gcc-17-20260524/libstdc++-v3/libsupc++/hash_bytes.cc gcc-17-20260531/libstdc++-v3/libsupc++/hash_bytes.cc
*** gcc-17-20260524/libstdc++-v3/libsupc++/hash_bytes.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/libsupc++/hash_bytes.cc	Sun May 31 22:32:15 2026
***************
*** 29,35 ****
  // This file also defines _Fnv_hash_bytes, another primitive with
  // exactly the same interface but using a different hash algorithm,
  // Fowler / Noll / Vo (FNV) Hash (type FNV-1a). The Murmur hash
! // function apears to be better in both speed and hash quality, and
  // FNV is provided primarily for backward compatibility.
  
  #include <bits/hash_bytes.h>
--- 29,35 ----
  // This file also defines _Fnv_hash_bytes, another primitive with
  // exactly the same interface but using a different hash algorithm,
  // Fowler / Noll / Vo (FNV) Hash (type FNV-1a). The Murmur hash
! // function appears to be better in both speed and hash quality, and
  // FNV is provided primarily for backward compatibility.
  
  #include <bits/hash_bytes.h>
diff -Nrcpad gcc-17-20260524/libstdc++-v3/libsupc++/initializer_list gcc-17-20260531/libstdc++-v3/libsupc++/initializer_list
*** gcc-17-20260524/libstdc++-v3/libsupc++/initializer_list	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/libsupc++/initializer_list	Sun May 31 22:32:15 2026
***************
*** 40,45 ****
--- 40,48 ----
  
  #include <bits/c++config.h>
  
+ #define __glibcxx_want_initializer_list
+ #include <bits/version.h>
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
    /// initializer_list
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 77,84 ****
--- 80,96 ----
        // One past the last element.
        constexpr const_iterator
        end() const noexcept { return begin() + size(); }
+ 
+ #if __glibcxx_initializer_list >= 202511L
+       constexpr bool
+       empty() const noexcept { return _M_len == 0; }
+ 
+       constexpr const value_type*
+       data() const noexcept { return _M_array; }
+ #endif
      };
  
+ #if __glibcxx_initializer_list < 202511L
    /**
     *  @brief  Return an iterator pointing to the first element of
     *          the initializer_list.
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 100,105 ****
--- 112,118 ----
      constexpr const _Tp*
      end(initializer_list<_Tp> __ils) noexcept
      { return __ils.end(); }
+ #endif // __glibcxx_initializer_list < 202511L
  }
  
  #endif // C++11
diff -Nrcpad gcc-17-20260524/libstdc++-v3/libsupc++/vmi_class_type_info.cc gcc-17-20260531/libstdc++-v3/libsupc++/vmi_class_type_info.cc
*** gcc-17-20260524/libstdc++-v3/libsupc++/vmi_class_type_info.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/libsupc++/vmi_class_type_info.cc	Sun May 31 22:32:15 2026
*************** __do_find_public_src (ptrdiff_t src2dst,
*** 75,81 ****
  // to bias any optimizations. To that end we make no particular effort towards
  // early fail answers or early success answers. Instead we try to minimize
  // work by filling in things lazily (when we know we need the information),
! // and opportunisticly take early success or failure results.
  bool __vmi_class_type_info::
  __do_dyncast (ptrdiff_t src2dst,
                __sub_kind access_path,
--- 75,81 ----
  // to bias any optimizations. To that end we make no particular effort towards
  // early fail answers or early success answers. Instead we try to minimize
  // work by filling in things lazily (when we know we need the information),
! // and opportunistically take early success or failure results.
  bool __vmi_class_type_info::
  __do_dyncast (ptrdiff_t src2dst,
                __sub_kind access_path,
diff -Nrcpad gcc-17-20260524/libstdc++-v3/src/c++17/fast_float/fast_float.h gcc-17-20260531/libstdc++-v3/src/c++17/fast_float/fast_float.h
*** gcc-17-20260524/libstdc++-v3/src/c++17/fast_float/fast_float.h	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/src/c++17/fast_float/fast_float.h	Sun May 31 22:32:15 2026
*************** struct parse_options {
*** 60,66 ****
  
  /**
   * This function parses the character sequence [first,last) for a number. It parses floating-point numbers expecting
!  * a locale-indepent format equivalent to what is used by std::strtod in the default ("C") locale.
   * The resulting floating-point value is the closest floating-point values (using either float or double),
   * using the "round to even" convention for values that would otherwise fall right in-between two values.
   * That is, we provide exact parsing according to the IEEE standard.
--- 60,66 ----
  
  /**
   * This function parses the character sequence [first,last) for a number. It parses floating-point numbers expecting
!  * a locale-independent format equivalent to what is used by std::strtod in the default ("C") locale.
   * The resulting floating-point value is the closest floating-point values (using either float or double),
   * using the "round to even" convention for values that would otherwise fall right in-between two values.
   * That is, we provide exact parsing according to the IEEE standard.
*************** fastfloat_really_inline bool rounds_to_n
*** 2924,2930 ****
    // However, it is expected to be much faster than the fegetround()
    // function call.
    //
!   // The volatile keywoard prevents the compiler from computing the function
    // at compile-time.
    // There might be other ways to prevent compile-time optimizations (e.g., asm).
    // The value does not need to be std::numeric_limits<float>::min(), any small
--- 2924,2930 ----
    // However, it is expected to be much faster than the fegetround()
    // function call.
    //
!   // The volatile keyword prevents the compiler from computing the function
    // at compile-time.
    // There might be other ways to prevent compile-time optimizations (e.g., asm).
    // The value does not need to be std::numeric_limits<float>::min(), any small
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/data_empty_mem.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,21 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <initializer_list>
+ #include <iterator>
+ 
+ #ifndef __cpp_lib_initializer_list
+ # error "Feature-test macro for text_encoding missing in <initializer_list>"
+ #elif __cpp_lib_initializer_list != 202511L
+ # error "Feature-test macro for text_encoding has wrong value in <initializer_list>"
+ #endif
+ 
+ void
+ test02()
+ {
+   static constexpr std::initializer_list<int> il{1};
+   static_assert( il.data() == il.begin() );
+   static_assert( il.empty() == false );
+   static_assert( noexcept(il.data()) );
+   static_assert( noexcept(il.empty()) );
+ }
+ 
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc	Sun May 31 22:32:15 2026
***************
*** 20,36 ****
  // 18.9.3 Initializer list range access [support.initlist.range]
  
  #include <initializer_list>
  
  void
  test01()
  {
-   std::begin({1, 2, 3});
-   std::end({1, 2, 3});
- }
- 
- void
- test02()
- {
    static constexpr std::initializer_list<int> il{1};
    static_assert( std::begin(il) == il.begin() );
    static_assert( std::end(il) == il.end() );
--- 20,32 ----
  // 18.9.3 Initializer list range access [support.initlist.range]
  
  #include <initializer_list>
+ #if __cpp_lib_initializer_list >= 202511L
+ #  include <iterator>
+ #endif
  
  void
  test01()
  {
    static constexpr std::initializer_list<int> il{1};
    static_assert( std::begin(il) == il.begin() );
    static_assert( std::end(il) == il.end() );
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access14.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,24 ----
+ // { dg-do compile { target c++14 } }
+ 
+ #include <initializer_list>
+ #include <iterator>
+ 
+ void
+ test01()
+ {
+   static constexpr std::initializer_list<int> il{1, 2};
+   static_assert( std::cbegin(il) == il.begin() );
+   static_assert( std::cend(il) == il.end() );
+ #if __cplusplus >= 201703L
+   static_assert( std::rbegin(il).base() == il.end() );
+   static_assert( std::rend(il).base() == il.begin() );
+   static_assert( std::rbegin(il).base() == il.end() );
+   static_assert( std::rend(il).base() == il.begin() );
+ #endif 
+   static_assert( noexcept(std::cbegin(il)) );
+   static_assert( noexcept(std::cend(il)) );
+   static_assert( noexcept(std::rbegin(il)) );
+   static_assert( noexcept(std::rend(il)) );
+   static_assert( noexcept(std::crbegin(il)) );
+   static_assert( noexcept(std::crend(il)) );
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access14_neg.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <iterator>
+ 
+ void
+ test01()
+ {
+   (void)std::cbegin({1, 2, 3});  // { dg-error "no matching function for call" }
+   (void)std::cend({1, 2, 3});    // { dg-error "no matching function for call" }
+   (void)std::rbegin({1, 2, 3});  // initializer_list overload not removed
+   (void)std::rend({1, 2, 3});    // initializer_list overload not removed
+   (void)std::crbegin({1, 2, 3}); // { dg-error "no matching function for call" }
+   (void)std::crend({1, 2, 3});   // { dg-error "no matching function for call" }
+ 
+ }
+ 
+ // { dg-prune-output "cannot bind non-const lvalue reference of type" }
+ // { dg-prune-output "which is of non-class type" }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access17.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <initializer_list>
+ #include <iterator>
+ 
+ void
+ test01()
+ {
+   static constexpr std::initializer_list<int> il{1};
+   static_assert( std::data(il) == il.begin() );
+   static_assert( std::size(il) == il.size() );
+   static_assert( !std::empty(il) );
+   static_assert( noexcept(std::data(il)) );
+   static_assert( noexcept(std::size(il)) );
+   static_assert( noexcept(std::empty(il)) );
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access17_neg.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <iterator>
+ 
+ void
+ test01()
+ {
+   (void)std::data({1, 2, 3});  // { dg-error "no matching function for call" "" { target c++26 } }
+   (void)std::size({1, 2, 3});  // uses array overload
+   (void)std::empty({1, 2, 3}); // uses array overload
+ }
+ 
+ // { dg-prune-output "cannot bind non-const lvalue reference of type" }
+ // { dg-prune-output "which is of non-class type" }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/18_support/initializer_list/range_access_neg.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include <iterator>
+ 
+ void
+ test01()
+ {
+   (void)std::begin({1, 2, 3}); // { dg-error "no matching function for call" "" { target c++26 } }
+   (void)std::end({1, 2, 3});   // { dg-error "no matching function for call" "" { target c++26 } }
+ }
+ 
+ // { dg-prune-output "cannot bind non-const lvalue reference of type" }
+ // { dg-prune-output "which is of non-class type" }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc gcc-17-20260531/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/20_util/allocator/allocate_at_least2.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run { target c++23 } }
+ 
+ #include <memory>
+ #include <stdlib.h>
+ #include <testsuite_hooks.h>
+ 
+ std::size_t gn = 0;
+ void* operator new(std::size_t n)
+ {
+   gn = n;
+   return ::malloc(n);
+ }
+ 
+ // Failing to define ops delete, too, would generate warnings.
+ 
+ void operator delete(void* p) noexcept
+ { ::free(p); }
+ 
+ #if __cpp_sized_deallocation
+ void operator delete(void* p, std::size_t) noexcept
+ { ::free(p); }
+ #endif
+ 
+ template <unsigned size, unsigned n>
+ void test_nm()
+ {
+   struct A { char a[size]; };
+   std::allocator<A> alloc;
+   using alloc_traits = std::allocator_traits<std::allocator<A>>;
+   auto [p, m] = alloc_traits::allocate_at_least(alloc, n);
+ 
+ #if __cpp_aligned_new
+   unsigned mod = __STDCPP_DEFAULT_NEW_ALIGNMENT__;
+   unsigned max = ((n * size) + mod - 1) & ~(mod - 1);
+   unsigned count = max / sizeof(A);
+ #else
+   unsigned count = n;
+ #endif
+   VERIFY(m == count);
+   VERIFY(gn == count * sizeof(A));
+   VERIFY(p != nullptr);  // named it, use it.
+ }
+ 
+ void test()
+ {                  //  m  gn
+   test_nm<1,3>();  // 16  16
+   test_nm<2,3>();  //  8  16
+   test_nm<3,3>();  //  5  15
+   test_nm<4,3>();  //  4  16
+   test_nm<5,3>();  //  3  15
+   test_nm<6,3>();  //  5  30
+   test_nm<7,3>();  //  4  28
+   test_nm<8,3>();  //  4  32
+   test_nm<9,3>();  //  3  27
+   test_nm<10,3>(); //  3  30
+   test_nm<11,3>(); //  4  44
+   test_nm<12,3>(); //  4  48
+   test_nm<13,3>(); //  3  39
+   test_nm<14,3>(); //  3  42
+   test_nm<15,3>(); //  3  45
+ }
+ 
+ int main()
+ {
+   test();
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc	Sun May 31 22:32:15 2026
*************** static_assert(!std::is_constructible<con
*** 715,721 ****
--- 715,725 ----
  	      "Error");
  
  // Deleted members in unions with non-trivial members:
+ #if __cpp_trivial_union >= 202502L
+ static_assert(std::is_constructible<NontrivialUnion>::value, "Error");
+ #else
  static_assert(!std::is_constructible<NontrivialUnion>::value, "Error");
+ #endif
  static_assert(!std::is_constructible<NontrivialUnion,
  	      const NontrivialUnion&>::value, "Error");
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_destructible/value.cc gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_destructible/value.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_destructible/value.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_destructible/value.cc	Sun May 31 22:32:15 2026
*************** static_assert(!std::is_destructible<Del[
*** 99,105 ****
--- 99,109 ----
  static_assert(!std::is_destructible<const Del[]>::value, "Error");
  
  // Deleted members in unions with non-trivial members:
+ #if __cpp_trivial_union >= 202502L
+ static_assert(std::is_destructible<NontrivialUnion>::value, "Error");
+ #else
  static_assert(!std::is_destructible<NontrivialUnion>::value, "Error");
+ #endif
  
  // Unusual copy:
  static_assert(std::is_destructible<UnusualCopy>::value, "Error");
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc	Sun May 31 22:32:15 2026
*************** static_assert(!std::is_nothrow_destructi
*** 96,103 ****
--- 96,108 ----
  static_assert(!std::is_nothrow_destructible<Aggr2>::value, "Error");
  static_assert(!std::is_nothrow_destructible<Aggr2[1]>::value, "Error");
  static_assert(!std::is_nothrow_destructible<TD1[1][2]>::value, "Error");
+ #if __cpp_trivial_union >= 202502L
+ static_assert(std::is_nothrow_destructible<Ut>::value, "Error");
+ static_assert(std::is_nothrow_destructible<Ut[3]>::value, "Error");
+ #else
  static_assert(!std::is_nothrow_destructible<Ut>::value, "Error");
  static_assert(!std::is_nothrow_destructible<Ut[3]>::value, "Error");
+ #endif
  static_assert(!std::is_nothrow_destructible<AbstractDelDtor>::value, "Error");
  static_assert(!std::is_nothrow_destructible<Abstract2>::value, "Error");
  static_assert(!std::is_nothrow_destructible<Abstract3>::value, "Error");
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/deque/cons/deduction_c++23.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++23 } }
+ 
+ #include <deque>
+ #include <testsuite_iterators.h>
+ 
+ using Range = __gnu_test::test_input_range<int>;
+ 
+ template<typename Alloc>
+ concept can_deduce_deque = requires(Range r, Alloc a) {
+   std::deque(std::from_range, r, a);
+ };
+ 
+ // Deduction should fail because int does not qualify as an allocator.
+ static_assert( ! can_deduce_deque<int> );
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_map/1.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_map/1.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_map/1.cc	Sun May 31 22:32:15 2026
***************
*** 3,9 ****
  
  #include <flat_map>
  
! #if __cpp_lib_flat_map != 202207L
  # error "Feature-test macro __cpp_lib_flat_map has wrong value in <flat_map>"
  #endif
  
--- 3,9 ----
  
  #include <flat_map>
  
! #if __cpp_lib_flat_map != 202511L
  # error "Feature-test macro __cpp_lib_flat_map has wrong value in <flat_map>"
  #endif
  
*************** test10()
*** 299,304 ****
--- 299,410 ----
    VERIFY (k == "world");
  }
  
+ template<typename T>
+ struct throwing_vector : std::vector<T>
+ {
+   static inline bool throw_on_move = false;
+ 
+   throwing_vector() = default;
+   throwing_vector(const throwing_vector&) = default;
+   throwing_vector& operator=(const throwing_vector&) = default;
+ 
+   throwing_vector(throwing_vector&& other)
+   : std::vector<T>(std::move(other))
+   {
+     if (throw_on_move)
+       throw std::runtime_error("move ctor");
+   }
+ 
+   throwing_vector&
+   operator=(throwing_vector&& other)
+   {
+     static_cast<std::vector<T>&>(*this) = std::move(other);
+     if (throw_on_move)
+       throw std::runtime_error("move assign");
+     return *this;
+   }
+ };
+ 
+ template<template<typename> class KC, template<typename> class MC>
+ void
+ test11()
+ {
+ #if __cpp_exceptions
+   using flat_map = std::flat_map<int, int, std::less<int>, KC<int>, MC<int>>;
+ 
+   auto is_really_empty = [](const flat_map& m) {
+     return m.empty() && m.keys().empty() && m.values().empty();
+   };
+   throwing_vector<int>::throw_on_move = true;
+ 
+   // Verify invariant preservation upon throwing move construction.
+   flat_map source;
+   source.insert({{1, 100}, {2, 200}});
+   try
+     {
+       flat_map target(std::move(source));
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+     }
+ 
+   // Verify invariant preservation upon throwing move assignment.
+   source = {{1, 100}, {2, 200}};
+   flat_map target;
+   target.insert({{3, 300}, {4, 400}});
+   try
+     {
+       target = std::move(source);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+       VERIFY( is_really_empty(target) );
+     }
+ 
+   // Verify invariant preservation upon throwing swap.
+   source = {{1, 100}, {2, 200}};
+   target = {{3, 300}, {4, 400}};
+   try
+     {
+       source.swap(target);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+       VERIFY( is_really_empty(target) );
+     }
+ #endif
+ }
+ 
+ constexpr
+ void
+ test12()
+ {
+   // Verify usability of flat_map::insert_range(sorted_unique_t, Rg&&).
+   std::flat_map<int, int> m = {{2, 200}};
+   std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+   m.insert_range(std::sorted_unique, s);
+   VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+ }
+ 
+ void
+ test13()
+ {
+   // Verify usability of flat_map::operator=(initializer_list).
+   throwing_vector<int>::throw_on_move = true;
+   std::flat_map<int, int, std::less<int>, throwing_vector<int>> s;
+   std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+   s = il;
+   VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+   VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+ }
+ 
  void
  test()
  {
*************** test()
*** 315,320 ****
--- 421,430 ----
    test08();
    test09();
    test10();
+   test11<std::vector, throwing_vector>();
+   test11<throwing_vector, std::vector>();
+   test12();
+   test13();
  }
  
  constexpr
*************** test_constexpr()
*** 333,338 ****
--- 443,451 ----
  #if __cpp_lib_constexpr_string >= 201907L
    test10();
  #endif
+   // test11() is non-constexpr
+   test12();
+   // test13() is non-constexpr
    return true;
  }
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc	Sun May 31 22:32:15 2026
*************** test09()
*** 252,257 ****
--- 252,363 ----
    using value_type = std::pair<int, int>;
  }
  
+ template<typename T>
+ struct throwing_vector : std::vector<T>
+ {
+   static inline bool throw_on_move = false;
+ 
+   throwing_vector() = default;
+   throwing_vector(const throwing_vector&) = default;
+   throwing_vector& operator=(const throwing_vector&) = default;
+ 
+   throwing_vector(throwing_vector&& other)
+   : std::vector<T>(std::move(other))
+   {
+     if (throw_on_move)
+       throw std::runtime_error("move ctor");
+   }
+ 
+   throwing_vector&
+   operator=(throwing_vector&& other)
+   {
+     static_cast<std::vector<T>&>(*this) = std::move(other);
+     if (throw_on_move)
+       throw std::runtime_error("move assign");
+     return *this;
+   }
+ };
+ 
+ template<template<typename> class KC, template<typename> class MC>
+ void
+ test10()
+ {
+ #if __cpp_exceptions
+   using flat_multimap = std::flat_multimap<int, int, std::less<int>, KC<int>, MC<int>>;
+ 
+   auto is_really_empty = [](const flat_multimap& m) {
+     return m.empty() && m.keys().empty() && m.values().empty();
+   };
+   throwing_vector<int>::throw_on_move = true;
+ 
+   // Verify invariant preservation upon throwing move construction.
+   flat_multimap source;
+   source.insert({{1, 100}, {2, 200}});
+   try
+     {
+       flat_multimap target(std::move(source));
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+     }
+ 
+   // Verify invariant preservation upon throwing move assignment.
+   source = {{1, 100}, {2, 200}};
+   flat_multimap target;
+   target.insert({{3, 300}, {4, 400}});
+   try
+     {
+       target = std::move(source);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+       VERIFY( is_really_empty(target) );
+     }
+ 
+   // Verify invariant preservation upon throwing swap.
+   source = {{1, 100}, {2, 200}};
+   target = {{3, 300}, {4, 400}};
+   try
+     {
+       source.swap(target);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( is_really_empty(source) );
+       VERIFY( is_really_empty(target) );
+     }
+ #endif
+ }
+ 
+ constexpr
+ void
+ test11()
+ {
+   // Verify usability of flat_multimap::insert_range(sorted_equivalent_t, Rg&&).
+   std::flat_multimap<int, int> m = {{2, 200}};;
+   std::pair<int, int> s[] = {{1, 100}, {3, 300}};
+   m.insert_range(std::sorted_equivalent, s);
+   VERIFY( std::ranges::equal(m.keys(), (int[]){1, 2, 3}) );
+   VERIFY( std::ranges::equal(m.values(), (int[]){100, 200, 300}) );
+ }
+ 
+ void
+ test12()
+ {
+   // Verify usability of flat_multimap::operator=(initializer_list).
+   throwing_vector<int>::throw_on_move = true;
+   std::flat_multimap<int, int, std::less<int>, throwing_vector<int>> s;
+   std::initializer_list<std::pair<int, int>> il = {{2, 1}, {3, 2}, {1, 3}};
+   s = il;
+   VERIFY( std::ranges::equal(s.keys(), (int[]){1, 2, 3}) );
+   VERIFY( std::ranges::equal(s.values(), (int[]){3, 1, 2}) );
+ }
+ 
  void
  test()
  {
*************** test()
*** 266,271 ****
--- 372,381 ----
    test06();
    test07();
    test09();
+   test10<std::vector, throwing_vector>();
+   test10<throwing_vector, std::vector>();
+   test11();
+   test12();
  }
  
  constexpr
*************** test_constexpr()
*** 280,285 ****
--- 390,398 ----
    test06();
    test07();
    test09();
+   // test10() is non-constexpr
+   test11();
+   // test12() is non-constexpr
    return true;
  }
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc	Sun May 31 22:32:15 2026
*************** test09()
*** 265,270 ****
--- 265,370 ----
    VERIFY( std::ranges::equal(s, (int[]){2,2,4}) );
  }
  
+ template<typename T>
+ struct throwing_vector : std::vector<T>
+ {
+   static inline bool throw_on_move = false;
+ 
+   throwing_vector() = default;
+   throwing_vector(const throwing_vector&) = default;
+   throwing_vector& operator=(const throwing_vector&) = default;
+ 
+   throwing_vector(throwing_vector&& other)
+   : std::vector<T>(std::move(other))
+   {
+     if (throw_on_move)
+       throw std::runtime_error("move ctor");
+   }
+ 
+   throwing_vector&
+   operator=(throwing_vector&& other)
+   {
+     static_cast<std::vector<T>&>(*this) = std::move(other);
+     if (throw_on_move)
+       throw std::runtime_error("move assign");
+     return *this;
+   }
+ 
+   using std::vector<int>::operator=;
+ };
+ 
+ void
+ test10()
+ {
+ #if __cpp_exceptions
+   using flat_multiset = std::flat_multiset<int, std::less<int>, throwing_vector<int>>;
+ 
+   throwing_vector<int>::throw_on_move = true;
+ 
+   // Verify invariant preservation upon throwing move construction.
+   flat_multiset source = {1, 2};
+   try
+     {
+       flat_multiset target(std::move(source));
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+     }
+ 
+   // Verify invariant preservation upon throwing move assignment.
+   source = {1, 2};
+   flat_multiset target = {3, 4};
+   try
+     {
+       target = std::move(source);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+       VERIFY( target.empty() );
+     }
+ 
+   // Verify invariant preservation upon throwing swap.
+   source = {1, 2};
+   target = {3, 4};
+   try
+     {
+       source.swap(target);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+       VERIFY( target.empty() );
+     }
+ #endif
+ }
+ 
+ constexpr
+ void
+ test11()
+ {
+   // Verify usability of flat_multiset::insert_range(sorted_equivalent_t, Rg&&).
+   std::flat_multiset<int> m = {2};
+   int s[] = {1, 3};
+   m.insert_range(std::sorted_equivalent, s);
+   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+ }
+ 
+ void
+ test12()
+ {
+   // Verify usability of flat_multiset::operator=(initializer_list).
+   throwing_vector<int>::throw_on_move = true;
+   std::flat_multiset<int, std::less<int>, throwing_vector<int>> s;
+   std::initializer_list<int> il = {2, 3, 1};
+   s = il;
+   VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+ }
+ 
  void
  test()
  {
*************** test()
*** 278,283 ****
--- 378,386 ----
    test07();
    test08();
    test09();
+   test10();
+   test11();
+   test12();
  }
  
  constexpr
*************** test_constexpr()
*** 292,297 ****
--- 395,403 ----
    test07();
    test08();
    test09();
+   // test10() is non-constexpr
+   test11();
+   // test12() is non-constexpr
    return true;
  }
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_set/1.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_set/1.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/flat_set/1.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/flat_set/1.cc	Sun May 31 22:32:15 2026
***************
*** 2,8 ****
  
  #include <flat_set>
  
! #if __cpp_lib_flat_set != 202207L
  # error "Feature-test macro __cpp_lib_flat_set has wrong value in <flat_set>"
  #endif
  
--- 2,8 ----
  
  #include <flat_set>
  
! #if __cpp_lib_flat_set != 202511L
  # error "Feature-test macro __cpp_lib_flat_set has wrong value in <flat_set>"
  #endif
  
*************** test09()
*** 277,282 ****
--- 277,382 ----
    VERIFY( std::ranges::equal(s, (int[]){2,4}) );
  }
  
+ template<typename T>
+ struct throwing_vector : std::vector<T>
+ {
+   static inline bool throw_on_move = false;
+ 
+   throwing_vector() = default;
+   throwing_vector(const throwing_vector&) = default;
+   throwing_vector& operator=(const throwing_vector&) = default;
+ 
+   throwing_vector(throwing_vector&& other)
+   : std::vector<T>(std::move(other))
+   {
+     if (throw_on_move)
+       throw std::runtime_error("move ctor");
+   }
+ 
+   throwing_vector&
+   operator=(throwing_vector&& other)
+   {
+     static_cast<std::vector<T>&>(*this) = std::move(other);
+     if (throw_on_move)
+       throw std::runtime_error("move assign");
+     return *this;
+   }
+ 
+   using std::vector<int>::operator=;
+ };
+ 
+ void
+ test10()
+ {
+ #if __cpp_exceptions
+   using flat_set = std::flat_set<int, std::less<int>, throwing_vector<int>>;
+ 
+   throwing_vector<int>::throw_on_move = true;
+ 
+   // Verify invariant preservation upon throwing move construction.
+   flat_set source = {1, 2};
+   try
+     {
+       flat_set target(std::move(source));
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+     }
+ 
+   // Verify invariant preservation upon throwing move assignment.
+   source = {1, 2};
+   flat_set target = {3, 4};
+   try
+     {
+       target = std::move(source);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+       VERIFY( target.empty() );
+     }
+ 
+   // Verify invariant preservation upon throwing swap.
+   source = {1, 2};
+   target = {3, 4};
+   try
+     {
+       source.swap(target);
+       VERIFY( false );
+     }
+   catch (const std::runtime_error&)
+     {
+       VERIFY( source.empty() );
+       VERIFY( target.empty() );
+     }
+ #endif
+ }
+ 
+ constexpr
+ void
+ test11()
+ {
+   // Verify usability of flat_set::insert_range(sorted_unique_t, Rg&&).
+   std::flat_set<int> m = {2};
+   int s[] = {1, 3};
+   m.insert_range(std::sorted_unique, s);
+   VERIFY( std::ranges::equal(m, (int[]){1, 2, 3}) );
+ }
+ 
+ void
+ test12()
+ {
+   // Verify usability of flat_set::operator=(initializer_list).
+   throwing_vector<int>::throw_on_move = true;
+   std::flat_set<int, std::less<int>, throwing_vector<int>> s;
+   std::initializer_list<int> il = {2, 3, 1};
+   s = il;
+   VERIFY( std::ranges::equal(s, (int[]){1, 2, 3}) );
+ }
+ 
  void
  test()
  {
*************** test()
*** 290,295 ****
--- 390,398 ----
    test07();
    test08();
    test09();
+   test10();
+   test11();
+   test12();
  }
  
  constexpr
*************** test_constexpr()
*** 304,309 ****
--- 407,415 ----
    test07();
    test08();
    test09();
+   // test10() is non-constexpr
+   test11();
+   // test12() is non-constexpr
    return true;
  }
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_iota_neg.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-effective-target int128 }
+ 
+ #include <array>
+ #include <ranges>
+ #include <span>
+ #include <inplace_vector>
+ 
+ template<typename Int, Int min, Int max = std::numeric_limits<Int>::max()>
+ struct StaticIota : std::ranges::iota_view<Int, Int>
+ {
+   using Base = std::ranges::iota_view<Int, Int>;
+   using size_type = std::ranges::range_size_t<Base>;
+ 
+   constexpr StaticIota() noexcept : Base(min, max) {}
+ 
+   constexpr static size_type
+   size()
+   { return size_type(max) - size_type(min); }
+ };
+ 
+ template<typename Range>
+ constexpr std::ranges::ref_view<Range>
+ ref_view(Range& rg)
+ { return std::ranges::ref_view<Range>(rg); }
+ 
+ void
+ test_all()
+ {
+   StaticIota<__int128, 0, 12> m12;
+ 
+   std::inplace_vector<int, 15> tm1(std::from_range, m12);
+   std::inplace_vector<int, 15> tr1(std::from_range, ref_view(m12));
+ 
+   std::inplace_vector<int, 10> tm2(std::from_range, m12); // { dg-error "(from here|expansion of)" }
+   // ref_view is not statically sized due pointer dereference
+   std::inplace_vector<int, 10> tr2(std::from_range, ref_view(m12));
+ 
+   StaticIota<__int128, 0> mm;
+ 
+   std::inplace_vector<int, 10> tm3(std::from_range, mm); // { dg-error "(from here|expansion of)" }
+   // ref_view is not statically sized due pointer dereference
+   std::inplace_vector<int, 10> tr3(std::from_range, ref_view(mm));
+ }
+ 
+ // { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range_neg.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,78 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <array>
+ #include <ranges>
+ #include <span>
+ #include <inplace_vector>
+ 
+ template<typename Range0>
+ void
+ test_zero(Range0&& r0)
+ {
+   std::inplace_vector<int, 0> f0(std::from_range, r0);
+   std::inplace_vector<int, 1> f1(std::from_range, r0);
+   std::inplace_vector<int, 5> f5(std::from_range, r0);
+   std::inplace_vector<int, 7> f7(std::from_range, r0);
+ }
+ 
+ template<typename Range1>
+ void
+ test_one(Range1&& r1)
+ {
+   std::inplace_vector<int, 0> f0(std::from_range, r1); // { dg-error "required from" }
+   std::inplace_vector<int, 1> f1(std::from_range, r1);
+   std::inplace_vector<int, 5> f5(std::from_range, r1);
+   std::inplace_vector<int, 7> f7(std::from_range, r1);
+ }
+ 
+ template<typename Range5>
+ void
+ test_five(Range5&& r5)
+ {
+   std::inplace_vector<int, 0> f0(std::from_range, r5); // { dg-error "required from" }
+   std::inplace_vector<int, 1> f1(std::from_range, r5); // { dg-error "required from" }
+   std::inplace_vector<int, 3> f3(std::from_range, r5); // { dg-error "required from" }
+   std::inplace_vector<int, 5> f5(std::from_range, r5);
+   std::inplace_vector<int, 7> f7(std::from_range, r5);
+ }
+ 
+ template<typename Range>
+ constexpr std::ranges::ref_view<Range>
+ ref_view(Range& rg)
+ { return std::ranges::ref_view<Range>(rg); }
+ 
+ void
+ test_all()
+ {
+   std::array<int, 0> a0;
+   std::span<int, 0> s0(a0);
+   std::array<int, 1> a1;
+   std::span<int, 1> s1(a1);
+   std::array<int, 5> a5;
+   std::span<int, 5> s5(a5);
+   std::array<int, 7> a7;
+   std::span<int, 7> s7(a7);
+ 
+   test_zero(a0);
+   test_zero(s0);
+   test_zero(ref_view(a0));
+   test_zero(std::views::empty<int>);
+   test_zero(s5 | std::views::adjacent<7> | std::views::elements<0>);
+   test_zero(a5 | std::views::adjacent<7> | std::views::elements<0>);
+ 
+   test_one(a1); // { dg-error "from here" }
+   test_one(s1); // { dg-error "from here" }
+   // ref_view is not statically sized due pointer dereference
+   test_one(ref_view(a1));
+   test_one(a5 | std::views::adjacent<7> | std::views::elements<0>);
+   test_one(s5 | std::views::adjacent<5> | std::views::elements<0>); // { dg-error "from here" }
+ 
+   test_five(a5); // { dg-error "from here" }
+   test_five(s5); // { dg-error "from here" }
+   // ref_view is not statically sized due pointer dereference
+   test_five(ref_view(a5));
+   test_five(a7 | std::views::adjacent<3> | std::views::elements<0>);
+   test_five(s7 | std::views::adjacent<3> | std::views::elements<0>); // { dg-error "from here" }
+ }
+ 
+ // { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/vector/cons/deduction_c++23.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++23 } }
+ 
+ #include <vector>
+ #include <testsuite_iterators.h>
+ 
+ using Range = __gnu_test::test_input_range<int>;
+ 
+ template<typename Alloc>
+ concept can_deduce_vector = requires(Range r, Alloc a) {
+   std::vector(std::from_range, r, a);
+ };
+ 
+ // Deduction should fail because int does not qualify as an allocator.
+ static_assert( ! can_deduce_vector<int> );
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc gcc-17-20260531/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc	Sun May 31 22:32:15 2026
*************** test03()
*** 223,233 ****
  void
  test04()
  {
!   const X::special expected{ 0, 3, 1, 0, 3, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 223,234 ----
  void
  test04()
  {
!   const X::special expected{ 0, 4, 1, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test04()
*** 241,247 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 242,249 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test04()
*** 261,271 ****
  void
  test05()
  {
!   const X::special expected{ 0, 3, 0, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 263,274 ----
  void
  test05()
  {
!   const X::special expected{ 0, 4, 0, 0, 5, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test05()
*** 279,285 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 282,289 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test05()
*** 299,309 ****
  void
  test06()
  {
!   const X::special expected{ 1, 4, 0, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 303,314 ----
  void
  test06()
  {
!   const X::special expected{ 1, 5, 0, 0, 5, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test06()
*** 316,322 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 321,328 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test09()
*** 447,457 ****
  void
  test10()
  {
!   const X::special expected{ 0, 3, 1, 0, 3, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 453,464 ----
  void
  test10()
  {
!   const X::special expected{ 0, 4, 1, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test10()
*** 465,471 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 472,479 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test10()
*** 485,495 ****
  void
  test11()
  {
!   const X::special expected{ 0, 3, 0, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 493,504 ----
  void
  test11()
  {
!   const X::special expected{ 0, 4, 0, 0, 5, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test11()
*** 503,509 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 512,519 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test11()
*** 523,533 ****
  void
  test12()
  {
!   const X::special expected{ 1, 4, 0, 0, 4, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 533,544 ----
  void
  test12()
  {
!   const X::special expected{ 1, 5, 0, 0, 5, 0 };
    X::special ins, emp;
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
*************** test12()
*** 540,546 ****
    }
    {
      std::vector<X> v;
!     v.reserve(3);
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
--- 551,558 ----
    }
    {
      std::vector<X> v;
!     v.reserve(4);
!     v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
      v.push_back(X(0,0));
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize2.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,109 ----
+ // { dg-do run { target c++11 } }
+ // { dg-require-effective-target x86  }
+ // { dg-require-cstdint "" }
+ 
+ #include <random>
+ #include <sstream>
+ #include <testsuite_hooks.h>
+ 
+ template<typename RealType>
+ void
+ test_default()
+ {
+   std::stringstream str;
+   std::piecewise_constant_distribution<RealType>
+      u(1, RealType(0), RealType(1), [](RealType) -> RealType { return 1.0; });
+   std::minstd_rand0 rng;
+ 
+   str << u;
+   std::string res = str.str();
+ 
+   std::piecewise_constant_distribution<RealType> v;
+   str >> v;
+   VERIFY( u == v );
+ 
+   if (!std::numeric_limits<RealType>::is_iec559)
+     return;
+ 
+   char const* expected = nullptr;
+   switch (std::numeric_limits<RealType>::digits)
+   {
+   case 24: // ieee32
+     expected =
+       "1 0.000000000e+00 1.000000000e+00 1.000000000e+00";
+     VERIFY( res == expected );
+     break;
+   case 53: // ieee64
+     expected =
+       "1 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00";
+     VERIFY( res == expected );
+     break;
+   case 64: // ieee80 
+     expected =
+       "1 0.000000000000000000000e+00 1.000000000000000000000e+00 1.000000000000000000000e+00";
+     VERIFY( res == expected );
+     break;
+   default:
+     break;
+   };
+ }
+ 
+ template<typename RealType>
+ void
+ test_custom()
+ {
+   std::stringstream str;
+   std::piecewise_constant_distribution<RealType>
+      u(3, RealType(0), RealType(1), [](RealType r) -> RealType { return 1.0 + r; });
+   std::minstd_rand0 rng;
+ 
+   str << u;
+   std::string res = str.str();
+ 
+   std::piecewise_constant_distribution<RealType> v;
+   str >> v;
+   // This does not hold currently.
+   // VERIFY( u == v ); 
+ 
+   if (!std::numeric_limits<RealType>::is_iec559)
+     return;
+ 
+   char const* expected = nullptr;
+   switch (std::numeric_limits<RealType>::digits)
+   {
+   case 24: // ieee32
+     expected =
+       "3 0.000000000e+00 3.333333433e-01 6.666666865e-01 1.000000000e+00"
+ 	" 7.777777281e-01 9.999999702e-01 1.222222322e+00";
+     VERIFY( res == expected );
+     break;
+   case 53: // ieee64
+     expected =
+       "3 0.00000000000000000e+00 3.33333333333333315e-01 6.66666666666666630e-01 1.00000000000000000e+00"
+ 	" 7.77777777777777901e-01 1.00000000000000000e+00 1.22222222222222210e+00";
+     VERIFY( res == expected );
+     break;
+   case 64: // ieee80 
+     expected =
+       "3 0.000000000000000000000e+00 3.333333333333333333424e-01 6.666666666666666666847e-01 1.000000000000000000000e+00"
+ 	" 7.777777777777779011359e-01 1.000000000000000000000e+00 1.222222222222222098864e+00";
+     VERIFY( res == expected );
+     break;
+   default:
+     break;
+   };
+ }
+ 
+ int main()
+ {
+   test_default<float>();
+   test_default<double>();
+   test_default<long double>();
+ 
+ #ifdef __x86_64__
+   test_custom<float>();
+ #endif
+   test_custom<double>();
+   test_custom<long double>();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize2.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,112 ----
+ // { dg-do run { target c++11 } }
+ // { dg-require-effective-target x86  }
+ // { dg-require-cstdint "" }
+ 
+ #include <random>
+ #include <sstream>
+ #include <testsuite_hooks.h>
+ 
+ template<typename RealType>
+ void
+ test_default()
+ {
+   std::stringstream str;
+   std::piecewise_linear_distribution<RealType>
+      u(1, RealType(0), RealType(1), [](RealType) -> RealType { return 1.0; });
+   std::minstd_rand0 rng;
+ 
+   str << u;
+   std::string res = str.str();
+ 
+   std::piecewise_linear_distribution<RealType> v;
+   str >> v;
+   VERIFY( u == v );
+ 
+   if (!std::numeric_limits<RealType>::is_iec559)
+     return;
+  
+   char const* expected = nullptr;
+   switch (std::numeric_limits<RealType>::digits)
+   {
+   case 24: // ieee32
+     expected =
+       "1 0.000000000e+00 1.000000000e+00"
+        " 1.000000000e+00 1.000000000e+00";
+     VERIFY( res == expected );
+     break;
+   case 53: // ieee64
+     expected =
+       "1 0.00000000000000000e+00 1.00000000000000000e+00"
+        " 1.00000000000000000e+00 1.00000000000000000e+00";
+     VERIFY( res == expected );
+     break;
+   case 64: // ieee80 
+     expected =
+       "1 0.000000000000000000000e+00 1.000000000000000000000e+00"
+        " 1.000000000000000000000e+00 1.000000000000000000000e+00";
+     VERIFY( res == expected );
+     break;
+   default:
+     break;
+   };
+ }
+ 
+ template<typename RealType>
+ void
+ test_custom()
+ {
+   std::stringstream str;
+   std::piecewise_linear_distribution<RealType>
+      u(3, RealType(0), RealType(1), [](RealType r) -> RealType { return 1.0 + r; });
+   std::minstd_rand0 rng;
+ 
+   str << u;
+   std::string res = str.str();
+ 
+   std::piecewise_constant_distribution<RealType> v;
+   str >> v;
+   // This does not hold currently
+   // VERIFY( u == v );
+ 
+   if (!std::numeric_limits<RealType>::is_iec559)
+     return;
+ 
+   char const* expected = nullptr;
+   switch (std::numeric_limits<RealType>::digits)
+   {
+   case 24: // ieee32
+     expected =
+       "3 0.000000000e+00 3.333333433e-01 6.666666865e-01 1.000000000e+00"
+ 	" 7.272727292e-01 9.090909278e-01 1.090909061e+00 1.272727325e+00";
+     VERIFY( res == expected );
+     break;
+   case 53: // ieee64
+     expected =
+       "3 0.00000000000000000e+00 3.33333333333333315e-01 6.66666666666666630e-01 1.00000000000000000e+00" 
+ 	" 7.27272727272727182e-01 9.09090909090908950e-01 1.09090909090909083e+00 1.27272727272727249e+00";
+     VERIFY( res == expected );
+     break;
+   case 64: // ieee80 
+     expected =
+       "3 0.000000000000000000000e+00 3.333333333333333333424e-01 6.666666666666666666847e-01 1.000000000000000000000e+00"
+ 	" 7.272727272727271818908e-01 9.090909090909090606303e-01 1.090909090909090828347e+00 1.272727272727272707087e+00";
+     VERIFY( res == expected );
+     break;
+   default:
+     break;
+   };
+ }
+ 
+ int main()
+ {
+   test_default<float>();
+   test_default<double>();
+   test_default<long double>();
+ 
+ #ifdef __x86_64__
+   test_custom<float>();
+   test_custom<double>();
+ #endif  
+   test_custom<long double>();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260531/libstdc++-v3/testsuite/26_numerics/valarray/range_access3.cc	Sun May 31 22:32:15 2026
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <valarray>
+ #include <testsuite_hooks.h>
+ 
+ #ifndef __cpp_lib_valarray
+ # error "Feature-test macro for text_encoding missing in <initializer_list>"
+ #elif __cpp_lib_valarray != 202511L
+ # error "Feature-test macro for text_encoding has wrong value in <initializer_list>"
+ #endif
+ 
+ void
+ test01()
+ {
+   std::valarray<double> va(3);
+   va[0] = 1.0; va[1] = 2.0; va[2] = 3.0;
+ 
+   typename std::valarray<double>::iterator it = va.begin();
+   VERIFY( it != va.end() );
+   VERIFY( *it++ == 1.0 );
+   VERIFY( *it++ == 2.0 );
+   VERIFY( *it++ == 3.0 );
+   VERIFY( it == va.end() );
+ 
+   const std::valarray<double>& cva = va;
+   typename std::valarray<double>::const_iterator cit = cva.begin();
+   VERIFY( cit != va.end() );
+   VERIFY( *cit++ == 1.0 );
+   VERIFY( *cit++ == 2.0 );
+   VERIFY( *cit++ == 3.0 );
+   VERIFY( cit == cva.end() );
+ }
+ 
+ void
+ test02()
+ {
+   std::valarray<double> va;
+   VERIFY( va.begin() == va.end() );
+   const std::valarray<double>& cva = va;
+   VERIFY( cva.begin() == cva.end() );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc	Sun May 31 22:32:15 2026
***************
*** 20,25 ****
--- 20,27 ----
  #include <atomic>
  #include <testsuite_common_types.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  #define TEST_ALL_ORDERS()                       \
    do {                                          \
      ORDER_TEST(std::memory_order_relaxed);      \
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc	Sun May 31 22:32:15 2026
***************
*** 25,30 ****
--- 25,32 ----
  
  #include <atomic>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  const auto ACQ = std::memory_order_acquire | std::__memory_order_hle_acquire;
  const auto REL = std::memory_order_release | std::__memory_order_hle_release;
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc	Sun May 31 22:32:15 2026
*************** void test01()
*** 33,39 ****
  #if __cplusplus >= 202002L
    using std::memory_order;
    constexpr auto relaxed = memory_order::relaxed;
!   constexpr auto consume = memory_order::consume;
    constexpr auto acquire = memory_order::acquire;
    constexpr auto release = memory_order::release;
    constexpr auto acq_rel = memory_order::acq_rel;
--- 33,39 ----
  #if __cplusplus >= 202002L
    using std::memory_order;
    constexpr auto relaxed = memory_order::relaxed;
!   constexpr auto consume = memory_order::consume; // { dg-warning "deprecated" "" { target c++26 } }
    constexpr auto acquire = memory_order::acquire;
    constexpr auto release = memory_order::release;
    constexpr auto acq_rel = memory_order::acq_rel;
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc	Sun May 24 22:32:15 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc	Sun May 31 22:32:15 2026
***************
*** 41,47 ****
  #endif
  
  constexpr const memory_order* orders[] = {
!   &memory_order_relaxed, &memory_order_consume, &memory_order_acquire,
    &memory_order_release, &memory_order_acq_rel, &memory_order_seq_cst
  };
  
--- 41,49 ----
  #endif
  
  constexpr const memory_order* orders[] = {
!   &memory_order_relaxed,
!   &memory_order_consume, // { dg-warning "deprecated" "" { target c++26 } }
!   &memory_order_acquire,
    &memory_order_release, &memory_order_acq_rel, &memory_order_seq_cst
  };
  
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/std/simd/traits_impl.cc gcc-17-20260531/libstdc++-v3/testsuite/std/simd/traits_impl.cc
*** gcc-17-20260524/libstdc++-v3/testsuite/std/simd/traits_impl.cc	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/std/simd/traits_impl.cc	Sun May 31 22:32:16 2026
*************** void test()
*** 83,92 ****
    static_assert(!__streq_to_1("0"));
    static_assert(!__streq_to_1("1 "));
  
-   static_assert(__static_sized_range<int[4]>);
-   static_assert(__static_sized_range<int[4], 4>);
-   static_assert(__static_sized_range<std::array<int, 4>, 4>);
- 
    static_assert( __value_preserving_convertible_to<int, double>);
    static_assert(!__value_preserving_convertible_to<int, float>);
    static_assert( __value_preserving_convertible_to<float, double>);
--- 83,88 ----
diff -Nrcpad gcc-17-20260524/libstdc++-v3/testsuite/util/testsuite_allocator.h gcc-17-20260531/libstdc++-v3/testsuite/util/testsuite_allocator.h
*** gcc-17-20260524/libstdc++-v3/testsuite/util/testsuite_allocator.h	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libstdc++-v3/testsuite/util/testsuite_allocator.h	Sun May 31 22:32:16 2026
*************** namespace __gnu_test
*** 369,380 ****
  	if (std::__is_constant_evaluated())
  	  return p;
  
! 	try
  	  {
  	    get_map().insert(map_type::value_type(reinterpret_cast<void*>(p),
  						  personality));
  	  }
! 	catch(...)
  	  {
  	    AllocTraits::deallocate(*this, p, n);
  	    __throw_exception_again;
--- 369,380 ----
  	if (std::__is_constant_evaluated())
  	  return p;
  
! 	__try
  	  {
  	    get_map().insert(map_type::value_type(reinterpret_cast<void*>(p),
  						  personality));
  	  }
! 	__catch(...)
  	  {
  	    AllocTraits::deallocate(*this, p, n);
  	    __throw_exception_again;
*************** namespace __gnu_test
*** 394,405 ****
  	  { return r; }
  	else
  	  {
! 	    try
  	      {
  		get_map().insert(map_type::value_type(
  		      reinterpret_cast<void*>(r.ptr), personality));
  	      }
! 	    catch(...)
  	      {
  		AllocTraits::deallocate(*this, r.ptr, r.count);
  		__throw_exception_again;
--- 394,405 ----
  	  { return r; }
  	else
  	  {
! 	    __try
  	      {
  		get_map().insert(map_type::value_type(
  		      reinterpret_cast<void*>(r.ptr), personality));
  	      }
! 	    __catch(...)
  	      {
  		AllocTraits::deallocate(*this, r.ptr, r.count);
  		__throw_exception_again;
diff -Nrcpad gcc-17-20260524/libvtv/ChangeLog gcc-17-20260531/libvtv/ChangeLog
*** gcc-17-20260524/libvtv/ChangeLog	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/ChangeLog	Sun May 31 22:32:16 2026
***************
*** 1,3 ****
--- 1,11 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* vtv_fail.cc: Fix typos.
+ 	* vtv_malloc.cc (__vtv_free): Likewise.
+ 	* vtv_map.h (class insert_only_hash_map): Likewise.
+ 	* vtv_rts.cc (init_set_symbol_debug): Likewise.
+ 	* vtv_utils.cc (vtv_log_write): Likewise.
+ 
  2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260524/libvtv/vtv_fail.cc gcc-17-20260531/libvtv/vtv_fail.cc
*** gcc-17-20260524/libvtv/vtv_fail.cc	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/vtv_fail.cc	Sun May 31 22:32:16 2026
***************
*** 35,41 ****
     find the pointer in the data set.  Allowing the programmer to
     overwrite this function means that he/she can do some alternate
     verification, including NOT failing in certain specific cases, if
!    desired.  This may be the case if the programmer has to deal wtih
     unverified third party software, for example.  __vtv_really_fail is
     available for the programmer to call from his version of
     __vtv_verify_fail, if he decides the failure is real.
--- 35,41 ----
     find the pointer in the data set.  Allowing the programmer to
     overwrite this function means that he/she can do some alternate
     verification, including NOT failing in certain specific cases, if
!    desired.  This may be the case if the programmer has to deal with
     unverified third party software, for example.  __vtv_really_fail is
     available for the programmer to call from his version of
     __vtv_verify_fail, if he decides the failure is real.
diff -Nrcpad gcc-17-20260524/libvtv/vtv_malloc.cc gcc-17-20260531/libvtv/vtv_malloc.cc
*** gcc-17-20260524/libvtv/vtv_malloc.cc	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/vtv_malloc.cc	Sun May 31 22:32:16 2026
***************
*** 24,30 ****
  /* This file is part of the vtable verification runtime library.  It
     contains our memory allocation and deallocation routines, which we
     use in order to keep track of the pages in memory in which our sets
!    of valid vtable pointes are stored.  (We need to know the pages so
     we can set the protections on them appropriately).  For more
     information about the vtable verification feature, see the comments
     in vtv_rts.cc.  We use the existing obstack implementation in our
--- 24,30 ----
  /* This file is part of the vtable verification runtime library.  It
     contains our memory allocation and deallocation routines, which we
     use in order to keep track of the pages in memory in which our sets
!    of valid vtable pointers are stored.  (We need to know the pages so
     we can set the protections on them appropriately).  For more
     information about the vtable verification feature, see the comments
     in vtv_rts.cc.  We use the existing obstack implementation in our
*************** __vtv_malloc (size_t size)
*** 243,249 ****
  void
  __vtv_free (void *)
  {
!   /* Do nothing. We dont care about recovering unneded memory at this
       time.  */
  }
  
--- 243,249 ----
  void
  __vtv_free (void *)
  {
!   /* Do nothing. We dont care about recovering unneeded memory at this
       time.  */
  }
  
diff -Nrcpad gcc-17-20260524/libvtv/vtv_map.h gcc-17-20260531/libvtv/vtv_map.h
*** gcc-17-20260524/libvtv/vtv_map.h	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/vtv_map.h	Sun May 31 22:32:16 2026
*************** class insert_only_hash_map
*** 92,98 ****
    { Alloc().dealloc (m, m->size_in_bytes_); }
  
    /* Return a map identical to this except that *k is mapped to v.
!      Typcially it's done by modifying this in place, but if a resize
       is necessary then this is deallocated and a new map is returned.
       Requires k to be non-NULL.  Does nothing and returns NULL if the
       allocator fails.  */
--- 92,98 ----
    { Alloc().dealloc (m, m->size_in_bytes_); }
  
    /* Return a map identical to this except that *k is mapped to v.
!      Typically it's done by modifying this in place, but if a resize
       is necessary then this is deallocated and a new map is returned.
       Requires k to be non-NULL.  Does nothing and returns NULL if the
       allocator fails.  */
diff -Nrcpad gcc-17-20260524/libvtv/vtv_rts.cc gcc-17-20260531/libvtv/vtv_rts.cc
*** gcc-17-20260524/libvtv/vtv_rts.cc	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/vtv_rts.cc	Sun May 31 22:32:16 2026
***************
*** 53,59 ****
    hacker targets.
  
    To find and reference the set of valid vtable pointers for any given
!   virtual class, we create a special global varible for each virtual
    class.  We refer to this as the "vtable map variable" for that
    class.  The vtable map variable has the type "void *", and is
    initialized by the compiler to NULL.  At runtime when the set of
--- 53,59 ----
    hacker targets.
  
    To find and reference the set of valid vtable pointers for any given
!   virtual class, we create a special global variable for each virtual
    class.  We refer to this as the "vtable map variable" for that
    class.  The vtable map variable has the type "void *", and is
    initialized by the compiler to NULL.  At runtime when the set of
***************
*** 138,144 ****
  #include <fcntl.h>
  #include <limits.h>
  
! /* For gthreads suppport */
  #include <bits/c++config.h>
  #include <ext/concurrence.h>
  
--- 138,144 ----
  #include <fcntl.h>
  #include <limits.h>
  
! /* For gthreads support */
  #include <bits/c++config.h>
  #include <ext/concurrence.h>
  
*************** unsigned int num_cache_entries VTV_PROTE
*** 368,374 ****
  
  /* This function takes the LOAD_ADDR for an object opened by the
     dynamic loader, and checks the array of cached file data to see if
!    there is an entry with the same addres.  If it finds such an entry,
     it returns the record for that entry; otherwise it returns
     NULL.  */
  
--- 368,374 ----
  
  /* This function takes the LOAD_ADDR for an object opened by the
     dynamic loader, and checks the array of cached file data to see if
!    there is an entry with the same address.  If it finds such an entry,
     it returns the record for that entry; otherwise it returns
     NULL.  */
  
*************** init_set_symbol_debug (void **set_handle
*** 1304,1310 ****
      {
        VTV_DEBUG_ASSERT (*map_value_ptr != NULL);
        snprintf (buffer, sizeof(buffer),
!                 "*** Found diffence between local set ptr %p and set ptr %p"
                  "for symbol %.*s",
                  *handle_ptr, *map_value_ptr,
                  symbol_key_ptr->n, symbol_key_ptr->bytes);
--- 1304,1310 ----
      {
        VTV_DEBUG_ASSERT (*map_value_ptr != NULL);
        snprintf (buffer, sizeof(buffer),
!                 "*** Found difference between local set ptr %p and set ptr %p"
                  "for symbol %.*s",
                  *handle_ptr, *map_value_ptr,
                  symbol_key_ptr->n, symbol_key_ptr->bytes);
diff -Nrcpad gcc-17-20260524/libvtv/vtv_utils.cc gcc-17-20260531/libvtv/vtv_utils.cc
*** gcc-17-20260524/libvtv/vtv_utils.cc	Sun May 24 22:32:16 2026
--- gcc-17-20260531/libvtv/vtv_utils.cc	Sun May 31 22:32:16 2026
***************
*** 21,27 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! /* This file is part of the vtable verication runtime library (see
     comments in vtv_rts.cc for more information about vtable
     verification).  This file contains log file utilities.  */
  
--- 21,27 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! /* This file is part of the vtable verification runtime library (see
     comments in vtv_rts.cc for more information about vtable
     verification).  This file contains log file utilities.  */
  
*************** static int vtv_failures_log_fd = -1;
*** 58,64 ****
     open it in the logs_dir directory, and returns the resulting file
     descriptor.
  
!    This function first checks to see if the user has specifed (via
     the environment variable VTV_LOGS_DIR) a directory to use for the
     vtable verification logs.  If that fails, the function will open
     the logs in the current directory.
--- 58,64 ----
     open it in the logs_dir directory, and returns the resulting file
     descriptor.
  
!    This function first checks to see if the user has specified (via
     the environment variable VTV_LOGS_DIR) a directory to use for the
     vtable verification logs.  If that fails, the function will open
     the logs in the current directory.
*************** vtv_log_write (int fd, const char *str)
*** 131,141 ****
  }
  
  
! /* This function takes a file decriptor (LOG_FILE) and an output
   format string (FORMAT), followed by zero or more print format
   arguments (the same as fprintf, for example).  It gets the current
   process ID and PPID, pre-pends them to the formatted message, and
!  writes write it out to the log file referenced by LOG_FILE via calles
   to vtv_log_write.  */
  
  int
--- 131,141 ----
  }
  
  
! /* This function takes a file descriptor (LOG_FILE) and an output
   format string (FORMAT), followed by zero or more print format
   arguments (the same as fprintf, for example).  It gets the current
   process ID and PPID, pre-pends them to the formatted message, and
!  writes write it out to the log file referenced by LOG_FILE via calls
   to vtv_log_write.  */
  
  int
diff -Nrcpad gcc-17-20260524/lto-plugin/ChangeLog gcc-17-20260531/lto-plugin/ChangeLog
*** gcc-17-20260524/lto-plugin/ChangeLog	Sun May 24 22:32:16 2026
--- gcc-17-20260531/lto-plugin/ChangeLog	Sun May 31 22:32:16 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* lto-plugin.c (startswith): Fix typos.
+ 	(exec_lto_wrapper): Likewise.
+ 	(symbol_strength): Likewise.
+ 
  2025-12-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260524/lto-plugin/lto-plugin.c gcc-17-20260531/lto-plugin/lto-plugin.c
*** gcc-17-20260524/lto-plugin/lto-plugin.c	Sun May 24 22:32:16 2026
--- gcc-17-20260531/lto-plugin/lto-plugin.c	Sun May 31 22:32:16 2026
*************** startswith (const char *str, const char
*** 103,109 ****
  /* The part of the symbol table the plugin has to keep track of. Note that we
     must keep SYMS until all_symbols_read is called to give the linker time to
     copy the symbol information. 
!    The id must be 64bit to minimze collisions. */
  
  struct sym_aux
  {
--- 103,109 ----
  /* The part of the symbol table the plugin has to keep track of. Note that we
     must keep SYMS until all_symbols_read is called to give the linker time to
     copy the symbol information. 
!    The id must be 64bit to minimize collisions. */
  
  struct sym_aux
  {
*************** exec_lto_wrapper (char *argv[])
*** 687,693 ****
    else
      arguments_file_name = make_temp_file (".lto_wrapper_args");
    check (arguments_file_name, LDPL_FATAL,
!          "Failed to generate a temorary file name");
  
    args = fopen (arguments_file_name, "w");
    check (args, LDPL_FATAL, "could not open arguments file");
--- 687,693 ----
    else
      arguments_file_name = make_temp_file (".lto_wrapper_args");
    check (arguments_file_name, LDPL_FATAL,
! 	  "Failed to generate a temporary file name");
  
    args = fopen (arguments_file_name, "w");
    check (args, LDPL_FATAL, "could not open arguments file");
*************** static int symbol_strength (struct ld_pl
*** 1006,1012 ****
     gold and then finally gcc by supplying incorrect resolutions.
  
     Problem is that the main gold symbol table doesn't know about subids
!    and does not distingush the same symbols in different states.
  
     So we drop duplicates from the linker visible symbol table
     and keep them in a private table. Then later do own symbol
--- 1006,1012 ----
     gold and then finally gcc by supplying incorrect resolutions.
  
     Problem is that the main gold symbol table doesn't know about subids
!    and does not distinguish the same symbols in different states.
  
     So we drop duplicates from the linker visible symbol table
     and keep them in a private table. Then later do own symbol
